コード例 #1
0
        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));
            }
        }
コード例 #2
0
        /// <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);
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        /// <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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        /// <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);
            }
        }
コード例 #7
0
        /// <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);
            }
        }
コード例 #8
0
        /// <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());
        }