using CarCareTracker.Models; namespace CarCareTracker.Helper { public interface IReminderHelper { List GetReminderRecordViewModels(List reminders, int currentMileage, DateTime dateCompare); } public class ReminderHelper: IReminderHelper { public List GetReminderRecordViewModels(List reminders, int currentMileage, DateTime dateCompare) { List reminderViewModels = new List(); foreach (var reminder in reminders) { var reminderViewModel = new ReminderRecordViewModel() { Id = reminder.Id, VehicleId = reminder.VehicleId, Date = reminder.Date, Mileage = reminder.Mileage, Description = reminder.Description, Notes = reminder.Notes, Metric = reminder.Metric }; if (reminder.Metric == ReminderMetric.Both) { if (reminder.Date < dateCompare) { reminderViewModel.Urgency = ReminderUrgency.PastDue; reminderViewModel.Metric = ReminderMetric.Date; } else if (reminder.Mileage < currentMileage) { reminderViewModel.Urgency = ReminderUrgency.PastDue; reminderViewModel.Metric = ReminderMetric.Odometer; } else if (reminder.Date < dateCompare.AddDays(7)) { //if less than a week from today or less than 50 miles from current mileage then very urgent. reminderViewModel.Urgency = ReminderUrgency.VeryUrgent; //have to specify by which metric this reminder is urgent. reminderViewModel.Metric = ReminderMetric.Date; } else if (reminder.Mileage < currentMileage + 50) { reminderViewModel.Urgency = ReminderUrgency.VeryUrgent; reminderViewModel.Metric = ReminderMetric.Odometer; } else if (reminder.Date < dateCompare.AddDays(30)) { reminderViewModel.Urgency = ReminderUrgency.Urgent; reminderViewModel.Metric = ReminderMetric.Date; } else if (reminder.Mileage < currentMileage + 100) { reminderViewModel.Urgency = ReminderUrgency.Urgent; reminderViewModel.Metric = ReminderMetric.Odometer; } } else if (reminder.Metric == ReminderMetric.Date) { if (reminder.Date < dateCompare) { reminderViewModel.Urgency = ReminderUrgency.PastDue; } else if (reminder.Date < dateCompare.AddDays(7)) { reminderViewModel.Urgency = ReminderUrgency.VeryUrgent; } else if (reminder.Date < dateCompare.AddDays(30)) { reminderViewModel.Urgency = ReminderUrgency.Urgent; } } else if (reminder.Metric == ReminderMetric.Odometer) { if (reminder.Mileage < currentMileage) { reminderViewModel.Urgency = ReminderUrgency.PastDue; reminderViewModel.Metric = ReminderMetric.Odometer; } else if (reminder.Mileage < currentMileage + 50) { reminderViewModel.Urgency = ReminderUrgency.VeryUrgent; } else if (reminder.Mileage < currentMileage + 100) { reminderViewModel.Urgency = ReminderUrgency.Urgent; } } reminderViewModels.Add(reminderViewModel); } return reminderViewModels; } } }