/// <summary> /// Валидация преди запис на сесии към заседание /// </summary> /// <param name="model"></param> /// <returns></returns> private string IsValid(CaseSessionMeetingEditVM model) { var caseSession = service.GetById <CaseSession>(model.CaseSessionId); if (model.DateFrom == null) { return("Няма въведена начална дата"); } if (model.DateTo != null) { if (model.DateFrom > model.DateTo) { return("Началната дата е по-голяма от крайната"); } } if (service.IsExistMeetengInSession(model.DateFrom, model.DateTo, model.CaseSessionId, model.Id)) { return("Има сесия в това заседание съвпадаща като време"); } if (model.IsAutoCreate ?? false) { if (model.SessionStateId < 1) { return("Изберете статус на заседание."); } if (model.SessionStateId == NomenclatureConstants.SessionState.Provedeno) { if (caseSession.DateFrom > DateTime.Now) { return("Не може да отразите проведено заседание с бъдеща дата/час."); } var dateNow = DateTime.Now; if (service.IsExistMeetengInSessionAfterDate(dateNow, caseSession.Id, model.Id) || (model.DateTo >= dateNow)) { return("Има сесии в това заседание, които не са проведени."); } } if (model.SessionStateId == NomenclatureConstants.SessionState.Nasrocheno) { if (caseSession.DateFrom <= DateTime.Now) { return("Не може да насрочвате/коригирате заседание с минала дата/час."); } } } return(string.Empty); }
public IActionResult Edit(CaseSessionMeetingEditVM model) { model.DateFrom = model.DateFrom.MakeEndSeconds(); model.DateTo = model.DateTo.MakeEndSeconds(); SetViewbag(model.CaseSessionId, model.SessionStateId); if (model.CaseSessionMeetingUser == null) { model.CaseSessionMeetingUser = new List <Infrastructure.Models.ViewModels.CheckListVM>(); } if (!ModelState.IsValid) { return(View(nameof(Edit), model)); } model.DateTo = new DateTime(model.DateFrom.Year, model.DateFrom.Month, model.DateFrom.Day, model.DateTo.Hour, model.DateTo.Minute, model.DateTo.Second); string _isvalid = IsValid(model); if (_isvalid != string.Empty) { SetErrorMessage(_isvalid); return(View(nameof(Edit), model)); } var currentId = model.Id; if (service.CaseSessionMeeting_SaveData(model)) { //model.CaseSessionMeetingUser = service.GetCheckListCaseSessionMeetingUser(model.CaseSessionId, model.Id); SetAuditContext(service, SourceTypeSelectVM.CaseSessionMeeting, model.Id, currentId == 0); this.SaveLogOperation(currentId == 0, model.Id); SetSuccessMessage(MessageConstant.Values.SaveOK); if ((!sessionService.IsExistCaseSessionResult(model.CaseSessionId)) && (model.SessionStateId == NomenclatureConstants.SessionState.Provedeno)) { SetSuccessMessage(MessageConstant.Values.SaveOK + " Моля, добавете резултат от заседание."); return(RedirectToAction("AddResult", "CaseSession", new { caseSessionId = model.CaseSessionId })); } else { SetSuccessMessage(MessageConstant.Values.SaveOK); return(RedirectToAction("Preview", "CaseSession", new { id = model.CaseSessionId })); } } else { SetErrorMessage(MessageConstant.Values.SaveFailed); } return(View(nameof(Edit), model)); }
/// <summary> /// Попълване на основен обект за запис на Тайни съвещания/сесии към заседание /// </summary> /// <param name="model"></param> /// <returns></returns> private CaseSessionMeeting FillCaseSessionMeeting(CaseSessionMeetingEditVM model) { return(new CaseSessionMeeting() { Id = model.Id, CourtId = model.CourtId, CaseId = model.CaseId, CaseSessionId = model.CaseSessionId, SessionMeetingTypeId = model.SessionMeetingTypeId, DateFrom = model.DateFrom, DateTo = model.DateTo, Description = model.Description, IsActive = model.IsActive, IsAutoCreate = model.IsAutoCreate, CourtHallId = model.CourtHallId }); }
public void CaseSessionMeeting_SaveDataTest() { using (serviceProvider.CreateScope()) { var service = serviceProvider.GetService <ICaseSessionMeetingService>(); var userContext = serviceProvider.GetService <IUserContext>(); var repo = serviceProvider.GetService <IRepository>(); var saved = new CaseSessionMeetingEditVM() { CaseId = 1, CourtId = 1, CaseSessionId = 1, SessionMeetingTypeId = 1, DateFrom = DateTime.Now, DateTo = DateTime.Now, Description = "Test", IsActive = true, IsAutoCreate = true, CourtHallId = 1, }; saved.CaseSessionMeetingUser = new List <Infrastructure.Models.ViewModels.CheckListVM>(); saved.CaseSessionMeetingUser.Add(new Infrastructure.Models.ViewModels.CheckListVM() { Checked = true, Label = "Test", Value = "1" }); service.CaseSessionMeeting_SaveData(saved); var caseSessionMeeting = repo.AllReadonly <CaseSessionMeeting>().FirstOrDefault(); var caseSessionMeetingUser = repo.AllReadonly <CaseSessionMeetingUser>().FirstOrDefault(); Assert.That(saved.CaseId, Is.EqualTo(caseSessionMeeting.CaseId)); Assert.That(saved.CourtId, Is.EqualTo(caseSessionMeeting.CourtId)); Assert.That(saved.SessionMeetingTypeId, Is.EqualTo(caseSessionMeeting.SessionMeetingTypeId)); Assert.That(saved.DateFrom, Is.EqualTo(caseSessionMeeting.DateFrom)); Assert.That(saved.DateTo, Is.EqualTo(caseSessionMeeting.DateTo)); Assert.That(saved.IsActive, Is.EqualTo(caseSessionMeeting.IsActive)); Assert.That(saved.IsAutoCreate, Is.EqualTo(caseSessionMeeting.IsAutoCreate)); Assert.That(saved.CourtHallId, Is.EqualTo(caseSessionMeeting.CourtHallId)); Assert.That(saved.Description, Is.EqualTo(caseSessionMeeting.Description)); Assert.That(saved.CaseSessionMeetingUser.Select(x => x.Value).FirstOrDefault(), Is.EqualTo(caseSessionMeetingUser.SecretaryUserId)); } }
/// <summary> /// Добавяне на сесии към заседание /// </summary> /// <param name="caseSessionId"></param> /// <returns></returns> public IActionResult Add(int caseSessionId) { if (!CheckAccess(service, SourceTypeSelectVM.CaseSessionMeeting, null, AuditConstants.Operations.Append, caseSessionId)) { return(Redirect_Denied()); } var modelSession = service.GetById <CaseSession>(caseSessionId); var model = new CaseSessionMeetingEditVM() { CourtId = modelSession.CourtId, CaseId = modelSession.CaseId, CaseSessionId = caseSessionId, DateFrom = modelSession.DateFrom, DateTo = (modelSession.DateTo ?? modelSession.DateFrom), CourtHallId = modelSession.CourtHallId, IsAutoCreate = false, CaseSessionMeetingUser = service.GetCheckListCaseSessionMeetingUser(caseSessionId) }; SetViewbag(caseSessionId); return(View(nameof(Edit), model)); }
/// <summary> /// Валидация преди запис на сесии към заседание /// </summary> /// <param name="model"></param> /// <returns></returns> private string IsValid(CaseSessionMeetingEditVM model) { var caseSession = service.GetById <CaseSession>(model.CaseSessionId); if (model.DateFrom == null) { return("Няма въведена начална дата"); } //else //{ // if (model.DateFrom < caseSession.DateFrom) // return "Началната дата е преди началната дата на заседанието"; //} //if (model.DateFrom >= DateTime.Now) // return "Сесията трябва да е с минала начална дата"; if (model.DateTo != null) { //if (model.DateTo >= DateTime.Now) // return "Сесията трябва да е с минала крайна дата"; if (model.DateFrom > model.DateTo) { return("Началната дата е по-голяма от крайната"); } //if (model.DateTo > caseSession.DateTo) // return "Крайната дата е след датата на заседанието"; } if (service.IsExistMeetengInSession(model.DateFrom, model.DateTo, model.CaseSessionId, model.Id)) { return("Има сесия в това заседание съвпадаща като време"); } return(string.Empty); }
/// <summary> /// Запис на Тайни съвещания/сесии към заседание /// </summary> /// <param name="model"></param> /// <returns></returns> public bool CaseSessionMeeting_SaveData(CaseSessionMeetingEditVM model) { try { model.CourtHallId = model.CourtHallId.EmptyToNull(); var modelSave = FillCaseSessionMeeting(model); using (TransactionScope ts = new TransactionScope()) { if (model.Id > 0) { //Update var saved = repo.GetById <CaseSessionMeeting>(modelSave.Id); saved.SessionMeetingTypeId = modelSave.SessionMeetingTypeId; saved.CourtHallId = model.CourtHallId; saved.DateFrom = modelSave.DateFrom; saved.DateTo = modelSave.DateTo; saved.Description = modelSave.Description; saved.DateWrt = DateTime.Now; saved.UserId = userContext.UserId; repo.Update(saved); var caseSessionMeetingUsers = repo.AllReadonly <CaseSessionMeetingUser>() .Where(x => x.CaseSessionMeetingId == modelSave.Id) .ToList(); repo.DeleteRange <CaseSessionMeetingUser>(caseSessionMeetingUsers); } else { //Insert modelSave.DateWrt = DateTime.Now; modelSave.UserId = userContext.UserId; repo.Add <CaseSessionMeeting>(modelSave); } if (model.CaseSessionMeetingUser != null) { foreach (var checkedItem in model.CaseSessionMeetingUser.Where(x => x.Checked)) { var userSave = new CaseSessionMeetingUser() { CourtId = modelSave.CourtId, CaseId = modelSave.CaseId, CaseSessionMeetingId = modelSave.Id, SecretaryUserId = checkedItem.Value, DateWrt = DateTime.Now, UserId = userContext.UserId }; repo.Add(userSave); } } if (model.IsAutoCreate ?? false) { if (model.SessionStateId != null) { var caseSessionUpdate = repo.GetById <CaseSession>(model.CaseSessionId); caseSessionUpdate.SessionStateId = model.SessionStateId ?? 0; caseSessionUpdate.DateWrt = DateTime.Now; caseSessionUpdate.UserId = userContext.UserId; repo.Update(caseSessionUpdate); } } repo.SaveChanges(); //Запис на пари за заседатели var caseSession = repo.AllReadonly <CaseSession>() .Where(x => x.Id == model.CaseSessionId) .FirstOrDefault(); (bool result, string errorMessage) = moneyService.CalcEarningsJury(caseSession, userContext.CourtId); if (result == false) { return(false); } if (model.Id < 1) { model.Id = modelSave.Id; } ts.Complete(); } return(true); } catch (Exception ex) { logger.LogError(ex, $"Грешка при запис на тайно съвещание Id={ model.Id }"); return(false); } }