示例#1
0
        public Insurance Card([FromBody] int id)
        {
            if (id <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(id));
            }

            var model = _insuranceRepository.Get(id);

            if (model == null)
            {
                throw new InvalidOperationException();
            }

            return(model);
        }
示例#2
0
        public InsuranceAction Sign([FromBody] InsuranceAction action)
        {
            if (action == null)
            {
                throw new ArgumentNullException(nameof(action));
            }
            if (action.InsuranceId <= 0)
            {
                throw new ArgumentException();
            }

            var insurance = _insuranceRepository.Get(action.InsuranceId);

            if (insurance.Status != InsuranceStatus.Draft)
            {
                throw new InvalidOperationException();
            }

            using (var transaction = _actionRepository.BeginTransaction())
            {
                action.ActionType = InsuranceActionType.Sign;
                action.ActionDate = DateTime.Now;
                action.AuthorId   = _sessionContext.UserId;

                var debitAccountId  = _branchContext.Configuration?.CashOrderSettings?.InsuranceSettings?.SignSettings?.DebitId ?? 0;
                var creditAccountId = _branchContext.Configuration?.CashOrderSettings?.InsuranceSettings?.SignSettings?.CreditId ?? 0;
                CreateOrder(insurance, action, OrderType.CashOut, debitAccountId, creditAccountId);

                ModelState.Clear();
                TryValidateModel(action);
                ModelState.Validate();

                insurance.Status = InsuranceStatus.Signed;
                _insuranceRepository.Update(insurance);
                _actionRepository.Insert(action);

                transaction.Commit();
            }

            return(action);
        }