Ejemplo n.º 1
0
        public ActionResult ReminderPreview(ReminderJSON reminder)
        {
            var template = db.fees_templates.SingleOrDefault(x => x.id == reminder.templateid);

            if (template == null)
            {
                return(SendJsonErrorResponse("Template not found"));
            }

            var viewmodel = new Reminder();

            viewmodel.Initialise(reminder);

            var liquid = new LiquidTemplate(template.body);

            liquid.AddParameters("reminder", viewmodel);

            var view = liquid.Render();

            return(Json(view.ToJsonOKData()));
        }
Ejemplo n.º 2
0
        public ActionResult ReminderSend(ReminderJSON reminder)
        {
            var template = db.fees_templates.SingleOrDefault(x => x.id == reminder.templateid);

            if (template == null)
            {
                return(SendJsonErrorResponse("Template not found"));
            }

            var viewmodel = new Reminder();

            viewmodel.Initialise(reminder);

            var parent = repository.GetUser(reminder.parentid);

            if (parent == null)
            {
                return(SendJsonErrorResponse("Could not locate parent"));
            }

            if (reminder.useEmail && string.IsNullOrEmpty(parent.email))
            {
                return(SendJsonErrorResponse("Selected parent has no email address. Select another parent."));
            }

            if (reminder.useSMS && string.IsNullOrEmpty(parent.phone_cell))
            {
                return(SendJsonErrorResponse("Selected parent has no cell phone number. Select another parent."));
            }

            if (reminder.useEmail)
            {
                var liquid = new LiquidTemplate(template.body);
                liquid.AddParameters("reminder", viewmodel);

                var emailbody = liquid.Render();

                new Thread(() => Email.SendMail(" School", "*****@*****.**", parent.ToName(false), parent.email, template.title, emailbody, false, null)).Start();
            }

            // save reminder params into db
            foreach (var feeid in reminder.children.SelectMany(x => x.feeids))
            {
                var dbentry = new fees_reminder();
                dbentry.templatename = template.title;
                dbentry.created      = DateTime.UtcNow;
                dbentry.paymentdue   = reminder.date_due;
                dbentry.receiver     = parent.id;
                dbentry.sender       = sessionid.Value;
                dbentry.feeid        = feeid;
                dbentry.uniqueid     = viewmodel.uniqueid;
                db.fees_reminders.InsertOnSubmit(dbentry);
            }


            repository.Save();

            // return view
            var view = this.RenderViewToString("Alerts",
                                               new[]
            {
                new LateFeeAlertSiblings(
                    reminder.children.Select(x => x.studentid))
            }).ToJsonOKData();

            view.message = "Reminder sent successfully";

            return(Json(view));
        }
Ejemplo n.º 3
0
        public void Initialise(ReminderJSON reminder)
        {
            date_today    = DateTime.UtcNow;
            date_extended = reminder.date_due;

            using (var repository = new Repository())
            {
                foreach (var entry in reminder.children)
                {
                    var student = repository.GetUser(entry.studentid);
                    if (student == null)
                    {
                        continue;
                    }
                    var child = new Children();
                    child.name = student.ToName(false);

                    var klass =
                        student.classes_students_allocateds.FirstOrDefault(x => x.year == reminder.date_due.Year);

                    if (klass != null)
                    {
                        child.@class = klass.school_class.name;
                    }

                    children.Add(child);


                    if (string.IsNullOrEmpty(name_parent))
                    {
                        // we haven't populate parent info yet
                        var parent = student.students_guardians.SingleOrDefault(x => x.parentid == reminder.parentid);
                        if (parent != null)
                        {
                            name_parent = parent.user1.ToName();
                        }
                    }
                }

                // calculate total fees and latest overdue fees
                var fees = repository.GetFees().Where(x => reminder.children.Where(y => y.selected).SelectMany(y => y.feeids).ToArray().Contains(x.id));

                pay_total = fees.Sum(x => x.amount).ToString("n2");


                // get date of most recent related letter
                if (fees.SelectMany(x => x.fees_reminders).Count() != 0)
                {
                    date_reminders = fees.SelectMany(x => x.fees_reminders).Select(y => y.created).ToArray().Select(z => z.ToString(Constants.DATETIME_STANDARD)).Distinct();
                    date_expired   = fees.SelectMany(x => x.fees_reminders).Max(y => y.paymentdue);
                }
                else
                {
                    // no reminders been sent yet so take the largest due date
                    date_expired = fees.Max(x => x.duedate);
                }



                // populate director name
                var director = repository.GetUsers(null, null, null, null, UserGroup.DIRECTOR, null, null, null,
                                                   reminder.date_due.Year, null).FirstOrDefault();

                if (director != null)
                {
                    name_director = director.ToName(false);
                }
            }
        }