public IActionResult Edit(CaseArchive model, string comeFrom) { bool isDestroy = IsForDestroy(model.DateDestroy, comeFrom); ValidateModel(model, isDestroy); SetViewbag(model.CaseId, comeFrom, model.Id); if (!ModelState.IsValid) { return(View(nameof(Edit), model)); } var currentId = model.Id; string messageError = ""; if (service.CaseArchive_SaveData(model, ref messageError, isDestroy)) { this.SaveLogOperation(currentId == 0, model.Id); SetSuccessMessage(MessageConstant.Values.SaveOK); return(RedirectToAction(nameof(Edit), new { id = model.Id, comeFrom = comeFrom })); } else { SetErrorMessage(messageError != "" ? messageError : MessageConstant.Values.SaveFailed); } return(View(nameof(Edit), model)); }
/// <summary> /// Валидация преди запис на дело в архив /// </summary> /// <param name="model"></param> /// <param name="isDestroy"></param> void ValidateModel(CaseArchive model, bool isDestroy) { if ((model.IsOldNumber ?? false) && model.Id == 0) { if (string.IsNullOrEmpty(model.RegNumber)) { ModelState.AddModelError(nameof(Infrastructure.Data.Models.Cases.CaseArchive.RegNumber), "Въведете 'Стар номер'."); } if (model.RegDate.Date >= DateTime.Now.Date || model.RegDate.Year < 1900) { ModelState.AddModelError(nameof(Infrastructure.Data.Models.Cases.CaseArchive.RegDate), "Невалидна стара дата."); } } else { if (ModelState.ContainsKey("RegDate")) { if (model.Id == 0) { model.RegDate = DateTime.Now; } ModelState["RegDate"].Errors.Clear(); ModelState["RegDate"].ValidationState = Microsoft.AspNetCore.Mvc.ModelBinding.ModelValidationState.Valid; } } if (isDestroy == true && string.IsNullOrEmpty(model.ActDestroyLabel)) { ModelState.AddModelError(nameof(Infrastructure.Data.Models.Cases.CaseArchive.ActDestroyLabel), "Въведете протокол за унищожаване"); } }
/// <summary> /// Добавяне на дело в архив /// </summary> /// <param name="caseId"></param> /// <returns></returns> public IActionResult Add(int caseId) { var caseArchive = service.CaseArchiveByCaseId_Select(caseId); if (caseArchive == null) { SetViewbag(caseId, "CaseForArchive", 0); var model = new CaseArchive() { CaseId = caseId, CourtId = userContext.CourtId, IsOldNumber = false }; return(View(nameof(Edit), model)); } else { return(RedirectToAction(nameof(Edit), new { id = caseArchive.Id, comeFrom = "CaseForArchive" })); } }
/// <summary> /// Валидация преди запис на дело в архив /// </summary> /// <param name="model"></param> /// <param name="isDestroy"></param> void ValidateModel(CaseArchive model, bool isDestroy) { if ((model.IsOldNumber ?? false) && model.Id == 0) { if (string.IsNullOrEmpty(model.RegNumber)) { ModelState.AddModelError(nameof(Infrastructure.Data.Models.Cases.CaseArchive.RegNumber), "Въведете 'Стар номер'."); } if (model.RegDate.Date >= DateTime.Now.Date || model.RegDate.Year < 1900) { ModelState.AddModelError(nameof(Infrastructure.Data.Models.Cases.CaseArchive.RegDate), "Невалидна стара дата."); } } else { if (ModelState.ContainsKey("RegDate")) { if (model.Id == 0) { model.RegDate = DateTime.Now; } ModelState["RegDate"].Errors.Clear(); ModelState["RegDate"].ValidationState = Microsoft.AspNetCore.Mvc.ModelBinding.ModelValidationState.Valid; } } if (isDestroy == true && string.IsNullOrEmpty(model.ActDestroyLabel)) { ModelState.AddModelError(nameof(Infrastructure.Data.Models.Cases.CaseArchive.ActDestroyLabel), "Въведете протокол за унищожаване"); } var act = service.GetById <CaseSessionAct>(model.CaseSessionActId); if (act.ActInforcedDate != null) { if ((model.BookYear ?? 0) != ((DateTime)act.ActInforcedDate).Year) { ModelState.AddModelError(nameof(Infrastructure.Data.Models.Cases.CaseArchive.BookYear), "Година на Том не може да е различна от година на влизане в сила на акта"); } } }
public bool Counter_GetCaseArchiveCounter(CaseArchive model) { Case caseModel = null; try { caseModel = model.Case ?? repo.GetById <Case>(model.CaseId); var courtCode = repo.AllReadonly <Court>().FirstOrDefault(x => x.Id == caseModel.CourtId)?.Code; var characterCode = repo.AllReadonly <CaseCharacter>() .Where(x => x.Id == caseModel.CaseCharacterId) .Select(x => x.Code) .FirstOrDefault(); var counterId = repo.AllReadonly <CounterCase>() .Include(x => x.Counter) .Where(x => x.CaseGroupId == caseModel.CaseGroupId) .Where(x => x.Counter.CourtId == caseModel.CourtId && x.Counter.CounterTypeId == NomenclatureConstants.CounterTypes.CaseArchive) .Select(x => x.CounterId) .FirstOrDefault(); if (counterId > 0) { var shortNumber = Counter_GetValue(counterId); model.RegNumber = $"A{DateTime.Now.Year}{courtCode}{characterCode}{shortNumber}"; model.RegDate = DateTime.Now; return(true); } else { throw new Exception($"Няма настроен брояч за архивиране. CaseGroupId={ caseModel.CaseGroupId },Court={ caseModel.CourtId}"); } } catch (Exception ex) { logger.LogError(ex, $"Грешка при запис на Counter. CaseGroupId={ caseModel.CaseGroupId },Court={ caseModel.CourtId}"); } return(false); }
public bool Counter_GetCaseArchiveCounter(CaseArchive model) { throw new NotImplementedException(); }
/// <summary> /// Запис на дело в архив /// </summary> /// <param name="model"></param> /// <param name="errorMessage"></param> /// <param name="forDestroy"></param> /// <returns></returns> public bool CaseArchive_SaveData(CaseArchive model, ref string errorMessage, bool forDestroy) { try { //Годината не трябва да е различна от текущата година или от годината на влизане в сила на акта if (model.BookYear != null) { var act = repo.AllReadonly <CaseSessionAct>().Where(x => x.Id == model.CaseSessionActId).FirstOrDefault(); int actInforcedYear = act.ActInforcedDate != null ? ((DateTime)act.ActInforcedDate).Year : DateTime.Now.Year; if (model.BookYear != DateTime.Now.Year && model.BookYear != actInforcedYear) { errorMessage = "Година на Том трябва да е годината на влизане в сила на акта или текущата година"; return(false); } } if (forDestroy == false) { model.ActDestroyLabel = null; model.Description = null; model.DescriptionInfoDestroy = null; } if (model.Id == 0) { var existsArchive = repo.AllReadonly <CaseArchive>().Where(x => x.CaseId == model.CaseId).Any(); if (existsArchive == true) { errorMessage = "Делото вече е вкарано в архив"; return(false); } } if (model.Id > 0) { //Update var saved = repo.GetById <CaseArchive>(model.Id); if (forDestroy == false) { saved.CaseSessionActId = model.CaseSessionActId; saved.ArchiveIndexId = model.ArchiveIndexId; saved.ArchiveLink = model.ArchiveLink; saved.DescriptionInfo = model.DescriptionInfo; saved.StorageYears = model.StorageYears; } else { if (saved.DateDestroy == null) { saved.DateDestroy = DateTime.Now; } saved.ActDestroyLabel = model.ActDestroyLabel; saved.Description = model.Description; saved.DescriptionInfoDestroy = model.DescriptionInfoDestroy; } //тези се редактират винаги saved.BookNumber = model.BookNumber; saved.BookYear = model.BookYear; saved.UserId = userContext.UserId; saved.DateWrt = DateTime.Now; repo.Update(saved); model.DateDestroy = saved.DateDestroy; } else { //Insert if (model.IsOldNumber == true) { } else { if (counterService.Counter_GetCaseArchiveCounter(model) == false) { errorMessage = "Проблем при вземане на номер за архив"; return(false); } } model.DateDestroy = null; model.UserId = userContext.UserId; model.DateWrt = DateTime.Now; repo.Add <CaseArchive>(model); } //когато се записва архива да смени статуса на делото на Архивирано/Унищожено var caseModel = GetById <Case>(model.CaseId); if (model.DateDestroy == null) { caseModel.CaseStateId = NomenclatureConstants.CaseState.Archive; } else { caseModel.CaseStateId = NomenclatureConstants.CaseState.Destroy; } repo.Update(caseModel); repo.SaveChanges(); return(true); } catch (Exception ex) { logger.LogError(ex, $"Грешка при запис на CaseArchive Id={ model.Id }"); return(false); } }