Esempio n. 1
0
        public ActionResult Send(long id)
        {
            var usr = repository.GetUser(id);

            if (usr == null)
            {
                return(Json("User not found".ToJsonFail(), JsonRequestBehavior.AllowGet));
            }

            var viewmodel = new NotificationSendViewModel();

            viewmodel.studentid = id;
            viewmodel.message   = string.Format("This is to inform you that {0} has been late/absent {1} days this week.",
                                                usr.ToName(),
                                                usr.attendances.ToNumberThisWeek(Utility.GetDBDate()).Sum());

            // get parents
            viewmodel.parents = usr.students_guardians.Select(
                x =>
                new IdName(x.user1.id,
                           string.Format("{0} {1}", x.user1.ToName(),
                                         string.IsNullOrEmpty(x.user1.email)
                                             ? "<span class='font_red'>no email</span>"
                                             : "")));

            return(View(viewmodel));
        }
Esempio n. 2
0
        public ActionResult Send(long id)
        {
            var usr = repository.GetUser(id);

            if (usr == null)
            {
                return(SendJsonErrorResponse("User not found"));
            }

            var viewmodel = new NotificationSendViewModel();

            viewmodel.studentid = id;
            viewmodel.message   = string.Format("This is to inform you of {0}'s merit/demerit points.",
                                                usr.ToName());

            // get parents
            viewmodel.parents =
                usr.students_guardians.Select(
                    x =>
                    new IdName(x.user1.id,
                               string.Format("{0} {1}", x.user1.ToName(),
                                             string.IsNullOrEmpty(x.user1.email)
                                                 ? "<span class='font_red'>no email</span>"
                                                 : "")));

            return(View(viewmodel));
        }
Esempio n. 3
0
        public ActionResult UploadAnswer(long id, string qqfile)
        {
            var length = long.Parse(Request.Params["CONTENT_LENGTH"]);

            var filename = Path.GetFileNameWithoutExtension(qqfile);
            var ext      = Path.GetExtension(qqfile);

            var  uploader = new FileHandler(filename.ToSafeUrl() + ext, UploaderType.HOMEWORK, sessionid);
            bool ok       = uploader.Save(Request.InputStream);

            if (!ok)
            {
                return(Json("An error has occurred. Unable to save file".ToJsonFail()));
            }

            // save to database
            var homeworkstudent = db.homework_students.SingleOrDefault(x => x.studentid == sessionid.Value && x.id == id);

            var answer = new homework_answer();

            answer.created    = DateTime.Now;
            answer.url        = uploader.url;
            answer.filename   = qqfile;
            answer.size       = uploader.size;
            answer.homeworkid = homeworkstudent.homeworkid;
            homeworkstudent.homework_answers.Add(answer);

            repository.Save();

            // notify teacher?
            if (homeworkstudent.homework.notifyme)
            {
                var viewmodel   = new NotificationSendViewModel();
                var studentname = homeworkstudent.user.ToName();
                viewmodel.message =
                    string.Format(
                        "An answer has been uploaded by <a href='http://wwww.ioschools.edu.my/users/{0}'>{1}</a>",
                        homeworkstudent.studentid, studentname);
                viewmodel.message += string.Format("<br/> To view your homeworks. <a href='http://wwww.ioschools.edu.my/homework'>Please follow this link</a>.");

                var teacher = homeworkstudent.homework.user;

                if (!string.IsNullOrEmpty(teacher.email))
                {
                    viewmodel.receiver = teacher.ToName();
                    this.SendEmailNow(
                        EmailViewType.HOMEWORK_NOTIFICATION,
                        viewmodel,
                        string.Format("Homework {0}: Answer uploaded by {1}", homeworkstudent.homework.title, studentname),
                        teacher.email,
                        viewmodel.receiver);
                }
            }

            var retVal = new IdName(answer.id, uploader.filename);

            return(Json(retVal.ToJsonOKData()));
        }
Esempio n. 4
0
        public ActionResult Send(string message, IEnumerable <long> parent, bool use_email, bool use_SMS)
        {
            if (parent == null)
            {
                return(Json("No parent/guardian was specified".ToJsonFail()));
            }
            var viewmodel = new NotificationSendViewModel();

            viewmodel.message = message;

            var parentsList = new List <user>();

            foreach (var p in parent)
            {
                var usrparent = repository.GetUser(p);
                if (usrparent == null)
                {
                    return(SendJsonErrorResponse("Could not locate parent"));
                }

                if (use_email && string.IsNullOrEmpty(usrparent.email))
                {
                    return(SendJsonErrorResponse("A parent has no email address. Notification not sent."));
                }

                if (use_SMS && string.IsNullOrEmpty(usrparent.phone_cell))
                {
                    return(SendJsonErrorResponse("A parent has no cell phone number. Notification not sent."));
                }
                parentsList.Add(usrparent);
            }

            foreach (var entry in parentsList)
            {
                if (use_email)
                {
                    viewmodel.receiver = entry.ToName();
                    this.SendEmailNow(
                        EmailViewType.PARENT_NOTIFICATION,
                        viewmodel,
                        " School Attendance Info",
                        entry.email,
                        viewmodel.receiver);
                }

                if (use_SMS)
                {
                    Clickatell.Send(message, entry.phone_cell);
                }
            }

            return(Json("Notification sent successfully".ToJsonOKMessage()));
        }
Esempio n. 5
0
        public ActionResult Send(long studentid, string message, IEnumerable <long> parent, bool use_email, bool use_SMS)
        {
            if (parent == null)
            {
                return(Json("No parent/guardian was specified".ToJsonFail()));
            }

            // get headmaster/headmistress emails to CC
            var year     = DateTime.Now.Year;
            var schoolid =
                repository.GetUser(studentid).classes_students_allocateds.Where(x => x.year == year).Select(
                    x => x.school_class.schoolid).FirstOrDefault();
            var admins = repository.GetUsers(null, null, schoolid, null, UserGroup.HEAD, null, null, null, year, null);
            var cclist = admins.Select(x => x.email);

            var viewmodel = new NotificationSendViewModel();

            viewmodel.message = message;

            var parentsList = new List <user>();

            foreach (var p in parent)
            {
                var usrparent = repository.GetUser(p);
                if (usrparent == null)
                {
                    return(SendJsonErrorResponse("Could not locate parent"));
                }

                if (use_email && string.IsNullOrEmpty(usrparent.email))
                {
                    return(SendJsonErrorResponse("A parent has no email address. Notification not sent."));
                }

                if (use_SMS && string.IsNullOrEmpty(usrparent.phone_cell))
                {
                    return(SendJsonErrorResponse("A parent has no cell phone number. Notification not sent."));
                }
                parentsList.Add(usrparent);
            }

            foreach (var entry in parentsList)
            {
                if (use_email)
                {
                    viewmodel.receiver = entry.ToName();
                    this.SendEmailNow(
                        EmailViewType.PARENT_NOTIFICATION,
                        viewmodel,
                        " School Student Conduct Info",
                        entry.email,
                        viewmodel.receiver, "", cclist);
                }

                if (use_SMS)
                {
                    Clickatell.Send(message, entry.phone_cell);

                    foreach (var number in admins.Select(x => x.phone_cell))
                    {
                        if (!string.IsNullOrEmpty(number))
                        {
                            Clickatell.Send(message, number);
                        }
                    }
                }
            }

            return(Json("Notification sent successfully".ToJsonOKMessage()));
        }