private MentorshipVM GetMentorshipVM(Mentorship mentorship) { var dbTopic = TopicService.GetTopic(mentorship.TopicId); var rtnMentorship = new MentorshipVM(mentorship, new TopicVM(dbTopic)); var dbLearner = this.mainContext.Users.Where(u => u.Id == mentorship.LearnerUserId).FirstOrDefault(); if (dbLearner != null) { rtnMentorship.Learner = new UserVM(dbLearner); } if (rtnMentorship.HasMentor) { var dbMentor = this.mainContext.Users.Where(u => u.Id == mentorship.MentorUserId).FirstOrDefault(); if (dbMentor != null) { rtnMentorship.Mentor = new UserVM(dbMentor); } else { rtnMentorship.MentorshipId = Guid.Empty; rtnMentorship.HasMentor = false; } } return(rtnMentorship); }
public MentorshipVM CloseMentorship(Evaluation Evaluation) { MentorshipVM rtnMentorship = null; Evaluation evaluation = null; var dbMentorship = this.mainContext.Mentorships.Where(m => m.MentorshipId == Evaluation.MentorshipId).FirstOrDefault(); if (dbMentorship != null) { if (dbMentorship.MentorUserId == this.Actor.UserId && !dbMentorship.MentorClosed) { dbMentorship.MentorClosed = true; dbMentorship.MentorClosedDate = DateTime.UtcNow; evaluation = new Evaluation(dbMentorship.MentorshipId, dbMentorship.LearnerUserId, EvaluationUserType.Learner); } else if (dbMentorship.LearnerUserId == this.Actor.UserId && !dbMentorship.LearnerClosed) { dbMentorship.LearnerClosed = true; dbMentorship.LearnerClosedDate = DateTime.UtcNow; evaluation = new Evaluation(dbMentorship.MentorshipId, dbMentorship.MentorUserId, EvaluationUserType.Mentor); } else if (this.Actor.Roles.Contains("Admin")) { dbMentorship.Active = false; dbMentorship.EndDate = DateTime.UtcNow; } if (dbMentorship.LearnerClosed && dbMentorship.MentorClosed && dbMentorship.Active) { dbMentorship.Active = false; dbMentorship.EndDate = DateTime.UtcNow; } if (evaluation != null) { var dbEvaluation = this.mainContext.Evaluations.Where(e => e.MentorshipId == evaluation.MentorshipId && e.UserId == evaluation.UserId).FirstOrDefault(); if (dbEvaluation == null) { evaluation.Comments = Evaluation.Comments; evaluation.Rating = Evaluation.Rating; this.mainContext.Evaluations.Add(evaluation); } } this.mainContext.Update(dbMentorship); this.mainContext.SaveChanges(); rtnMentorship = GetMentorship(Evaluation.MentorshipId); } return(rtnMentorship); }
public MentorshipVM GetMentorship(Guid MentorshipId) { var dbMentorship = this.mainContext.Mentorships.Where(m => m.MentorshipId == MentorshipId).FirstOrDefault(); MentorshipVM rtnMentorship = null; if (dbMentorship != null) { if (this.Actor.Roles.Contains("Admin") || dbMentorship.MentorUserId == this.Actor.UserId || dbMentorship.LearnerUserId == this.Actor.UserId) { rtnMentorship = GetMentorshipVM(dbMentorship); } } return(rtnMentorship); }
public MentorshipVM ClaimNextMentorship(Guid UserId, Guid TopicId) { MentorshipVM rtnMentorship = null; if (UserId == this.Actor.UserId || this.Actor.Roles.Contains("Admin")) { var dbMentorship = OpenMentorships(UserId, TopicId).OrderBy(m => m.CreatedDate).FirstOrDefault(); var dbUserTopic = TopicService.GetUserTopics(UserId, TopicId).FirstOrDefault(); if (dbMentorship != null && dbUserTopic != null && dbUserTopic.Status == TopicStatus.Mentor) { dbMentorship.MentorUserId = UserId; dbMentorship.StartDate = DateTime.UtcNow; this.mainContext.Update(dbMentorship); this.mainContext.SaveChanges(); rtnMentorship = GetMentorship(dbMentorship.MentorshipId); } } return(rtnMentorship); }