/// <summary>
        /// Добавяне на Вземане към обстоятелство по заповедни производства
        /// </summary>
        /// <param name="caseId"></param>
        /// <param name="moneyClaimId"></param>
        /// <param name="mainMoneyCollectionId"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public IActionResult CaseMoneyCollection(int caseId, int?moneyClaimId, int?mainMoneyCollectionId, int?id)
        {
            if (!CheckAccess(service, SourceTypeSelectVM.CaseMoneyCollection, (id > 0) ? id : null, (id > 0) ? AuditConstants.Operations.Update : AuditConstants.Operations.Append, moneyClaimId))
            {
                return(Redirect_Denied());
            }

            CaseMoneyCollectionEditVM model;

            if (id > 0)
            {
                model = service.GetById_EditVM(id ?? 0);
            }
            else
            {
                model = new CaseMoneyCollectionEditVM()
                {
                    CaseId                       = caseId,
                    CourtId                      = userContext.CourtId,
                    CaseMoneyClaimId             = moneyClaimId ?? 0,
                    CurrencyId                   = NomenclatureConstants.Currency.BGN,
                    MainCaseMoneyCollectionId    = mainMoneyCollectionId,
                    CaseMoneyCollectionGroupId   = NomenclatureConstants.CaseMoneyCollectionGroup.Money,
                    CasePersonListDecimals       = service.FillPersonList(caseId, null),
                    JointDistribution            = true,
                    MoneyCollectionEndDateTypeId = NomenclatureConstants.MoneyCollectionEndDateType.WithDate
                };
            }

            SetViewBag_MoneyCollection();
            return(PartialView(model));
        }
        public JsonResult CaseMoneyCollection(CaseMoneyCollectionEditVM model)
        {
            string validationError = ValidateCaseMoneyCollection(model);

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

            var currentId = model.Id;
            var res       = service.CaseMoneyCollection_SaveData(model);

            if (res > 0)
            {
                SetAuditContext(service, SourceTypeSelectVM.CaseMoneyCollection, res, currentId == 0);
            }

            return(Json(new { result = res }));
        }
        /// <summary>
        /// Валидация преди запис на Вземане към обстоятелство по заповедни производства
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        private string ValidateCaseMoneyCollection(CaseMoneyCollectionEditVM model)
        {
            if (model.CaseMoneyCollectionGroupId < 1)
            {
                return("Изберете вид.");
            }

            switch (model.CaseMoneyCollectionGroupId)
            {
            case NomenclatureConstants.CaseMoneyCollectionGroup.Money:
            {
                if (model.MainCaseMoneyCollectionId < 1)
                {
                    if (model.Money_CaseMoneyCollectionTypeId < 1)
                    {
                        return("Изберете тип.");
                    }
                }

                if (model.CurrencyId < 1)
                {
                    return("Изберете Валута.");
                }

                //if (model.InitialAmount < (decimal)0.01)
                //    return "Въведете първоначална стойност.";

                //if (model.PretendedAmount < (decimal)0.01)
                //    return "Въведете претендирано.";

                if (model.DateFrom == null)
                {
                    return("Въведете начална дата.");
                }

                if (model.MoneyCollectionEndDateTypeId == NomenclatureConstants.MoneyCollectionEndDateType.WithDate)
                {
                    if (model.DateTo == null)
                    {
                        return("Въведете крайна дата.");
                    }
                }

                if (model.RespectedAmount > model.PretendedAmount)
                {
                    return("Сумата от уважаването е по-голяма от претендираната.");
                }

                if (!model.JointDistribution)
                {
                    if (!model.CasePersonListDecimals.Any(x => x.ValueOne > (decimal)0.01))
                    {
                        return("Няма въведени стойности в разпределение на вземането.");
                    }

                    if (model.CasePersonListDecimals.Sum(x => x.ValueOne) > model.PretendedAmount)
                    {
                        return("Сумата на разпределението е по-голяма от претендираната сума.");
                    }

                    if (model.CasePersonListDecimals.Sum(x => x.ValueTwo) != model.RespectedAmount)
                    {
                        return("Сумата на разпределението за уважаване е различна от общо уважената сума.");
                    }

                    if (model.CasePersonListDecimals.Sum(x => x.ValueOne) < model.CasePersonListDecimals.Sum(x => x.ValueTwo))
                    {
                        return("Сумата на разпределението за уважаване е по-голяма от сумата от разпределението за претендирането");
                    }
                }
            }
            break;

            case NomenclatureConstants.CaseMoneyCollectionGroup.Property:
            {
                if (model.CurrencyId < 1)
                {
                    return("Изберете Валута.");
                }

                if (model.Amount < (decimal)0.01)
                {
                    return("Въведете сума.");
                }

                if ((model.Description ?? string.Empty) == string.Empty)
                {
                    return("Въведете описание.");
                }
            }
            break;

            case NomenclatureConstants.CaseMoneyCollectionGroup.Movables:
            {
                if (model.CurrencyId < 1)
                {
                    return("Изберете Валута.");
                }

                if (model.Amount < (decimal)0.01)
                {
                    return("Въведете сума.");
                }

                if (model.Movables_CaseMoneyCollectionTypeId < 1)
                {
                    return("Изберете от какво произтича задължението за предаване.");
                }

                if ((model.Description ?? string.Empty) == string.Empty)
                {
                    return("Въведете описание.");
                }
            }
            break;
            }

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

            return(string.Empty);
        }