Пример #1
0
        public async Task <IOperationResult <string> > TutorResponseToMeetingRequest(int meetingId, MeetingStatus answeredStatusAnsweredStatus, int userId)
        {
            var meeting = await FindMeetingWithTutor(meetingId, userId);

            if (meeting == null)
            {
                return(BasicOperationResult <string> .Fail("La tutoría agendada a la que intenta responder no existe"));
            }

            MeetingStatus status = answeredStatusAnsweredStatus;

            if (status != MeetingStatus.Accepted && status != MeetingStatus.Rejected)
            {
                return(BasicOperationResult <string> .Fail("No tiene los permisos para dar ese tipo de respuesta"));
            }

            meeting.Status = status;

            if (status == MeetingStatus.Rejected)
            {
                var rejection = new RejectedMeeting
                {
                    TutorId   = meeting.TutorId,
                    MeetingId = meetingId
                };
                _rejectedMeetingRepository.Create(rejection);
            }

            _meetingRepository.Update(meeting);

            await _meetingRepository.Save();

            string responseMessage = status == MeetingStatus.Accepted
                ? "La tutoría ha sido aceptada exitosamente"
                : "La tutoría ha sido rechazada exitosamente";

            await _notificationManager.NotifySolicitedMeetingByStudentAnswered(meeting);

            return(BasicOperationResult <string> .Ok(responseMessage));
        }