Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
 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;
          }
      }
 }