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)); }