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); }
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(); }