예제 #1
0
        public async Task <IActionResult> PostAvaliacao(Guid grupoId, [FromBody] ResultadoAvaliacaoViewModel resultado)
        {
            var data = DateTime.Now;

            List <Avaliacao> avaliacoes = new List <Avaliacao>();

            foreach (var c in resultado.Criterios)
            {
                var avaliacaoGrupo = c.Avaliacoes.FirstOrDefault(x => x.AvaliadoId == grupoId);

                foreach (var a in c.Avaliacoes.Where(x => x.AvaliadoId != avaliacaoGrupo.AvaliadoId))
                {
                    if (a.Nota == 0)
                    {
                        avaliacoes.Add(new Avaliacao
                        {
                            AvaliadorId = User.GetUserId(),
                            AlunoId     = a.AvaliadoId,
                            GrupoId     = resultado.GrupoId,
                            CriterioId  = c.Id,
                            Data        = data,
                            Nota        = avaliacaoGrupo.Nota * 2,
                            Tipo        = Avaliacao.EnumTipo.Aluno
                        });
                    }
                    else
                    {
                        avaliacoes.Add(new Avaliacao
                        {
                            AvaliadorId = User.GetUserId(),
                            AlunoId     = a.AvaliadoId,
                            GrupoId     = resultado.GrupoId,
                            CriterioId  = c.Id,
                            Data        = data,
                            Nota        = a.Nota * 2,
                            Tipo        = Avaliacao.EnumTipo.Grupo
                        });
                    }
                }
            }

            var result = await _avaliacaoService.RealizarAvaliacao(grupoId, avaliacoes);

            if (result.IsValid)
            {
                return(Ok(true));
            }

            return(BadRequest(result));
        }