Esempio n. 1
0
        public async Task <IActionResult> Get(long sinumber, [FromQuery] string insz)
        {
            var certificates = await _thabcertificateService.SearchAsync(new ThabCertificateSearch { SiNumber = sinumber, Insz = insz });

            List <ThabPayment> payments = new List <ThabPayment>();

            foreach (var cert in certificates)
            {
                var request = new GetPaymentsRequest()
                {
                    SiNumber      = sinumber,
                    ReferenceDate = cert.ReferenceDate
                };
                var response = await _service.GetPaymentsAsync(request);

                if (response.BusinessMessages != null && response.BusinessMessages.Length > 0)
                {
                    return(BadRequest(response.BusinessMessages));
                }

                var mappedModels = _mapper.Map <IEnumerable <ThabPayment> >(response?.Value?.Payments, opt => opt.Items["Id"] = cert.CertificateId);
                payments.AddRange(mappedModels);
            }

            return(Ok(payments));
        }
Esempio n. 2
0
        private async Task <decimal> GetCurrentPaymentAmount(long siNumber, DateTime reference)
        {
            var request = new GetPaymentsRequest()
            {
                SiNumber = siNumber, ReferenceDate = reference
            };
            var response = await _thabService.GetPaymentsAsync(request);

            if (response.Value != null && response.Value.Payments != null && response.Value.Payments.Count() > 0)
            {
                return(response.Value.Payments.OrderByDescending(p => p.PeriodEnd).FirstOrDefault().Amount);
            }
            else if (response.BusinessMessages != null && response.BusinessMessages.Any())
            {
                var errors = response.BusinessMessages.Where(bm => bm.Type == MessageType.Error);
                if (errors.Any())
                {
                    throw new Exception(string.Join("; ", errors.Select(e => e.MessageString)));
                }
            }

            return(0);
        }