Пример #1
0
        public void GenerateLoanTransitionEvent()
        {
            const string glll = @"SELECT id, olb, late_days
                            FROM dbo.ActiveLoans(@date, 0)
                            WHERE late_days = 1";
            const string llgl = @"SELECT a1.id,a1.olb,a1.late_days
                            FROM dbo.ActiveLoans(@date, 0) a1
                            INNER JOIN dbo.ActiveLoans(DATEADD(dd,-1,@date), 0) a2 ON a2.id = a1.id
                            WHERE a1.late_days = 0 and a2.late_days>0";
            var user = ServicesProvider.GetInstance().GetUserServices().Find(1);
            var em = new EventManager(user);
            var date = LastLoanTransitionEventDate();

            while (date.Date < DateTime.Now.Date)
            {
                date = date.AddDays(1);
                using (var connection = _loanManager.GetConnection())
                using (var transaction = connection.BeginTransaction())
                    try
                    {
                        var transitionEventList = new List<LoanTransitionEvent>();
                        using (var c = new OpenCbsCommand(glll, connection, transaction))
                        {
                            c.AddParam("@date", date);

                            using (var r = c.ExecuteReader())
                            {
                                while (r.Read())
                                {
                                    var loanId = r.GetInt("id");
                                    var amount = r.GetDecimal("olb");

                                    var transitionEvent = new LoanTransitionEvent
                                    {
                                        Code = "GLLL",
                                        Date = date,
                                        User = user,
                                        Amount = amount,
                                        ContracId = loanId
                                    };
                                    transitionEventList.Add(transitionEvent);
                                }
                            }
                        }
                        using (var c = new OpenCbsCommand(llgl, connection, transaction))
                        {
                            c.AddParam("@date", date);

                            using (var r = c.ExecuteReader())
                            {
                                while (r.Read())
                                {
                                    var loanId = r.GetInt("id");
                                    var amount = r.GetDecimal("olb");

                                    var transitionEvent = new LoanTransitionEvent
                                    {
                                        Code = "LLGL",
                                        Date = date,
                                        User = user,
                                        Amount = amount,
                                        ContracId = loanId
                                    };
                                    transitionEventList.Add(transitionEvent);
                                }
                            }
                        }
                        foreach (var transitionEvent in transitionEventList)
                            em.AddLoanEvent(transitionEvent, transitionEvent.ContracId, transaction);

                        transaction.Commit();
                    }
                    catch (Exception)
                    {
                        transaction.Rollback();
                        throw;
                    }
            }
        }
Пример #2
0
 private void LoanTransitionEventOrigination(LoanTransitionEvent loanTransitionEvent, Loan contract, SqlTransaction sqlTransac)
 {
     _eventManagement.AddLoanEvent(loanTransitionEvent, contract.Id, sqlTransac);
 }
Пример #3
0
        public void AddLoanEvent(LoanTransitionEvent pEvent, int contractId, SqlTransaction transaction)
        {
            pEvent.Id = AddLoanEventHead(pEvent, contractId, transaction);
            const string q = @"INSERT INTO [LoanTransitionEvents](
                                        [id],
                                        [amount])
                                     VALUES(@id,
                                        @amount)";

            using (var c = new OpenCbsCommand(q, transaction.Connection, transaction))
            {
                SetLoanTransitionEvent(c, pEvent, pEvent.Amount);
                c.ExecuteNonQuery();
            }
        }