using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace OnlineAssessment.Domain.ViewModels
{
    public class ExamAttemptViewModel 
    {
        public int attempt_id { get; set; }
        public int exam_id { get; set; }        
        public string attempt_status { get; set; }
        public int attempt_started_by { get; set; }
        public DateTime attempt_started_on { get; set; }
        public short attempts_allowed { get; set; }
        public short attempts_completed { get; set; }
        public string instruction { get; set; }
        public string total_duration { get; set; }
        public int total_questions { get; set; }
        public double total_marks { get; set; }
        public List<ExamAttemptSectionsViewModel> sections { get; set; }
    }

    public class ExamAttemptAllExamPagedModel
    {
        public int total_count { get; set; }
        public int total_pages { get; set; }
        public int page_index { get; set; }
        public bool next { get; set; }
        public bool previous { get; set; }
        public List<ExamAttemptAllExamModel> exams { get; set; }
    }

    public class ExamAttemptAttemptedExamPagedModel
    {
        public int total_count { get; set; }
        public int total_pages { get; set; }
        public int page_index { get; set; }
        public bool next { get; set; }
        public bool previous { get; set; }
        public List<ExamAttemptAttemptedExamModel> exams { get; set; }
    }

    public class ExamAttemptAllExamModel
    {
        public int id { get; set; }
        public int institute_id { get; set; }
        public int author_id { get; set; }
        public string author_name { get; set; }
        public string name { get; set; }
        public string image { get; set; }
        public int examtype_id { get; set; }
        public string language_code { get; set; }
        public string attempt_status { get; set; }
        public short? attempts_allowed { get; set; }
        public short attempts_taken { get; set; }
        public short points_needed { get; set; }
        public short points_available { get; set; }
        public short? complexity { get; set; }
        public DateTime? start_date { get; set; }
        public DateTime? end_date { get; set; }
        public int subject_count { get; set; }
        public int? subject_id { get; set; }
        public string subject_name { get; set; }
        public double? total_marks { get; set; }
        public int total_questions { get; set; }
        public int? exam_duration { get; set; }
        public DateTime created_on { get; set; }
        public DateTime updated_on { get; set; }
        public bool? isActive { get; set; }
    }

    public class ExamAttemptAttemptedExamModel
    {
        public int id { get; set; }
        public int exam_id { get; set; }
        public int institute_id { get; set; }
        public int author_id { get; set; }
        public string author_name { get; set; }
        public string name { get; set; }
        public int? examtype_id { get; set; }
        public string language_code { get; set; }
        public string attempt_status { get; set; }
        public short? attempts_allowed { get; set; }
        public int? attempts_taken { get; set; }
        public short? complexity { get; set; }
        public DateTime? start_date { get; set; }
        public DateTime? end_date { get; set; }
        public int sections_count { get; set; }
        public string sections_name { get; set; }
        public double? total_marks { get; set; }
        public double? total_score { get; set; }
        public int total_questions { get; set; }
        public int? exam_duration { get; set; }
        public DateTime? attempted_on { get; set; }
        public bool? isActive { get; set; }
    }

    public class QuestionAnswerViewModel
    {
        [Key]
        public int question_id { get; set; }
        [Required]
        public int answer_duration { get; set; }
        public bool is_visited { get; set; }
        [Required]
        public bool is_reviewed { get; set; }
        public List<int> answers { get; set; }
    }

    public class OptionsSelectedViewModel
    {
        public int id { get; set; }
    }

    public class ExamAttemptSectionsViewModel
    {
        public int id { get; set; }
        public string name { get; set; }
        public short sequence { get; set; }
        public int total_questions { get; set; }
        public double total_marks { get; set; }
        public double? cutoff_mark { get; set; }
        public short? duration { get; set; }
    }


    public class ExamAttemptAllQuestionsViewModel
    {
        public int exam_id { get; set; }
        public string exam_name { get; set; }
        public int attempt_id { get; set; }
        public int time_left { get; set; }
        public int exam_language { get; set; }
        public List<ExamAttemptSectionQuestionsViewModel> sections { get; set; }
    }

    public class ExamAttemptQuestionOptionViewModel
    {
        public int id { get; set; }
        public string text { get; set; }
        public bool isSelected { get; set; }
    }

    public class ExamAttemptSectionQuestionsViewModel
    {
        public int id { get; set; }
        public int subject_id { get; set; }
        public string subject_name { get; set; }
        public short? section_sequence { get; set; }
        public short? section_duration { get; set; }
        public int total_questions { get; set; }
        public double total_marks { get; set; }
        public double? cutoff_mark { get; set; }
        public short? duration { get; set; }
        public List<ExamAttemptQuestionsViewModel> questions { get; set; }
    }

    public class ExamAttemptQuestionsViewModel
    {
        public int id { get; set; }
        public int language_id { get; set; }
        public string language_code { get; set; }
        public string question_text { get; set; }
        public string type_code { get; set; }
        public string type_text { get; set; }
        public double? correct_marks { get; set; }
        public double? wrong_marks { get; set; }
        public bool isReviewMarked { get; set; }
        public bool isVisited { get; set; }
        public List<ExamAttemptQuestionOptionViewModel> options { get; set; }
    }

    public class ExamAttemptReportViewModel
    {
        public int exam_id { get; set; }
        public string exam_name { get; set; }
        public int time_left { get; set; }
        public int exam_language { get; set; }
        public double marks_scored { get; set; }
        public float percentile_scored { get; set; }

        public List<ExamAttemptSectionReportViewModel> sections { get; set; }
    }

    public class ExamAttemptSectionReportViewModel
    {
        public int id { get; set; }
        public int subject_id { get; set; }
        public string subject_name { get; set; }
        public short? section_sequence { get; set; }
        public short? section_duration { get; set; }
        public int total_questions { get; set; }
        public double total_marks { get; set; }
        public double total_nMarks { get; set; }
        public double? cutoff_mark { get; set; }
        public short? duration { get; set; }
        public List<ExamAttemptQuestionReportViewModel> questions { get; set; }
    }

    public class ExamAttemptQuestionReportViewModel
    {
        public int id { get; set; }
        public int language_id { get; set; }
        public string language_code { get; set; }
        public string question_text { get; set; }
        public string type_code { get; set; }
        public string type_text { get; set; }
        public string topic { get; set; }
        public short complexity_code { get; set; }
        public double? correct_marks { get; set; }
        public double? wrong_marks { get; set; }
        public bool isAttempted { get; set; }
        public bool isCorrect { get; set; }
        public int duration { get; set; }
        public List<ExamAttemptOptionReportViewModel> options { get; set; }
    }

    public class ExamAttemptOptionReportViewModel
    {
        public int id { get; set; }
        public string text { get; set; }
        public bool isCorrect { get; set; }
        public bool isSelected { get; set; }
    }

    public class DurationView
    {
        public int time_left { get; set; }
    }

    public class ExamDetailViewModel
    {
        public int exam_id { get; set; }
        public string exam_name { get; set; }
        public string exam_instruction { get; set; }
        public int attempts_allowed { get; set; }
        public int attempts_completed { get; set; }
        public int attempt_id { get; set; }
        public string attempt_status { get; set; }
        public short points_needed { get; set; }
        public short points_available { get; set; }
        public bool isSubscribed { get; set; }
        public int time_left { get; set; }
        public int total_time { get; set; }
        public int total_plays { get; set; }
        public int total_likes { get; set; }
        public bool isLiked { get; set; }
        public int author_id { get; set; }
        public string author_name { get; set; }
        public string author_image { get; set; }        
    }

    public class ExamBookMarkStatus
    {
        [Required]
        public bool isBookmark { get; set; }
    }

}
