Example #1
0
        public async Task <IActionResult> AddResourceToActionPlan(
            int selfAssessmentId,
            int resourceReferenceId,
            ReturnPageQuery returnPageQuery
            )
        {
            var delegateId = User.GetCandidateIdKnownNotNull();

            if (!actionPlanService.ResourceCanBeAddedToActionPlan(resourceReferenceId, delegateId))
            {
                return(NotFound());
            }

            try
            {
                await actionPlanService.AddResourceToActionPlan(resourceReferenceId, delegateId, selfAssessmentId);
            }
            catch (ResourceNotFoundException e)
            {
                if (!e.ApiIsAccessible)
                {
                    return(NotFound());
                }

                var assessment = selfAssessmentService.GetSelfAssessmentForCandidateById(delegateId, selfAssessmentId);
                var model      = new ResourceRemovedViewModel(assessment !);
                return(View("ResourceRemovedErrorPage", model));
            }

            var routeData = returnPageQuery.ToRouteDataDictionary();

            routeData.Add("selfAssessmentId", selfAssessmentId.ToString());
            return(RedirectToAction("RecommendedLearning", "RecommendedLearning", routeData, returnPageQuery.ItemIdToReturnTo));
        }
 public EditDelegateGroupDescriptionViewModel(Group group, ReturnPageQuery returnPageQuery)
 {
     GroupId         = group.GroupId;
     GroupName       = group.GroupLabel;
     Description     = group.GroupDescription;
     ReturnPageQuery = returnPageQuery;
 }
Example #3
0
        public IActionResult SetCurrentCourseCompleteByDate(int id, ReturnPageQuery returnPageQuery)
        {
            var currentCourses = courseDataService.GetCurrentCourses(User.GetCandidateIdKnownNotNull());
            var course         = currentCourses.FirstOrDefault(c => c.Id == id);

            if (course == null)
            {
                logger.LogWarning(
                    $"Attempt to set complete by date for course with id {id} which is not a current course for user with id {User.GetCandidateIdKnownNotNull()}"
                    );
                return(RedirectToAction("StatusCode", "LearningSolutions", new { code = 404 }));
            }

            var courseModel = new CurrentCourseViewModel(course, returnPageQuery);

            if (courseModel.CompleteByDate != null && !courseModel.SelfEnrolled)
            {
                logger.LogWarning(
                    $"Attempt to set complete by date for course with id {id} for user with id ${User.GetCandidateIdKnownNotNull()} " +
                    "but the complete by date has already been set and the user has not self enrolled"
                    );
                return(RedirectToAction("StatusCode", "LearningSolutions", new { code = 403 }));
            }

            var editCompleteByDateViewModel = new EditCompleteByDateViewModel(
                id,
                course.Name,
                LearningItemType.Course,
                courseModel.CompleteByDate,
                returnPageQuery,
                courseModel.ProgressId
                );

            return(View("Current/SetCompleteByDate", editCompleteByDateViewModel));
        }
        public Task BindModelAsync(ModelBindingContext bindingContext)
        {
            if (bindingContext == null)
            {
                throw new ArgumentNullException(nameof(bindingContext));
            }

            var fieldName = bindingContext.ValueProvider.GetValue(bindingContext.FieldName);

            if (fieldName.FirstValue == null)
            {
                bindingContext.Result = ModelBindingResult.Success(null);
            }
            else if (string.IsNullOrEmpty(fieldName.FirstValue))
            {
                bindingContext.Result = ModelBindingResult.Success(new ReturnPageQuery(1, ""));
            }
            else if (ReturnPageQuery.TryGetFromFormData(fieldName.FirstValue, out var result))
            {
                bindingContext.Result = ModelBindingResult.Success(result);
            }
            else
            {
                bindingContext.Result = ModelBindingResult.Failed();

                bindingContext.ModelState.AddModelError(
                    bindingContext.FieldName,
                    $"{fieldName.FirstValue} is not supported."
                    );
            }

            return(Task.CompletedTask);
        }
Example #5
0
        public IActionResult NominateSupervisor(int supervisorDelegateId, ReturnPageQuery returnPageQuery)
        {
            var superviseDelegate =
                supervisorService.GetSupervisorDelegateDetailsById(supervisorDelegateId, GetAdminID(), 0);
            var model = new SupervisorDelegateViewModel(superviseDelegate, returnPageQuery);

            return(View("NominateSupervisor", model));
        }
 public CurrentLearningItemViewModel(
     CurrentLearningItem course,
     ReturnPageQuery returnPageQuery
     ) : base(course)
 {
     CompleteByDate  = course.CompleteByDate;
     ReturnPageQuery = returnPageQuery;
 }
Example #7
0
 public SupervisorDelegateViewModel(SupervisorDelegateDetail detail, ReturnPageQuery returnPageQuery)
 {
     Id                       = detail.ID;
     FirstName                = detail.FirstName;
     LastName                 = detail.LastName;
     DelegateEmail            = detail.DelegateEmail;
     CandidateAssessmentCount = detail.CandidateAssessmentCount;
     ReturnPageQuery          = returnPageQuery;
 }
Example #8
0
        public IActionResult EditDescription(int groupId, ReturnPageQuery returnPageQuery)
        {
            var centreId = User.GetCentreId();
            var group    = groupsService.GetGroupAtCentreById(groupId, centreId);

            var model = new EditDelegateGroupDescriptionViewModel(group !, returnPageQuery);

            return(View(model));
        }
 public CurrentCourseViewModel(CurrentCourse course, ReturnPageQuery returnPageQuery) : base(
         course,
         returnPageQuery
         )
 {
     UserIsSupervisor    = course.SupervisorAdminId != 0;
     IsEnrolledWithGroup = course.GroupCustomisationId != 0;
     SelfEnrolled        = course.EnrollmentMethodID == 1;
     IsLocked            = course.PLLocked;
 }
 public DelegateCourseInfoViewModel(
     CourseDelegate courseDelegate,
     DelegateAccessRoute accessedVia,
     ReturnPageQuery returnPageQuery
     ) : this(courseDelegate)
 {
     AccessedVia     = accessedVia;
     ReturnPageQuery = returnPageQuery;
     Tags            = FilterableTagHelper.GetCurrentTagsForCourseDelegate(courseDelegate);
 }
 public RemoveGroupCourseViewModel(
     int groupCourseId,
     string courseName,
     string groupName,
     ReturnPageQuery returnPageQuery
     )
 {
     GroupCourseId   = groupCourseId;
     CourseName      = courseName;
     GroupName       = groupName;
     ReturnPageQuery = returnPageQuery;
 }
 public CurrentLearningResourceViewModel(ActionPlanResource resource, ReturnPageQuery returnPageQuery) : base(
         resource,
         returnPageQuery
         )
 {
     LaunchResourceLink  = resource.ResourceLink;
     ResourceDescription = resource.ResourceDescription;
     CatalogueName       = resource.CatalogueName;
     ResourceType        = DisplayStringHelper.AddSpacesToPascalCaseString(resource.ResourceType);
     AbsentInLearningHub = resource.AbsentInLearningHub;
     ResourceReferenceId = resource.ResourceReferenceId;
 }
Example #13
0
        public IActionResult DeleteGroup(int groupId, ReturnPageQuery returnPageQuery)
        {
            var delegates = groupsService.GetGroupDelegates(groupId);
            var courses   = groupsService.GetUsableGroupCoursesForCentre(groupId, User.GetCentreId());

            if (delegates.Any() || courses.Any())
            {
                return(RedirectToAction("ConfirmDeleteGroup", new { groupId, returnPageQuery }));
            }

            groupsService.DeleteDelegateGroup(groupId, false);
            return(RedirectToAction("Index"));
        }
        public IActionResult DeactivateOrDeleteAdmin(int adminId, ReturnPageQuery returnPageQuery)
        {
            var adminUser = userDataService.GetAdminUserById(adminId);

            if (!CurrentUserCanDeactivateAdmin(adminUser !))
            {
                return(NotFound());
            }

            var model = new DeactivateAdminViewModel(adminUser !, returnPageQuery);

            return(View(model));
        }
Example #15
0
        public IActionResult EditGroupName(int groupId, ReturnPageQuery returnPageQuery)
        {
            var centreId = User.GetCentreId();
            var group    = groupsService.GetGroupAtCentreById(groupId, centreId);

            if (group?.LinkedToField != 0)
            {
                return(NotFound());
            }

            var model = new EditGroupNameViewModel(group.GroupLabel !, returnPageQuery);

            return(View(model));
        }
 public RemoveActionPlanResourceViewModel(
     int learningLogItemId,
     string name,
     bool absentInLearningHub,
     bool apiIsAccessible,
     ReturnPageQuery returnPageQuery
     )
 {
     LearningLogItemId = learningLogItemId;
     Name = name;
     AbsentInLearningHub = absentInLearningHub;
     ApiIsAccessible     = apiIsAccessible;
     ReturnPageQuery     = returnPageQuery;
 }
Example #17
0
 public MarkActionPlanResourceAsCompleteViewModel(
     int learningLogItemId,
     bool absentInLearningHub,
     string resourceName,
     bool apiIsAccessible,
     ReturnPageQuery returnPageQuery
     )
 {
     LearningLogItemId   = learningLogItemId;
     AbsentInLearningHub = absentInLearningHub;
     ResourceName        = resourceName;
     ApiIsAccessible     = apiIsAccessible;
     ReturnPageQuery     = returnPageQuery;
 }
Example #18
0
 public GroupDelegateViewModel(GroupDelegate groupDelegate, ReturnPageQuery returnPageQuery)
 {
     GroupDelegateId = groupDelegate.GroupDelegateId;
     GroupId         = groupDelegate.GroupId;
     DelegateId      = groupDelegate.DelegateId;
     TitleName       = groupDelegate.SearchableName;
     Name            = DisplayStringHelper.GetNonSortableFullNameForDisplayOnly(groupDelegate.FirstName, groupDelegate.LastName);
     EmailAddress    = groupDelegate.EmailAddress;
     CandidateNumber = groupDelegate.CandidateNumber;
     ProfessionalRegistrationNumber = PrnStringHelper.GetPrnDisplayString(
         groupDelegate.HasBeenPromptedForPrn,
         groupDelegate.ProfessionalRegistrationNumber
         );
     ReturnPageQuery = returnPageQuery;
 }
Example #19
0
        public IActionResult ConfirmDeleteGroup(int groupId, ReturnPageQuery returnPageQuery)
        {
            var groupLabel    = groupsService.GetGroupName(groupId, User.GetCentreId()) !;
            var delegateCount = groupsService.GetGroupDelegates(groupId).Count();
            var courseCount   = groupsService.GetUsableGroupCoursesForCentre(groupId, User.GetCentreId()).Count();

            var model = new ConfirmDeleteGroupViewModel
            {
                GroupLabel      = groupLabel,
                DelegateCount   = delegateCount,
                CourseCount     = courseCount,
                ReturnPageQuery = returnPageQuery,
            };

            return(View(model));
        }
 public GroupCourseViewModel(GroupCourse groupCourse, ReturnPageQuery returnPageQuery)
 {
     GroupCustomisationId = groupCourse.GroupCustomisationId;
     Name       = groupCourse.CourseName;
     Supervisor = DisplayStringHelper.GetPotentiallyInactiveAdminName(
         groupCourse.SupervisorFirstName,
         groupCourse.SupervisorLastName,
         groupCourse.SupervisorAdminActive
         );
     IsMandatory     = groupCourse.IsMandatory ? "Mandatory" : "Not mandatory";
     IsAssessed      = groupCourse.IsAssessed ? "Assessed" : "Not assessed";
     AddedToGroup    = groupCourse.AddedToGroup.ToString(DateHelper.StandardDateFormat);
     CompleteWithin  = DisplayStringHelper.ConvertNumberToMonthsString(groupCourse.CompleteWithinMonths);
     ValidFor        = DisplayStringHelper.ConvertNumberToMonthsString(groupCourse.ValidityMonths);
     ReturnPageQuery = returnPageQuery;
 }
        public IActionResult EditAdminRoles(int adminId, ReturnPageQuery returnPageQuery)
        {
            var centreId  = User.GetCentreId();
            var adminUser = userDataService.GetAdminUserById(adminId);

            var categories = courseCategoriesDataService.GetCategoriesForCentreAndCentrallyManagedCourses(centreId);

            categories = categories.Prepend(new Category {
                CategoryName = "All", CourseCategoryID = 0
            });
            var numberOfAdmins = centreContractAdminUsageService.GetCentreAdministratorNumbers(centreId);

            var model = new EditRolesViewModel(adminUser !, centreId, categories, numberOfAdmins, returnPageQuery);

            return(View(model));
        }
Example #22
0
        public IActionResult RemoveCurrentCourseConfirmation(int id, ReturnPageQuery returnPageQuery)
        {
            var currentCourses = courseDataService.GetCurrentCourses(User.GetCandidateIdKnownNotNull());
            var course         = currentCourses.FirstOrDefault(c => c.Id == id);

            if (course == null)
            {
                logger.LogWarning(
                    $"Attempt to remove course with id {id} which is not a current course for user with id {User.GetCandidateIdKnownNotNull()}"
                    );
                return(RedirectToAction("StatusCode", "LearningSolutions", new { code = 404 }));
            }

            var model = new CurrentCourseViewModel(course, returnPageQuery);

            return(View("Current/RemoveCurrentCourseConfirmation", model));
        }
Example #23
0
 public RemoveGroupDelegateViewModel(
     GroupDelegate delegateUser,
     string groupName,
     int groupId,
     int?progressId,
     ReturnPageQuery returnPageQuery
     )
 {
     GroupId      = groupId;
     GroupName    = groupName;
     DelegateName = DisplayStringHelper.GetNonSortableFullNameForDisplayOnly(
         delegateUser.FirstName,
         delegateUser.LastName
         );
     RemoveStartedEnrolmentsEnabled = progressId.HasValue;
     ReturnPageQuery = returnPageQuery;
 }
        public SearchableAdminViewModel(
            AdminUser adminUser,
            AdminUser loggedInAdminUser,
            ReturnPageQuery returnPageQuery
            )
        {
            Id           = adminUser.Id;
            Name         = adminUser.SearchableName;
            CategoryName = adminUser.CategoryName ?? "All";
            EmailAddress = adminUser.EmailAddress;
            IsLocked     = adminUser.IsLocked;

            CanShowDeactivateAdminButton =
                UserPermissionsHelper.LoggedInAdminCanDeactivateUser(adminUser, loggedInAdminUser);

            Tags            = FilterableTagHelper.GetCurrentTagsForAdminUser(adminUser);
            ReturnPageQuery = returnPageQuery;
        }
Example #25
0
        public IActionResult RemoveGroupDelegate(int groupId, int delegateId, ReturnPageQuery returnPageQuery)
        {
            var centreId       = User.GetCentreId();
            var groupName      = groupsService.GetGroupName(groupId, centreId);
            var groupDelegates = groupsService.GetGroupDelegates(groupId).ToList();
            var delegateUser   = groupDelegates.SingleOrDefault(gd => gd.DelegateId == delegateId);

            var progressId = groupsService.GetRelatedProgressIdForGroupDelegate(groupId, delegateId);

            var model = new RemoveGroupDelegateViewModel(
                delegateUser !,
                groupName !,
                groupId,
                progressId,
                returnPageQuery
                );

            return(View(model));
        }
Example #26
0
 public SearchableDelegateGroupViewModel(Group group, ReturnPageQuery returnPageQuery)
 {
     Id             = group.GroupId;
     Name           = group.GroupLabel;
     Description    = group.GroupDescription;
     DelegateCount  = group.DelegateCount;
     CourseCount    = group.CoursesCount;
     LinkedToField  = group.LinkedToField;
     LinkedField    = group.LinkedToFieldName;
     AddedByAdminId = group.AddedByAdminId;
     AddedBy        = DisplayStringHelper.GetPotentiallyInactiveAdminName(
         group.AddedByFirstName,
         group.AddedByLastName,
         group.AddedByAdminActive
         );
     ShouldAddNewRegistrantsToGroup = group.ShouldAddNewRegistrantsToGroup ? Yes : No;
     ChangesToRegistrationDetailsShouldChangeGroupMembership =
         group.ChangesToRegistrationDetailsShouldChangeGroupMembership ? Yes : No;
     ReturnPageQuery = returnPageQuery;
 }
Example #27
0
 public EditCompleteByDateViewModel(
     int id,
     string name,
     LearningItemType type,
     DateTime?completeByDate,
     ReturnPageQuery returnPageQuery,
     int?progressId       = null,
     bool?apiIsAccessible = null
     )
 {
     Id              = id;
     Name            = name;
     Type            = type;
     Day             = completeByDate?.Day;
     Month           = completeByDate?.Month;
     Year            = completeByDate?.Year;
     ProgressId      = progressId;
     ApiIsAccessible = apiIsAccessible;
     ReturnPageQuery = returnPageQuery;
 }
 public SearchableRecommendedResourceViewModel(
     RecommendedResource recommendedResource,
     int selfAssessmentId,
     ReturnPageQuery returnPageQuery
     )
 {
     SelfAssessmentId            = selfAssessmentId;
     LearningResourceReferenceId = recommendedResource.LearningResourceReferenceId;
     LearningHubReferenceId      = recommendedResource.LearningHubReferenceId;
     ResourceName        = recommendedResource.ResourceName;
     ResourceDescription = recommendedResource.ResourceDescription;
     ResourceType        = DisplayStringHelper.AddSpacesToPascalCaseString(recommendedResource.ResourceType);
     CatalogueName       = recommendedResource.CatalogueName;
     ResourceLink        = recommendedResource.ResourceLink;
     IsInActionPlan      = recommendedResource.IsInActionPlan;
     IsCompleted         = recommendedResource.IsCompleted;
     LearningLogItemId   = recommendedResource.LearningLogId;
     RecommendationScore = recommendedResource.RecommendationScore;
     ReturnPageQuery     = returnPageQuery;
 }
        public IViewComponentResult Invoke(
            string aspController,
            string aspAction,
            ReturnPageQuery returnPageQuery,
            Dictionary <string, string>?routeData,
            string linkText
            )
        {
            var aspAllRouteData = routeData != null
                ? routeData.Concat(returnPageQuery.ToRouteDataDictionary())
                                  .ToDictionary(x => x.Key, x => x.Value)
                : returnPageQuery.ToRouteDataDictionary();

            return(View(new LinkViewModelWithFragment(
                            aspController,
                            aspAction,
                            linkText,
                            aspAllRouteData,
                            returnPageQuery.ItemIdToReturnTo
                            )));
        }
        public EditRolesViewModel(
            AdminUser user,
            int centreId,
            IEnumerable <Category> categories,
            CentreContractAdminUsage numberOfAdmins,
            ReturnPageQuery returnPageQuery
            ) : base(user, centreId)
        {
            IsCentreAdmin         = user.IsCentreAdmin;
            IsSupervisor          = user.IsSupervisor;
            IsNominatedSupervisor = user.IsNominatedSupervisor;
            IsTrainer             = user.IsTrainer;
            IsContentCreator      = user.IsContentCreator;
            ReturnPageQuery       = returnPageQuery;

            if (user.IsCmsAdministrator)
            {
                ContentManagementRole = ContentManagementRole.CmsAdministrator;
            }
            else if (user.IsCmsManager)
            {
                ContentManagementRole = ContentManagementRole.CmsManager;
            }
            else
            {
                ContentManagementRole = ContentManagementRole.NoContentManagementRole;
            }

            LearningCategory   = user.CategoryId;
            LearningCategories = SelectListHelper.MapOptionsToSelectListItems(
                categories.Select(c => (c.CourseCategoryID, c.CategoryName)),
                user.CategoryId
                );

            SetUpCheckboxesAndRadioButtons(user, numberOfAdmins);
        }