public IActionResult Edit(CaseMigration model) { if (model.SendToTypeId == NomenclatureConstants.CaseMigrationSendTo.Court && (model.SendToCourtId ?? 0) <= 0) { ModelState.AddModelError(nameof(CaseMigration.SendToCourtId), "Изберете съд"); } if (model.SendToTypeId == NomenclatureConstants.CaseMigrationSendTo.Institution && (model.SendToInstitutionId ?? 0) <= 0) { ModelState.AddModelError(nameof(CaseMigration.SendToInstitutionId), "Изберете институция"); } if (NomenclatureConstants.CaseMigrationTypes.ReturnCaseTypes.Contains(model.CaseMigrationTypeId) && (model.ReturnCaseId ?? 0) <= 0) { ModelState.AddModelError(nameof(CaseMigration.ReturnCaseId), "Изберете дело, подлежащо на връщане"); } if (!ModelState.IsValid) { SetViewBag(model); return(View(model)); } var currentId = model.Id; if (migService.SaveData(model)) { CheckAccess(migService, SourceTypeSelectVM.CaseMigration, model.Id, (currentId == 0) ? AuditConstants.Operations.Append : AuditConstants.Operations.Update, model.CaseId); this.SaveLogOperation(currentId == 0, model.Id); SetSuccessMessage(MessageConstant.Values.SaveOK); return(RedirectToAction(nameof(Edit), new { id = model.Id })); } else { SetErrorMessage(MessageConstant.Values.SaveFailed); SetViewBag(model); return(View(model)); } }
/// <summary> /// Обединяване на дела /// </summary> /// <param name="model"></param> /// <returns></returns> public bool UnionCase(CaseMigrationUnionVM model) { try { var lastInitialCaseId = repo.AllReadonly <CaseMigration>() .Where(x => x.CaseId == model.CaseId) .OrderBy(x => x.Id) .Select(x => x.InitialCaseId) .DefaultIfEmpty(model.CaseId) .FirstOrDefault(); var newCase = repo.GetById <Case>(model.CaseId); var oldCase = repo.GetById <Case>(model.CaseToUnionId); newCase.LoadIndex = Math.Max(newCase.LoadIndex, oldCase.LoadIndex); var newCaseMigration = new CaseMigration() { InitialCaseId = lastInitialCaseId, CaseId = model.CaseId, CourtId = newCase.CourtId, PriorCaseId = model.CaseToUnionId, CaseMigrationTypeId = NomenclatureConstants.CaseMigrationTypes.CaseUnion, DateWrt = DateTime.Now, UserId = userContext.UserId, SendToTypeId = NomenclatureConstants.CaseMigrationSendTo.Court, SendToCourtId = userContext.CourtId, Description = model.Description }; var oldCaseMigration = new CaseMigration() { InitialCaseId = lastInitialCaseId, CaseId = model.CaseToUnionId, CourtId = oldCase.CourtId, PriorCaseId = model.CaseId, CaseMigrationTypeId = NomenclatureConstants.CaseMigrationTypes.CaseUnion, DateWrt = DateTime.Now, UserId = userContext.UserId, SendToTypeId = NomenclatureConstants.CaseMigrationSendTo.Court, SendToCourtId = userContext.CourtId }; repo.Add(newCaseMigration); repo.Add(oldCaseMigration); repo.Update(newCase); repo.SaveChanges(); return(true); } catch (Exception ex) { logger.LogError(ex, $"UnionCase CaseId={model.CaseId}; UnionCaseId={model.CaseToUnionId}"); return(false); } }
void SetViewBag(CaseMigration model) { ViewBag.CaseMigrationTypeId_ddl = migService.Get_MigrationTypes(NomenclatureConstants.CaseMigrationDirections.Outgoing); ViewBag.SendToInstitutionTypeId_ddl = nomService.GetDropDownList <InstitutionType>(); ViewBag.ReturnCaseId_ddl = migService.GetDropDownList_ReturnCase(model.CaseId); ViewBag.ApealCaseSessionActId_ddl = actService.GetDDL_CanAppealAct(model.CaseId).SetSelected(model.CaseSessionActId); ViewBag.AllEnforecedCaseSessionActId_ddl = actService.GetDropDownList_CaseSessionActEnforced(model.CaseId).SetSelected(model.CaseSessionActId); ViewBag.caseId = model.CaseId; ViewBag.breadcrumbs = commonService.Breadcrumbs_GetForCase(model.CaseId); SetHelpFile(HelpFileValues.CaseMigration); }
/// <summary> /// Сетване на първото дело по Вертикално движение на дело - между институциите /// </summary> /// <param name="caseId"></param> /// <returns></returns> public CaseMigration InitNewMigration(int caseId) { var caseCase = repo.GetById <Case>(caseId); CaseMigration result = new CaseMigration() { CaseId = caseId, CourtId = caseCase.CourtId, SendToTypeId = CaseMigrationSendTo.Court, PriorCaseId = caseId }; int[] initCaseIds = get_InitialCases(caseId); var lastCaseMigration = repo.AllReadonly <CaseMigration>() .Include(x => x.CaseMigrationType) .Include(x => x.Case) .ThenInclude(x => x.Court) .Where(x => x.SendToCourtId == userContext.CourtId && initCaseIds.Contains(x.InitialCaseId)) .Where(x => x.SendToTypeId == CaseMigrationSendTo.Court) .Where(x => x.CaseMigrationType.MigrationDirection == CaseMigrationDirections.Outgoing) .OrderByDescending(x => x.Id) .Select(x => new CaseMigrationVM { Id = x.Id, CaseId = x.CaseId, InitialCaseId = x.InitialCaseId, CaseRegNumber = x.Case.RegNumber, CaseRegDate = x.Case.RegDate, MigrationTypeId = x.CaseMigrationTypeId, MigrationTypeName = x.CaseMigrationType.Label, Description = x.Description, SentToName = x.Case.Court.Label }).FirstOrDefault(); if (lastCaseMigration != null) { result.InitialCaseId = lastCaseMigration.InitialCaseId; } return(result); }
private SendToType FillSendTo(CaseMigration migration, CaseSessionAct sessionAct) { (var newId, var action) = AppendUpdateIntegrationKeyAction(SourceTypeSelectVM.CaseMigration, migration.Id, migration.DateExpired != null); if (string.IsNullOrEmpty(newId)) { return(null); } SendToType result = new SendToType(); result.sendto_id = newId; result.sendto_action = ServiceMethodToAction(action); result.sendto_kind = GetNomValueInt(EpepConstants.Nomenclatures.OutgoingDocumentTypes, migration.OutDocument.DocumentTypeId); result.sendto_no = migration.OutDocument.DocumentNumberValue ?? 0; result.sendto_year = migration.OutDocument.DocumentDate.Year.ToString(); result.sendto_date = migration.OutDocument.DocumentDate; result.sendto_court = GetNomValueInt(EpepConstants.Nomenclatures.Courts, migration.SendToCourtId); result.@return = new ReturnType(); [email protected]_result = sessionAct.ActComplainIndex?.Code ?? ""; return(result); }
/// <summary> /// Приемане на Вертикално движение на дело - между институциите /// </summary> /// <param name="id"></param> /// <param name="caseId"></param> /// <param name="description"></param> /// <returns></returns> public bool AcceptCaseMigration(int id, int caseId, string description = null) { var outMigration = repo.AllReadonly <CaseMigration>() .Include(x => x.InCaseMigrations) .Where(x => x.Id == id) .FirstOrDefault(); if (outMigration.InCaseMigrations.Any()) { return(false); } try { var newMigrationType = repo.AllReadonly <CaseMigrationType>() .Where(x => x.PriorMigrationTypeId == outMigration.CaseMigrationTypeId) .Select(x => x.Id) .FirstOrDefault(); var caseCase = repo.GetById <Case>(caseId); var inMigration = new CaseMigration() { InitialCaseId = outMigration.InitialCaseId, CaseId = caseId, CourtId = caseCase.CourtId, PriorCaseId = outMigration.CaseId, CaseMigrationTypeId = newMigrationType, DateWrt = DateTime.Now, UserId = userContext.UserId, SendToTypeId = NomenclatureConstants.CaseMigrationSendTo.Court, SendToCourtId = userContext.CourtId, Description = description, OutCaseMigrationId = outMigration.Id }; repo.Add(inMigration); if ((newMigrationType == NomenclatureConstants.CaseMigrationTypes.AcceptCase_AfterComplain) || (newMigrationType == NomenclatureConstants.CaseMigrationTypes.AcceptCase_ForAdministration)) { var caseMigrationSend = repo.AllReadonly <CaseMigration>() .Where(x => x.InitialCaseId == outMigration.InitialCaseId && //x.SendToCourtId == outMigration.CourtId && x.CaseId == caseId && x.CaseMigrationTypeId == NomenclatureConstants.CaseMigrationTypes.SendNextLevel && x.Id < outMigration.Id) .OrderByDescending(x => x.Id) .FirstOrDefault(); if (caseMigrationSend != null) { if (caseMigrationSend.CaseSessionActId != null) { var act = repo.GetById <CaseSessionAct>(caseMigrationSend.CaseSessionActId); act.ActReturnDate = DateTime.Now; act.DateWrt = DateTime.Now; act.UserId = userContext.UserId; repo.Update(act); } } } repo.SaveChanges(); return(true); } catch (Exception ex) { return(false); } }
/// <summary> /// Запис на Вертикално движение на дело - между институциите /// </summary> /// <param name="model"></param> /// <returns></returns> public bool SaveData(CaseMigration model) { try { model.SendToCourtId = model.SendToCourtId.EmptyToNull(); model.SendToInstitutionTypeId = model.SendToInstitutionTypeId.EmptyToNull(); model.SendToInstitutionId = model.SendToInstitutionId.EmptyToNull(); model.ReturnCaseId = model.ReturnCaseId.EmptyToNull().EmptyToNull(0); model.CaseSessionActId = model.CaseSessionActId.EmptyToNull(); switch (model.SendToTypeId) { case NomenclatureConstants.CaseMigrationSendTo.Court: model.SendToInstitutionTypeId = null; model.SendToInstitutionId = null; break; case NomenclatureConstants.CaseMigrationSendTo.Institution: model.SendToCourtId = null; break; } if (model.Id > 0) { //Update var saved = repo.GetById <CaseMigration>(model.Id); saved.CaseSessionActId = model.CaseSessionActId; saved.CaseMigrationTypeId = model.CaseMigrationTypeId; saved.ReturnCaseId = model.ReturnCaseId; saved.SendToTypeId = model.SendToTypeId; saved.SendToCourtId = model.SendToCourtId; saved.SendToInstitutionTypeId = model.SendToInstitutionTypeId; saved.SendToInstitutionId = model.SendToInstitutionId; saved.Description = model.Description; saved.DateWrt = DateTime.Now; saved.UserId = userContext.UserId; repo.Update(saved); repo.SaveChanges(); } else { //Insert if (model.InitialCaseId == 0) { model.InitialCaseId = model.CaseId; } if (model.PriorCaseId == 0) { model.PriorCaseId = model.CaseId; } model.DateWrt = DateTime.Now; model.UserId = userContext.UserId; repo.Add <CaseMigration>(model); repo.SaveChanges(); } return(true); } catch (Exception ex) { logger.LogError(ex, $"Грешка при запис на движение на дело Id={ model.Id }"); return(false); } }
/// <summary> /// Извличане на данни за справка за обжалване /// </summary> /// <param name="DateFrom"></param> /// <param name="DateTo"></param> /// <param name="DateFromActReturn"></param> /// <param name="DateToActReturn"></param> /// <param name="DateFromSendDocument"></param> /// <param name="DateToSendDocument"></param> /// <param name="CaseGroupId"></param> /// <param name="CaseTypeId"></param> /// <param name="CaseRegNumber"></param> /// <param name="ActRegNumber"></param> /// <param name="CaseRegNumFrom"></param> /// <param name="CaseRegNumTo"></param> /// <param name="ActComplainIndexId"></param> /// <param name="ActResultId"></param> /// <param name="JudgeReporterId"></param> /// <returns></returns> public IQueryable <CaseSessionActComplainSprVM> CaseSessionActComplainSpr_Select(DateTime DateFrom, DateTime DateTo, DateTime?DateFromActReturn, DateTime?DateToActReturn, DateTime?DateFromSendDocument, DateTime?DateToSendDocument, int CaseGroupId, int CaseTypeId, string CaseRegNumber, string ActRegNumber, int CaseRegNumFrom, int CaseRegNumTo, int ActComplainIndexId, int ActResultId, int JudgeReporterId) { DateFrom = NomenclatureExtensions.ForceStartDate(DateFrom); DateTo = NomenclatureExtensions.ForceEndDate(DateTo); DateFromActReturn = NomenclatureExtensions.ForceStartDate(DateFromActReturn); DateToActReturn = NomenclatureExtensions.ForceEndDate(DateToActReturn); DateFromSendDocument = NomenclatureExtensions.ForceStartDate(DateFromSendDocument); DateToSendDocument = NomenclatureExtensions.ForceEndDate(DateToSendDocument); var caseSessionActComplains = repo.AllReadonly <CaseSessionActComplain>() .Include(x => x.Case) .ThenInclude(x => x.CaseGroup) .Include(x => x.Case) .ThenInclude(x => x.CaseType) .Include(x => x.Case) .ThenInclude(x => x.CaseCode) .Include(x => x.ComplainDocument) .ThenInclude(x => x.DocumentType) .Include(x => x.ComplainState) .Include(x => x.CaseSessionAct) .ThenInclude(x => x.ActComplainIndex) .Include(x => x.CaseSessionAct) .ThenInclude(x => x.CaseSession) .ThenInclude(x => x.CaseLawUnits) .Where(x => (x.CourtId == userContext.CourtId) && (x.DateExpired == null) && (x.ComplainDocument.DocumentDate >= DateFrom && x.ComplainDocument.DocumentDate <= DateTo) && ((DateFromActReturn != null && DateToActReturn != null) ? x.CaseSessionAct.ActReturnDate >= DateFromActReturn && x.CaseSessionAct.ActReturnDate <= DateToActReturn : true) && ((DateFromSendDocument != null && DateToSendDocument != null) ? (repo.AllReadonly <CaseMigration>().Any(m => m.CaseId == x.CaseId && m.CaseSessionActId == x.CaseSessionActId && m.CaseMigrationTypeId == NomenclatureConstants.CaseMigrationTypes.SendNextLevel && (m.OutDocument.DocumentDate >= DateFromSendDocument && m.OutDocument.DocumentDate <= DateToSendDocument))) : true) && (CaseGroupId > 0 ? x.Case.CaseGroupId == CaseGroupId : true) && (CaseTypeId > 0 ? x.Case.CaseTypeId == CaseTypeId : true) && (CaseRegNumFrom > 0 ? x.Case.ShortNumberValue >= CaseRegNumFrom : true) && (CaseRegNumTo > 0 ? x.Case.ShortNumberValue <= CaseRegNumTo : true) && (ActComplainIndexId > 0 ? x.CaseSessionAct.ActComplainIndexId == ActComplainIndexId : true) && (ActResultId > 0 ? x.CaseSessionAct.ActResultId == ActResultId : true) && ((JudgeReporterId > 0) ? (x.CaseSessionAct.CaseSession.CaseLawUnits.Where(a => (a.DateTo ?? DateTime.Now.AddYears(100)).Date >= x.CaseSessionAct.CaseSession.DateFrom && a.LawUnitId == JudgeReporterId && a.JudgeRoleId == NomenclatureConstants.JudgeRole.JudgeReporter).Any()) : true) && (!string.IsNullOrEmpty(CaseRegNumber) ? x.Case.RegNumber.ToLower().Contains(CaseRegNumber.ToLower()) : true) && (!string.IsNullOrEmpty(ActRegNumber) ? x.CaseSessionAct.RegNumber.ToLower().Contains(ActRegNumber.ToLower()) : true)) .Where(x => !x.Case.CaseDeactivations.Any(d => d.CaseId == x.CaseId && d.DateExpired == null)) .ToList(); var result = new List <CaseSessionActComplainSprVM>(); foreach (var caseSessionActComplain in caseSessionActComplains) { var migrationSend = repo.AllReadonly <CaseMigration>() .Include(x => x.OutDocument) .ThenInclude(x => x.DocumentType) .Where(x => x.CaseId == caseSessionActComplain.CaseId && x.CaseSessionActId == caseSessionActComplain.CaseSessionActId && x.CaseMigrationTypeId == NomenclatureConstants.CaseMigrationTypes.SendNextLevel).FirstOrDefault(); CaseMigration migrationRecive = null; if (migrationSend != null) { migrationRecive = repo.AllReadonly <CaseMigration>() .Include(x => x.Case) .ThenInclude(x => x.Court) .Where(x => x.OutCaseMigrationId == migrationSend.Id) .FirstOrDefault(); } //var migration = repo.AllReadonly<CaseMigration>() // .Where(x => x.CaseId == caseSessionActComplain.CaseId && // x.CaseMigrationTypeId == NomenclatureConstants.CaseMigrationTypes.AcceptCase_AfterComplain && // x.DateWrt >= caseSessionActComplain.ComplainDocument.DocumentDate).FirstOrDefault(); var complainResult = repo.AllReadonly <CaseSessionActComplainResult>() .Include(x => x.ActResult) .Include(x => x.ComplainCase) .ThenInclude(x => x.Court) .Where(x => x.CaseSessionActComplainId == caseSessionActComplain.Id).FirstOrDefault(); var caseLawUnitsActive = caseLawUnitService.CaseLawUnit_Select(caseSessionActComplain.CaseId ?? 0, null).ToList(); var judgeRep = caseLawUnitsActive.Where(x => x.JudgeRoleId == NomenclatureConstants.JudgeRole.JudgeReporter).FirstOrDefault(); var sessionActComplainVM = new CaseSessionActComplainSprVM() { Id = caseSessionActComplain.Id, JudgeName = (judgeRep != null) ? judgeRep.LawUnitName + ((!string.IsNullOrEmpty(judgeRep.DepartmentLabel)) ? " състав: " + judgeRep.DepartmentLabel : string.Empty) : string.Empty, //ComplainDocumentNumber = caseSessionActComplain.ComplainDocument.DocumentNumber, //ComplainDocumentDate = caseSessionActComplain.ComplainDocument.DocumentDate, //ComplainDocumentType = caseSessionActComplain.ComplainDocument.DocumentType.Label, ComplainDocumentNumber = migrationSend != null ? (migrationSend.OutDocument != null ? migrationSend.OutDocument.DocumentNumber : string.Empty) : string.Empty, ComplainDocumentDate = migrationSend != null ? (migrationSend.OutDocument != null ? (DateTime?)migrationSend.OutDocument.DocumentDate : null) : null, ComplainDocumentType = migrationSend != null ? (migrationSend.OutDocument != null ? migrationSend.OutDocument.DocumentType.Label : string.Empty) : string.Empty, ActName = caseSessionActComplain.CaseSessionAct.RegNumber + "/" + (caseSessionActComplain.CaseSessionAct.RegDate ?? DateTime.Now).ToString("dd.MM.yyyy"), CaseGroupLabel = caseSessionActComplain.Case.CaseType.Label + " " + caseSessionActComplain.Case.CaseCode.Code, CaseNumber = caseSessionActComplain.Case.RegNumber + "/" + caseSessionActComplain.Case.RegDate.Year + "г.", CaseId = caseSessionActComplain.Case.Id, DateReturn = caseSessionActComplain.CaseSessionAct.ActReturnDate, /*migration?.DateWrt,*/ Result = (complainResult != null) ? complainResult.ActResult.Label : string.Empty, Instance = (migrationRecive != null) ? migrationRecive.Case.Court.Label : string.Empty, IndexLabel = (caseSessionActComplain.CaseSessionAct.ActComplainIndex != null) ? caseSessionActComplain.CaseSessionAct.ActComplainIndex.Code + " - " + caseSessionActComplain.CaseSessionAct.ActComplainIndex.Label : string.Empty }; result.Add(sessionActComplainVM); } return(result.AsQueryable()); }