Esempio n. 1
0
        public bool SolvesNeed(TrainingNeed trainingNeed)
        {
            if (trainingNeed.NeedsRoadStep)
            {
                if (trainingNeed.RoadMap == null && trainingNeed.Road == null)
                {
                    return(false);
                }
            }
            else if (trainingNeed.NeedsContent)
            {
                if (RoadStep != null && RoadStep.Id == trainingNeed.Road.Id &&
                    TaskType == TrainingTaskType.PrepareContent)
                {
                    return(true);
                }
            }
            else if (trainingNeed.NeedsExercise)
            {
                if (RoadStep != null && RoadStep.Id == trainingNeed.RoadStep.Id &&
                    TaskType == TrainingTaskType.PrepareExercise)
                {
                    return(true);
                }
            }

            return(false);
        }
Esempio n. 2
0
        private TrainingTask DefineSolutionForNeed(TrainingNeed trainingNeed, GroupMember groupMemberWithNeed)
        {
            if (trainingNeed.NeedsRoadStep)
            {
                if (trainingNeed.Road == null && trainingNeed.RoadMap == null)
                {
                    var availableRoadSteps = new List <RoadStep>();
                    foreach (var trainingGroupXRoad in GroupXRoadsWhereMemberCouldLearn(groupMemberWithNeed))
                    {
                        var road = trainingGroupXRoad.Road;
                        foreach (var roadXRoadStep in road.RoadXRoadSteps)
                        {
                            if (groupMemberWithNeed.AspNetUser.Student != null && groupMemberWithNeed.AspNetUser.Student.HasGraduated(roadXRoadStep.RoadStep))
                            {
                                continue;
                            }
                            availableRoadSteps.Add(roadXRoadStep.RoadStep);
                            break;
                        }
                    }

                    if (availableRoadSteps.Count > 0)
                    {
                        return(groupMemberWithNeed.AspNetUser.AddTask(TrainingTaskType.StartOneOfRoadSteps, availableRoadSteps));
                    }

                    var teacher = FindTeacherToPrepareContent();
                    return(teacher.AddTask(TrainingTaskType.PrepareContent, groupMemberWithNeed.AspNetUser));
                }
            }
            else if (trainingNeed.NeedsContent)
            {
                var roadStep = trainingNeed.RoadStep;
                var teacher  = FindTeacherToPrepareContent(roadStep);
                return(teacher.AddTask(TrainingTaskType.PrepareContent, new List <RoadStep> {
                    roadStep
                }));
            }
            else if (trainingNeed.NeedsExercise)
            {
                var roadStep = trainingNeed.RoadStep;
                var teacher  = FindTeacherToPrepareContent(roadStep);
                if (teacher == null)
                {
                    return(null);
                }
                return(teacher.AddTask(TrainingTaskType.PrepareExercise, new List <RoadStep> {
                    roadStep
                }));
            }
            throw new NotImplementedException();
        }