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); }
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()); }
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)); }
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)); }
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); }
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)); }