コード例 #1
0
 public Task <IBudgetAccountGroup> DeleteBudgetAccountGroupAsync(int number)
 {
     return(ExecuteAsync(async() =>
     {
         using BudgetAccountGroupModelHandler budgetAccountGroupModelHandler = new BudgetAccountGroupModelHandler(DbContext, AccountingModelConverter.Create());
         return await budgetAccountGroupModelHandler.DeleteAsync(number);
     },
                         MethodBase.GetCurrentMethod()));
 }
コード例 #2
0
 public Task <IEnumerable <IPaymentTerm> > GetPaymentTermsAsync()
 {
     return(ExecuteAsync(async() =>
     {
         using PaymentTermModelHandler paymentTermModelHandler = new PaymentTermModelHandler(DbContext, AccountingModelConverter.Create());
         return await paymentTermModelHandler.ReadAsync();
     },
                         MethodBase.GetCurrentMethod()));
 }
コード例 #3
0
        public Task <IContactAccountCollection> GetContactAccountsAsync(int accountingNumber, DateTime statusDate)
        {
            return(ExecuteAsync(async() =>
            {
                using ContactAccountModelHandler contactAccountModelHandler = new ContactAccountModelHandler(DbContext, AccountingModelConverter.Create(), _eventPublisher, statusDate, true);

                IContactAccountCollection contactAccountCollection = new ContactAccountCollection
                {
                    await contactAccountModelHandler.ReadAsync(contactAccountModel => contactAccountModel.AccountingIdentifier == accountingNumber, prepareReadState: new AccountingIdentificationState(accountingNumber))
                };

                return contactAccountCollection;
            },
                                MethodBase.GetCurrentMethod()));
        }
コード例 #4
0
        public Task <IBudgetAccountGroup> UpdateBudgetAccountGroupAsync(IBudgetAccountGroup budgetAccountGroup)
        {
            NullGuard.NotNull(budgetAccountGroup, nameof(budgetAccountGroup));

            return(ExecuteAsync(async() =>
            {
                using BudgetAccountGroupModelHandler budgetAccountGroupModelHandler = new BudgetAccountGroupModelHandler(DbContext, AccountingModelConverter.Create());
                return await budgetAccountGroupModelHandler.UpdateAsync(budgetAccountGroup);
            },
                                MethodBase.GetCurrentMethod()));
        }
コード例 #5
0
 public Task <IAccounting> DeleteAccountingAsync(int number)
 {
     return(ExecuteAsync(async() =>
     {
         using AccountingModelHandler accountingModelHandler = new AccountingModelHandler(DbContext, AccountingModelConverter.Create(), _eventPublisher, DateTime.Today, true, true);
         return await accountingModelHandler.DeleteAsync(number, new AccountingIdentificationState(number));
     },
                         MethodBase.GetCurrentMethod()));
 }
コード例 #6
0
        public Task <IContact> CreateOrUpdateContactSupplementAsync(IContact contact, string existingExternalIdentifier = null)
        {
            NullGuard.NotNull(contact, nameof(contact));

            return(ExecuteAsync(async() =>
            {
                using ContactSupplementModelHandler contactSupplementModelHandler = new ContactSupplementModelHandler(DbContext, ContactModelConverter.Create(), AccountingModelConverter.Create());
                return await contactSupplementModelHandler.CreateOrUpdateContactSupplementAsync(contact, existingExternalIdentifier);
            },
                                MethodBase.GetCurrentMethod()));
        }
コード例 #7
0
        public Task <IPostingJournalResult> ApplyPostingJournalAsync(IPostingJournal postingJournal, IPostingWarningCalculator postingWarningCalculator)
        {
            NullGuard.NotNull(postingJournal, nameof(postingJournal))
            .NotNull(postingWarningCalculator, nameof(postingWarningCalculator));

            return(ExecuteAsync(async() =>
            {
                IPostingLineCollection postingLineCollection = new PostingLineCollection();
                foreach (IGrouping <int, IPostingLine> group in postingJournal.PostingLineCollection.GroupBy(postingLine => postingLine.Accounting.Number))
                {
                    using PostingLineModelHandler postingLineModelHandler = new PostingLineModelHandler(DbContext, AccountingModelConverter.Create(), _eventPublisher, DateTime.MinValue, DateTime.Today, true, true, applyingPostingLines: true);

                    AccountingIdentificationState accountingIdentificationState = new AccountingIdentificationState(group.Key);

                    IPostingLine[] createdPostingLineCollection = (await postingLineModelHandler.CreateAsync(group.OrderBy(m => m.PostingDate).ThenBy(m => m.SortOrder), accountingIdentificationState, true)).ToArray();

                    IPostingLine[] updatedPostingLineCollection = (await postingLineModelHandler.UpdateAsync(createdPostingLineCollection.OrderBy(m => m.PostingDate.Date).ThenBy(m => m.SortOrder), accountingIdentificationState)).ToArray();
                    foreach (IPostingLine postingLine in updatedPostingLineCollection)
                    {
                        IPostingLine[] affectedPostingCollection = (await postingLineModelHandler.ReadAsync(m => m.AccountingIdentifier == accountingIdentificationState.AccountingIdentifier && (m.PostingDate == postingLine.PostingDate && m.PostingLineIdentifier > postingLine.SortOrder || m.PostingDate > postingLine.PostingDate), prepareReadState: accountingIdentificationState)).ToArray();
                        foreach (IPostingLine affectedPostingLine in affectedPostingCollection.Where(m => updatedPostingLineCollection.Contains(m) == false))
                        {
                            await postingLineModelHandler.UpdateAsync(affectedPostingLine, accountingIdentificationState);
                        }
                    }

                    postingLineCollection.Add(updatedPostingLineCollection);
                }

                return (IPostingJournalResult) new PostingJournalResult(postingLineCollection, postingWarningCalculator);
            },
                                MethodBase.GetCurrentMethod()));
        }
コード例 #8
0
 public Task <IPaymentTerm> DeletePaymentTermAsync(int number)
 {
     return(ExecuteAsync(async() =>
     {
         using PaymentTermModelHandler paymentTermModelHandler = new PaymentTermModelHandler(DbContext, AccountingModelConverter.Create());
         return await paymentTermModelHandler.DeleteAsync(number);
     },
                         MethodBase.GetCurrentMethod()));
 }
コード例 #9
0
        public Task <IContactAccount> DeleteContactAccountAsync(int accountingNumber, string accountNumber)
        {
            NullGuard.NotNullOrWhiteSpace(accountNumber, nameof(accountNumber));

            return(ExecuteAsync(async() =>
            {
                using ContactAccountModelHandler contactAccountModelHandler = new ContactAccountModelHandler(DbContext, AccountingModelConverter.Create(), _eventPublisher, DateTime.Today, true);
                return await contactAccountModelHandler.DeleteAsync(new Tuple <int, string>(accountingNumber, accountNumber), new AccountingIdentificationState(accountingNumber));
            },
                                MethodBase.GetCurrentMethod()));
        }
コード例 #10
0
        public Task <IPostingLineCollection> GetPostingLinesAsync(int accountingNumber, DateTime statusDate, int numberOfPostingLines)
        {
            return(ExecuteAsync(async() =>
            {
                using PostingLineModelHandler postingLineModelHandler = new PostingLineModelHandler(DbContext, AccountingModelConverter.Create(), _eventPublisher, DateTime.MinValue, statusDate, true, true, numberOfPostingLines);

                IPostingLineCollection postingLineCollection = new PostingLineCollection
                {
                    await postingLineModelHandler.ReadAsync(accountingNumber)
                };

                return postingLineCollection;
            },
                                MethodBase.GetCurrentMethod()));
        }
コード例 #11
0
        public Task <IContactAccount> UpdateContactAccountAsync(IContactAccount contactAccount)
        {
            NullGuard.NotNull(contactAccount, nameof(contactAccount));

            return(ExecuteAsync(async() =>
            {
                using ContactAccountModelHandler contactAccountModelHandler = new ContactAccountModelHandler(DbContext, AccountingModelConverter.Create(), _eventPublisher, DateTime.Today, true);
                return await contactAccountModelHandler.UpdateAsync(contactAccount, new AccountingIdentificationState(contactAccount.Accounting.Number));
            },
                                MethodBase.GetCurrentMethod()));
        }
コード例 #12
0
        public Task <IContactAccount> GetContactAccountAsync(int accountingNumber, string accountNumber, DateTime statusDate)
        {
            NullGuard.NotNullOrWhiteSpace(accountNumber, nameof(accountNumber));

            return(ExecuteAsync(async() =>
            {
                using ContactAccountModelHandler contactAccountModelHandler = new ContactAccountModelHandler(DbContext, AccountingModelConverter.Create(), _eventPublisher, statusDate, true);
                return await contactAccountModelHandler.ReadAsync(accountingNumber, accountNumber);
            },
                                MethodBase.GetCurrentMethod()));
        }
コード例 #13
0
        public Task <bool> ContactAccountExistsAsync(int accountingNumber, string accountNumber)
        {
            NullGuard.NotNullOrWhiteSpace(accountNumber, nameof(accountNumber));

            return(ExecuteAsync(async() =>
            {
                using ContactAccountModelHandler contactAccountModelHandler = new ContactAccountModelHandler(DbContext, AccountingModelConverter.Create(), _eventPublisher, DateTime.Today, false);
                return await contactAccountModelHandler.ExistsAsync(accountingNumber, accountNumber);
            },
                                MethodBase.GetCurrentMethod()));
        }
コード例 #14
0
 public Task <bool> AccountingExistsAsync(int number)
 {
     return(ExecuteAsync(async() =>
     {
         using AccountingModelHandler accountingModelHandler = new AccountingModelHandler(DbContext, AccountingModelConverter.Create(), _eventPublisher, DateTime.Today, false, false);
         return await accountingModelHandler.ExistsAsync(number);
     },
                         MethodBase.GetCurrentMethod()));
 }
コード例 #15
0
 public Task <IAccountGroup> GetAccountGroupAsync(int number)
 {
     return(ExecuteAsync(async() =>
     {
         using AccountGroupModelHandler accountGroupModelHandler = new AccountGroupModelHandler(DbContext, AccountingModelConverter.Create());
         return await accountGroupModelHandler.ReadAsync(number);
     },
                         MethodBase.GetCurrentMethod()));
 }
コード例 #16
0
        public Task <IPaymentTerm> UpdatePaymentTermAsync(IPaymentTerm paymentTerm)
        {
            NullGuard.NotNull(paymentTerm, nameof(paymentTerm));

            return(ExecuteAsync(async() =>
            {
                using PaymentTermModelHandler paymentTermModelHandler = new PaymentTermModelHandler(DbContext, AccountingModelConverter.Create());
                return await paymentTermModelHandler.UpdateAsync(paymentTerm);
            },
                                MethodBase.GetCurrentMethod()));
        }
コード例 #17
0
 public Task <IEnumerable <IAccounting> > GetAccountingsAsync()
 {
     return(ExecuteAsync(async() =>
     {
         using AccountingModelHandler accountingModelHandler = new AccountingModelHandler(DbContext, AccountingModelConverter.Create(), _eventPublisher, DateTime.Today, false, false);
         return await accountingModelHandler.ReadAsync();
     },
                         MethodBase.GetCurrentMethod()));
 }
コード例 #18
0
        public Task <IAccounting> UpdateAccountingAsync(IAccounting accounting)
        {
            NullGuard.NotNull(accounting, nameof(accounting));

            return(ExecuteAsync(async() =>
            {
                using AccountingModelHandler accountingModelHandler = new AccountingModelHandler(DbContext, AccountingModelConverter.Create(), _eventPublisher, DateTime.Today, true, true);
                return await accountingModelHandler.UpdateAsync(accounting, new AccountingIdentificationState(accounting.Number));
            },
                                MethodBase.GetCurrentMethod()));
        }
コード例 #19
0
        public Task <IAccountGroup> CreateAccountGroupAsync(IAccountGroup accountGroup)
        {
            NullGuard.NotNull(accountGroup, nameof(accountGroup));

            return(ExecuteAsync(async() =>
            {
                using AccountGroupModelHandler accountGroupModelHandler = new AccountGroupModelHandler(DbContext, AccountingModelConverter.Create());
                return await accountGroupModelHandler.CreateAsync(accountGroup);
            },
                                MethodBase.GetCurrentMethod()));
        }
コード例 #20
0
        public Task <IEnumerable <IContact> > ApplyContactSupplementAsync(IEnumerable <IContact> contacts)
        {
            NullGuard.NotNull(contacts, nameof(contacts));

            return(ExecuteAsync(async() =>
            {
                using ContactSupplementModelHandler contactSupplementModelHandler = new ContactSupplementModelHandler(DbContext, ContactModelConverter.Create(), AccountingModelConverter.Create());
                return await contactSupplementModelHandler.ApplyContactSupplementAsync(contacts);
            },
                                MethodBase.GetCurrentMethod()));
        }
コード例 #21
0
 public Task <IEnumerable <IBudgetAccountGroup> > GetBudgetAccountGroupsAsync()
 {
     return(ExecuteAsync(async() =>
     {
         using BudgetAccountGroupModelHandler budgetAccountGroupModelHandler = new BudgetAccountGroupModelHandler(DbContext, AccountingModelConverter.Create());
         return await budgetAccountGroupModelHandler.ReadAsync();
     },
                         MethodBase.GetCurrentMethod()));
 }
コード例 #22
0
        public Task <IContact> DeleteContactSupplementAsync(IContact contact)
        {
            NullGuard.NotNull(contact, nameof(contact));

            return(ExecuteAsync(async() =>
            {
                using ContactSupplementModelHandler contactSupplementModelHandler = new ContactSupplementModelHandler(DbContext, ContactModelConverter.Create(), AccountingModelConverter.Create());
                return await contactSupplementModelHandler.DeleteAsync(contact);
            },
                                MethodBase.GetCurrentMethod()));
        }
コード例 #23
0
        public Task <IBudgetAccount> CreateBudgetAccountAsync(IBudgetAccount budgetAccount)
        {
            NullGuard.NotNull(budgetAccount, nameof(budgetAccount));

            return(ExecuteAsync(async() =>
            {
                using BudgetAccountModelHandler budgetAccountModelHandler = new BudgetAccountModelHandler(DbContext, AccountingModelConverter.Create(), _eventPublisher, DateTime.Today, true, false);
                return await budgetAccountModelHandler.CreateAsync(budgetAccount, new AccountingIdentificationState(budgetAccount.Accounting.Number));
            },
                                MethodBase.GetCurrentMethod()));
        }