Exemple #1
0
        private ExecutionResult CloseDayHandler(CloseDayRequest request, ExecutionContext context)
        {
            ExecutionResult <List <string> > result = context.PreviousResult as ExecutionResult <List <string> >;

            result = result ?? new ExecutionResult <List <string> > {
                TypedResult = new List <string>()
            };
            var operations = new List <string>();
            var deposits   = AdbRepository.DepositContractData.GetAllDeposits();

            foreach (var deposit in deposits)
            {
                DateTime lastProcessingTime = deposit.ProcessingTime ?? deposit.AssignDate;
                TimeSpan delta = (DateTime)request.Value - lastProcessingTime;
                if (delta.Days >= 30 && (deposit.AssignDate - (DateTime)request.Value).Days < 30 * deposit.Period)
                {
                    decimal summ = deposit.PercentValue / 365 * delta.Days / 100 * deposit.Summ;
                    switch ((DepositContractType)deposit.DepositType)
                    {
                    case DepositContractType.DepositType1:
                    {
                        AdbRepository.TransactionHistoryData.Save(new TransactionHistoryEntity
                            {
                                Count        = summ,
                                CurrencyType = deposit.CurrencyType,
                                CreateTime   = DateTime.Now,
                                FromAccount  =
                                    TransactionHistoryBlo.GetBankAccount((CurrencyTypeEnum)deposit.CurrencyType),
                                ToAccount = deposit.PercentAccountId
                            });
                        operations.Add($"{DateTime.Now} Процент по депозиту №{deposit.Id} переведен на счет {deposit.PercentAccountIdObject.AccountId}");
                        AdbRepository.TransactionHistoryData.Save(new TransactionHistoryEntity
                            {
                                Count        = summ,
                                CurrencyType = deposit.CurrencyType,
                                CreateTime   = DateTime.Now,
                                FromAccount  = deposit.PercentAccountId,
                                ToAccount    = TransactionHistoryBlo.GetRepositoryAccount((CurrencyTypeEnum)deposit.CurrencyType)
                            });
                        operations.Add($"{DateTime.Now} Процент по депозиту №{deposit.Id}  получен в кассе");
                    }
                    break;

                    case DepositContractType.DepositType2:
                    {
                        AdbRepository.TransactionHistoryData.Save(new TransactionHistoryEntity
                            {
                                Count        = summ,
                                CurrencyType = deposit.CurrencyType,
                                CreateTime   = DateTime.Now,
                                FromAccount  =
                                    TransactionHistoryBlo.GetBankAccount((CurrencyTypeEnum)deposit.CurrencyType),
                                ToAccount = deposit.PercentAccountId
                            });
                        operations.Add($"{DateTime.Now} Процент по депозиту №{deposit.Id} переведен на счет {deposit.PercentAccountIdObject.AccountId}");
                        var percentAccount = AdbRepository.AccountData.GetEntityById(deposit.PercentAccountId);
                        percentAccount.Balance += summ;
                        AdbRepository.AccountData.Save(percentAccount);
                    }
                    break;
                    }
                    deposit.ProcessingTime = DateTime.Now;
                    AdbRepository.DepositContractData.Save(deposit);
                }
                if (((DateTime)request.Value - deposit.AssignDate).Days == 30 * deposit.Period)
                {
                    AdbRepository.TransactionHistoryData.Save(new TransactionHistoryEntity
                    {
                        Count        = deposit.Summ,
                        CurrencyType = deposit.CurrencyType,
                        CreateTime   = DateTime.Now,
                        FromAccount  =
                            TransactionHistoryBlo.GetBankAccount((CurrencyTypeEnum)deposit.CurrencyType),
                        ToAccount = deposit.MainAccountId
                    });
                    operations.Add($"{DateTime.Now} Депозит №{deposit.Id} закрыт");
                }
            }
            result.TypedResult.AddRange(operations);
            return(result);
        }
Exemple #2
0
        private ExecutionResult CloseDayHandler(CloseDayRequest request, ExecutionContext context)
        {
            ExecutionResult <List <string> > result = context.PreviousResult as ExecutionResult <List <string> >;

            result = result ?? new ExecutionResult <List <string> > {
                TypedResult = new List <string>()
            };
            var operations = new List <string>();
            var credits    = AdbRepository.CreditContractData.GetAllCredits();

            foreach (var credit in credits)
            {
                DateTime lastProcessingTime = credit.ProcessingTime ?? credit.AssignDate;
                TimeSpan delta = (DateTime)request.Value - lastProcessingTime;
                if (delta.Days >= 30 && ((DateTime)request.Value - credit.AssignDate).Days < 30 * credit.Period)
                {
                    switch ((CreditContractType)credit.CreditType)
                    {
                    case CreditContractType.CreditType1:
                    {
                        decimal percent = (credit.PercentValue / 365 * delta.Days);
                        decimal v       = (decimal)Math.Pow(((double)(1 + percent)), credit.Period);
                        decimal summ    = credit.Summ * percent * v / (v - 1);
                        AdbRepository.TransactionHistoryData.Save(new TransactionHistoryEntity
                            {
                                Count        = summ,
                                CurrencyType = credit.CurrencyType,
                                CreateTime   = DateTime.Now,
                                FromAccount  = null,
                                ToAccount    = TransactionHistoryBlo.GetRepositoryAccount((CurrencyTypeEnum)credit.CurrencyType)
                            });
                        operations.Add($"{DateTime.Now} Оплата по кредиту №{credit.Id} внесена в кассу");
                        AdbRepository.TransactionHistoryData.Save(new TransactionHistoryEntity
                            {
                                Count        = summ,
                                CurrencyType = credit.CurrencyType,
                                CreateTime   = DateTime.Now,
                                FromAccount  = credit.PercentAccountId,
                                ToAccount    = TransactionHistoryBlo.GetRepositoryAccount((CurrencyTypeEnum)credit.CurrencyType)
                            });
                        operations.Add($"{DateTime.Now} Оплата по кредиту №{credit.Id}  зачислена на счет {credit.PercentAccountIdObject.AccountId}");
                        AdbRepository.TransactionHistoryData.Save(new TransactionHistoryEntity
                            {
                                Count        = summ,
                                CurrencyType = credit.CurrencyType,
                                CreateTime   = DateTime.Now,
                                FromAccount  = credit.PercentAccountId,
                                ToAccount    = TransactionHistoryBlo.GetBankAccount((CurrencyTypeEnum)credit.CurrencyType)
                            });

                        var bankAccount = AdbRepository.AccountData.GetEntityById(TransactionHistoryBlo.GetBankAccount((CurrencyTypeEnum)credit.CurrencyType));
                        bankAccount.Balance += summ;
                        AdbRepository.AccountData.Save(bankAccount);
                        operations.Add($"{DateTime.Now} Оплата по кредиту №{credit.Id}  зачислена на счет банка {bankAccount.AccountId}");
                    }
                    break;

                    case CreditContractType.CreditType2:
                    {
                        decimal summ = credit.PercentValue / 365 * delta.Days / 100 * credit.Summ;
                        AdbRepository.TransactionHistoryData.Save(new TransactionHistoryEntity
                            {
                                Count        = summ,
                                CurrencyType = credit.CurrencyType,
                                CreateTime   = DateTime.Now,
                                FromAccount  = null,
                                ToAccount    = TransactionHistoryBlo.GetRepositoryAccount((CurrencyTypeEnum)credit.CurrencyType)
                            });
                        operations.Add($"{DateTime.Now} Процент по кредиту №{credit.Id} внесен в кассу");
                        AdbRepository.TransactionHistoryData.Save(new TransactionHistoryEntity
                            {
                                Count        = summ,
                                CurrencyType = credit.CurrencyType,
                                CreateTime   = DateTime.Now,
                                FromAccount  = TransactionHistoryBlo.GetRepositoryAccount((CurrencyTypeEnum)credit.CurrencyType),
                                ToAccount    = credit.PercentAccountId
                            });
                        operations.Add($"{DateTime.Now} Процент по кредиту №{credit.Id} переведен на процентный счет клиента {credit.PercentAccountIdObject.AccountId}");

                        AdbRepository.TransactionHistoryData.Save(new TransactionHistoryEntity
                            {
                                Count        = summ,
                                CurrencyType = credit.CurrencyType,
                                CreateTime   = DateTime.Now,
                                FromAccount  = credit.PercentAccountId,
                                ToAccount    = TransactionHistoryBlo.GetBankAccount((CurrencyTypeEnum)credit.CurrencyType)
                            });
                        operations.Add($"{DateTime.Now} Процент по кредиту №{credit.Id} погашен");

                        var bankAccount = AdbRepository.AccountData.GetEntityById(TransactionHistoryBlo.GetBankAccount((CurrencyTypeEnum)credit.CurrencyType));
                        bankAccount.Balance += summ;
                        AdbRepository.AccountData.Save(bankAccount);
                        operations.Add($"{DateTime.Now} Оплата по кредиту №{credit.Id}  зачислена на счет банка {bankAccount.AccountId}");
                    }
                    break;
                    }
                    credit.ProcessingTime = DateTime.Now;
                    AdbRepository.CreditContractData.Save(credit);
                }
                if (((DateTime)request.Value - credit.AssignDate).Days == 30 * credit.Period)
                {
                    if (credit.CreditType == (int)CreditContractType.CreditType2)
                    {
                        if (((DateTime)request.Value - deposit.AssignDate).Days == 30 * deposit.Period)
                        {
                            AdbRepository.TransactionHistoryData.Save(new TransactionHistoryEntity
                            {
                                Count        = deposit.Summ,
                                CurrencyType = deposit.CurrencyType,
                                CreateTime   = DateTime.Now,
                                FromAccount  =
                                    TransactionHistoryBlo.GetBankAccount((CurrencyTypeEnum)deposit.CurrencyType),
                                ToAccount = deposit.MainAccountId
                            });
                            operations.Add($"{DateTime.Now} Депозит №{deposit.Id} закрыт");
                        }
                        operations.Add($"{DateTime.Now} Кредит №{credit.Id} закрыт");
                    }
                }
            }
            result.TypedResult.AddRange(operations);
            return(result);
        }