private void RejectManuscript()
        {
            ManuscriptToUpdate.ManuscriptId          = SelectedReceivedManuscript.ManuscriptId;
            ManuscriptToUpdate.IssueId               = 3;
            ManuscriptToUpdate.DateAccepted          = new DateTime(2099, 1, 1);
            ManuscriptToUpdate.ManuscriptStatus      = 2;
            ManuscriptToUpdate.NumberOfPagesOccupied = 0;
            ManuscriptToUpdate.OrderInIssue          = 0;
            ManuscriptToUpdate.BeginningPageNumber   = 0;
            _updateManuscriptService.UpdateManuscript(ManuscriptToUpdate);
            MessageBox.Show($"Manuscript entitled as '{SelectedReceivedManuscript.ManuscriptTitle}' has been rejected.",
                            "Success!",
                            MessageBoxButton.OK,
                            MessageBoxImage.Information);
            //Refresh DB
            _manuscriptService = new ListManuscriptService(_context);
            _issueService      = new ListIssueService(_context);
            _reviewService     = new ListReviewService(_context);

            var manuscripts = _manuscriptService.GetManuscriptList().ToList();
            var issues      = _issueService.GetIssueList().ToList();
            var reviews     = _reviewService.GetReviewList().ToList();

            ManuscriptList = new ObservableCollection <ManuscriptListDto>(manuscripts);
            IssueList      = new ObservableCollection <IssueListDto>(issues);
            ReviewList     = new ObservableCollection <ReviewListDto>(reviews);

            //Refresh ListBox
            ReceivedManuscriptList.Remove(SelectedReceivedManuscript);
        }
        private void AddReview()
        {
            var selectedReviewers = FrontReviewerList.Where(c => c.IsSelected);
            var reviewerIdBag     = new List <int>();

            foreach (var dto in selectedReviewers)
            {
                reviewerIdBag.Add(dto.ReviewerId);
            }
            if (reviewerIdBag.Count >= 3)
            {
                //update manuscript
                ManuscriptToUpdate.ManuscriptId          = SelectedReceivedManuscript.ManuscriptId;
                ManuscriptToUpdate.IssueId               = 3;
                ManuscriptToUpdate.DateAccepted          = new DateTime(2099, 1, 1);
                ManuscriptToUpdate.ManuscriptStatus      = 3;
                ManuscriptToUpdate.NumberOfPagesOccupied = 0;
                ManuscriptToUpdate.OrderInIssue          = 0;
                ManuscriptToUpdate.BeginningPageNumber   = 0;
                _updateManuscriptService.UpdateManuscript(ManuscriptToUpdate);

                //add reviews
                ReviewToAdd.ManuscriptId = SelectedReceivedManuscript.ManuscriptId;
                foreach (var reviewerId in reviewerIdBag)
                {
                    ReviewToAdd.ReviewerId = reviewerId;
                    _addReviewService.AddReview(ReviewToAdd);
                }

                MessageBox.Show($"The manuscript entitled as '{SelectedReceivedManuscript.ManuscriptTitle}' has been sent for peer review.",
                                "Success!",
                                MessageBoxButton.OK,
                                MessageBoxImage.Information);

                //Refresh DB
                _manuscriptService = new ListManuscriptService(_context);
                _issueService      = new ListIssueService(_context);
                _reviewService     = new ListReviewService(_context);

                var manuscripts = _manuscriptService.GetManuscriptList().ToList();
                var issues      = _issueService.GetIssueList().ToList();
                var reviews     = _reviewService.GetReviewList().ToList();

                ManuscriptList = new ObservableCollection <ManuscriptListDto>(manuscripts);
                IssueList      = new ObservableCollection <IssueListDto>(issues);
                ReviewList     = new ObservableCollection <ReviewListDto>(reviews);

                //Refresh ListBox
                ReceivedManuscriptList.Remove(SelectedReceivedManuscript);
            }
            else
            {
                MessageBox.Show($"Please select three or more reviewers to peer review.",
                                "Success!",
                                MessageBoxButton.OK,
                                MessageBoxImage.Information);
            }
        }
        public EditorViewModel(EditorListDto loggedEditor, UpdateManuscriptService updateManuscriptService,
                               AddReviewService addReviewService, ListFrontReviewerService listFrontReviewerService) : this(new EfCoreContext())
        {
            LoggedEditor    = loggedEditor;
            EditorFirstName = loggedEditor.Name.Split(' ').First() + "!";

            InputOrderInIssue        = "";
            InputTotalPagesOccupied  = "";
            InputBeginningPageNumber = "";

            _updateManuscriptService  = updateManuscriptService;
            _addReviewService         = addReviewService;
            _listFrontReviewerService = listFrontReviewerService;

            FrontReviewerList = GetReviewerSelectionList();

            ManuscriptToUpdate = new ManuscriptListDto();
            ReviewToAdd        = new AddReviewDto();

            _manuscriptService = new ListManuscriptService(_context);
            _issueService      = new ListIssueService(_context);
            _reviewService     = new ListReviewService(_context);

            var manuscripts = _manuscriptService.GetManuscriptList().ToList();
            var issues      = _issueService.GetIssueList().ToList();
            var reviews     = _reviewService.GetReviewList().ToList();

            ManuscriptList = new ObservableCollection <ManuscriptListDto>(manuscripts);
            IssueList      = new ObservableCollection <IssueListDto>(issues);
            ReviewList     = new ObservableCollection <ReviewListDto>(reviews);

            foreach (var manuscript in ManuscriptList)
            {
                if (manuscript.ManuscriptStatus == 1)
                {
                    ReceivedManuscriptList.Add(manuscript);
                }
                if (manuscript.ManuscriptStatus == 3)
                {
                    foreach (var review in ReviewList)
                    {
                        if (review.ManuscriptId == manuscript.ManuscriptId && review.AppropriatenessScore != 0 && UnderReviewManuscriptList.Contains(manuscript) != true)
                        {
                            UnderReviewManuscriptList.Add(manuscript);
                        }
                    }
                }
                if (manuscript.ManuscriptStatus == 4)
                {
                    AcceptedManuscriptList.Add(manuscript);
                }
            }
        }