protected bool ValidateChildVacationEditModel(ChildVacationEditModel model, UploadFileDto fileDto) { UserRole role = AuthenticationService.CurrentUser.UserRole; if (model.Id > 0 && fileDto == null) { int attachmentCount = RequestBl.GetAttachmentsCount(model.Id, RequestAttachmentTypeEnum.ChildVacation); if (attachmentCount <= 0) { if ((role == UserRole.Employee && model.IsApprovedByUser) || (role == UserRole.Manager && model.IsApprovedByManager) || (role == UserRole.PersonnelManager && model.IsApprovedByPersonnelManager)) { ModelState.AddModelError(string.Empty, "Заявка не может быть согласована без прикрепленого документа."); if (role == UserRole.Employee && model.IsApprovedByUser) { ModelState.Remove("IsApprovedByUser"); model.IsApprovedByUser = false; } if (role == UserRole.Manager && model.IsApprovedByManager) { ModelState.Remove("IsApprovedByManager"); model.IsApprovedByManager = false; } if (role == UserRole.PersonnelManager && model.IsApprovedByPersonnelManager) { ModelState.Remove("IsApprovedByPersonnelManager"); model.IsApprovedByPersonnelManager = false; } } } } if (model.BeginDate.HasValue && model.EndDate.HasValue) { if (model.BeginDate > model.EndDate) ModelState.AddModelError("BeginDate", "Дата начала отпуска не может превышать дату окончания отпуска."); else if (!model.IsDelete) { /*int requestCount = RequestBl.GetOtherRequestCountsForUserAndDates (model.BeginDate.Value, model.EndDate.Value, model.UserId, model.Id,true); if (requestCount > 0) ModelState.AddModelError("BeginDate","Для данного пользователя существуют другие заявки в указанном интервале дат.");*/ if (model.IsApproved) { DateTime beginDate = model.BeginDate.Value; DateTime current = DateTime.Today; DateTime monthBegin = new DateTime(current.Year, current.Month, 1); bool isValid = true; if ((current.Day != 1) && monthBegin > beginDate) { isValid = RequestBl.HaveAbsencesForPeriod(model.BeginDate.Value, model.EndDate.Value, model.UserId, AuthenticationService.CurrentUser.Id, role); } if ((current.Day == 1) && monthBegin.AddMonths(-1) > beginDate) { isValid = RequestBl.HaveAbsencesForPeriod(model.BeginDate.Value, model.EndDate.Value, model.UserId, AuthenticationService.CurrentUser.Id, role); } if (!isValid) { Log.InfoFormat("Absence not found for child vacation {0}", model.Id); ModelState.AddModelError(string.Empty, "Период, указанный в заявке,не соответствует данным по неявкам в табеле.Вы не можете согласовать эту заявку."); } } } } if (model.PaidToDate.HasValue && model.EndDate.HasValue && model.EndDate.Value < model.PaidToDate.Value) ModelState.AddModelError("PaidToDate","Поле 'Выплачивать по' не должно быть больше поля 'Дата окончания'."); if (model.PaidToDate1.HasValue && model.EndDate.HasValue && model.EndDate.Value < model.PaidToDate1.Value) ModelState.AddModelError("PaidToDate1", "Поле 'Выплачивать по' не должно быть больше поля 'Дата окончания'."); if (model.IsPersonnelFieldsEditable) { if (!string.IsNullOrEmpty(model.ChildrenCount)) { int childrenCount; if (!Int32.TryParse(model.ChildrenCount, out childrenCount)) ModelState.AddModelError("ChildrenCount", "Неправильно указано количество детей."); else if (childrenCount <= 0) ModelState.AddModelError("ChildrenCount", "Количество детей должно быть целым положительным числом."); } } //CheckBeginDate(model); return ModelState.IsValid; }
public ActionResult ChildVacationEdit(ChildVacationEditModel model) { CorrectCheckboxes(model); CorrectDropdowns(model); UploadFileDto fileDto = GetFileContext(); UploadFileDto orderScanFileDto = GetFileContext("orderScanFile"); if (!ValidateChildVacationEditModel(model, fileDto)) { model.IsApproved = false; model.IsApprovedForAll = false; RequestBl.ReloadDictionariesToModel(model); return View(model); } string error; if (!RequestBl.SaveChildVacationEditModel(model, fileDto, orderScanFileDto, out error)) { if (model.ReloadPage) { ModelState.Clear(); if (!string.IsNullOrEmpty(error)) ModelState.AddModelError("", error); return View(RequestBl.GetChildVacationEditModel(model.Id, model.UserId)); } if (!string.IsNullOrEmpty(error)) ModelState.AddModelError("", error); } return View(model); }
protected void CorrectDropdowns(ChildVacationEditModel model) { if (!model.IsPersonnelFieldsEditable) { if (!model.IsFirstChild && model.IsFirstChildHidden) { if (ModelState.ContainsKey("IsFirstChild")) ModelState.Remove("IsFirstChild"); model.IsFirstChild = model.IsFirstChildHidden; } if (!model.IsFreeRate && model.IsFreeRateHidden) { if (ModelState.ContainsKey("IsFreeRate")) ModelState.Remove("IsFreeRate"); model.IsFreeRate = model.IsFreeRateHidden; } if (!model.IsPreviousPaymentCounted && model.IsPreviousPaymentCountedHidden) { if (ModelState.ContainsKey("IsPreviousPaymentCounted")) ModelState.Remove("IsPreviousPaymentCounted"); model.IsPreviousPaymentCounted = model.IsPreviousPaymentCountedHidden; } } }