/// <summary>
        /// Removes the self assessment and returns the most recent self assessment.
        /// </summary>
        /// <param name="skillSetId"></param>
        /// <param name="selfAssessment"></param>
        /// <returns></returns>
        public SelfAssessment RemoveSelfAssessment(int skillSetId, SelfAssessment selfAssessment)
        {
            // Only self assessments associated with entries can be removed.
            if (!selfAssessment.EntryId.HasValue)
            {
                return(null);
            }
            RaiseEvent(new EntrySelfAssessmentRemoved(skillSetId, selfAssessment));

            // Get the skill self assessments.
            if (!_selfAssessments.ContainsKey(selfAssessment.SkillId))
            {
                return(null);
            }
            // Check if the assessment is the most recent.
            var skillSelfAssessments = _selfAssessments[selfAssessment.SkillId];

            if (skillSelfAssessments.LastOrDefault().Key.Equals(selfAssessment.CreatedAt.ToUnixTimeMilliseconds()) && skillSelfAssessments.Count > 1)
            {
                var previousAssessment = skillSelfAssessments[skillSelfAssessments.Keys[skillSelfAssessments.Count - 2]];
                RaiseEvent(new SkillSelfAssessmentRemoved(skillSetId, selfAssessment, previousAssessment));
                // This is the most recent assessment, return the previous assessment as this will now be the latest.
                return(previousAssessment);
            }
            else
            {
                RaiseEvent(new SkillSelfAssessmentRemoved(skillSetId, selfAssessment));
                // This isn't the most recent assessment, so return the latest self assessment if there is more than 1, i.e this isn't the last.
                return(skillSelfAssessments.Count > 1 ? skillSelfAssessments.LastOrDefault().Value : null);
            }
        }
        public CurrentPageViewModel(
            SearchSortFilterPaginationResult <CurrentLearningItem> result,
            bool apiIsAccessible,
            string?bannerText
            ) : base(result, false, searchLabel: "Search your current courses")
        {
            ApiIsAccessible = apiIsAccessible;
            BannerText      = bannerText;

            CurrentActivities = result.ItemsToDisplay.Select <BaseLearningItem, CurrentLearningItemViewModel>(
                activity =>
            {
                return(activity switch
                {
                    CurrentCourse currentCourse => new CurrentCourseViewModel(
                        currentCourse,
                        result.GetReturnPageQuery($"{currentCourse.Id}-course-card")
                        ),
                    SelfAssessment selfAssessment => new SelfAssessmentCardViewModel(
                        selfAssessment,
                        result.GetReturnPageQuery($"{selfAssessment.Id}-sa-card")
                        ),
                    _ => new CurrentLearningResourceViewModel(
                        (ActionPlanResource)activity,
                        result.GetReturnPageQuery($"{activity.Id}-lhr-card")
                        ),
                });
            }
Example #3
0
 public SelfAssessmentDto(SelfAssessment selfAssessment)
 {
     LevelId   = selfAssessment.SelfAssessmentLevelId;
     SkillId   = selfAssessment.SkillId;
     Score     = selfAssessment.Score;
     CreatedAt = selfAssessment.CreatedAt;
 }
 public void AddSelfAssessment(int skillSetId, SelfAssessment selfAssessment)
 {
     // Check if the skill already has a self assessment.
     if (!_selfAssessments.ContainsKey(selfAssessment.SkillId))
     {
         RaiseEvent(new SkillSelfAssessmentCreated(skillSetId, selfAssessment));
         // If this is a self assessment associated with an entry then raise an event for that.
         if (selfAssessment.EntryId.HasValue)
         {
             RaiseEvent(new EntrySelfAssessmentCreated(skillSetId, selfAssessment));
         }
     }
     else
     {
         var skillSelfAssessments = _selfAssessments[selfAssessment.SkillId];
         // Check if the assessment is more recent than the current or the same time (this can happen if attached to an entry).
         if (skillSelfAssessments.LastOrDefault().Key <= selfAssessment.CreatedAt.ToUnixTimeMilliseconds())
         {
             RaiseEvent(new SkillSelfAssessmentUpdated(skillSetId, selfAssessment));
         }
         // If this is a self assessment associated with an entry then raise an event for that.
         if (selfAssessment.EntryId.HasValue)
         {
             if (skillSelfAssessments.ContainsKey(selfAssessment.CreatedAt.ToUnixTimeMilliseconds()))
             {
                 RaiseEvent(new EntrySelfAssessmentUpdated(skillSetId, selfAssessment));
             }
             else
             {
                 RaiseEvent(new EntrySelfAssessmentAdded(skillSetId, selfAssessment));
             }
         }
     }
 }
Example #5
0
        public ActionResult DeleteConfirmed(int id)
        {
            SelfAssessment selfAssessment = db.SelfA.Find(id);

            db.SelfA.Remove(selfAssessment);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Example #6
0
 public ActionResult Edit([Bind(Include = "SEID,MID,SID,GID,CooperationLevel,PersonalContributionLevel,SelfA")] SelfAssessment selfAssessment)
 {
     if (ModelState.IsValid)
     {
         db.Entry(selfAssessment).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(selfAssessment));
 }
Example #7
0
        public ActionResult Create([Bind(Include = "SEID,MID,SID,GID,CooperationLevel,PersonalContributionLevel,SelfA")] SelfAssessment selfAssessment)
        {
            if (ModelState.IsValid)
            {
                db.SelfA.Add(selfAssessment);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(selfAssessment));
        }
Example #8
0
 public SelfAssessmentCompetencyViewModel(
     CurrentSelfAssessment assessment,
     Competency competency,
     int competencyNumber,
     int totalNumberOfCompetencies
     )
 {
     Assessment                = assessment;
     Competency                = competency;
     CompetencyNumber          = competencyNumber;
     TotalNumberOfCompetencies = totalNumberOfCompetencies;
 }
Example #9
0
        // GET: SelfAssessments/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            SelfAssessment selfAssessment = db.SelfA.Find(id);

            if (selfAssessment == null)
            {
                return(HttpNotFound());
            }
            return(View(selfAssessment));
        }
Example #10
0
        public RecommendedLearningViewModel(
            SelfAssessment selfAssessment,
            IEnumerable <RecommendedResource> recommendedResources
            )
        {
            SelfAssessment = selfAssessment;

            var sortedResources = GenericSortingHelper.SortAllItems(
                recommendedResources.AsQueryable(),
                nameof(RecommendedResource.RecommendationScore),
                BaseSearchablePageViewModel.Descending
                );

            // TODO HEEDLS-650 Search/Pagination
            var resourcesToDisplay = sortedResources.Take(10);

            RecommendedResources =
                resourcesToDisplay.Select(r => new SearchableRecommendedResourceViewModel(r, selfAssessment.Id));
        }
Example #11
0
        public CurrentPageViewModel(
            IEnumerable <CurrentCourse> currentCourses,
            string?searchString,
            string sortBy,
            string sortDirection,
            IEnumerable <SelfAssessment> selfAssessments,
            IEnumerable <ActionPlanResource> actionPlanResources,
            string?bannerText,
            int page
            ) : base(searchString, page, false, sortBy, sortDirection, searchLabel: "Search your current courses")
        {
            BannerText = bannerText;
            var allItems = currentCourses.Cast <CurrentLearningItem>().ToList();

            allItems.AddRange(selfAssessments);
            allItems.AddRange(actionPlanResources);

            var sortedItems = GenericSortingHelper.SortAllItems(
                allItems.AsQueryable(),
                sortBy,
                sortDirection
                );
            var filteredItems = GenericSearchHelper.SearchItems(sortedItems, SearchString).ToList();

            MatchingSearchResults = filteredItems.Count;
            SetTotalPages();
            var paginatedItems = GetItemsOnCurrentPage(filteredItems);

            CurrentActivities = paginatedItems.Select <BaseLearningItem, CurrentLearningItemViewModel>(
                activity =>
            {
                return(activity switch
                {
                    CurrentCourse currentCourse => new CurrentCourseViewModel(currentCourse),
                    SelfAssessment selfAssessment => new SelfAssessmentCardViewModel(selfAssessment),
                    _ => new CurrentLearningResourceViewModel((ActionPlanResource)activity)
                });
            }
 public SkillSelfAssessmentRemoved(int skillSetId, SelfAssessment selfAssessment, SelfAssessment previousSelfAssessment = null) : base(skillSetId, selfAssessment)
 {
     PreviousSelfAssessment = previousSelfAssessment;
 }
Example #13
0
 public SkillSelfAssessmentUpdated(int skillSetId, SelfAssessment selfAssessment) : base(skillSetId, selfAssessment)
 {
 }
 public ResourceRemovedViewModel(SelfAssessment selfAssessment)
 {
     SelfAssessment = selfAssessment;
 }
 public EntrySelfAssessmentRemoved(int skillSetId, SelfAssessment selfAssessment) : base(skillSetId, selfAssessment)
 {
 }
 public EntrySelfAssessmentCreated(int skillSetId, SelfAssessment selfAssessment) : base(skillSetId, selfAssessment)
 {
 }
Example #17
0
 protected SelfAssessmentEvent(int skillSetId, SelfAssessment selfAssessment)
 {
     SkillSetId     = skillSetId;
     SelfAssessment = selfAssessment;
 }