private void InitializePermissionSlipForCreate(ref CreatePermissionSlip createPermissionSlip)
        {
            List <School>    SchoolList = null;
            List <ClassRoom> ClassList  = null;
            int SchoolID = 0;
            int?ClassID  = null;

            SchoolList = Common.GetSchools(db, User);
            if (SchoolList.Count == 1)
            {
                SchoolID = SchoolList[0].SchoolID;
                createPermissionSlip.SchoolID = SchoolID;
                ClassList = Common.GetClassRooms(db, User, SchoolID);
                if (ClassList.Count == 1)
                {
                    ClassID = ClassList[0].ID;
                }
            }

            createPermissionSlip.StartDateTime = DateTime.Now;
            createPermissionSlip.EndDateTime   = DateTime.Now;
            if (ClassID != null)
            {
                createPermissionSlip.ClassRoomID = (int)ClassID;
                createPermissionSlip.ClassRoom   = db.ClassRooms.Find(ClassID);
            }
        }
        // GET: PermissionSlips/Create
        public ActionResult Create()
        {
            CreatePermissionSlip p = new CreatePermissionSlip();

            InitializePermissionSlipForCreate(ref p);
            InitializeViewBagsForCreate();
            return(View(p));
        }
        public ActionResult Create([Bind(Include = "ClassRoomID,PermissionSlipCategoryID,PermissionSlipTemplateID,Name,Location,StartDateTime,EndDateTime,Cost,RequireChaperone,RequireChaperoneBackgroundCheck,EmailGuardians")] CreatePermissionSlip createPermissionSlip)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    PermissionSlip p = new PermissionSlip()
                    {
                        PermissionSlipCategoryID = createPermissionSlip.PermissionSlipCategoryID,
                        PermissionSlipTemplateID = createPermissionSlip.PermissionSlipTemplateID,
                        ClassRoomID      = createPermissionSlip.ClassRoomID,
                        Name             = createPermissionSlip.Name,
                        Location         = createPermissionSlip.Location,
                        StartDateTime    = createPermissionSlip.StartDateTime,
                        EndDateTime      = createPermissionSlip.EndDateTime,
                        Cost             = createPermissionSlip.Cost,
                        RequireChaperone = createPermissionSlip.RequireChaperone,
                        RequireChaperoneBackgroundCheck = createPermissionSlip.RequireChaperoneBackgroundCheck
                    };

                    db.PermissionSlips.Add(p);
                    db.SaveChanges();
                    db.Entry(p).Reload();                     // Make sure the ID is populated
                    if (createPermissionSlip.EmailGuardians)
                    {
                        List <Student> students = db.ClassRooms.Where(c => c.ID == createPermissionSlip.ClassRoomID).SelectMany(c => c.Students).ToList();
                        foreach (Student s in students)
                        {
                            foreach (AspNetUser g in s.Guardians)
                            {
                                if (g.EmailConfirmed)
                                {
                                    string EmailMessage = "Permission Slip Created for your student's class. " +
                                                          Url.Action("PermissionSlipApproval", "PermissionSlips", new RouteValueDictionary(new { PermissionSlipID = p.ID, StudentID = s.ID }), protocol: Request.Url.Scheme);
                                    //for each guardian of class, send email
                                    MailGunUtility.SendSimpleMessage(new EmailMessage()
                                    {
                                        EmailSubject    = "Class Room Permission Slip",
                                        ToAddress       = g.Email,
                                        MessageText     = EmailMessage,
                                        HtmlMessageText = EmailMessage
                                    });
                                }
                            }
                        }
                        ////for each guardian of class, send email
                        //MailGunUtility.SendSimpleMessage(new EmailMessage()
                        //{
                        //	MessageText = "Permission Slip Created for your student's class"
                        //});
                    }

                    return(RedirectToAction("Index"));
                }
                catch (Exception ex)
                {
                }
            }

            InitializeViewBagsForCreate();
            return(View(createPermissionSlip));
        }