public IActionResult Index(string status = AssignmentStatus.Pending) { var applicationManager = DomainHub.GetDomain <IApplicationManager>(); var assignments = applicationManager.GetAssignments(status, true); if (status == AssignmentStatus.Complete) { assignments = assignments.OrderBy(assignment => assignment.AppointmentLetter?.Time ?? DateTime.MaxValue).ToList(); } else { assignments = assignments.OrderBy(assignment => assignment.Time).ToList(); } ViewBag.Assignments = assignments; ViewBag.Status = status; var paymentManager = DomainHub.GetDomain <IPaymentManager>(); var payments = new Dictionary <string, List <Payment> >(); var isPaids = new Dictionary <string, bool>(); foreach (var assignment in assignments) { payments.Add(assignment.Id, paymentManager.GetPayments(assignment.Id)); isPaids.Add(assignment.Id, paymentManager.IsPaid(assignment.Id)); } ViewBag.Payments = payments; ViewBag.IsPaids = isPaids; if (status == AssignmentStatus.Appointed) { var appointmentLetterManger = DomainHub.GetDomain <IAppointmentLetterManager>(); var letters = appointmentLetterManger .UnassignedLetters .Where(letter => letter.Time > DateTime.Now.AddDays(-7)) .GroupBy(letter => letter.Name.Replace("\r", "")) .ToDictionary(group => group.Key); var noLetter = new AppointmentLetter[0]; ViewBag.AppointmentLetters = assignments .ToDictionary(assignment => assignment.Id, assignment => { var application = applicationManager[assignment.Id]; var name = $"{application.GivenName} {application.SurName}"; return(letters.ContainsKey(name) ? letters[name].ToArray() : noLetter); }); } return(View()); }
public void SubmitLetter(string id, string appointmentNo, string name, DateTime time, string category, string subCategory) { var appointmentLetter = AppointmentLetterTable[Unassigned, id]; if (appointmentLetter == null) { appointmentLetter = new AppointmentLetter { PartitionKey = Unassigned, RowKey = id, EmailId = id, AppointmentNo = appointmentNo, Name = name, Time = TimeZoneInfo.ConvertTimeFromUtc(time, Localization.DublinTimeZoneInfo), Category = category, SubCategory = subCategory }; AppointmentLetterTable.Insert(appointmentLetter); EnsureCacheLoaded(); Cache.Add(appointmentLetter); } }