예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }