Пример #1
0
 protected void CorrectDropdowns(SicklistEditModel model)
 {
     if (!model.IsTypeEditable)
      {
          model.TypeId = model.TypeIdHidden;
          model.BabyMindingTypeId = model.BabyMindingTypeIdHidden;
      }
      if(!model.IsDatesEditable)
          model.IsContinued = model.IsContinuedHidden;
      /*if (!model.IsBabyMindingTypeEditable)
          model.BabyMindingTypeId = model.BabyMindingTypeIdHidden;*/
      if (!model.IsTimesheetStatusEditable)
          model.TimesheetStatusId = model.TimesheetStatusIdHidden;
      model.DaysCount = model.DaysCountHidden;
      if(!model.IsPersonnelFieldsEditable)
      {
          model.PaymentRestrictTypeId = model.PaymentRestrictTypeIdHidden;
          model.PaymentPercentTypeId = model.PaymentPercentTypeIdHidden;
      }
 }
Пример #2
0
        protected bool ValidateSicklistEditModel(SicklistEditModel model, UploadFileDto fileDto
             /*out bool needToReload,out string error*/)
        {
            //needToReload = false;
             //error = string.Empty;
             if (model.Id > 0 && fileDto == null)
             {
                 int attachmentCount = RequestBl.GetAttachmentsCount(model.Id,RequestAttachmentTypeEnum.Sicklist);
                 if (attachmentCount <= 0)
                 {
                     UserRole role = AuthenticationService.CurrentUser.UserRole;
                     if ((role == UserRole.Employee && model.IsApprovedByUser) ||
                         (role == UserRole.Manager && model.IsApprovedByManager) ||
                         ((role == UserRole.PersonnelManager || role == UserRole.OutsourcingManager || role == UserRole.Estimator) && 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 (model.BeginDate.HasValue && model.EndDate.HasValue)
             {
                 UserRole role = AuthenticationService.CurrentUser.UserRole;

                 // Проверка на дубликаты
                 int requestCount = RequestBl.GetOtherRequestCountsForUserAndDates(model.BeginDate.Value, model.EndDate.Value, model.UserId, model.Id, RequestTypeEnum.Sicklist);
                 if (requestCount > 0)
                     ModelState.AddModelError("BeginDate", "Для данного пользователя существуют другие заявки в указанном интервале дат.");

                 if(model.BeginDate > model.EndDate)
                    ModelState.AddModelError("BeginDate", "Дата начала отпуска не может превышать дату окончания отпуска.");
                 else if (!model.IsDelete && 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);
                         //ModelState.AddModelError(string.Empty, "Создание/изменение заявки в прошлом запрещено .");
                         //return;
                     }
                     if ((current.Day == 1) && monthBegin.AddMonths(-1) > beginDate)
                     {
                         isValid = RequestBl.HaveAbsencesForPeriod(model.BeginDate.Value,
                             model.EndDate.Value, model.UserId, AuthenticationService.CurrentUser.Id,role);
                         //ModelState.AddModelError(string.Empty, "Создание/изменение заявки в прошлом запрещено .");
                         //return;
                     }
                     if(!isValid)
                     {
                         Log.InfoFormat("Absence not found for sicklist {0}",model.Id);
                         ModelState.AddModelError(string.Empty,
              "Период, указанный в заявке,не соответствует данным по неявкам в табеле.Вы не можете согласовать эту заявку.");
                     }
                 }
             }

             if (!string.IsNullOrEmpty(model.SicklistNumber))
             {
                 Regex r = new Regex(@"^\d{12}$");
                 if(!r.IsMatch(model.SicklistNumber))
                    ModelState.AddModelError("SicklistNumber", "Номер больничного листа должен содержать 12 цифр");
             }

             if (model.IsPersonnelFieldsEditable && AuthenticationService.CurrentUser.UserRole != UserRole.OutsourcingManager && AuthenticationService.CurrentUser.UserRole != UserRole.Estimator)
             {
                 if (string.IsNullOrEmpty(model.ExperienceYears) && string.IsNullOrEmpty(model.ExperienceYears) && !(model.ExperienceIn1C == true))
                    ModelState.AddModelError("ExperienceYears", "Необходимо заполнить хотя бы одно из полей стажа.");

                 if (!string.IsNullOrEmpty(model.ExperienceYears))
                 {
                     int experienceYears;
                     if (!Int32.TryParse(model.ExperienceYears, out experienceYears))
                         ModelState.AddModelError("ExperienceYears", "Неправильно указано число лет стажа.");
                     else if (experienceYears < 0)
                         ModelState.AddModelError("ExperienceYears",
                                                  "Число лет стажа должно быть неотрицательным числом.");
                 }
                 if (!string.IsNullOrEmpty(model.ExperienceMonthes))
                 {
                     int experienceMonth;
                     if (!Int32.TryParse(model.ExperienceMonthes, out experienceMonth))
                         ModelState.AddModelError("ExperienceMonthes", "Неправильно указано число месяцев стажа.");
                     else if (experienceMonth < 0 || experienceMonth > 11)
                         ModelState.AddModelError("ExperienceMonthes",
                                                  "Число месяцев стажа должно быть неотрицательным числом меньшим 12.");
                 }
             }

             if (model.IsPersonnelFieldsEditable)
             {
                 if (!model.PaymentBeginDate.HasValue)
                     ModelState.AddModelError("PaymentBeginDate","'Назначить с даты' - обязательное поле.");

                 if(model.PaymentBeginDate.HasValue && model.BeginDate.HasValue && model.BeginDate.Value > model.PaymentBeginDate.Value)
                     ModelState.AddModelError("PaymentBeginDate",
                                                  "Поле 'Назначить с даты' не должно быть меньше поля 'Дата начала'.");
                 if (model.PaymentBeginDate.HasValue && model.EndDate.HasValue && model.EndDate.Value < model.PaymentBeginDate.Value)
                     ModelState.AddModelError("PaymentBeginDate",
                                                  "Поле 'Назначить с даты' не должно быть больше поля 'Дата окончания'.");
                 if (model.PaymentDecreaseDate.HasValue && model.BeginDate.HasValue && model.BeginDate.Value > model.PaymentDecreaseDate.Value)
                     ModelState.AddModelError("PaymentDecreaseDate",
                                                  "Поле 'Снизить пособие за нарушение режима с' не должно быть меньше поля 'Дата начала'.");
                 if (model.PaymentDecreaseDate.HasValue && model.EndDate.HasValue && model.EndDate.Value < model.PaymentDecreaseDate.Value)
                     ModelState.AddModelError("PaymentBeginDate",
                                                  "Поле 'Снизить пособие за нарушение режима с' не должно быть больше поля 'Дата окончания'.");
             }
             return ModelState.IsValid;
        }
Пример #3
0
 public ActionResult SicklistEdit(SicklistEditModel model)
 {
     CorrectCheckboxes(model);
      CorrectDropdowns(model);
      UploadFileDto fileDto = GetFileContext();
      //bool needToReload;
      //string error;
      if (!ValidateSicklistEditModel(model, fileDto/*,out needToReload,out error*/))
      {
          model.IsApproved = false;
          model.IsApprovedForAll = false;
          //if(needToReload)
          //{
          //    ModelState.Clear();
          //    if (!string.IsNullOrEmpty(error))
          //        ModelState.AddModelError("", error);
          //    return View(RequestBl.GetSicklistEditModel(model.Id, model.UserId));
          //}
          RequestBl.ReloadDictionariesToModel(model);
          return View(model);
      }
      string error;
      if (!RequestBl.SaveSicklistEditModel(model, fileDto, out error))
      {
          //HttpContext.AddError(new Exception(error));
          if (model.ReloadPage)
          {
              ModelState.Clear();
              if (!string.IsNullOrEmpty(error))
                  ModelState.AddModelError("", error);
              return View(RequestBl.GetSicklistEditModel(model.Id, model.UserId));
          }
          if (!string.IsNullOrEmpty(error))
              ModelState.AddModelError("", error);
      }
      return View(model);
 }