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

namespace EMIS.ViewModel.TeachingMaterial
{
    public class StudentsOrderView
    {
        /// <summary>
        /// 学生征订ID
        /// </summary>
        [DisplayName("学生征订ID")]
        public Guid StudentsOrderID { get; set; }


        /// <summary>
        /// 专业计划ID
        /// </summary>
        [DisplayName("专业计划ID")]
        public Guid SpecialtyPlanID { get; set; }


        /// <summary>
        /// 教材ID
        /// </summary>
        [DisplayName("教材ID")]
        public Guid? TeachingMaterialPoolID { get; set; }



        /// <summary>
        /// 学年学期ID
        /// </summary>
        [DisplayName("学年学期ID")]
        public Guid? SchoolyearID { get; set; }

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


        /// <summary>
        /// 校区ID
        /// </summary>
        [Display(ResourceType = typeof(EMIS.Resources.DataAnnotations.Label), Name = "CampusID")]
        public Guid? CampusID { 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 = "College")]
        public string CollegeName { get; set; }

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


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

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

        [DisplayName("年级")]
        public string Grade
        {
            get
            {
                return IdNameExt.GetDictionaryItem(DictionaryItem.CF_Grade.ToString()).Where(x => x.Value == GradeID).Select(x => x.Name).FirstOrDefault();
            }
        }

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

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

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

        /// <summary>
        /// 学生人数
        /// </summary>
        [DisplayName("学生人数")]
        public int? ClassNum { get; set; }

        /// <summary>
        /// 征订数量
        /// </summary>
        [DisplayName("征订数量")]
        public int? OrderQty { get; set; }

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

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

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

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

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

        /// <summary>
        /// 课程属性
        /// </summary>
        [DisplayName("课程属性")]
        public int? CourseCategoryID { get; set; }

        /// <summary>
        /// 课程属性
        /// </summary>
        [DisplayName("课程属性")]
        public string CourseCategoryName { get; set; }


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

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


        /// <summary>
        /// 课程性质
        /// </summary>
        [DisplayName("课程性质")]
        public int? CourseQualityID { get; set; }

        /// <summary>
        /// 课程性质
        /// </summary>
        [DisplayName("课程性质")]
        public string CourseQualityName { get; set; }


        /// <summary>
        /// 增加数量
        /// </summary>
        [DisplayName("增加数量")]
        public int? PreIncreaseQty { get; set; }

        /// <summary>
        /// 总数
        /// </summary>
        [DisplayName("总数")]
        public int? Count { get; set; }

        /// <summary>
        /// 是否征订
        /// </summary>
        [DisplayName("是否征订")]
        public bool? IsOrdered { get; set; }

        /// <summary>
        /// 是否征订
        /// </summary>
        [DisplayName("是否征订")]
        public string IsOrderedName { get; set; }

        /// <summary>
        /// 征订人编号
        /// </summary>
        [DisplayName("征订人编号")]
        public string CreateUserNo { get; set; }

        /// <summary>
        /// 征订人
        /// </summary>
        [DisplayName("征订人")]
        public string CreateUserName { get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>
        [DisplayName("创建时间")]
        public DateTime? CreateTime { get; set; }

        public CF_TeachingMaterialPool CF_TeachingMaterialPool { get; set; }

        public HashSet<SpecialtyPlanTeachingMaterPoolView> SpecialtyPlanTeachingMaterPoolViewList { get; set; }

        [DisplayName("教材名称")]
        public string TeachingMaterialName
        {
            get
            {
                string name = string.Empty;
                if (SpecialtyPlanTeachingMaterPoolViewList != null)
                    name = string.Join(",", SpecialtyPlanTeachingMaterPoolViewList.Select(s => s.TeachingMaterialName));
                if (string.IsNullOrEmpty(name))
                {
                    return "";
                }
                else
                {
                    return name;
                }
            }
        }

        [DisplayName("教材编号")]
        public string TeachingMaterialCode
        {
            get
            {
                string code = string.Empty;
                if (SpecialtyPlanTeachingMaterPoolViewList != null)
                    code = string.Join(",", SpecialtyPlanTeachingMaterPoolViewList.Select(s => s.TeachingMaterialCode));
                if (string.IsNullOrEmpty(code))
                {
                    return "";
                }
                else
                {
                    return code;
                }
            }
        }
    }

    public class StudentOrderPrePlanView
    {
        /// <summary>
        /// 专业计划ID
        /// </summary>
        public Guid SpecialtyPlanID { get; set; }

        public Guid? CollegeID { get; set; }

        /// <summary>
        /// 征订数量
        /// </summary>
        public int? OrderQty { get; set; }

        /// <summary>
        /// 教材ID
        /// </summary>
        public Guid? TeachingMaterialPoolID { get; set; }
    }

    public class SpecialtyPlanTeachingMaterPoolView
    {
        public string TeachingMaterialName{ get; set; }
        public string TeachingMaterialCode{ get; set; }
        public Guid? TeachingMaterialPoolID { get; set; }
        public Guid SpecialtyPlanID { get; set; }
    }

    public class EditTeachingMaterPoolView
    {
        public string StudentsOrderID { get; set; }
        public string TeachingMaterialPoolID { get; set; }
        public string SpecialtyPlanID { get; set; }
    }
}