Пример #1
0
        /// <summary>
        /// Метод за проверка дали може да бъде прието движение
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        private bool IsAccept(CaseMovementVM model)
        {
            if (model.DateAccept != null)
            {
                return(false);
            }

            if (model.MovementTypeId == NomenclatureConstants.CaseMovementType.ToPerson)
            {
                if (model.ToUserId != userContext.UserId)
                {
                    return(false);
                }
            }
            else
            {
                if (model.MovementTypeId == NomenclatureConstants.CaseMovementType.ToOtdel)
                {
                    var lawUnits = commonService.LawUnit_ByCourtDate(userContext.CourtId, DateTime.Now, model.CourtOrganizationId ?? 0);
                    if (!lawUnits.Any(x => x.Id == userContext.LawUnitId))
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
Пример #2
0
        /// <summary>
        /// Създаване на Местоположение
        /// </summary>
        /// <param name="CaseId"></param>
        /// <param name="cmId"></param>
        /// <returns></returns>
        public IActionResult CreateMovement(int CaseId, int cmId)
        {
            if (!CheckAccess(service, SourceTypeSelectVM.CaseMovement, null, AuditConstants.Operations.Append, CaseId))
            {
                return(Redirect_Denied());
            }
            SetViewBag(CaseId);
            var model = new CaseMovementVM();

            if (cmId > 0)
            {
                model = service.GetById_CaseMovementVM(cmId);
            }
            else
            {
                if (!service.IsAddNewMovement(CaseId))
                {
                    return(Content("Не може да извършите тази операция (или делото не е при вас или последното движение не е прието)"));
                }

                model.CaseId  = CaseId;
                model.CourtId = userContext.CourtId;
            }

            return(PartialView(model));
        }
Пример #3
0
        public void StornoMovementTest()
        {
            using (serviceProvider.CreateScope())
            {
                var service     = serviceProvider.GetService <ICaseMovementService>();
                var userContext = serviceProvider.GetService <IUserContext>();
                var repo        = serviceProvider.GetService <IRepository>();

                var model = new CaseMovement()
                {
                    Id                  = 1,
                    CaseId              = 1,
                    CourtId             = 1,
                    MovementTypeId      = 1,
                    ToUserId            = "1",
                    CourtOrganizationId = 1,
                    OtherInstitution    = "Test",
                    DateSend            = DateTime.Now,
                    AcceptUserId        = null,
                    DateAccept          = null,
                    Description         = "Description",
                    AcceptDescription   = "AcceptDescription",
                    UserId              = userContext.UserId,
                    DisableDescription  = "",
                    IsActive            = true
                };

                var saved = new CaseMovementVM()
                {
                    Id                  = 1,
                    CaseId              = 1,
                    CourtId             = 1,
                    MovementTypeId      = 1,
                    ToUserId            = "1",
                    CourtOrganizationId = 1,
                    OtherInstitution    = "Test",
                    DateSend            = DateTime.Now,
                    AcceptUserId        = null,
                    DateAccept          = null,
                    Description         = "Description",
                    AcceptDescription   = "AcceptDescription",
                    UserId              = userContext.UserId,
                    DisableDescription  = "Test",
                    IsAccept            = true
                };
                repo.Add <CaseMovement>(model);

                service.StornoMovement(saved);
                var caseMovement = repo.AllReadonly <CaseMovement>().FirstOrDefault();

                Assert.That(false, Is.EqualTo(caseMovement.IsActive));
                Assert.That(saved.DisableDescription, Is.EqualTo(caseMovement.DisableDescription));
            }
        }
Пример #4
0
        /// <summary>
        /// Метод за създаване на местоположение
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public bool CreateMovement(CaseMovementVM model)
        {
            try
            {
                model.CourtOrganizationId = model.CourtOrganizationId.EmptyToNull();

                if (model.Id > 0)
                {
                    //Update
                    var saved = repo.GetById <CaseMovement>(model.Id);
                    saved.MovementTypeId      = model.MovementTypeId;
                    saved.ToUserId            = model.ToUserId;
                    saved.CourtOrganizationId = model.CourtOrganizationId;
                    saved.OtherInstitution    = model.OtherInstitution;
                    //saved.DateSend = model.DateSend;
                    saved.Description = model.Description;
                    repo.Update(saved);
                    repo.SaveChanges();
                }
                else
                {
                    //Insert
                    var saved = new CaseMovement();
                    saved.CaseId         = model.CaseId;
                    saved.CourtId        = model.CourtId;
                    saved.MovementTypeId = model.MovementTypeId;

                    if (saved.MovementTypeId == NomenclatureConstants.CaseMovementType.ToOutStructure)
                    {
                        saved.DateAccept   = DateTime.Now;
                        saved.AcceptUserId = userContext.UserId;
                    }

                    saved.ToUserId            = model.ToUserId;
                    saved.CourtOrganizationId = model.CourtOrganizationId;
                    saved.OtherInstitution    = model.OtherInstitution;
                    saved.DateSend            = DateTime.Now;
                    saved.Description         = model.Description;
                    saved.IsActive            = true;
                    saved.DateWrt             = DateTime.Now;
                    saved.UserId = userContext.UserId;
                    repo.Add <CaseMovement>(saved);
                    repo.SaveChanges();
                    model.Id = saved.Id;
                }
                return(true);
            }
            catch (Exception ex)
            {
                logger.LogError(ex, $"Грешка при запис на движение по дело Id={ model.Id }");
                return(false);
            }
        }
Пример #5
0
        public JsonResult CreateMovement(CaseMovementVM model)
        {
            string validationError = IsValid(model);

            if (!string.IsNullOrEmpty(validationError))
            {
                return(Json(new { result = false, message = validationError }));
            }

            var res = service.CreateMovement(model);

            SetAuditContext(service, SourceTypeSelectVM.CaseMovement, model.Id, true);
            return(Json(new { result = res }));
        }
Пример #6
0
        /// <summary>
        /// Метод за проверка дали може да бъде редактирано приемане на движение
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        private bool IsEditAccept(CaseMovementVM model)
        {
            if (model.DateAccept == null)
            {
                return(false);
            }

            if (model.AcceptUserId != userContext.UserId)
            {
                return(false);
            }

            return(true);
        }
Пример #7
0
        /// <summary>
        /// Валидация преди запис на Местоположение
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        private string IsValid(CaseMovementVM model)
        {
            if (model.MovementTypeId < 1)
            {
                return("Изберете тип насочване");
            }

            switch (model.MovementTypeId)
            {
            case NomenclatureConstants.CaseMovementType.ToPerson:
            {
                if (string.IsNullOrEmpty(model.ToUserId))
                {
                    return("Изберете служител");
                }
            }
            break;

            case NomenclatureConstants.CaseMovementType.ToOtdel:
            {
                if (model.CourtOrganizationId < 1)
                {
                    return("Изберете Отдел/Звено/Дирекция");
                }
            }
            break;

            case NomenclatureConstants.CaseMovementType.ToOutStructure:
            {
                if (string.IsNullOrEmpty(model.OtherInstitution))
                {
                    return("Въведете външно лице");
                }
            }
            break;
            }

            var caseCase = service.GetById <Case>(model.CaseId);

            if (caseCase.CourtId != userContext.CourtId)
            {
                return($"Съда е променен на {userContext.CourtName}. Презаредете текущия екран.");
            }

            return(string.Empty);
        }
Пример #8
0
        /// <summary>
        /// Редакция на приемане на местоположение
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public bool EditAcceptMovement(CaseMovementVM model)
        {
            try
            {
                model.CourtOrganizationId = model.CourtOrganizationId.EmptyToNull();

                var saved = repo.GetById <CaseMovement>(model.Id);
                saved.AcceptDescription = model.AcceptDescription;
                repo.Update(saved);
                repo.SaveChanges();

                return(true);
            }
            catch (Exception ex)
            {
                logger.LogError(ex, $"Грешка при отразяване на изпълнение на движение по дело Id={ model.Id }");
                return(false);
            }
        }
Пример #9
0
        /// <summary>
        /// Метод за проверка дали може да бъде редактирано движение
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        private bool IsEdit(CaseMovementVM model)
        {
            if (model.UserId != userContext.UserId)
            {
                return(false);
            }

            if (model.DateAccept != null)
            {
                return(false);
            }

            if (!model.IsActive)
            {
                return(false);
            }

            return(true);
        }
Пример #10
0
        /// <summary>
        /// Сторно на местоположение
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public bool StornoMovement(CaseMovementVM model)
        {
            try
            {
                model.CourtOrganizationId = model.CourtOrganizationId.EmptyToNull();

                var saved = repo.GetById <CaseMovement>(model.Id);
                saved.DisableDescription = model.DisableDescription;
                saved.IsActive           = false;
                repo.Update(saved);
                repo.SaveChanges();

                return(true);
            }
            catch (Exception ex)
            {
                logger.LogError(ex, $"Грешка при сторниране на движение по дело Id={ model.Id }");
                return(false);
            }
        }
Пример #11
0
        public void CreateMovementTest()
        {
            using (serviceProvider.CreateScope())
            {
                var service     = serviceProvider.GetService <ICaseMovementService>();
                var userContext = serviceProvider.GetService <IUserContext>();
                var repo        = serviceProvider.GetService <IRepository>();

                var saved = new CaseMovementVM()
                {
                    CaseId              = 1,
                    CourtId             = 1,
                    MovementTypeId      = 1,
                    ToUserId            = "1",
                    CourtOrganizationId = 1,
                    OtherInstitution    = "Test",
                    DateSend            = DateTime.Now,
                    AcceptUserId        = null,
                    DateAccept          = null,
                    Description         = "Description",
                    AcceptDescription   = "AcceptDescription",
                    UserId              = userContext.UserId,
                };

                service.CreateMovement(saved);
                var caseMovement = repo.AllReadonly <CaseMovement>().FirstOrDefault();

                Assert.That(saved.CaseId, Is.EqualTo(caseMovement.CaseId));
                Assert.That(saved.CourtId, Is.EqualTo(caseMovement.CourtId));
                Assert.That(saved.MovementTypeId, Is.EqualTo(caseMovement.MovementTypeId));
                Assert.That(saved.ToUserId, Is.EqualTo(caseMovement.ToUserId));
                Assert.That(saved.CourtOrganizationId, Is.EqualTo(caseMovement.CourtOrganizationId));
                Assert.That(saved.OtherInstitution, Is.EqualTo(caseMovement.OtherInstitution));
                Assert.That(saved.Description, Is.EqualTo(caseMovement.Description));
                Assert.That(saved.UserId, Is.EqualTo(caseMovement.UserId));
            }
        }
Пример #12
0
 public JsonResult EditAcceptMovement(CaseMovementVM model)
 {
     SetAuditContext(service, SourceTypeSelectVM.CaseMovement, model.Id, false);
     return(Json(new { result = service.EditAcceptMovement(model) }));
 }
Пример #13
0
 public JsonResult StornoMovement(CaseMovementVM model)
 {
     CheckAccess(service, SourceTypeSelectVM.CaseMovement, model.Id, AuditConstants.Operations.Delete);
     return(Json(new { result = service.StornoMovement(model) }));
 }