コード例 #1
0
        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));
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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;
        }
コード例 #7
0
        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));
            }
        }
コード例 #8
0
 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);
     }
 }
コード例 #9
0
        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");
                    }
                }
            }
        }
コード例 #10
0
        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();
        }