public ActionResult Edit(Models.ElectiveApply.Edit vm)
        {
            using (var db = new XkSystem.Models.DbContext())
            {
                var tbElectiveApply = new Entity.tbElectiveApply();
                if (vm.ElectiveApplyEdit.Id > 0)
                {
                    tbElectiveApply = db.Set <Entity.tbElectiveApply>().Find(vm.ElectiveApplyEdit.Id);
                    if (tbElectiveApply == null)
                    {
                        return(Code.MvcHelper.Post(new List <string>()
                        {
                            Resources.LocalizedText.MsgNotFound
                        }));
                    }
                }

                var tbElective = (from p in db.Set <Entity.tbElective>().Include(p => p.tbElectiveType) where p.Id == vm.ElectiveApplyEdit.ElectiveId select p).FirstOrDefault();
                tbElectiveApply.tbElective   = tbElective;
                tbElectiveApply.tbCourse     = db.Set <Course.Entity.tbCourse>().Find(vm.ElectiveApplyEdit.CourseId);
                tbElectiveApply.tbRoom       = db.Set <Basis.Entity.tbRoom>().Find(vm.ElectiveApplyEdit.RoomId);
                tbElectiveApply.tbSysUser    = db.Set <Sys.Entity.tbSysUser>().Find(Code.Common.UserId);
                tbElectiveApply.Hour         = vm.ElectiveApplyEdit.Hour;
                tbElectiveApply.TeachPlan    = vm.ElectiveApplyEdit.TeachPlan;
                tbElectiveApply.StudyTarger  = vm.ElectiveApplyEdit.StudyTarger;
                tbElectiveApply.CheckStatus  = Code.EnumHelper.CheckStatus.None;
                tbElectiveApply.MaxStudent   = vm.ElectiveApplyEdit.MaxStudent;
                tbElectiveApply.IsMultiClass = vm.ElectiveApplyEdit.IsMultiClass;

                if (vm.ElectiveApplyEdit.Id == 0)
                {
                    tbElectiveApply.InputTime = DateTime.Now;
                    db.Set <Entity.tbElectiveApply>().Add(tbElectiveApply);
                }


                //星期节次
                if (tbElective.tbElectiveType.ElectiveTypeCode == Code.EnumHelper.ElectiveType.WeekPeriod)
                {
                    var weekPeriod = Request["cBox"];
                    if (string.IsNullOrWhiteSpace(weekPeriod))
                    {
                        return(Code.MvcHelper.Post(new List <string>()
                        {
                            "请至少选择一项星期节次"
                        }));
                    }

                    //删除原有 (可以做判断只删除不在本次选择范围内的,待优化。)
                    var tbWeekPeriod = (from p in db.Table <Entity.tbElectiveApplySchedule>() /*.Include(p=>p.tbWeek).Include(p=>p.tbPeriod)*/ where p.tbElectiveApply.Id == tbElectiveApply.Id select p);
                    foreach (var item in tbWeekPeriod)
                    {
                        item.IsDeleted  = true;
                        item.UpdateTime = DateTime.Now;
                    }

                    var weekPeriodList = weekPeriod.Split(',').ToList();

                    db.Set <Entity.tbElectiveApplySchedule>().AddRange(weekPeriodList.Select(p => new Entity.tbElectiveApplySchedule()
                    {
                        tbElectiveApply = tbElectiveApply,
                        tbWeek          = db.Set <Basis.Entity.tbWeek>().Find(p.Split('_')[0].ConvertToInt()),
                        tbPeriod        = db.Set <Basis.Entity.tbPeriod>().Find(p.Split('_')[1].ConvertToInt())
                    }));
                }


                //选课申报附件
                if (!string.IsNullOrWhiteSpace(vm.SelectFiles))
                {
                    var fileNames = vm.SelectFiles.Split('|').ToList();
                    fileNames.RemoveAll(p => string.IsNullOrWhiteSpace(p));

                    //编辑时,删除原有的附件
                    if (vm.ElectiveApplyEdit.Id > 0)
                    {
                        var files = (from p in db.Table <Entity.tbElectiveApplyFile>() where p.tbElectiveApply.Id == vm.ElectiveApplyEdit.Id select p);
                        foreach (var file in files)
                        {
                            file.IsDeleted  = true;
                            file.UpdateTime = DateTime.Now;
                        }
                    }

                    if (fileNames != null && fileNames.Count > 0)
                    {
                        var tbElectiveApplyFile = fileNames.Select(p => new Entity.tbElectiveApplyFile()
                        {
                            FileTitle       = p.Split('/')[0],
                            FileName        = p.Split('/')[1],
                            tbElectiveApply = tbElectiveApply
                        }).ToList();

                        db.Set <Entity.tbElectiveApplyFile>().AddRange(tbElectiveApplyFile);
                    }
                }
                db.SaveChanges();
            }
            return(Code.MvcHelper.Post(returnUrl: Url.Action("List", "ElectiveApply"), message: "操作成功!"));
        }
        public ActionResult Edit(int id = 0, int courseId = 0, int electiveId = 0)
        {
            var vm = new Models.ElectiveApply.Edit();


            using (var db = new XkSystem.Models.DbContext())
            {
                if (id == 0)
                {
                    //vm.CourseList = Course.Controllers.CourseController.SelectList();
                }
                else
                {
                    var tb = (from p in db.Table <Entity.tbElectiveApply>()
                              where p.Id == id
                              select new Dto.ElectiveApply.Edit()
                    {
                        Id = p.Id,
                        ElectiveId = p.tbElective.Id,
                        CourseId = p.tbCourse.Id,
                        Hour = p.Hour,
                        Point = p.tbCourse.Point,
                        TeachPlan = p.TeachPlan,
                        StudyTarger = p.StudyTarger,
                        MaxStudent = p.MaxStudent,
                        RoomId = p.tbRoom.Id,
                        SubjectId = p.tbCourse.tbSubject.Id,
                        TeacherId = p.tbSysUser.Id,
                        CheckOpinion = p.CheckOpinion,
                        CheckStatus = p.CheckStatus,
                        tbElectiveApplySchedule = db.Set <Entity.tbElectiveApplySchedule>().Where(c => c.tbElectiveApply.Id == p.Id).Select(c => new Dto.ElectiveApplySchedule.List()
                        {
                            WeekId = c.tbWeek.Id,
                            WeekName = c.tbWeek.WeekName,
                            PeriodId = c.tbPeriod.Id,
                            PeriodName = c.tbPeriod.PeriodName
                        }).ToList(),
                        tbElectiveApplyFile = db.Set <Entity.tbElectiveApplyFile>().Where(c => c.tbElectiveApply.Id == p.Id).Select(c => new Dto.ElectiveApplyFile.List()
                        {
                            FileName = c.FileName,
                            FileTitle = c.FileTitle
                        }).ToList()
                    }).FirstOrDefault();
                    vm.ElectiveApplyEdit = tb;

                    courseId   = courseId == 0 ? tb.CourseId : courseId;
                    electiveId = electiveId == 0 ? tb.ElectiveId : electiveId;
                }

                vm.ElectiveApplyEdit.CourseId   = courseId;
                vm.ElectiveApplyEdit.ElectiveId = electiveId;

                if (courseId > 0 && electiveId > 0)
                {
                    var tbCourse = (from p in db.Table <Course.Entity.tbCourse>()
                                    where p.Id == courseId
                                    select new
                    {
                        SubjectId = p.tbSubject.Id,
                        SubjectName = p.tbSubject.SubjectName,
                        CourseId = p.Id,
                        CourseName = p.CourseName,
                        Hour = p.Hour,
                        Point = p.Point
                    }).FirstOrDefault();
                    vm.ElectiveApplyEdit.SubjectId = tbCourse.SubjectId;
                    //vm.CourseList = new List<SelectListItem>() {
                    //    new SelectListItem() { Text=tbCourse.CourseName,Value=tbCourse.CourseId.ConvertToString() }
                    //};
                    //vm.CourseSubject = new List<SelectListItem>() {
                    //    new SelectListItem() { Text=tbCourse.SubjectName,Value=tbCourse.SubjectId.ToString() }
                    //};
                    vm.ElectiveApplyEdit.Hour  = tbCourse.Hour;
                    vm.ElectiveApplyEdit.Point = tbCourse.Point;

                    var tbElective = (from p in db.Table <Entity.tbElective>()
                                      where p.Id == vm.ElectiveApplyEdit.ElectiveId
                                      select new
                    {
                        Id = p.Id,
                        Name = p.ElectiveName,
                        ElectiveType = p.tbElectiveType.ElectiveTypeCode
                    }).FirstOrDefault();
                    if (tbElective == null)
                    {
                        return(Code.MvcHelper.Post(new List <string>()
                        {
                            Resources.LocalizedText.MsgNotFound
                        }));
                    }
                    //vm.ElectiveList = new List<SelectListItem>() { new SelectListItem() { Value = tbElective.Id.ToString(), Text = tbElective.Name } };
                    vm.IsWeekPeriod = tbElective.ElectiveType == Code.EnumHelper.ElectiveType.WeekPeriod;
                }
                else
                {
                    //electiveId = vm.ElectiveList[0].Value.ConvertToInt();
                }

                vm.ElectiveList  = ElectiveController.SelectList();
                vm.RoomList      = Basis.Controllers.RoomController.SelectList();
                vm.CourseSubject = ElectiveSubjectController.SelectSubjectList(electiveId);
                vm.CourseList    = Course.Controllers.CourseController.SelectList(vm.ElectiveApplyEdit.SubjectId > 0 ? vm.ElectiveApplyEdit.SubjectId : vm.CourseSubject[0].Value.ConvertToInt());

                //if (vm.IsWeekPeriod)
                //{
                vm.PeriodList = Basis.Controllers.PeriodController.SelectList();
                vm.WeekList   = Basis.Controllers.WeekController.SelectList();
                //}
            }
            return(View(vm));
        }