Example #1
0
        public OverdueEvent AddRecheduleTransformationEvent(DateTime dateTime)
        {
            OverdueEvent ovEvent = null;
            bool toAddEvent = true;
            foreach (OverdueEvent dueEvent in Events.GetOverdueEvents())
            {
                if (dueEvent.Code == "GLRL" || dueEvent.Code == "BLRL" || dueEvent.Code == "LLRL")
                {
                    toAddEvent = false;
                }
            }

            if (toAddEvent)
            {
                foreach (Event reschEvent in Events)
                {
                    if (reschEvent is RescheduleLoanEvent)
                    {
                        ovEvent = new OverdueEvent
                                      {
                                          OLB = CalculateActualOlb(),
                                          OverdueDays = CalculatePastDueSinceLastRepayment(reschEvent.Date),
                                          User = User.CurrentUser,
                                          Date = dateTime
                                      };

                        if (ovEvent.OverdueDays > 0)
                        {
                            ovEvent.Code = ovEvent.OverdueDays > _generalSettings.BadLoanDays ? "BLRL" : "LLRL";
                        }
                        else
                        {
                            ovEvent.Code = "GLRL";
                        }
                    }
                }
            }

            if(ovEvent != null)
                Events.Add(ovEvent);

            return ovEvent;
        }
Example #2
0
        public OverdueEvent GetOverdueEvent(DateTime dateTime)
        {
            int badLoanDays = _generalSettings.BadLoanDays;
            OLoanLateStatus loanStatus = OLoanLateStatus.Good;
            int lateDays = CalculatePastDueSinceLastRepayment(dateTime);
            OverdueEvent oEvent = new OverdueEvent { Id = 0, Code = "" };

            if (lateDays > badLoanDays)
            {
                loanStatus = OLoanLateStatus.Bad;
                oEvent.Code = "GLBL";
            }
            else if (lateDays > 0)
            {
                loanStatus = OLoanLateStatus.Late;
                oEvent.Code = "GLLL";
            }

            Events.SortEventsByDate();
            List<OverdueEvent> overdueEvents = Events.GetOverdueEvents();

            //Get last overdue event if it's not exist it must be empty
            OverdueEvent lastEvent = new OverdueEvent {Code = ""};
            foreach (OverdueEvent dueEvent in overdueEvents)
            {
                if ((dueEvent.Date > lastEvent.Date) &&
                    (dueEvent.Code != "GLRL" && dueEvent.Code != "LLRL" && dueEvent.Code != "BLRL"))
                {
                    lastEvent = dueEvent;
                    oEvent = dueEvent;
                }
            }

            if (oEvent.Code != "")
            {
                OverdueEvent overdueEvent = new OverdueEvent
                {
                    OLB = CalculateActualOlb(),
                    OverdueDays = lateDays,
                    OverduePrincipal = GetOverduePrincipal(dateTime),
                    User = User.CurrentUser,
                    Date = dateTime
                };

                overdueEvent.Code = GetLateLoanEventCode(loanStatus, oEvent.Code);
                //do not double same event and same situation
                if (overdueEvent.Code != lastEvent.Code)
                {
                    //listEvents.Add(overdueEvent);
                    Events.Add(overdueEvent);
                    return overdueEvent;
                }
            }
            return null;
        }