public async Task <Response> Handle(DelegateAcademicRequest request,
                                            CancellationToken cancellationToken)
        {
            if (request == null)
            {
                AddNotification("Request", "A requisição não pode ser nula!");
                return(new Response(this));
            }

            if (!_academicRepository.Exists(request.IdAcademic) ||
                !_subjectRepository.Exists(request.IdSubject))
            {
                AddNotification("Inexistente", "Acadêmico ou matéria não existente!");
                return(new Response(this));
            }

            if (_adminRepository.ExistsRelationship(request.IdAcademic, request.IdSubject))
            {
                AddNotification("Relacionamento", "O acadêmico já foi inserido nessa matéria!");
                return(new Response(this));
            }

            _adminRepository.DelegateAcademic(request.IdAcademic, request.IdSubject);

            var response = new Response(this, new { Message = "Acadêmico inserido com sucesso!" });

            return(await Task.FromResult(response));
        }
        public async Task <Response> Handle(RemoveAcademicRequest request, CancellationToken cancellationToken)
        {
            //Verifica se a requisição é nula
            if (request == null)
            {
                AddNotification("Resquest", "A requisição não pode ser nula!");
                return(new Response(this));
            }

            //Verifica se o acadêmico existe
            if (!_academicRepository.Exists(request.Id))
            {
                AddNotification("Acadêmico inválido", "O acadêmico informado não foi encontrado!");
                return(new Response(this));
            }

            //Valida a requisição
            if (IsInvalid())
            {
                return(new Response(this));
            }

            //Remove o acadêmico do banco
            _unityOfWork.BeginTransaction();
            _academicRepository.Remove(request.Id);
            _unityOfWork.Commit();

            //Cria o objeto da resposta
            var result   = new { request.Id };
            var response = new Response(this, result);

            //Retorna a resposta
            return(await Task.FromResult(response));
        }
Exemple #3
0
        public async Task <Response> Handle(GetAppointmentsClosedRequest request, CancellationToken cancellationToken)
        {
            if (request == null)
            {
                AddNotification("Request", "A requisição não pode ser nula!");
                return(new Response(this));
            }

            if (!_academicRepository.Exists(request.AcademicId))
            {
                AddNotification("Inexistente", "Acadêmico não encontrado!");
                return(new Response(this));
            }

            List <Entities.Appointment> appointments =
                _academicRepository.GetAppointmentsClosed(request.AcademicId);

            var response = new Response(this, appointments);

            return(await Task.FromResult(response));
        }