public async Task <decimal> GetMaxAmountReturnableAsync(long siNumber, string insz) { ReturnMessageOfGetCertificatesResponse7nXz08R8 response = await _bobService.GetCertificatesAsync(new GetCertificatesRequest() { SiNumber = siNumber }); return(await CalcMaxAmount(siNumber, response)); }
private async Task <decimal> CalcMaxAmount(long siNumber, ReturnMessageOfGetCertificatesResponse7nXz08R8 response) { if (response.Value != null && response.Value.Certificates != null) { var futureCertifcates = response.Value.Certificates.Where(c => !c.Until.HasValue || c.Until > DateTime.Today); decimal sum = 0; foreach (var fc in futureCertifcates) { sum += _helperService.PaymentsBetweenDates(fc.Until) * await GetCurrentPaymentAmount(siNumber, fc.From); } } 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); }