public ActionResult PermissionSlipApproval(GuardianApproval guardianApproval) { GuardianApproval existingGuardianApproval = null; try { if (ModelState.IsValid) { AspNetUser user = db.AspNetUsers.Find(guardianApproval.GuardianUserID); if (!User.IsInRole("Teacher") && (User.IsInRole("Guardian") && guardianApproval.GuardianEmail != user.Email)) { throw new Exception("Unable to verify guardian for approval"); } existingGuardianApproval = db.GuardianApprovals.Where(a => a.PermissionSlipID == guardianApproval.PermissionSlipID && a.StudentID == guardianApproval.StudentID).FirstOrDefault(); if (existingGuardianApproval == null) { guardianApproval.CreatedDateTime = DateTime.Now; guardianApproval.Signature = Convert.FromBase64String(guardianApproval.SignatureData.Split(',')[1]); db.GuardianApprovals.Add(guardianApproval); } else { db.Entry(existingGuardianApproval).State = EntityState.Detached; guardianApproval.Signature = Convert.FromBase64String(guardianApproval.SignatureData.Split(',')[1]); db.Entry(guardianApproval).State = EntityState.Modified; } db.SaveChanges(); return(RedirectToAction("Index", "Home")); } } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } if (guardianApproval.ExistingSignatureData != null) { guardianApproval.ExistingSignature = Convert.FromBase64String(guardianApproval.ExistingSignatureData.Split(',')[1]); } return(View(guardianApproval)); }
public ActionResult PermissionSlipStatus(int PermissionSlipID) { //TODO /* * Validate Teacher or School Admin * Return a view that shows a list of all students for that permission slip, their approval status * Include buttons to: * Send emails to guardians of students with "No Approval" status to give approval * Send specific email to student guardians to give approval * Send Emails to guardians of all students as a reminder of the event */ PermissionSlipStatus permissionSlipStatus = new PermissionSlipStatus(); PermissionSlip permissionSlip = null; GuardianApproval guardianApproval = null; StudentPermissionSlipStatus studentPermissionSlip = null; List <StudentPermissionSlipStatus> studentPermissionSlipStatuses = new List <StudentPermissionSlipStatus>(); string UserID = ""; try { if (User.IsInRole("Guardian")) { throw new Exception("Unable to provide permission slip status"); } UserID = User.Identity.GetUserId(); permissionSlip = db.PermissionSlips.Find(PermissionSlipID); if ((permissionSlip.ClassRoom.TeacherUserID != UserID) && User.IsInRole("Teacher")) { throw new Exception("Unable to provide permission slip status"); } if (permissionSlip != null) { List <Student> students = permissionSlip.ClassRoom.Students.ToList(); foreach (Student s in students) { studentPermissionSlip = new StudentPermissionSlipStatus() { StudentID = s.ID, StudentFullName = s.FullName, Guardians = s.Guardians.ToList() }; guardianApproval = db.GuardianApprovals.Where(g => g.StudentID == s.ID && g.PermissionSlipID == permissionSlip.ID).FirstOrDefault(); if (guardianApproval != null) { studentPermissionSlip.Approval = guardianApproval.Approved; } studentPermissionSlipStatuses.Add(studentPermissionSlip); } } permissionSlipStatus.permissionSlip = permissionSlip; permissionSlipStatus.studentPermissionStatuses = studentPermissionSlipStatuses; } catch (Exception ex) { //TODO : Do something with Exception Action ModelState.AddModelError("", "Exception occurred processing request for permission slip status:: " + ex.ToString()); return(RedirectToAction("Index", "Home")); } return(View(permissionSlipStatus)); }
public ActionResult PermissionSlipApproval(int PermissionSlipID, int StudentID) { PermissionSlip permissionSlip = null; Student student = null; AspNetUser Guardian = null; GuardianApproval guardianApproval = null; string UserID = ""; bool AllowEdit = true; try { if (!User.IsInRole("Guardian") && !User.IsInRole("Teacher")) { throw new Exception("Unable to provide approval for permission slip"); } UserID = User.Identity.GetUserId(); permissionSlip = db.PermissionSlips.Find(PermissionSlipID); AllowEdit = permissionSlip.StartDateTime >= DateTime.Now.Date; student = db.Students.Find(StudentID); if (User.IsInRole("Guardian")) { Guardian = db.AspNetUsers.Where(u => u.Id == UserID).FirstOrDefault(); if ((permissionSlip != null) && (student != null) && (Guardian != null)) { //Check to make sure Guardian is one of the Student's Guardians if (student.Guardians.Where(g => g.Id == Guardian.Id).FirstOrDefault() == null) { throw new Exception("Unauthorized User"); } guardianApproval = db.GuardianApprovals.Where(a => a.PermissionSlipID == PermissionSlipID && a.StudentID == StudentID).FirstOrDefault(); if (guardianApproval == null) { guardianApproval = new GuardianApproval() { Name = permissionSlip.Name, Location = permissionSlip.Location, StartDateTime = permissionSlip.StartDateTime, EndDateTime = permissionSlip.EndDateTime, Cost = permissionSlip.Cost, RequireChaperone = permissionSlip.RequireChaperone, RequireChaperoneBackgroundCheck = permissionSlip.RequireChaperoneBackgroundCheck, GuardianUserID = AllowEdit ? UserID : "", GuardianName = AllowEdit ? Guardian.FullName : "", StudentID = StudentID, StudentFullName = student.FullName, PermissionSlipID = PermissionSlipID, PermissionSlip = permissionSlip, Approved = false, CanChaperone = false, DaytimePhone = Guardian.PhoneNumberConfirmed ? Guardian.PhoneNumber : "", EmergencyPhone = "", GuardianEmail = "", SpecialHealthDietaryAccessConsiderations = "" }; } else { guardianApproval.StudentFullName = student.FullName; guardianApproval.Name = permissionSlip.Name; guardianApproval.Location = permissionSlip.Location; guardianApproval.StartDateTime = permissionSlip.StartDateTime; guardianApproval.EndDateTime = permissionSlip.EndDateTime; guardianApproval.Cost = permissionSlip.Cost; guardianApproval.RequireChaperone = permissionSlip.RequireChaperone; guardianApproval.RequireChaperoneBackgroundCheck = permissionSlip.RequireChaperoneBackgroundCheck; guardianApproval.ExistingSignature = guardianApproval.Signature; guardianApproval.Signature = null; } } } else //Teacher { AspNetUser Teacher = db.AspNetUsers.Find(UserID); guardianApproval = db.GuardianApprovals.Where(a => a.PermissionSlipID == PermissionSlipID && a.StudentID == StudentID).FirstOrDefault(); if (guardianApproval == null) { guardianApproval = new GuardianApproval() { Name = permissionSlip.Name, Location = permissionSlip.Location, StartDateTime = permissionSlip.StartDateTime, EndDateTime = permissionSlip.EndDateTime, Cost = permissionSlip.Cost, RequireChaperone = permissionSlip.RequireChaperone, RequireChaperoneBackgroundCheck = permissionSlip.RequireChaperoneBackgroundCheck, GuardianUserID = AllowEdit ? UserID : "", GuardianName = AllowEdit ? "Verbal Approval - " + Teacher.FullName : "", StudentID = StudentID, StudentFullName = student.FullName, PermissionSlipID = PermissionSlipID, PermissionSlip = permissionSlip, Approved = false, CanChaperone = false, DaytimePhone = "", EmergencyPhone = "", GuardianEmail = "", SpecialHealthDietaryAccessConsiderations = "" }; } else { guardianApproval.StudentFullName = student.FullName; guardianApproval.Name = permissionSlip.Name; guardianApproval.Location = permissionSlip.Location; guardianApproval.StartDateTime = permissionSlip.StartDateTime; guardianApproval.EndDateTime = permissionSlip.EndDateTime; guardianApproval.Cost = permissionSlip.Cost; guardianApproval.RequireChaperone = permissionSlip.RequireChaperone; guardianApproval.RequireChaperoneBackgroundCheck = permissionSlip.RequireChaperoneBackgroundCheck; guardianApproval.ExistingSignature = guardianApproval.Signature; guardianApproval.Signature = null; } } } catch (Exception ex) { //TODO : Do something with Exception Action ModelState.AddModelError("", "Exception occurred processing approval request :: " + ex.ToString()); return(RedirectToAction("Index", "Home")); } return(View(guardianApproval)); }