public IQueryResult Handle(ListaTurmaQuery command)
        {
            var turmas = _repositorio.ListarTurmas();

            var turmaResult = turmas.Select(tm =>
            {
                var horarios = _repositorioHorario.BuscarHorarioPorIdTurma(tm.Id);

                return(new ListarTurmaResult()
                {
                    Id = tm.Id,
                    Titulo = tm.Titulo,
                    Descricao = tm.Descricao,
                    Semestre = tm.Semestre.ToString(),
                    Horarios = tm.Horarios.Select(hrr =>

                                                  new ListarHorarioResult()
                    {
                        Id = hrr.Id,
                        DiaSemana = hrr.DiaSemana.ToString(),
                        HoraInicio = hrr.HoraInicio,
                        HoraTermino = hrr.HoraTermino
                    }

                                                  ).ToList()
                });
            });

            return(new GenericQueryResult(true, "Turmas", turmaResult));
        }
        public IQueryResult Handle(ListarTurmasDoAlunoQuery command)
        {
            command.Validate();

            if (command.Invalid)
            {
                return(new GenericQueryResult(false, "Dados inválidos", command.Notifications));
            }

            var turmasDoAluno = _repositorio.ListarTurmasDoAluno(command.IdAluno);

            var result = turmasDoAluno.Select(tal =>
            {
                var turma = _repositorioTurma.BuscarTurmaPorId(tal.IdTurma);

                var aluno = _repositorioAluno.BuscarPorId(tal.IdAluno);

                var horarios = _repositorioHorario.BuscarHorarioPorIdTurma(turma.Id);

                return(new ListaTurmasDoAlunoResult()
                {
                    Aluno = new BuscarAlunoResult
                    {
                        Id = aluno.Id,
                        NomeUsuario = aluno.NomeUsuario,
                        Email = aluno.Email,
                        Telefone = aluno.Telefone,
                        Rg = aluno.Rg,
                        FotoAluno = aluno.FotoAluno
                    },
                    Turmas = turmasDoAluno.Select(tam =>

                                                  new ListarTurmaResult
                    {
                        Id = turma.Id,
                        Titulo = turma.Titulo,
                        Descricao = turma.Descricao,
                        Semestre = turma.Semestre.ToString(),
                        Horarios = turma.Horarios.Select(hrr =>

                                                         new ListarHorarioResult()
                        {
                            Id = hrr.Id,
                            DiaSemana = hrr.DiaSemana.ToString(),
                            HoraInicio = hrr.HoraInicio,
                            HoraTermino = hrr.HoraTermino
                        }

                                                         ).ToList()
                    }

                                                  ).ToList()
                });
            });

            return(new GenericQueryResult(true, "Turmas do aluno", result));
        }
        public IQueryResult Handle(ListarProfessoresTurmasQuery command)
        {
            command.Validate();

            if (command.Invalid)
            {
                return(new GenericQueryResult(false, "Dados inválidos", command.Notifications));
            }

            var ProfessorsTurmas = _repositorio.ListarProfessoresTurmas();

            var result = ProfessorsTurmas.Select(atms =>
            {
                var Professor = _repositorioProfessor.BuscarProfessorPorId(atms.IdProfessor);

                var turma = _repositorioTurma.BuscarTurmaPorId(atms.IdTurma);

                var horarios = _repositorioHorario.BuscarHorarioPorIdTurma(turma.Id);

                return(new ListarProfessoresTurmasResult()
                {
                    Id = atms.Id,
                    Turma = new BuscarTurmaResult
                    {
                        Id = turma.Id,
                        Titulo = turma.Titulo,
                        Descricao = turma.Descricao,
                        Semestre = turma.Semestre.ToString(),
                        Horarios = turma.Horarios.Select(hrr =>

                                                         new ListarHorarioResult()
                        {
                            Id = hrr.Id,
                            DiaSemana = hrr.DiaSemana.ToString(),
                            HoraInicio = hrr.HoraInicio,
                            HoraTermino = hrr.HoraTermino
                        }

                                                         ).ToList()
                    },
                    Professor = new BuscarProfessorResult
                    {
                        Id = Professor.Id,
                        NomeUsuario = Professor.NomeUsuario,
                        Email = Professor.Email,
                        Telefone = Professor.Telefone,
                        FotoProfessor = Professor.FotoProfessor
                    }
                });
            });

            return(new GenericQueryResult(true, "Lista de Professors turmas", result));
        }