protected void CorrectDropdowns(VacationEditModel model) { if (!model.IsVacationTypeEditable) model.VacationTypeId = model.VacationTypeIdHidden; if (!model.IsTimesheetStatusEditable) model.TimesheetStatusId = model.TimesheetStatusIdHidden; model.DaysCount = model.DaysCountHidden; }
protected bool ValidateVacationEditModel(VacationEditModel model, UploadFileDto fileDto) { ModelState.Clear(); UserRole role = AuthenticationService.CurrentUser.UserRole; if (model.Id > 0 && fileDto == null) { int attachmentCount = RequestBl.GetAttachmentsCount(model.Id, RequestAttachmentTypeEnum.Vacation); 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, false); if(requestCount > 0) ModelState.AddModelError("BeginDate", "Для данного пользователя существуют другие заявки в указанном интервале дат."); } } CheckBeginDate(model); return ModelState.IsValid; }
public ActionResult VacationEdit(VacationEditModel model) { string source = Newtonsoft.Json.JsonConvert.SerializeObject(model); CorrectCheckboxes(model); CorrectDropdowns(model); UploadFileDto fileDto = GetFileContext(); UploadFileDto orderScanFileDto = GetFileContext("orderScanFile"); UploadFileDto unsignedOrderScanFileDto = GetFileContext("unsignedOrderScanFile"); #region Для сохранения файла после выгрузки в 1с #Заплатка bool IsSaveFileAfterSendTo1C = false; if(orderScanFileDto!=null && model.Id>0) RequestBl.SaveVacationFileAfter1C(model, orderScanFileDto) .OnSuccess(x => { RequestBl.ReloadDictionariesToModel(model); IsSaveFileAfterSendTo1C = true; } ); if (IsSaveFileAfterSendTo1C) return View(model); #endregion if (!ValidateVacationEditModel(model,fileDto)) { model.IsApproved = false; model.IsApprovedForAll = false; RequestBl.ReloadDictionariesToModel(model); return View(model); } string error; if (!RequestBl.SaveVacationEditModel(model, fileDto, unsignedOrderScanFileDto, orderScanFileDto, out error)) { if (model.ReloadPage) { ModelState.Clear(); if (!string.IsNullOrEmpty(error)) ModelState.AddModelError("", error); return View(RequestBl.GetVacationEditModel(model.Id, model.UserId)); } if (!string.IsNullOrEmpty(error)) ModelState.AddModelError("", error); } return View(model); }