예제 #1
0
        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);
            }
        }
예제 #2
0
 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));
 }
예제 #3
0
 public async Task <IEnumerable <Billing> > Save(IEnumerable <Billing> billings, CancellationToken token)
 => (await billingSaveForInputProcessor.SaveAsync(billings, token)).ToArray();