public async Task <ActionResult <Invoice> > Get([FromRoute] int number) { try { var request = new GetInvoiceByNumber { Number = number }; var invoice = await _useCases.Invoke <Invoice>(request); return(Ok(invoice)); } catch (InvoiceNotFoundException ex) { _logger.LogError(ex, "Get invoice failure"); return(NotFound(ex.Message)); } catch (Exception ex) { _logger.LogError(ex, "Error getting invoice"); while (ex.InnerException != null) { ex = ex.InnerException; } return(StatusCode(500, new { message = ex.Message, details = ex.StackTrace })); } }
public async Task <Invoice> Invoke(GetInvoiceByNumber request) { var invoice = await _repository.GetByNumber(request.Number); if (invoice == null) { throw new InvoiceNotFoundException(request.Number); } return(invoice); }