public IActionResult ProcessRefund(RefundDto refundDto) { var sale = _saleService.GetSale(refundDto.SaleInvoiceId); var refund = _mapper.Map <RefundDto, Refund>(refundDto); if (sale == null) { return(BadRequest("That invoice number does not exist")); } else if (refund.Amount > sale.Total) { return(BadRequest("The refund amount can not be more than the amount paid for the sale")); } else if (refund.Amount <= 0) { return(BadRequest("The refund amount can not less or equal to zero")); } else if (string.IsNullOrWhiteSpace(refund.Reason)) { return(BadRequest("You must provide a reason for the refund")); } else if (refund.Reason.Length > 99) { return(BadRequest("The reason must be under 100 characters")); } else { refund.RefundDate = DateTime.Now; _repo.AddRefund(refund); return(Ok("refund successfully processed")); } }