public void DeleteRespostaRelatorio(int negociacaoId, int respostaId) { RespostaRelatorio resposta = _db.RespostasRelatorio.Find(respostaId); if (resposta == null) { throw new NotFoundException(); } _db.Entry(resposta).Reference(r => r.GrupoPergunta).Load(); _db.Entry(resposta.GrupoPergunta).Reference(g => g.Relatorio).Load(); if (resposta.GrupoPergunta.Relatorio.NegociacaoId != negociacaoId) { throw new Exception($"A pergunta de ID {respostaId} não pertence ao relatório da negociação {negociacaoId}!"); } _db.RespostasRelatorio.Remove(resposta); _db.SaveChanges(); }
public void SaveRelatorio(int negociacaoId, Relatorio relatorio) { relatorio.NegociacaoId = negociacaoId; Relatorio oldRelatorio = _db.Relatorios.Find(relatorio.Id); if (oldRelatorio != null) { foreach (GrupoPergunta grupo in relatorio.GruposPerguntas) { IEnumerable <RespostaRelatorio> respostas = grupo.Respostas; grupo.Respostas = null; GrupoPergunta oldGrupo = _db.GruposPerguntas.Find(grupo.Id); if (oldGrupo == null) { _db.GruposPerguntas.Add(grupo); _db.SaveChanges(); } else { _db.Entry(oldGrupo).CurrentValues.SetValues(grupo); } foreach (RespostaRelatorio resposta in respostas) { resposta.GrupoPerguntaId = grupo.Id; RespostaRelatorio oldResposta = _db.RespostasRelatorio.Find(resposta.Id); if (oldResposta == null) { _db.RespostasRelatorio.Add(resposta); } else { _db.Entry(oldResposta).CurrentValues.SetValues(resposta); } } } relatorio.GruposPerguntas = null; _db.Entry(oldRelatorio).CurrentValues.SetValues(relatorio); _db.SaveChanges(); } }
public Relatorio GenerateRelatorioFinal(int negociacaoId) { Negociacao negociacao = Find(negociacaoId); if (negociacao == null) { throw new NotFoundException(); } Relatorio relatorio = _db.Relatorios.FirstOrDefault(r => r.NegociacaoId == negociacaoId); if (relatorio == null) { using (var transaction = _db.Database.BeginTransaction()) { try { relatorio = new Relatorio { NegociacaoId = negociacaoId, Titulo = "Relatório - Acordo Coletivo Algar" }; _db.Relatorios.Add(relatorio); _db.SaveChanges(); List <GrupoPerguntaPadrao> gruposPerguntasPadrao = _db.GruposPerguntasPadrao .Include(g => g.Perguntas).ToList(); foreach (GrupoPerguntaPadrao grupoPadrao in gruposPerguntasPadrao) { GrupoPergunta grupo = new GrupoPergunta { RelatorioId = relatorio.Id, Ordem = grupoPadrao.Ordem, Texto = grupoPadrao.Texto }; _db.GruposPerguntas.Add(grupo); _db.SaveChanges(); foreach (PerguntaPadrao perguntaPadrao in grupoPadrao.Perguntas) { RespostaRelatorio resposta = new RespostaRelatorio { GrupoPerguntaId = grupo.Id, Ordem = perguntaPadrao.Ordem, Pergunta = perguntaPadrao.Texto, Resposta = RespostaPadrao(perguntaPadrao.Texto, negociacao), NumColunas = perguntaPadrao.NumColunas }; _db.RespostasRelatorio.Add(resposta); } _db.SaveChanges(); } transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw e; } } } return(relatorio); }