Exemple #1
0
        public async Task <int> AlterarPublicacaoAsync(int id, DateTime dataInicio, DateTime dataFim, int valorProva)
        {
            if (dataFim < dataInicio)
            {
                throw new DomainException("A data de fim não pode ser anterior à data de início!");
            }

            var publicacao = await _publicacaoRepository.ObterAsync(id);

            if (publicacao.ValorProva != valorProva)
            {
                var provas = await _provaRepository.ListarPorAvaliacaoAsync(publicacao.AvaliacaoId);

                if (provas?.Count > 0)
                {
                    throw new DomainException("Não é permitido alterar o valor da publicação quando a prova já foi feita por algum aluno!");
                }
            }

            publicacao.DataInicio = dataInicio;
            publicacao.DataFim    = dataFim;
            publicacao.ValorProva = valorProva;

            _publicacaoRepository.Modificar(publicacao);

            await _publicacaoRepository.SaveChangesAsync();

            return(publicacao.Id);
        }
Exemple #2
0
        public async Task <int> AlterarPublicacaoAsync(int professorId, int id, DateTime dataInicio, DateTime dataFim, int valorProva)
        {
            var publicacao = await _publicacaoRepository.ObterAsync(id);

            if (publicacao == null)
            {
                throw new DomainException("A publicação não foi encontrada!");
            }

            publicacao.DataInicio = dataInicio;
            publicacao.DataFim    = dataFim;
            publicacao.ValorProva = valorProva;

            var erros = publicacao.Validate();

            if (erros.Length == 0)
            {
                if (publicacao.Avaliacao.ProfessorId != professorId)
                {
                    throw new DomainException("A avaliação informada não pertence ao professor logado!");
                }

                _publicacaoRepository.Modificar(publicacao);

                _publicacaoRepository.SaveChanges();

                return(publicacao.Id);
            }
            else
            {
                throw new DomainException(erros);
            }
        }
        public async Task <int> AlterarPublicacaoAsync(int id, string descricao)
        {
            var publicacao = await _publicacaoRepository.ObterAsync(id);

            //publicacao.Nome = descricao;
            _publicacaoRepository.Modificar(publicacao);
            return(await _publicacaoRepository.SaveChangesAsync());
        }
Exemple #4
0
        public async Task <IActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var result = await _publicacaoRepository.ObterAsync(id.Value);

            if (result == null)
            {
                return(NotFound());
            }

            var publicacao = Mapper.Map <PublicacaoViewModel>(result);

            return(View(publicacao));
        }
Exemple #5
0
        public async Task <int> AlterarPublicacaoAsync(int id, DateTime dataInicio, DateTime dataFim, int valor)
        {
            var publicacao = await _publicacaoRepository.ObterAsync(id);

            publicacao.DataInicio   = dataInicio;
            publicacao.DataFim      = dataFim;
            publicacao.Valor        = valor;
            publicacao.AtualizadoEm = DateTime.Now;
            _publicacaoRepository.Modificar(publicacao);
            return(await _publicacaoRepository.SaveChangesAsync());
        }
        public async Task <IActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var publicacao = await _publicacaoRepository.ObterAsync(id.Value);

            if (publicacao == null)
            {
                return(NotFound());
            }

            var avaliacoes = _avaliacaoService.ListarAvaliacoesSelectAsync(LoginUsuario).Result;

            var turmas = _turmaService.ListarTurmas();

            ViewData["AvaliacaoId"] = new SelectList(avaliacoes, "Id", "Nome", publicacao.AvaliacaoId);

            ViewData["TurmaId"] = new SelectList(turmas, "Id", "Nome", publicacao.TurmaId);

            return(View(publicacao));
        }
Exemple #7
0
        public async Task <ProvaQueryResult> ObterProvaAsync(int publicacaoId, string login)
        {
            var aluno = _alunoRepository.ObterPorLogin(login);

            if (aluno == null)
            {
                throw new DomainException("O aluno não foi localizado!");
            }

            var publicacao = await _publicacaoRepository.ObterAsync(publicacaoId);

            if (publicacao == null)
            {
                throw new DomainException("A publicacao não foi localizada!");
            }

            var avaliacaoCompleta = await _avaliacaoRepository.ObterComQuestoresAsync(publicacao.AvaliacaoId);

            var provaCompleta = await _provaRepository.ObterProvaDoAlunoAsync(publicacao.AvaliacaoId, aluno.Id);

            var retorno = new ProvaQueryResult()
            {
                AvaliacaoId  = publicacao.AvaliacaoId,
                PublicacaoId = publicacao.Id,
                Questoes     = avaliacaoCompleta.Questoes.Select(x => new QuestaoProvaQueryResult()
                {
                    QuestaoId = x.Id,
                    Enunciado = x.Enunciado,
                    Tipo      = x.Tipo,
                    Opcoes    = x.Opcoes.Select(y => new OpcaoProvaQueryResult()
                    {
                        OpcaoAvaliacaoId = y.Id,
                        QuestaoId        = y.QuestaoId,
                        Descricao        = y.Descricao
                    }).ToList()
                }).ToList()
            };

            retorno.Questoes.SelectMany(x => x.Opcoes).ToList().ForEach(x =>
            {
                x.Resposta = provaCompleta?.QuestoesProva?
                             .SelectMany(y => y.OpcoesProva)
                             .FirstOrDefault(y => y.OpcaoAvaliacaoId == x.OpcaoAvaliacaoId)?.Resposta ?? false;
            });

            return(retorno);
        }
Exemple #8
0
        public async Task <IActionResult> QuestaoProva(int?provaId, int questaoId = 0, int avancar = 1)
        {
            var result = await _publicacaoRepository.ObterAsync(provaId);

            var prova = Mapper.Map <ProvaPublicadaViewModel>(result.ToList());

            if (questaoId == 0)
            {
                var avaliacao = await _avaliacaoRepository.ObterAsync(prova.AvaliacaoId);
            }
            else if (questaoId > 0)
            {
                var avaliacao = await _avaliacaoRepository.ObterAsync(prova.AvaliacaoId);
            }
            else
            {
                var avaliacao = await _avaliacaoRepository.ObterAsync(prova.AvaliacaoId);
            }

            return(View(QuestaoProvaViewModel));
        }