Submit review
This commit is contained in:
parent
46c50901e8
commit
9654264773
|
@ -633,5 +633,90 @@ namespace FIT5032_Assignment.Controllers {
|
|||
|
||||
return View();
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public ActionResult Review(FormCollection collection) {
|
||||
Trace.WriteLine(collection["appointment"]);
|
||||
|
||||
// Verify 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", "Home");
|
||||
}
|
||||
|
||||
// Detect if user logined is patient
|
||||
var role = db.Users.Find(userProfile.uuid).role;
|
||||
if (role != 1) {
|
||||
// Redirect to home page
|
||||
TempData["tip"] = "Operation invalid";
|
||||
return Redirect("/Appointments/Index");
|
||||
}
|
||||
|
||||
// Check if the appointment is belong to the doctor or patient
|
||||
var appointment = db.Appointments.Find(collection["appointment"]);
|
||||
if (appointment == null) {
|
||||
TempData["tip"] = "The appointment does not exist.";
|
||||
return Redirect("/Appointments/Index");
|
||||
}
|
||||
if (appointment.patient != userProfile.uuid && appointment.responsibleBy != userProfile.uuid) {
|
||||
TempData["tip"] = "The appointment does not exist.";
|
||||
return Redirect("/Appointments/Index");
|
||||
}
|
||||
|
||||
// Check status == 2
|
||||
if (appointment.status != 2) {
|
||||
TempData["tip"] = "Operation invalid";
|
||||
return Redirect("/Appointments/Index");
|
||||
}
|
||||
|
||||
// Check if the review exist
|
||||
try {
|
||||
var review = db.Reviews.Find(collection["appointment"]);
|
||||
Trace.WriteLine(review);
|
||||
if (review != null) {
|
||||
TempData["tip"] = "You cannot append a new review to this appointment.";
|
||||
return Redirect("/Appointments/Index");
|
||||
}
|
||||
} catch(Exception e) {
|
||||
Trace.WriteLine(e);
|
||||
TempData["tip"] = "System error";
|
||||
return Redirect("/Appointments/Index");
|
||||
}
|
||||
|
||||
// Create review
|
||||
var uuid = Guid.NewGuid().ToString();
|
||||
Reviews newReview = new Reviews {
|
||||
appointment = collection["appointment"],
|
||||
patient = userProfile.uuid,
|
||||
doctor = appointment.responsibleBy,
|
||||
score = Convert.ToInt32(collection["score"]),
|
||||
comment = collection["comment"],
|
||||
reviewAt = DateTime.Now,
|
||||
};
|
||||
db.Reviews.Add(newReview);
|
||||
db.SaveChanges();
|
||||
|
||||
ViewBag.role = role;
|
||||
ViewBag.appointment = appointment;
|
||||
ViewBag.doctor = db.Doctors.Where(d => d.user == appointment.responsibleBy);
|
||||
ViewBag.doctorUser = db.Users.Find(appointment.responsibleBy);
|
||||
ViewBag.patient = db.Users.Find(appointment.patient);
|
||||
ViewBag.review = newReview;
|
||||
ViewBag.reviewAvailable = true;
|
||||
ViewBag.tip = "Thanks for submit your review!";
|
||||
return View();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,11 +4,18 @@
|
|||
Layout = "~/Views/Shared/_Layout.cshtml";
|
||||
}
|
||||
|
||||
@if (ViewBag.tip != null) {
|
||||
<div class="alert alert-success" role="alert">
|
||||
@ViewBag.tip
|
||||
</div>
|
||||
}
|
||||
|
||||
<h2>Rate the experience</h2>
|
||||
|
||||
@if (ViewBag.role == 1) {
|
||||
<p>You are about to review the Doctor <b>@ViewBag.doctorUser.displayName</b></p>
|
||||
<form method="post">
|
||||
<input type="hidden" id="appointment" name="appointment" required value="@ViewBag.appointment.uuid" />
|
||||
<div class="form-group">
|
||||
<label for="score">How about your experience?</label>
|
||||
<input type="hidden" id="score" name="score" required />
|
||||
|
@ -39,6 +46,7 @@
|
|||
.material-symbols-outlined {
|
||||
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24
|
||||
}
|
||||
|
||||
textarea {
|
||||
width: 100%;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user