public ActionResult Details(int id)
        {
            var recommendation = _context.RecommendationFics.SingleOrDefault(m => m.Id == id);

            if (recommendation == null)
            {
                return(HttpNotFound());
            }

            //get proposal
            var ar       = _context.Approval_Recommendation.SingleOrDefault(m => m.RecommendationId == recommendation.Id);
            var proposal = _context.Proposals.SingleOrDefault(m => m.ApprovalId == ar.ApprovalId);

            if (proposal == null || !proposal.Submitted)
            {
                return(HttpNotFound());
            }
            if (recommendation.SignedBy == null)
            {
                //return Form

                //set datepickers start to today
                recommendation.HeldDateA = DateTime.Today.ToString();
                recommendation.HeldDateB = DateTime.Today.ToString();
                var viewModel = new RecommendationFicsFormViewModel
                {
                    Proposal       = proposal,
                    Recommendation = recommendation
                };
                return(View("Form", viewModel));
            }
            else
            {
                if (recommendation.Selection == true)
                {
                    //return accept view
                    var viewModel = new RecommendationFicsFormViewModel
                    {
                        Proposal       = proposal,
                        Recommendation = recommendation
                    };
                    return(View("Accepted", viewModel));
                }
                else
                {
                    //return reject view
                    var viewModel = new RecommendationFicsFormViewModel
                    {
                        Proposal       = proposal,
                        Recommendation = recommendation
                    };
                    return(View("Rejected", viewModel));
                }
            }
        }
        public ActionResult Save(RecommendationFicsFormViewModel vm)
        {
            var proposal = vm.Proposal;

            proposal = _context.Proposals.SingleOrDefault(m => m.Id == proposal.Id);
            if (proposal == null || !proposal.Submitted)
            {
                return(HttpNotFound());
            }
            var recommendation = vm.Recommendation;

            var faculty = _context.Ref_Faculty.SingleOrDefault(m => m.Id == recommendation.FacultyId);

            if (faculty.Dean != User.Identity.GetUserId())
            {
                return(HttpNotFound());
            }

            if (recommendation.Selection == true)
            {
                //if a is chosen, set helddateB to a default date
                recommendation.HeldDateB = "01/01/0001";
            }
            else
            {
                //if b is chosen, set helddateA to a default date
                recommendation.HeldDateA = "01/01/0001";
            }
            if (!ModelState.IsValid)
            {
                return(View("Form", recommendation));
            }

            var recommendationInDb = _context.RecommendationFics.SingleOrDefault(m => m.Id == recommendation.Id);

            recommendationInDb.HeldDateA  = recommendation.HeldDateA;
            recommendationInDb.HeldDateB  = recommendation.HeldDateB;
            recommendationInDb.SignedBy   = User.Identity.GetUserId();
            recommendationInDb.SignedDate = DateTime.Now;
            recommendationInDb.Selection  = recommendation.Selection;

            _context.SaveChanges();
            return(RedirectToAction("Approval", "Proposal", new { id = proposal.Id }));
        }
        public ActionResult Details(int id)
        {
            var recommendation = _context.RecommendationFics.SingleOrDefault(m => m.Id == id);

            if (recommendation == null)
            {
                return(HttpNotFound());
            }

            //get proposal
            var ar       = _context.Approval_Recommendation.SingleOrDefault(m => m.RecommendationId == recommendation.Id);
            var proposal = _context.Proposals.SingleOrDefault(m => m.ApprovalId == ar.ApprovalId);

            if (proposal == null || !proposal.Submitted)
            {
                return(HttpNotFound());
            }
            if (!proposal.IsViewable(User.Identity.GetUserId()))
            {
                return(HttpNotFound());
            }

            if (recommendation.SignedBy == null)
            {
                if (User.IsInRole(RoleName.Dean))
                {
                    var faculty = _context.Ref_Faculty.SingleOrDefault(m => m.Id == recommendation.FacultyId);
                    if (faculty.Dean == User.Identity.GetUserId())
                    {
                        //return Form if user is the correct dean

                        //set datepickers start to today
                        recommendation.HeldDateA = DateTime.Today.ToString();
                        recommendation.HeldDateB = DateTime.Today.ToString();
                        var viewModel = new RecommendationFicsFormViewModel
                        {
                            Proposal       = proposal,
                            Recommendation = recommendation
                        };
                        return(View("Form", viewModel));
                    }
                    else
                    {
                        return(View("NoDecision", proposal.Id));
                    }
                }
                else
                {
                    return(View("NoDecision", proposal.Id));
                }
            }
            else
            {
                ApplicationDbContext adb = new ApplicationDbContext();
                var signedBy             = adb.Users.SingleOrDefault(m => m.Id == recommendation.SignedBy);
                if (recommendation.Selection == true)
                {
                    //return accept view
                    var viewModel = new RecommendationFicsFormViewModel
                    {
                        Proposal       = proposal,
                        Recommendation = recommendation,
                        SignedBy       = signedBy.Email
                    };
                    return(View("Accepted", viewModel));
                }
                else
                {
                    //return reject view
                    var viewModel = new RecommendationFicsFormViewModel
                    {
                        Proposal       = proposal,
                        Recommendation = recommendation,
                        SignedBy       = signedBy.Email
                    };
                    return(View("Rejected", viewModel));
                }
            }
        }