public async Task <ActionResult <CreditModel> > Post(int invoiceId, CreditModel model) { try { //Make sure CreditId is not already taken var existing = await _repository.GetCreditAsync(invoiceId, model.Id); if (existing != null) { return(BadRequest("Credit Id in Use")); } //map var credit = _mapper.Map <Credit>(model); //save and return if (!await _creditService.SaveAndProcessCredit(_repository, invoiceId, credit)) { return(BadRequest("Bad request, could not create record!")); } else { var location = _linkGenerator.GetPathByAction("Get", "Credit", new { credit.InvoiceId, credit.Id }); return(Created(location, _mapper.Map <CreditModel>(credit))); } } catch (Exception e) { _logger.LogError(e, e.Message); return(this.StatusCode(StatusCodes.Status500InternalServerError, "Database Failure")); } }