public SpendSummary GetTotalSpend(int supplierId) { var spendSummary = new SpendSummary(); var supplier = _supplierService.GetById(supplierId); if (!supplier.IsExternal) { var invoices = _invoiceRepository.Get(); var spendDetails = from invoice in invoices group invoice by invoice.InvoiceDate.Year into g select new SpendDetail() { TotalSpend = g.Sum(x => x.Amount), Year = g.Key }; spendSummary.Name = supplier.Name; spendSummary.Years = spendDetails.ToList(); } else { var externalInvoices = _externalInvoiceProcessor.Process(supplierId); var spendDetails = from invoice in externalInvoices group invoice by invoice.Year into g select new SpendDetail() { TotalSpend = g.Sum(x => x.TotalAmount), Year = g.Key }; spendSummary.Name = supplier.Name; spendSummary.Years = spendDetails.ToList(); } return(spendSummary); }
public SpendSummary GetTotalSpend(int supplierId) { var supplier = this.supplierService.GetById(supplierId); if (!supplier.IsExternal) //Internal Repository { this.spendSummary = supplier.SpendSummary(this.invoiceRepository); } else //External Service { this.externalInvoiceServiceManager.supplier = supplier; this.spendSummary = this.externalInvoiceServiceManager.TryGetSpendSummaryFromExternalService(supplier, ExternalInvoiceService.GetInvoices); } return(this.spendSummary); }
private void ExternalInvoiceServiceManager_EventExternalInvoiceServiceFailed(object sender, System.EventArgs e) { var serviceManagerArgs = e as ServiceManagerArgs; consecutiveErrors = consecutiveErrors + 1; if (consecutiveErrors > 3) { var failOverService = new FailoverInvoiceService(); var failOverInvoices = failOverService.GetInvoices(serviceManagerArgs.supplier.Id); this.spendSummary = this.externalInvoiceServiceManager.TryGetSpendSummaryFromFailoverService(serviceManagerArgs.supplier, failOverInvoices); } else { this.spendSummary = this.externalInvoiceServiceManager.TryGetSpendSummaryFromExternalService(serviceManagerArgs.supplier, ExternalInvoiceService.GetInvoices); } }
private void ExternalInvoiceServiceManager_EventDataNotRefreshed(object sender, System.EventArgs e) { var serviceManagerArgs = e as ServiceManagerArgs; consecutiveErrors = consecutiveErrors + 1; if (consecutiveErrors > 6) { _autoEvent = new AutoResetEvent(false); tm = new Timer(Execute, _autoEvent, 1000, 1000); } else { var failOverService = new FailoverInvoiceService(); var failOverInvoices = failOverService.GetInvoices(serviceManagerArgs.supplier.Id); this.spendSummary = this.externalInvoiceServiceManager.TryGetSpendSummaryFromFailoverService(serviceManagerArgs.supplier, failOverInvoices); } }
private void ExternalInvoiceServiceManager_EventSuccess(object sender, EventArgs e) { this.spendSummary = this.externalInvoiceServiceManager.spendSummary; }
public void Execute(Object stateInfo) { this.spendSummary = this.externalInvoiceServiceManager.TryGetSpendSummaryFromExternalService(stateInfo as Supplier, ExternalInvoiceService.GetInvoices); tm.Dispose(); }