public IActionResult EditCaseCrime(CaseCrime model) { SetViewbagCaseCrime(model.CaseId); var caseModel = service.GetById <Case>(model.CaseId); ViewBag.GenerateNumber = eisppService.IsForEisppNum(caseModel); ValidateCaseCrime(model); if (!ModelState.IsValid) { return(View(nameof(EditCaseCrime), model)); } var currentId = model.Id; if (service.CaseCrime_SaveData(model)) { SetAuditContext(service, SourceTypeSelectVM.CaseCrime, model.Id, currentId == 0); this.SaveLogOperation(currentId == 0, model.Id); SetSuccessMessage(MessageConstant.Values.SaveOK); return(RedirectToAction(nameof(EditCaseCrime), new { id = model.Id })); } else { SetErrorMessage(MessageConstant.Values.SaveFailed); } return(View(nameof(EditCaseCrime), model)); }
/// <summary> /// Валидация преди запис на престъпления към дело /// </summary> /// <param name="model"></param> /// <returns></returns> private void ValidateCaseCrime(CaseCrime model) { if (string.IsNullOrEmpty(model.EISSPNumber)) { ModelState.AddModelError("EISSPNumber", "Въведете код по ЕИСПП"); } if (model.CrimeCode == "0" || model.CrimeCode == "-1") { ModelState.AddModelError("CrimeCode", "Изберете престъпление"); } }
/// <summary> /// Запис на Престъпления по НД по дело /// </summary> /// <param name="model"></param> /// <returns></returns> public bool CaseCrime_SaveData(CaseCrime model) { try { model.StartDateType = model.StartDateType.EmptyToNull(0); model.CompletitionDegree = model.CompletitionDegree.EmptyToNull(0); model.Status = model.Status.EmptyToNull(0); if (model.Id > 0) { //Update var saved = repo.GetById <CaseCrime>(model.Id); saved.CaseId = model.CaseId; saved.EISSId = model.EISSId; saved.EISSPNumber = model.EISSPNumber; if (saved.CrimeCode != model.CrimeCode) { saved.CrimeCode = model.CrimeCode; saved.CrimeName = eisppService.GetByCode(model.CrimeCode).Label; } saved.StartDateType = model.StartDateType; saved.CompletitionDegree = model.CompletitionDegree; saved.Status = model.Status; saved.StatusDate = model.StatusDate; saved.DateFrom = model.DateFrom; saved.DateTo = model.DateTo; saved.DateWrt = DateTime.Now; saved.UserId = userContext.UserId; repo.Update(saved); repo.SaveChanges(); } else { model.CrimeName = eisppService.GetByCode(model.CrimeCode).Label; model.DateWrt = DateTime.Now; model.UserId = userContext.UserId; repo.Add <CaseCrime>(model); repo.SaveChanges(); } return(true); } catch (Exception ex) { logger.LogError(ex, $"Грешка при запис на Престъпления по НД по дело Id={ model.Id }"); return(false); } }
/// <summary> /// Добавяне на престъпления към дело /// </summary> /// <param name="caseId"></param> /// <returns></returns> public IActionResult AddCaseCrime(int caseId) { if (!CheckAccess(service, SourceTypeSelectVM.CaseCrime, null, AuditConstants.Operations.Append, caseId)) { return(Redirect_Denied()); } SetViewbagCaseCrime(caseId); var model = new CaseCrime() { CaseId = caseId, CourtId = userContext.CourtId, DateFrom = DateTime.Now }; return(View(nameof(EditCaseCrime), model)); }
/// <summary> /// Добавяне на престъпления към дело /// </summary> /// <param name="caseId"></param> /// <returns></returns> public IActionResult AddCaseCrime(int caseId) { if (!CheckAccess(service, SourceTypeSelectVM.CaseCrime, null, AuditConstants.Operations.Append, caseId)) { return(Redirect_Denied()); } var caseModel = service.GetById <Case>(caseId); ViewBag.GenerateNumber = eisppService.IsForEisppNum(caseModel); SetViewbagCaseCrime(caseId); var model = new CaseCrime() { CaseId = caseId, CourtId = userContext.CourtId, DateFrom = DateTime.Now }; return(View(nameof(EditCaseCrime), model)); }
/// <summary> /// Валидация преди запис на престъпления към дело /// </summary> /// <param name="model"></param> /// <returns></returns> private void ValidateCaseCrime(CaseCrime model) { if (string.IsNullOrEmpty(model.EISSPNumber)) { var caseModel = service.GetById <Case>(model.CaseId); if (!eisppService.IsForEisppNum(caseModel)) { ModelState.AddModelError("EISSPNumber", "Въведете код по ЕИСПП"); } } if (string.IsNullOrEmpty(model.CrimeCode) || model.CrimeCode == "0" || model.CrimeCode == "-1") { ModelState.AddModelError("CrimeCode", "Изберете престъпление"); } if (model.Id <= 0) { if (service.IsEISPPNumberExists(model.CaseId, model.EISSPNumber)) { ModelState.AddModelError("EISSPNumber", $"{model.EISSPNumber} на престъпление вече е добавен към делото"); } } }
/// <summary> /// Метод за пълнене на престъпления от еиспп към структурите на текущата система /// </summary> /// <param name="caseId">ид дело</param> /// <param name="pnenmr">номер на престъпление</param> /// <returns></returns> public async Task <bool> CasePersonCrimeFillFromEispp_SaveData(int caseId, string pnenmr) { try { var casePeople = repo.AllReadonly <CasePerson>() .Where(x => x.CaseId == caseId && x.CaseSessionId == null && x.Person_SourceType == SourceTypeSelectVM.EisppPerson) .ToList(); var caseModel = repo.AllReadonly <Case>() .Where(x => x.Id == caseId) .FirstOrDefault(); var eisppModel = await eisppService.GetTSAKTSTSResponse(caseModel.EISSPNumber).ConfigureAwait(false); var pne = eisppModel.execTSAKTSTSResponse.sNPRAKTSTS.sPNE.FirstOrDefault(x => x.pnenmr == pnenmr); var caseCrime = new CaseCrime() { CourtId = userContext.CourtId, CaseId = caseId, EISSId = pne.pnesid, EISSPNumber = pne.pnenmr, CrimeCode = pne.PNESTA.pnekcq, CrimeName = eisppService.GetByCode(pne.PNESTA.pnekcq).Label, DateFrom = pne.pnedtaotd, StartDateType = pne.pneotdtip.ToInt(), DateTo = pne.pnedtadod != Crime.defaultDate ? (DateTime?)pne.pnedtadod : null, Status = pne.PNESTA?.pnests.ToInt(), StatusDate = pne.PNESTA?.pnestsdta != Crime.defaultDate ? (DateTime?)pne.PNESTA?.pnestsdta : null, CompletitionDegree = pne.PNESTA?.pnestpdvs.ToInt() }; caseCrime.CasePersonCrimes = new List <CasePersonCrime>(); if (eisppModel.execTSAKTSTSResponse.sNPRAKTSTS.sFZL != null) { foreach (var fzl in eisppModel.execTSAKTSTSResponse.sNPRAKTSTS.sFZL) { var fzlpneList = eisppModel.execTSAKTSTSResponse.sNPRAKTSTS.sNPRFZLPNE .Where(x => x.pnesid.ToString() == pne.pnesid) .Where(x => x.fzlsid.ToString() == fzl.fzlsid) .ToList(); foreach (var fzlpne in fzlpneList) { var person = casePeople.Where(p => (p.Person_SourceId ?? 0).ToString() == fzl.fzlsid).FirstOrDefault(); if (person == null) { person = casePeople.Where(p => p.Uic == fzl.fzlegn).FirstOrDefault(); } if (person != null) { var personCrime = new CasePersonCrime() { CourtId = userContext.CourtId, CaseId = caseId, CasePersonId = person.Id, CaseCrimeId = caseCrime.Id, PersonRoleInCrimeId = nomenclatureService.GetInnerCodeFromCodeMapping(NomenclatureConstants.CodeMappingAlias.CasePersonCrimeRole, fzlpne.SCQ.scqrlq), RecidiveTypeId = nomenclatureService.GetInnerCodeFromCodeMapping(EISPPConstants.EisppMapping.Relaps, fzlpne.SBC?.sbcrcd), }; if (personCrime.RecidiveTypeId <= 0) { personCrime.RecidiveTypeId = NomenclatureConstants.RecidiveTypes.None; } caseCrime.CasePersonCrimes.Add(personCrime); } } } } repo.Add(caseCrime); repo.SaveChanges(); return(true); } catch (Exception ex) { logger.LogError(ex, $"Грешка при запис на Престъпление от ЕИСПП Id={ caseId }"); return(false); } }