コード例 #1
0
        ///<inheritdoc/>
        public Task <CalculateBaseResult <CalculateIrpfResult> > CalculateIrpf(CalculateIrpfArgs 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 CalculateIrpf command");

            using GrpcChannel channel = CreateAuthenticatedChannel(_url);
            LaborTaxesClient client = new LaborTaxesClient(channel);

            CalculateBaseResult <CalculateIrpfResult> result = new CalculateBaseResult <CalculateIrpfResult>();

            try
            {
                CalculateIrpfRequest request = new CalculateIrpfRequest()
                {
                    InssValue        = (double)args.InssValue,
                    Revenue          = (double)args.Revenue,
                    DependentsNumber = args.DependentsNumber,
                    ReferenceDate    = args.ReferenceDate?.ToString("yyyy-MM-dd") ?? string.Empty
                };

                CalculateIrpfReply reply = client.CalculateIrpf(request);
                result.Success = reply.Success;
                if (reply.Success)
                {
                    result.Data = new CalculateIrpfResult()
                    {
                        CalculationBasis = (decimal)reply.Data.CalculationBasis,
                        Amount           = (decimal)reply.Data.Amount,
                        Rate             = (decimal)reply.Data.Rate
                    };
                    _logger?.LogInformation("CalculateIrpf Success");
                }
                else
                {
                    result.Data   = null;
                    result.Errors = reply.Errors;
                    _logger?.LogInformation("CalculateIrpf FAIL, {Errors}", result.Errors);
                }
            }
            catch (Exception ex)
            {
                result.Success = false;
                result.Errors  = ex.Message;
                _logger?.LogInformation("CalculateIrpf FAIL, {Message}", ex.Message);
            }

            return(Task.FromResult(result));
        }
コード例 #2
0
        public async Task <IActionResult> CalculateIrpf
        (
            [FromServices] ILaborTaxesService service,
            [FromBody] CalculateIrpfRequest request,
            [FromQuery] DateTime?date,
            CancellationToken cancellationToken = default
        )
        {
            CalculateIrpfResult resp = await service.CalculateIrpf(request.Revenue, request.InssValue, request.DependentsNumber, date, cancellationToken);

            if (resp == null)
            {
                return(BadRequest(resp));
            }
            return(Ok(resp));
        }