public async Task <IEnumerable <Billing> > CreateAsync(IEnumerable <PeriodicBillingSetting> settings, CancellationToken token = default(CancellationToken)) { using (var scope = transactionScopeBuilder.Create()) { var result = new List <Billing>(); var first = settings.First(); var companyId = first.CompanyId; var customers = (await customerQueryProcessor .GetByIdsAsync(settings.Select(x => x.CustomerId).Distinct().ToArray(), token)) .ToDictionary(x => x.Id); var holidays = (await holidayCalendarQueryProcessor.GetItemsAsync(companyId, token)).ToArray(); foreach (var setting in settings) { var billings = setting.GetBillings(customers[setting.CustomerId], holidays).ToArray(); result.AddRange((await billingSaveForInputProcessor.SaveAsync(billings, token)).ToArray()); await addPeriodicBillingCreatedQueryProcessor.SaveAsync(new PeriodicBillingCreated { PeriodicBillingSettingId = setting.Id, CreateYearMonth = setting.BaseDate, CreateBy = setting.UpdateBy, UpdateBy = setting.UpdateBy, }, token); } scope.Complete(); return(result); } }
public async Task <BillingsResult> SaveForInputAsync(string SessionKey, Billing[] billings) { return(await authorizationProcessor.DoAuthorizeAsync(SessionKey, async token => { var result = (await billingSaveForInputProcessor.SaveAsync(billings, token)).ToList(); return new BillingsResult { Billings = result, ProcessResult = new ProcessResult { Result = true } }; }, logger)); }
public async Task <IEnumerable <Billing> > Save(IEnumerable <Billing> billings, CancellationToken token) => (await billingSaveForInputProcessor.SaveAsync(billings, token)).ToArray();