public JsonResult DeleteConfirmed(int id)
        {
            BaseJsonData json        = new BaseJsonData();
            Course_Info  courseModel = db.Course_Infos.Find(id);

            //权限校验
            //有在上课的课程不能删
            if (db.Course_vs_Times.Where(x => x.cvt_course_id == id && (x.cvt_state == 2 || x.cvt_state == 3)).Count() > 0)
            {
                json.msg_text = "课程已经进行中,无当删除。";
                return(Json(json));
            }
            db.Course_Infos.Remove(courseModel);
            int res = db.SaveChanges();

            if (res > 0)
            {
                var cvt = db.Course_vs_Times.Where(x => x.cvt_course_id == id);
                if (cvt.Count() > 0)
                {
                    db.Course_vs_Times.RemoveRange(cvt);
                    db.SaveChanges();
                }
                json.state = 1;
            }
            else
            {
                json.msg_text = "删除失败。";
            }
            RemoveCache(courseModel.c_sub_id);
            return(Json(json));
        }
        // GET: Course/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Course_Info courseModel = db.Course_Infos.Find(id);

            if (courseModel == null)
            {
                return(HttpNotFound());
            }
            return(View(courseModel));
        }
        public JsonResult Edit(CourseModel courseModel)
        {
            BaseJsonData json = new BaseJsonData();

            if (ModelState.IsValid)
            {
                Course_Info cmodel = db.Course_Infos.Find(courseModel.id);
                if (cmodel == null)
                {
                    json.msg_text = "更新失败,该课程不存在或已删除。";
                    return(Json(json, JsonRequestBehavior.AllowGet));
                }
                string time_info = "";
                cmodel.course_cost      = courseModel.cost;
                cmodel.course_introduce = courseModel.introduce;
                cmodel.course_max_num   = courseModel.max;
                cmodel.course_name      = courseModel.name;
                cmodel.c_assistant_id   = courseModel.assistant;
                cmodel.c_cs_id          = courseModel.season;
                cmodel.c_sub_id         = courseModel.subject;
                cmodel.c_room           = courseModel.room;
                cmodel.c_teacher_id     = courseModel.teacher;
                cmodel.c_room           = courseModel.room;
                cmodel.c_type_id        = courseModel.type;
                foreach (ListTime lTiem in courseModel.ListTimes)
                {
                    if (lTiem.count > 1)
                    {
                        time_info += "每";
                    }
                    time_info += string.Format("{0}{1}  ", WeeK.GetCHNDay(lTiem.day), lTiem.lessonTime);
                    if (lTiem.times != null && lTiem.times.Count > 0)
                    {
                        //删除在页面删除的时间点
                        if (lTiem.cgroup > 0)
                        {
                            var t_list = from cvt2 in lTiem.times
                                         select cvt2.id;
                            var delete_cvt = from cvt in db.Course_vs_Times
                                             where cvt.cvt_id != 0 && cvt.cvt_course_id == courseModel.id && cvt.cvt_group == lTiem.cgroup && !t_list.Contains(cvt.cvt_id)
                                             select cvt;
                            if (delete_cvt.Count() > 0)
                            {
                                db.Course_vs_Times.RemoveRange(delete_cvt);
                                db.SaveChanges();
                            }
                        }
                        else
                        {
                            var list = db.Course_vs_Times.Where(x => x.cvt_course_id == courseModel.id);
                            if (list.Count() > 0)
                            {
                                lTiem.cgroup = list.Max(x => x.cvt_group).Value + 1;
                            }
                            else
                            {
                                lTiem.cgroup = 1;
                            }
                        }
                        foreach (ListDetailTime time in lTiem.times)
                        {
                            Course_vs_Time cvt = db.Course_vs_Times.Find(time.id);
                            if (cvt == null)
                            {
                                cvt = new Course_vs_Time();
                                cvt.cvt_course_id = courseModel.id;
                                cvt.cvt_dayofweek = lTiem.day;
                                cvt.cvt_duration  = lTiem.lastlong;
                                cvt.cvt_info      = time.info;
                                cvt.cvt_is_extra  = time.isextra;
                                cvt.cvt_state     = time.state == 0?1: time.state;
                                cvt.cvt_time      = time.time;
                                if (time.room == 0)
                                {
                                    cvt.cvt_room_id = courseModel.room;
                                }
                                else
                                {
                                    cvt.cvt_room_id = time.room;
                                }
                                cvt.cvt_group = lTiem.cgroup;
                                db.Course_vs_Times.Add(cvt);
                                db.SaveChanges();
                            }
                            else
                            {
                                cvt.cvt_course_id = courseModel.id;
                                cvt.cvt_dayofweek = lTiem.day;
                                cvt.cvt_duration  = lTiem.lastlong;
                                cvt.cvt_info      = time.info;
                                cvt.cvt_is_extra  = time.isextra;
                                cvt.cvt_state     = time.state == 0 ? 1 : time.state;
                                cvt.cvt_time      = time.time;
                                if (time.room == 0)
                                {
                                    cvt.cvt_room_id = courseModel.room;
                                }
                                else
                                {
                                    cvt.cvt_room_id = time.room;
                                }
                                cvt.cvt_group       = lTiem.cgroup;
                                db.Entry(cvt).State = EntityState.Modified;
                                db.SaveChanges();
                            }
                        }
                    }
                    else
                    {
                        Course_vs_Time cvtModel;
                        int            group;
                        var            list = db.Course_vs_Times.Where(x => x.cvt_course_id == courseModel.id);
                        if (list.Count() > 0)
                        {
                            group = list.Max(x => x.cvt_group).Value + 1;
                        }
                        else
                        {
                            group = 1;
                        }
                        List <DateTime>       ListTime = CreateTimeDetail(courseModel.SuspendDays, courseModel.beginDate, lTiem.lessonTime, lTiem.day, lTiem.count);
                        List <Course_vs_Time> cvtList  = new List <Course_vs_Time>();
                        foreach (DateTime dtLesson in ListTime)
                        {
                            cvtModel = new Course_vs_Time();
                            cvtModel.cvt_course_id = courseModel.id;
                            cvtModel.cvt_dayofweek = lTiem.day;
                            cvtModel.cvt_is_extra  = false;
                            cvtModel.cvt_state     = 1;
                            cvtModel.cvt_time      = dtLesson;
                            cvtModel.cvt_duration  = lTiem.lastlong;
                            cvtModel.cvt_room_id   = courseModel.room;
                            cvtModel.cvt_group     = group;
                            cvtList.Add(cvtModel);
                        }
                        try
                        {
                            db.Course_vs_Times.AddRange(cvtList);
                            db.SaveChanges();
                        }
                        catch (Exception e)
                        {
                            json.msg_text = "课程时间编排出错,请重新操作。";
                            return(Json(json, JsonRequestBehavior.AllowGet));
                        }
                    }
                }
                cmodel.c_time_info     = time_info;
                db.Entry(cmodel).State = EntityState.Modified;
                //录入停课日期
                if (courseModel.SuspendDays != null && courseModel.SuspendDays.Count() > 0)
                {
                    foreach (DateTime dt in courseModel.SuspendDays)
                    {
                        if (db.Course_SuspendTimes.Where(x => x.cst_course_id == courseModel.id &&
                                                         x.cst_suspend_time.Year == dt.Year &&
                                                         x.cst_suspend_time.Month == dt.Month &&
                                                         x.cst_suspend_time.Day == dt.Day).Count() == 0)
                        {
                            db.Course_SuspendTimes.Add(new Course_SuspendTime {
                                cst_course_id = courseModel.id, cst_suspend_time = dt
                            });
                        }
                    }
                }
                db.SaveChanges();
                json.state    = 1;
                json.msg_text = "更新完成。";
                RemoveCache(courseModel.subject);
            }
            else
            {
                var           errors = ModelState.Where(x => x.Value.Errors.Count() > 0);
                StringBuilder sbMsg  = new StringBuilder();
                foreach (var modelstate in errors)
                {
                    if (modelstate.Value.Errors.Count() > 0)
                    {
                        foreach (ModelError err in modelstate.Value.Errors)
                        {
                            sbMsg.Append(modelstate.Key).Append(" ").Append(err.ErrorMessage).Append("<br />");
                        }
                    }
                }
                //foreach (ModelError err in errors)
                //{
                //    sbMsg.Append(err.ErrorMessage).Append("<br />");
                //}
                json.state    = 0;
                json.msg_text = sbMsg.ToString();
            }
            return(Json(json, JsonRequestBehavior.AllowGet));
        }