using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using EMIS.ViewModel.CacheManage;

namespace EMIS.ViewModel.Students
{
    public class BaseStudentView
    {
        /// <summary>
        /// 用户ID
        /// </summary>
        [DisplayName("用户ID")]
        public Guid UserID { get; set; }

        /// <summary>
        /// 学号
        /// </summary>
        [DisplayName("学号")]
        public string LoginID { get; set; }

        /// <summary>
        /// 姓名
        /// </summary>
        [DisplayName("姓名")]
        public string UserName { get; set; }

        /// <summary>
        /// 性别
        /// </summary>
        [DisplayName("性别")]
        public int? SexID { get; set; }

        /// <summary>
        /// 性别
        /// </summary>
        [DisplayName("性别")]
        public string SexName
        {
            get
            {
                return IdNameExt.GetDictionaryItem(DictionaryItem.CF_Sex.ToString())
                    .Where(x => x.Value == SexID)
                    .Select(x => x.Name).FirstOrDefault();
            }
        }

        /// <summary>
        /// 身份证号
        /// </summary>
        [DisplayName("身份证号")]
        public string IDNumber { get; set; }

        /// <summary>
        /// 在校状态
        /// </summary>
        [DisplayName("在校状态")]
        public int? InSchoolStatusID { get; set; }

        /// <summary>
        /// 在校状态
        /// </summary>
        [DisplayName("在校状态")]
        public string InSchoolStatusName
        {
            get
            {
                return IdNameExt.GetDictionaryItem(DictionaryItem.CF_InschoolStatus.ToString())
                    .Where(x => x.Value == InSchoolStatusID)
                    .Select(x => x.Name).FirstOrDefault();
            }
        }

        /// <summary>
        /// 学籍状态
        /// </summary>
        [DisplayName("学籍状态")]
        public int? StudentStatus { get; set; }

        /// <summary>
        /// 学籍状态
        /// </summary>
        [DisplayName("学籍状态")]
        public string StudentStatusName
        {
            get
            {
                return IdNameExt.GetDictionaryItem(DictionaryItem.CF_StudentStatus.ToString())
                    .Where(x => x.Value == StudentStatus)
                    .Select(x => x.Name).FirstOrDefault();
            }
        }

        /// <summary>
        /// 年级
        /// </summary>
        [DisplayName("年级")]
        public int? Years { get; set; }

        /// <summary>
        /// 年级
        /// </summary>
        [DisplayName("年级")]
        public int? SchoolyearID { get; set; }

        /// <summary>
        /// 学期
        /// </summary>
        [DisplayName("学期")]
        public int? SchoolcodeID { get; set; }

        /// <summary>
        /// 学期
        /// </summary>
        [DisplayName("学期")]
        public string SchoolcodeName
        {
            get
            {
                return IdNameExt.GetDictionaryItem(DictionaryItem.CF_Semester.ToString()).Where(x => x.Value == SchoolcodeID).Select(x => x.Name).FirstOrDefault();
            }
        }

        /// <summary>
        /// 专业信息ID
        /// </summary>
        [DisplayName("专业信息ID")]
        public Guid? SpecialtyID { get; set; }

        /// <summary>
        /// 专业ID(Value)
        /// </summary>
        [DisplayName("专业ID(Value)")]
        public int? StandardID { get; set; }

        /// <summary>
        /// 专业名称
        /// </summary>
        [DisplayName("专业名称")]
        public string SpecialtyName { get; set; }

        /// <summary>
        /// 班级信息ID
        /// </summary>
        [DisplayName("班级信息ID")]
        public Guid? ClassmajorID { get; set; }

        /// <summary>
        /// 班级编号
        /// </summary>
        [DisplayName("班级编号")]
        public string ClassmajorCode { get; set; }

        /// <summary>
        /// 班级名称
        /// </summary>
        [DisplayName("班级名称")]
        public string ClassmajorName { get; set; }

        /// <summary>
        /// 班序
        /// </summary>
        [DisplayName("班序")]
        public int? ClassNum { get; set; }

        /// <summary>
        /// 年级专业ID
        /// </summary>
        [DisplayName("年级专业ID")]
        public Guid? GrademajorID { get; set; }

        /// <summary>
        /// 年级专业编号
        /// </summary>
        [DisplayName("年级专业编号")]
        public string GrademajorCode { get; set; }

        /// <summary>
        /// 年级专业名称
        /// </summary>
        [DisplayName("年级专业名称")]
        public string GrademajorName { get; set; }

        /// <summary>
        /// 院系专业ID
        /// </summary>
        [DisplayName("院系专业ID")]
        public Guid? FacultymajorID { get; set; }

        /// <summary>
        /// 院系专业代码
        /// </summary>
        [DisplayName("院系专业代码")]
        public string FacultymajorCode { get; set; }

        /// <summary>
        /// 院系专业名称
        /// </summary>
        [DisplayName("院系专业名称")]
        public string FacultymajorName { get; set; }

        /// <summary>
        /// 院系所ID
        /// </summary>
        [Display(ResourceType = typeof(EMIS.Resources.DataAnnotations.Label), Name = "CollegeID")]
        public Guid? CollegeID { get; set; }

        /// <summary>
        /// 院系所代码
        /// </summary>
        [Display(ResourceType = typeof(EMIS.Resources.DataAnnotations.Label), Name = "CollegeCode")]
        public string CollegeNo { get; set; }

        /// <summary>
        /// 院系所名称
        /// </summary>
        [Display(ResourceType = typeof(EMIS.Resources.DataAnnotations.Label), Name = "College")]
        public string CollegeName { get; set; }

        /// <summary>
        /// 校区ID
        /// </summary>
        [Display(ResourceType = typeof(EMIS.Resources.DataAnnotations.Label), Name = "Campus")]
        public Guid? CampusID { get; set; }

        /// <summary>
        /// 校区代码
        /// </summary>
        [Required]
        [Display(ResourceType = typeof(EMIS.Resources.DataAnnotations.Label), Name = "CampusCode")]
        public string CampusNo { get; set; }

        /// <summary>
        /// 校区名称
        /// </summary>
        [Required]
        [Display(ResourceType = typeof(EMIS.Resources.DataAnnotations.Label), Name = "CampusName")]
        public string CampusName { get; set; }

        /// <summary>
        /// 学年学期
        /// </summary>
        [DisplayName("学年学期")]
        public string SchoolYearCode { get; set; }

        /// <summary>
        /// 选修任务班名称
        /// </summary>
        [DisplayName("选修任务班名称")]
        public string DefaultClassName { get; set; }

        /// <summary>
        /// 课程信息ID
        /// </summary>
        [DisplayName("课程信息ID")]
        public Guid? CoursematerialID { get; set; }

        /// <summary>
        /// 课程代码
        /// </summary>
        [DisplayName("课程代码")]
        public string CoursematerialCode { get; set; }

        /// <summary>
        /// 课程名称
        /// </summary>
        [DisplayName("课程名称")]
        public string CoursematerialName { get; set; }

        /// <summary>
        /// 课程类型
        /// </summary>
        [DisplayName("课程类型")]
        public int? CourseTypeID { get; set; }

        /// <summary>
        /// 课程类型
        /// </summary>
        [DisplayName("课程类型")]
        public string CourseTypeName
        {
            get
            {
                return IdNameExt.GetDictionaryItem(DictionaryItem.CF_CourseType.ToString())
                    .Where(x => x.Value == CourseTypeID)
                    .Select(x => x.Name).FirstOrDefault();
            }
        }

        /// <summary>
        /// 开课学年
        /// </summary>
        [DisplayName("开课学年")]
        public int? GradeYear { get; set; }

        /// <summary>
        /// 开课学期(期末设定、补考设定)
        /// </summary>
        [DisplayName("开课学期")]
        public int? StarttermID { get; set; }

        /// <summary>
        /// 开课学期
        /// </summary>
        [DisplayName("开课学期")]
        public string Startterm
        {
            get
            {
                return IdNameExt.GetDictionaryItem(DictionaryItem.CF_Startterm.ToString())
                    .Where(x => x.Value == StarttermID)
                    .Select(x => x.Name).FirstOrDefault();
            }
        }

        /// <summary>
        /// 是否异动
        /// </summary>
        [DisplayName("是否异动")]
        public bool IsDifferentDynamic { get; set; }

        /// <summary>
        /// 是否可用
        /// </summary>
        [DisplayName("是否可用")]
        public int? RecordStatus { get; set; }

    }
}