예제 #1
0
        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());
        }
예제 #2
0
        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);
            }
        }