protected bool ValidateDismissalEditModel(DismissalEditModel model, UploadFileDto fileDto) { //if (model.BeginDate.HasValue && model.EndDate.HasValue && // model.BeginDate > model.EndDate) // ModelState.AddModelError("BeginDate", "Дата начала не может превышать дату окончания."); UserRole role = AuthenticationService.CurrentUser.UserRole; if (model.Id > 0 && fileDto == null) { int attachmentCount = RequestBl.GetAttachmentsCount(model.Id, RequestAttachmentTypeEnum.Dismissal); 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; } //error = "Заявка не может быть согласована без прикрепленого скана больничного."; //needToReload = true; //return false; } } } if (role == UserRole.PersonnelManager && string.IsNullOrEmpty(model.Reason)) ModelState.AddModelError("Reason", "Основание документ - обязательное поле."); if(!string.IsNullOrEmpty(model.Compensation)) { decimal compensation; if(!Decimal.TryParse(model.Compensation,out compensation) || compensation < 0) ModelState.AddModelError("Compensation", "Кол-во дней компенсации должно быть неотрицательным десятичным числом."); } if (!string.IsNullOrEmpty(model.Reduction)) { decimal reduction; if (!Decimal.TryParse(model.Reduction, out reduction) || reduction < 0) ModelState.AddModelError("Reduction", "Кол-во дней удержания должно быть неотрицательным десятичным числом."); } if (role == UserRole.PersonnelManager && string.IsNullOrEmpty(model.Compensation) && string.IsNullOrEmpty(model.Reduction)) ModelState.AddModelError("Compensation", "Укажите \"Кол-во дней компенсации\" и/или \"Кол-во дней удержания\""); CheckEndDate(model); return ModelState.IsValid; }
public ActionResult DismissalEdit(DismissalEditModel model) { CorrectCheckboxes(model); CorrectDropdowns(model); UploadFileDto fileDto = GetFileContext(); UploadFileDto orderScanFileDto = GetFileContext("orderScanFile"); UploadFileDto unsignedOrderScanFileDto = GetFileContext("unsignedOrderScanFile"); UploadFileDto t2ScanFileDto = GetFileContext("t2ScanFile"); UploadFileDto dismissalAgreementScanFileDto = GetFileContext("dismissalAgreementScanFile"); UploadFileDto f182NScanFileDto = GetFileContext("f182NScanFile"); UploadFileDto f2NDFLScanFileDto = GetFileContext("f2NDFLScanFile"); UploadFileDto unsignedT2ScanFileDto = GetFileContext("unsignedT2ScanFile"); UploadFileDto unsignedDismissalAgreementScanFileDto = GetFileContext("unsignedDismissalAgreementScanFile"); UploadFileDto workbookRequestScanFileDto = GetFileContext("workbookRequestScanFile"); UploadFileDto cancelNoteFileDto = GetFileContext("CancelNoteScanFile"); if (!ValidateDismissalEditModel(model,fileDto)) { model.IsApproved = false; model.IsApprovedForAll = false; RequestBl.ReloadDictionariesToModel(model); return View(model); } string error; if (!RequestBl.SaveDismissalEditModel(model, new Dictionary<RequestAttachmentTypeEnum, UploadFileDto> { { RequestAttachmentTypeEnum.Dismissal, fileDto}, { RequestAttachmentTypeEnum.UnsignedDismissalOrderScan, unsignedOrderScanFileDto}, { RequestAttachmentTypeEnum.DismissalOrderScan, orderScanFileDto}, { RequestAttachmentTypeEnum.T2Scan, t2ScanFileDto }, { RequestAttachmentTypeEnum.DismissalAgreementScan, dismissalAgreementScanFileDto }, { RequestAttachmentTypeEnum.F182NScan, f182NScanFileDto }, { RequestAttachmentTypeEnum.F2NDFLScan, f2NDFLScanFileDto }, { RequestAttachmentTypeEnum.UnsignedT2Scan, unsignedT2ScanFileDto }, { RequestAttachmentTypeEnum.UnsignedDismissalAgreementScan, unsignedDismissalAgreementScanFileDto }, { RequestAttachmentTypeEnum.WorkbookRequestScan, workbookRequestScanFileDto}, { RequestAttachmentTypeEnum.CancelNote, cancelNoteFileDto} }, out error)) { //HttpContext.AddError(new Exception(error)); if (model.ReloadPage) { ModelState.Clear(); if (!string.IsNullOrEmpty(error)) ModelState.AddModelError("", error); return View(RequestBl.GetDismissalEditModel(model.Id, model.UserId)); } if (!string.IsNullOrEmpty(error)) ModelState.AddModelError("", error); } return View(model); }
protected void CorrectDropdowns(DismissalEditModel model) { if (!model.IsPersonnelFieldsEditable) model.TypeId = model.TypeIdHidden; /*if (!model.IsPersonnelFieldsEditable) model.StatusId = model.StatusIdHidden;*/ //model.DaysCount = model.DaysCountHidden; }