From 80f8026d09791a6b26f9857dedcf503c3f0a41e8 Mon Sep 17 00:00:00 2001 From: Astrian Zheng Date: Wed, 18 Oct 2023 15:43:39 +1100 Subject: [PATCH] Approve appointment --- .../Controllers/AppointmentsController.cs | 55 +++++++++++++++++++ .../Views/Appointments/Index.cshtml | 2 +- 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/FIT5032-Assignment/Controllers/AppointmentsController.cs b/FIT5032-Assignment/Controllers/AppointmentsController.cs index bb5d7bc..6d0598b 100644 --- a/FIT5032-Assignment/Controllers/AppointmentsController.cs +++ b/FIT5032-Assignment/Controllers/AppointmentsController.cs @@ -117,11 +117,13 @@ namespace FIT5032_Assignment.Controllers { if (userProfile.role == 1) { // patient var dbData = db.Appointments.Where(a => a.patient == userProfile.uuid).OrderByDescending(a => a.createdAt).ToList(); foreach (var item in dbData) { + Trace.WriteLine(item.uuid); appointments.Add(new Tuple(item, db.Users.Find(item.responsibleBy))); } } else if (userProfile.role == 2) { // doctor var dbData = db.Appointments.Where(a => a.responsibleBy == userProfile.uuid).OrderByDescending(a => a.createdAt).ToList(); foreach (var item in dbData) { + Trace.WriteLine(item.uuid); appointments.Add(new Tuple(item, db.Users.Find(item.patient))); } } @@ -135,6 +137,59 @@ namespace FIT5032_Assignment.Controllers { return View(); } + public ActionResult Approve(string id) { + // Check login + if (Request.Cookies["psg_auth_token"] == null) { + // Redirect to home page + return RedirectToAction("Index"); + } + var user = psgCredentialVerify(Request.Cookies["psg_auth_token"].Value); + if (user == null) { + // Redirect to home page + Response.Cookies["psg_auth_token"].Expires = DateTime.Now.AddDays(-1); + return RedirectToAction("Index"); + } + var userProfile = loginInfo(user); + if (userProfile == null) { + // Redirect to home page, and remove cookies + Response.Cookies["psg_auth_token"].Expires = DateTime.Now.AddDays(-1); + return RedirectToAction("Index"); + } + // Detect user role + ViewBag.role = db.Users.Find(userProfile.uuid).role; + + // Only doctor can approve appointment + if (userProfile.role != 2) { + TempData["tip"] = "This operation is not allowed."; + return Redirect("/Appointments/Index"); + } + + // Check if the appointment is belong to the doctor or patient + var appointment = db.Appointments.Find(id); + if (appointment == null) { + TempData["tip"] = "The appointment does not exist."; + return Redirect("/Appointments/Index"); + } + if (appointment.responsibleBy != userProfile.uuid) { + TempData["tip"] = "The appointment does not exist."; + return Redirect("/Appointments/Index"); + } + + // Check status == 0 + if (appointment.status != 0) { + TempData["tip"] = "Operation invalid"; + return Redirect("/Appointments/Index"); + } + + // Update status + appointment.status = 1; + db.Entry(appointment).State = EntityState.Modified; + db.SaveChanges(); + + TempData["tip"] = "The appointment has been approved."; + return Redirect("/Appointments/Index"); + } + // GET: Appointments/Create public ActionResult Create(string id) { if (Request.Cookies["psg_auth_token"] == null) { diff --git a/FIT5032-Assignment/Views/Appointments/Index.cshtml b/FIT5032-Assignment/Views/Appointments/Index.cshtml index a73fcbe..aa4431d 100644 --- a/FIT5032-Assignment/Views/Appointments/Index.cshtml +++ b/FIT5032-Assignment/Views/Appointments/Index.cshtml @@ -85,7 +85,7 @@ @if (item.Item1.status == 0) { - + Approve }