示例#1
0
        public async Task <HttpResponseMessage> Payment([FromBody] AccrualLoanModel model)
        {
            if (CurrentUser.UserData.UserType == Common.Enum.Enum.UserType.Membership)
            {
                var orginalModel = _paymentSystemService.GetAccrualLoanById(model.Id);

                if (orginalModel.Membership.Id != CurrentUser.UserData.Id)
                {
                    var responseModel = new BaseResponseModel
                    {
                        ReturnCode = (int)Active.False,
                        Message    = "You cannot pay another member's bill!",
                    };

                    var dataAsJson = JsonConvert.SerializeObject(responseModel, Formatting.None,
                                                                 new JsonSerializerSettings()
                    {
                        ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                    });

                    var response = Request.CreateResponse(HttpStatusCode.Unauthorized);
                    response.Content = new StringContent(dataAsJson, Encoding.UTF8, "application/json");

                    return(response);
                }
            }

            model.CreatedBy = CurrentUser.Id;
            var result = _paymentSystemService.Payment(model);

            return(await this.ReturnSuccessModel(result));
        }
        public AccrualLoanModel Payment(AccrualLoanModel model)
        {
            var accrualLoan = _accrualLoanRepository.GetById(model.Id);

            var mappedAccrualLoan = ObjectMapper.Mapper.Map <AccrualLoanModel>(accrualLoan);

            if (!mappedAccrualLoan.HasLoan || model.Amount < 0 || model.Amount > mappedAccrualLoan.RemainingLoan)
            {
                // TODO: create new custumized exception
                return(model);
            }

            accrualLoan.CollectionRecords.Add(new Common.Entities.CollectionRecord
            {
                Amount      = model.Amount,
                CreatedById = model.CreatedBy,
                CreatedAt   = DateTime.UtcNow
            });

            _accrualLoanRepository.SaveChanges();

            return(ObjectMapper.Mapper.Map <AccrualLoanModel>(accrualLoan));
        }