public async Task <IActionResult> Edit(int id, [Bind("ID,Title,Text,UsefulnessGrade,InterestGrade,DifficultyGrade,TotalGrade,Points,Timestamp,AuthorID,SubjectID")] SubjectReview subjectReview) { if (id != subjectReview.ID) { return(NotFound()); } if (ModelState.IsValid) { try { subjectReview.TotalGrade = calculateTotalGrade(subjectReview); _context.Update(subjectReview); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!SubjectReviewExists(subjectReview.ID)) { return(NotFound()); } else { throw; } } return(RedirectToAction("Details", new { id = subjectReview.ID })); } ViewData["AuthorID"] = new SelectList(_context.User, "Id", "Id", subjectReview.AuthorID); ViewData["SubjectID"] = new SelectList(_context.Subject, "ID", "ID", subjectReview.SubjectID); return(View(subjectReview)); }
public async Task <IActionResult> Create([Bind("Title,Text,UsefulnessGrade,InterestGrade,DifficultyGrade,Points,AuthorID,SubjectID")] SubjectReview subjectReview, List <int> tags) { subjectReview.TotalGrade = calculateTotalGrade(subjectReview); subjectReview.Timestamp = DateTime.Now; List <SubjectReviewTagSet> tagSet = new List <SubjectReviewTagSet>(); foreach (var tag in tags) { SubjectReviewTagSet temp = new SubjectReviewTagSet(); temp.SubjectReviewID = subjectReview.ID; temp.SubjectReviewTagID = tag; tagSet.Add(temp); } subjectReview.SubjectReviewTagSet = tagSet; if (ModelState.IsValid) { _context.Add(subjectReview); await _context.SaveChangesAsync(); return(RedirectToAction("Details", new { id = subjectReview.ID })); } ViewData["AuthorID"] = subjectReview.AuthorID; ViewData["SubjectID"] = subjectReview.SubjectID; ViewData["SubjectName"] = _context.Subject.Where(s => s.ID == subjectReview.SubjectID).Select(s => s.Name).First(); ViewData["SubjectTags"] = new SelectList(_context.SubjectReviewTag, "ID", "Name"); return(View()); }
async void SubmitEdit_Clicked(object sender, EventArgs e) { if (subrev) { SubjectReview currentReview = EntityLoader.GetUserReviewsS().Find(sr => sr.SubjectId == s.Id); if (LectOrSubPicker.SelectedIndex != -1) { currentReview.LecturerId = EntityLoader.lecturers.Find(l => { string name = l.FirstName + " " + l.LastName; return(name == LectOrSubPicker.Items[LectOrSubPicker.SelectedIndex]); }).Id; } currentReview.Rating = ScorePicker.SelectedIndex + 1; currentReview.Comment = CommentEntry.Text; if (AnonCheckBox.IsChecked) { currentReview.Anonymous = 1; } else { currentReview.Anonymous = 0; } EntityLoader.EditReview(currentReview); } else { LecturerReview currentReview = EntityLoader.GetUserReviewsL().Find(lr => lr.LecturerId == l.Id); if (LectOrSubPicker.SelectedIndex != -1) { currentReview.LecturerId = EntityLoader.subjects.Find(s => s.SubjectName == LectOrSubPicker.Items[LectOrSubPicker.SelectedIndex]).Id; } currentReview.Rating = ScorePicker.SelectedIndex + 1; currentReview.Comment = CommentEntry.Text; if (AnonCheckBox.IsChecked) { currentReview.Anonymous = 1; } else { currentReview.Anonymous = 0; } EntityLoader.EditReview(currentReview); } await DisplayAlert("Success", "Your review was edited successfully.", "Cool!"); OnAddReview(); await Navigation.PopAsync(); }
public UserReview(SubjectReview review) { Subject subject = EntityLoader.subjects.Find(s => s.Id == review.SubjectId); LecSubName = subject.SubjectName; LecSubScore = review.Rating.ToString(); Comment = review.Comment; EditCommand = new Command(OnEdit); DeleteCommand = new Command(OnDelete); }
private decimal calculateTotalGrade(SubjectReview sr) { int sum = 0; decimal result = 0; sum += sr.UsefulnessGrade; sum += sr.InterestGrade; sum += sr.DifficultyGrade; result = sum / (decimal)3; return(result); }
public AddReview(Subject subject, SubjectReview review) { InitializeComponent(); var AnonLabelTapGestureRecognizer = new TapGestureRecognizer(); AnonLabelTapGestureRecognizer.Tapped += (s, e) => { AnonCheckBox.IsChecked = !AnonCheckBox.IsChecked; }; AnonLabel.GestureRecognizers.Add(AnonLabelTapGestureRecognizer); TopTextLabel.Text = "Editing your review for: " + subject.SubjectName; if (review.LecturerId != 0) { int index = 0; foreach (Lecturer lecturer in subject.Lecturers.Value) { LectOrSubPicker.Items.Add(lecturer.FirstName + " " + lecturer.LastName); if (lecturer.Id == review.LecturerId) { LectOrSubPicker.SelectedIndex = index; } index++; } } else { LectOrSubPicker.Title = "(Optional) pick the lecturer"; foreach (Lecturer lecturer in subject.Lecturers.Value) { LectOrSubPicker.Items.Add(lecturer.FirstName + " " + lecturer.LastName); } } ScorePicker.SelectedIndex = review.Rating - 1; CommentEntry.Text = review.Comment; if (review.Anonymous == 1) { AnonCheckBox.IsChecked = true; } s = subject; Submit.Clicked -= Submit_Clicked; Submit.Clicked += SubmitEdit_Clicked; }
public async void OnEdit(object s) { UserReview current = (UserReview)s; Lecturer lect = EntityLoader.lecturers.Find(l => l.FirstName + " " + l.LastName == current.LecSubName); if (lect != null) { LecturerReview review = EntityLoader.GetUserReviewsL().Find(lr => lr.LecturerId == lect.Id); await App.Current.MainPage.Navigation.PushAsync(new AddReview(lect, review)); } else { Subject sub = EntityLoader.subjects.Find(su => su.SubjectName == current.LecSubName); SubjectReview review = EntityLoader.GetUserReviewsS().Find(sr => sr.SubjectId == sub?.Id); await App.Current.MainPage.Navigation.PushAsync(new AddReview(sub, review)); } }
async void EditReviewBtn_Clicked(object sender, EventArgs e) { if (subprof) { SubjectReview review = EntityLoader.GetUserReviewsS().Find(sr => sr.SubjectId == id); Subject subject = EntityLoader.subjects.Find(s => s.Id == id); var nextPage = new AddReview(subject, review); nextPage.AddedReview += UpdateReviewList; await Navigation.PushAsync(nextPage); } else { LecturerReview review = EntityLoader.GetUserReviewsL().Find(lr => lr.LecturerId == id); Lecturer lecturer = EntityLoader.lecturers.Find(l => l.Id == id); var nextPage = new AddReview(lecturer, review); nextPage.AddedReview += UpdateReviewList; await Navigation.PushAsync(nextPage); } }
public async void OnDelete(object s) { UserReview current = (UserReview)s; bool answer = await App.Current.MainPage.DisplayAlert("", "Are you sure you want to delete your review for " + current.LecSubName + "?", "Yes", "No"); if (answer) { Lecturer lect = EntityLoader.lecturers.Find(l => l.FirstName + " " + l.LastName == current.LecSubName); if (lect != null) { LecturerReview review = EntityLoader.GetUserReviewsL().Find(lr => lr.LecturerId == lect.Id); try { EntityLoader.DeleteReview(review); await App.Current.MainPage.Navigation.PopAsync(); } catch (Exception ex) { await App.Current.MainPage.DisplayAlert("Oh no!", ex.Message, "OK"); } } else { Subject sub = EntityLoader.subjects.Find(su => su.SubjectName == current.LecSubName); SubjectReview review = EntityLoader.GetUserReviewsS().Find(sr => sr.SubjectId == sub?.Id); try { EntityLoader.DeleteReview(review); await App.Current.MainPage.Navigation.PopAsync(); } catch (Exception ex) { await App.Current.MainPage.DisplayAlert("Oh no!", ex.Message, "OK"); } } } }
async void Submit_Clicked(object sender, EventArgs e) { if (subrev) { SubjectReview newReview = new SubjectReview { SubjectId = s.Id }; if (LectOrSubPicker.SelectedIndex != -1) { newReview.LecturerId = EntityLoader.lecturers.Find(l => { string name = l.FirstName + " " + l.LastName; return(name == LectOrSubPicker.Items[LectOrSubPicker.SelectedIndex]); }).Id; } newReview.Rating = ScorePicker.SelectedIndex + 1; newReview.UserId = ConstVars.currentUser.Id; newReview.Comment = CommentEntry.Text; if (AnonCheckBox.IsChecked) { newReview.Anonymous = 1; } else { newReview.Anonymous = 0; } EntityLoader.AddReview(newReview); } else { LecturerReview newReview = new LecturerReview { LecturerId = l.Id }; if (LectOrSubPicker.SelectedIndex != -1) { newReview.SubjectId = EntityLoader.subjects.Find(s => s.SubjectName == LectOrSubPicker.Items[LectOrSubPicker.SelectedIndex]).Id; } newReview.Rating = ScorePicker.SelectedIndex + 1; newReview.UserId = ConstVars.currentUser.Id; newReview.Comment = CommentEntry.Text; if (AnonCheckBox.IsChecked) { newReview.Anonymous = 1; } else { newReview.Anonymous = 0; } EntityLoader.AddReview(newReview); } await DisplayAlert("Success", "Your review was added.", "Cool!"); OnAddReview(); await Navigation.PopAsync(); }