public async Task <ActionResult> Apply(LeaveApplyViewModel model)
        {
            if (ModelState.IsValid)
            {
                var userid = User.Identity.GetUserId();
                var user   = await UserManager.FindByIdAsync(userid);

                if (user.StudentInfo.BelongClass == null ||
                    user.StudentInfo.Dormitory == null ||
                    user.StudentInfo.HomeAddress == null ||
                    user.StudentInfo.PersonalTel == null)
                {
                    ModelState.AddModelError("", "请完善个人信息");
                    return(View(model));
                }

                if (!await LeaveManager.IsAllLeaveResumedAsync(userid))
                {
                    ModelState.AddModelError("", "还未销假");
                }
                else
                {
                    var config = await LeaveConfigManager.GetConfigAsync();

                    if (await LeaveManager.IsAllLeaveConditionMeeted(userid, config))
                    {
                        if (model.Category == LeaveCategory.病假)
                        {
                            if (model.TimeType == TimeType.一天以上)
                            {
                                if ((model.EndDate - model.StartDate).Days + 1 >= config.LeastSickLeaveDay)
                                {
                                    if (model.UploadFile == null)
                                    {
                                        ModelState.AddModelError("", "请上传图片附件");
                                        return(View(model));
                                    }
                                    else
                                    {
                                        //"E:\\MyPrivateProject\\StudentManageSystem\\LeaveSystem\\LeaveSystem.Web\\"
                                        var p = Server.MapPath("/UploadImageAttach/");
                                        if (!Directory.Exists(p))
                                        {
                                            Directory.CreateDirectory(p);
                                        }
                                        var t        = DateTime.Now.Ticks;
                                        var namea    = model.UploadFile.FileName.Split('\\');
                                        var name     = namea[namea.Length - 1];
                                        var filename = "/UploadImageAttach/" + t.ToString() + "_" +
                                                       name;

                                        model.UploadFile.SaveAs(p + t.ToString() + "_" + name);
                                        model.ImageUrls = filename;
                                    }
                                }
                            }
                        }

                        Leave leave = new Leave
                        {
                            Category    = model.Category,
                            StartDate   = model.StartDate,
                            EndDate     = model.EndDate,
                            ImageUrls   = model.ImageUrls,
                            OneDayTime  = model.OneDayTime,
                            OneDayStart = model.OneDayStart,
                            OneDayEnd   = model.OneDayEnd,
                            Reason      = model.Reason,
                            ToWhere     = model.ToWhere,
                            TimeType    = model.TimeType,
                            Student     = user.StudentInfo,
                            LeaveStatus = LeaveStatus.已提交,
                            AddTime     = DateTime.Now,
                            ResumeTime  = DateTime.Now,
                            IsResume    = 0,
                        };
                        leave.Checks = new List <Check>();
                        var classHeadTeacher = user.StudentInfo.BelongClass.ClassTeacher;
                        leave.Checks.Add(new Check()
                        {
                            CheckTeacher = classHeadTeacher,
                            CheckOrder   = 0,
                            CheckStatus  = CheckStatus.未查看,
                            CheckTime    = DateTime.Now,
                            AddTime      = DateTime.Now
                        });
                        if (model.TimeType == TimeType.一天以上)
                        {
                            if ((model.EndDate - model.StartDate).Days > config.LeastDayToSign)
                            {
                                var clerk = config.ClerkTeacher;
                                leave.Checks.Add(new Check()
                                {
                                    CheckTeacher = clerk.Teacher.TeacherInfo,
                                    CheckOrder   = 1,
                                    CheckStatus  = CheckStatus.未查看,
                                    CheckTime    = DateTime.Now,
                                    AddTime      = DateTime.Now
                                });
                            }
                        }
                        await LeaveManager.AddEntityAsync(leave);

                        return(RedirectToAction("Index"));
                    }
                    else
                    {
                        ModelState.AddModelError("", "请假添加不符合");
                    }
                }
            }
            return(View(model));
        }
        public ActionResult Apply(LeaveApplyViewModel leavemoModel)
        {
            if (ModelState.IsValid)
            {
                //判断是否需要图片附件
                switch (leavemoModel.Category)
                {
                //病假
                case LeaveCategory.病假:
                    break;

                //事假
                case LeaveCategory.事假:
                    break;
                }

                var userId = User.Identity.GetUserId();

                Leave leave = new Leave
                {
                    Category    = leavemoModel.Category,
                    StartDate   = leavemoModel.StartDate,
                    EndDate     = leavemoModel.EndDate,
                    ImageUrls   = leavemoModel.ImageUrls,
                    OneDayTime  = leavemoModel.OneDayTime,
                    OneDayStart = leavemoModel.OneDayStart,
                    OneDayEnd   = leavemoModel.OneDayEnd,
                    Reason      = leavemoModel.Reason,
                    ToWhere     = leavemoModel.ToWhere,
                    TimeType    = leavemoModel.TimeType,

                    UserId = userId,

                    LeaveStatus = 1,
                    AddTime     = DateTime.Now,
                    ResumeTime  = DateTime.Now,
                    IsResume    = 0,

                    Checks = new[]
                    {
                        new Check {
                            CheckStatus = 0, CheckTime = DateTime.Now, UserId = int.Parse(userId), CheckOrder = 0
                        },
                        new Check {
                            CheckStatus = 0, CheckTime = DateTime.Now, UserId = int.Parse(userId), CheckOrder = 1
                        }
                    }
                };
                try
                {
                    leave = _leaveService.Add(leave);
                    if (leave.LeaveId > 0)
                    {
                        return(RedirectToAction("Success", leave));
                    }
                    else
                    {
                        ModelState.AddModelError("", "请假失败");
                    }
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("", "请假失败," + ex.Message);
                }
            }
            return(View(leavemoModel));
        }