///<inheritdoc/> public Task <CalculateBaseResult <CalculateInssResult> > CalculateInss(CalculateInssArgs args) { if (args == null) { throw new ArgumentNullException(nameof(args)); } if (string.IsNullOrWhiteSpace(_url)) { throw new InvalidOperationException($"The service url '{_url} is null or empty!"); } _logger?.LogInformation("Process CalculateInss command"); using GrpcChannel channel = CreateAuthenticatedChannel(_url); LaborTaxesClient client = new LaborTaxesClient(channel); CalculateBaseResult <CalculateInssResult> result = new CalculateBaseResult <CalculateInssResult>(); try { CalculateInssRequest request = new CalculateInssRequest() { InssType = MapInssType(args.InssType), Revenue = (double)args.Revenue, ReferenceDate = args.ReferenceDate?.ToString("yyyy-MM-dd") ?? string.Empty }; CalculateInssReply reply = client.CalculateInss(request); result.Success = reply.Success; if (reply.Success) { result.Data = new CalculateInssResult() { Amount = (decimal)reply.Data.Amount, IsLimit = reply.Data.IsLimit, Rate = (decimal)reply.Data.Rate }; _logger?.LogInformation("CalculateInss Success"); } else { result.Data = null; result.Errors = reply.Errors; _logger?.LogInformation("CalculateInss FAIL, {Errors}", result.Errors); } } catch (Exception ex) { result.Success = false; result.Errors = ex.Message; _logger?.LogInformation("CalculateInss FAIL, {Message}", ex.Message); } return(Task.FromResult(result)); }
public async Task <IActionResult> CalculateInss ( [FromServices] ILogger <LaborTaxesController> logger, [FromServices] ILaborTaxesService service, [FromBody] CalculateInssRequest request, [FromQuery] DateTime?date, CancellationToken cancellationToken = default ) { CalculateInssResult resp = await service.CalculateInss(request.Type.Value, request.Revenue, date, cancellationToken); if (resp == null) { return(NotFound(resp)); } return(Ok(resp)); }