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; }
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; }