Beispiel #1
0
        public HttpResponseMessage CriarGrupo([FromBody] GrupoEstudo grupo)
        {
            VerificaToken();
            if (Errors != null && HasError())
            {
                return(SendErrorResponse(HttpStatusCode.Unauthorized));
            }

            _repositorioGrupoEstudo = new Repository <GrupoEstudo>(CurrentSession());
            _repositorioDisciplina  = new Repository <Disciplina>(CurrentSession());
            _repositorioAluno       = new Repository <Aluno>(CurrentSession());

            ValidarCamposObrigatorios(grupo);
            if (Errors != null && HasError())
            {
                return(SendErrorResponse(HttpStatusCode.BadRequest));
            }
            grupo.Disciplina = _repositorioDisciplina.FindById(grupo.Disciplina.Id);
            var alunoLogado = _repositorioAluno.Queryable()
                              .FirstOrDefault(x => x.Token == Request.Headers.Authorization.ToString());

            grupo.Lider = alunoLogado;

            try
            {
                _repositorioGrupoEstudo.Save(grupo);
                _repositorioGrupoEstudo.Flush();
                var participacao = new Participacao
                {
                    Tipo         = TipoParticipacao.Lider,
                    Aluno        = grupo.Lider,
                    Grupo        = grupo,
                    Participando = true,
                    Version      = 0
                };
                _repositorioParticipacao = new Repository <Participacao>(CurrentSession());
                _repositorioParticipacao.Save(participacao);
                _repositorioParticipacao.Flush();
                grupo.Disciplina = null;
                grupo.Lider      = null;
                return(MultipleResponse(HttpStatusCode.OK, grupo));
            }
            catch (Exception e)
            {
                AddError(e.Message);
                return(SendErrorResponse(HttpStatusCode.BadRequest));
            }
        }
Beispiel #2
0
        public HttpResponseMessage GetGrupo([FromUri] long?id)
        {
            VerificaToken();
            if (Errors != null && HasError())
            {
                return(SendErrorResponse(HttpStatusCode.Unauthorized));
            }

            _repositorioGrupoEstudo = new Repository <GrupoEstudo>(CurrentSession());
            GrupoEstudo result = null;

            if (id.HasValue)
            {
                result = _repositorioGrupoEstudo.Queryable().FirstOrDefault(x => x.Id == id.Value);
            }
            GrupoEstudoDTO dto = new GrupoEstudoDTO();

            if (result != null)
            {
                dto.Nome                = result.Nome;
                dto.DataEncontro        = result.DataEncontro;
                dto.Descricao           = result.Descricao;
                dto.Local               = result.Local;
                dto.Privado             = result.Privado;
                dto.QuantidadeMaxAlunos = result.QuantidadeMaxAlunos;
                dto.IdDisciplina        = result.Disciplina.Id;
                dto.NomeDisciplina      = result.Disciplina.Nome;
                dto.IdLider             = result.Lider.Id;
                dto.NomeLider           = result.Lider.Nome;
                dto.FotoLider           = result.Lider.Foto;
                dto.Id = result.Id;
                var logado = new Repository <Aluno>(CurrentSession()).Queryable().FirstOrDefault(x => x.Token == Request.Headers.Authorization.ToString());
                if (logado != null)
                {
                    dto.IsLider = logado.Id == result.Lider.Id;
                    var existe = new Repository <Participacao>(CurrentSession()).Queryable().Count(x => x.Aluno.Id == logado.Id && x.Grupo.Id == result.Id);
                    dto.Participando = existe > 0;
                }
                else
                {
                    dto.IsLider      = false;
                    dto.Participando = false;
                }
            }
            return(MultipleResponse(HttpStatusCode.OK, dto));
        }
Beispiel #3
0
 private void ValidarCamposObrigatorios(GrupoEstudo grupo)
 {
     if (string.IsNullOrEmpty(grupo.Nome))
     {
         AddError("O campo [Nome] é obrigatório.");
     }
     if (string.IsNullOrEmpty(grupo.Local))
     {
         AddError("O campo [Local] é obrigatório.");
     }
     if (grupo.QuantidadeMaxAlunos == 0)
     {
         AddError("O campo [Quantida Máxima de Alunos] é obrigatório.");
     }
     if (grupo.DataEncontro == DateTimeOffset.MinValue)
     {
         AddError("O campo [Data Encontro] é obrigatório.");
     }
 }
Beispiel #4
0
        public HttpResponseMessage SolicitarParticipacao([FromUri] long?idGrupo)
        {
            VerificaToken();
            if (Errors != null && HasError())
            {
                return(SendErrorResponse(HttpStatusCode.Unauthorized));
            }

            _repositorioGrupoEstudo  = new Repository <GrupoEstudo>(CurrentSession());
            _repositorioParticipacao = new Repository <Participacao>(CurrentSession());
            _repositorioAluno        = new Repository <Aluno>(CurrentSession());
            GrupoEstudo grupo = null;

            if (idGrupo.HasValue)
            {
                grupo = _repositorioGrupoEstudo.Queryable().FirstOrDefault(x => x.Id == idGrupo.Value);
                if (grupo == null)
                {
                    AddError("O Grupo não foi encontrado.");
                }
            }
            Aluno aluno = null;

            if (Request.Headers.Authorization != null)
            {
                aluno = _repositorioAluno.Queryable()
                        .FirstOrDefault(x => x.Token == Request.Headers.Authorization.ToString());
                if (aluno == null)
                {
                    AddError("O Aluno não foi encontrado.");
                }
            }
            if (Errors != null && HasError())
            {
                return(SendErrorResponse(HttpStatusCode.BadRequest));
            }
            Participacao part = new Participacao
            {
                Aluno        = aluno,
                Grupo        = grupo,
                Tipo         = TipoParticipacao.Membro,
                Participando = true
            };

            if (grupo != null && grupo.Privado)
            {
                part.Participando = null;
            }
            ParticipacaoDTO result = new ParticipacaoDTO
            {
                IdAluno      = part.Aluno.Id,
                IdGrupo      = part.Grupo.Id,
                NomeAluno    = part.Aluno.Nome,
                NomeGrupo    = part.Grupo.Nome,
                Participando = part.Participando,
                Recebendo    = aluno != null && part.Aluno.Id == aluno.Id,
                Tipo         = part.Tipo
            };

            try
            {
                _repositorioParticipacao.Save(part);
                _repositorioParticipacao.Flush();
                return(MultipleResponse(HttpStatusCode.OK, null));
            }
            catch (Exception)
            {
                AddError("Não foi possível solicitar a participação no grupo.");
                return(SendErrorResponse(HttpStatusCode.BadRequest));
            }
        }
Beispiel #5
0
        public HttpResponseMessage Avaliar([FromBody] Avaliacao avaliacao)
        {
            VerificaToken();
            if (Errors != null && HasError())
            {
                return(SendErrorResponse(HttpStatusCode.Unauthorized));
            }

            _repositorioGrupoEstudo = new Repository <GrupoEstudo>(CurrentSession());
            _repositorioAluno       = new Repository <Aluno>(CurrentSession());
            GrupoEstudo grupo = null;

            if (avaliacao.Grupo != null && avaliacao.Grupo.Id > 0)
            {
                grupo = _repositorioGrupoEstudo.Queryable().FirstOrDefault(x => x.Id == avaliacao.Grupo.Id);
                if (grupo == null)
                {
                    AddError("O Grupo não foi encontrado.");
                }
            }
            else
            {
                AddError("Informe o grupo que você e o aluno avaliado participaram");
            }
            Aluno avaliado  = null;
            Aluno avaliador = null;

            if (Request.Headers.Authorization != null)
            {
                avaliador = _repositorioAluno.Queryable()
                            .FirstOrDefault(x => x.Token == Request.Headers.Authorization.ToString());
                if (avaliador == null)
                {
                    AddError("O Aluno não foi encontrado.");
                }
            }
            if (avaliacao.Avaliado != null && avaliacao.Avaliado.Id > 0)
            {
                avaliado = _repositorioAluno.Queryable()
                           .FirstOrDefault(x => x.Id == avaliacao.Avaliado.Id);
                if (avaliado == null)
                {
                    AddError("O Aluno não foi encontrado.");
                }
            }
            else
            {
                AddError("Informe o aluno a ser avaliado.");
            }
            if (Errors != null && HasError())
            {
                return(SendErrorResponse(HttpStatusCode.BadRequest));
            }

            _repositorioAvaliacao = new Repository <Avaliacao>(CurrentSession());

            if (_repositorioAvaliacao.Queryable().Count(x => x.Avaliado.Id == avaliado.Id &&
                                                        x.Avaliador.Id == avaliador.Id && x.Grupo.Id == grupo.Id) > 0)
            {
                AddError("Você já avaliou este aluno.");
                return(SendErrorResponse(HttpStatusCode.BadRequest));
            }
            if (avaliado.Id == avaliador.Id)
            {
                AddError("Não é possível avaliar a sí mesmo.");
                return(SendErrorResponse(HttpStatusCode.BadRequest));
            }

            Avaliacao aval = new Avaliacao
            {
                Avaliado          = avaliado,
                Avaliador         = avaliador,
                Grupo             = grupo,
                AvaliacaoPositiva = avaliacao.AvaliacaoPositiva,
                Texto             = avaliacao.Texto
            };

            try
            {
                _repositorioAvaliacao.Save(aval);
                _repositorioAvaliacao.Flush();
                return(MultipleResponse(HttpStatusCode.OK, null));
            }
            catch (Exception)
            {
                AddError("Não foi possível avaliar o aluno.");
                return(SendErrorResponse(HttpStatusCode.BadRequest));
            }
        }