public Task <PeriodicBillingSetting> SaveAsync(PeriodicBillingSetting setting, CancellationToken token = default(CancellationToken))
        {
            #region query
            var query = @"
MERGE INTO [PeriodicBillingSetting] target
USING (
    SELECT @Id  [Id]
      ) source
ON    (target.Id   = source.Id )
WHEN MATCHED THEN
    UPDATE SET
           [Name]               = @Name
         , CurrencyId           = @CurrencyId
         , CustomerId           = @CustomerId
         , DestinationId        = @DestinationId
         , DepartmentId         = @DepartmentId
         , StaffId              = @StaffId
         , CollectCategoryId    = @CollectCategoryId
         , BilledCycle          = @BilledCycle
         , BilledDay            = @BilledDay
         , StartMonth           = @StartMonth
         , EndMonth             = @EndMonth
         , InvoiceCode          = @InvoiceCode
         , SetBillingNote1      = @SetBillingNote1
         , SetBillingNote2      = @SetBillingNote2
         , UpdateBy             = @UpdateBy
         , UpdateAt             = GETDATE()
WHEN NOT MATCHED THEN
    INSERT (  CompanyId,  [Name]
           ,  CurrencyId,  CustomerId,  DestinationId,  DepartmentId,  StaffId,  CollectCategoryId
           ,  BilledCycle,  BilledDay,  StartMonth,  EndMonth
           ,  InvoiceCode,  SetBillingNote1,  SetBillingNote2
           ,  CreateBy,  CreateAt,  UpdateBy,  UpdateAt )
    VALUES ( @CompanyId, @Name
           , @CurrencyId,  @CustomerId, @DestinationId, @DepartmentId, @StaffId, @CollectCategoryId
           , @BilledCycle, @BilledDay, @StartMonth, @EndMonth
           , @InvoiceCode, @SetBillingNote1, @SetBillingNote2
           , @CreateBy, GETDATE(), @UpdateBy, GETDATE() )
OUTPUT inserted.*
;";
            #endregion
            return(dbHelper.ExecuteAsync <PeriodicBillingSetting>(query, setting, token));
        }
        public async Task <PeriodicBillingSetting> SaveAsync(PeriodicBillingSetting setting, CancellationToken token = default(CancellationToken))
        {
            using (var scope = transactionScopeBuilder.Create())
            {
                var result = await addPeriodicBillingSettingQueryProcessor.SaveAsync(setting, token);

                if (setting.Id != 0L)
                {
                    await deletePeriodicBillingSettingDetailQueryProcessor.DeleteAsync(setting.Id, token);
                }
                foreach (var detail in setting.Details.Select((detail, index) => {
                    detail.DisplayOrder = index + 1;
                    return(detail);
                }))
                {
                    detail.PeriodicBillingSettingId = result.Id;
                    result.Details.Add(await addPeriodicBillingSettingDetailQueryProcessor.SaveAsync(detail, token));
                }
                scope.Complete();

                return(result);
            }
        }
Exemple #3
0
 public async Task <ActionResult <PeriodicBillingSetting> > Save(PeriodicBillingSetting setting, CancellationToken token)
 => await periodicBillingSettingProcessor.SaveAsync(setting, token);
 public async Task <PeriodicBillingSettingResult> SaveAsync(string sessionKey, PeriodicBillingSetting setting)
 => await authorizationProcessor.DoAuthorizeAsync(sessionKey, async token => {
     var result = await periodicBillingSettingProcessor.SaveAsync(setting, token);
     return(new PeriodicBillingSettingResult {
         ProcessResult = new ProcessResult {
             Result = true
         },
         PeriodicBillingSetting = result,
     });
 }, logger);