// Workshop details: name, project, employee and list of attendees with
        // professional development hours.
        public ActionResult Details(int id = 0, int p = 1, int ps = 50)
        {
            var pageNumber = PagingHelpers.ValidatePageNumber(p);
            var pageSize   = PagingHelpers.ValidatePageSize(ps);

            if (id == 0)
            {
                return(RedirectToAction(nameof(Index), new
                {
                    p = pageNumber,
                    ps = pageSize
                }));
            }

            // Store page number and size for return to list of workshops
            ViewData["PageNumber"] = pageNumber;
            ViewData["PageSize"]   = pageSize;

            // Get the workshop and the employee/contact and project
            var workshopViewModel = _workshopService.Get(id);

            workshopViewModel.Employee     = _employeeService.Get(workshopViewModel.EmployeeId);
            workshopViewModel.Project      = _projectService.Get(workshopViewModel.ProjectId);
            workshopViewModel.ProviderCode = _providerCodeService.Get(workshopViewModel.ProviderCodeId);

            // Get sign-out sheet Id's
            workshopViewModel.SignOutSheets = _signOutSheetUploadService.GetIdsByWorkshop(id);

            // Get all attendees with professional development hours
            workshopViewModel.WorkshopAttendeeHours = _workshopService.GetWorkshopAttendeeHours(id);

            return(View(workshopViewModel));
        }