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)); } }
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)); }
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."); } }
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)); } }
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)); } }