예제 #1
0
        public async Task <IOperationResult <ISet <User> > > GetTutorNotInCurMeeting(int meetingId)
        {
            var meeting = await _meetingRepository.Find(
                m => m.Id == meetingId && m.Status == MeetingStatus.Rejected,
                m => m.Subject, m => m.Subject.Tutors);

            if (meeting == null)
            {
                return(BasicOperationResult <ISet <User> > .Fail("La tutoría rechazada no fue encontrada"));
            }

            var tutorsResult = await GetTutorsBySubjectId(meeting.SubjectId);

            if (!tutorsResult.Success)
            {
                return(tutorsResult);
            }

            var rejections = await _rejectedMeetingRepository.FindAll(r => r.MeetingId == meeting.Id);

            ISet <User> tutors = tutorsResult
                                 .Entity
                                 .Where(t => t.Id != meeting.TutorId && rejections.All(r => r.TutorId != t.Id))
                                 .ToHashSet();

            if (!tutors.Any())
            {
                return(BasicOperationResult <ISet <User> > .Fail("No hay más tutores disponibles para esta matería, lo sentimos, estamos trabajando por obtener más"));
            }

            return(BasicOperationResult <ISet <User> > .Ok(tutors));
        }