public async Task CadastrarNovo(Audiencia compromissoAudiencia, Guid userGuid) { var userContextData = _sessionContextDataSingleton.ObterUserContext(userGuid); compromissoAudiencia.IdResponsavel = userContextData.IdFuncionario; DateTime agora = DateTime.Now; compromissoAudiencia.DataCriacao = agora; if (compromissoAudiencia.SubTarefas != null) { foreach (Audiencia st in compromissoAudiencia.SubTarefas) { st.DataCriacao = agora; st.IdResponsavel = compromissoAudiencia.IdResponsavel; } } using (var dbContext = _fabricaDeContextos.CriaContextoDe <CadastroExternoContext>(TipoDeConexao.PreCadastro)) { compromissoAudiencia.TarefaPai = null; var newAud = new AudienciaBD().ConverterDeModelo(compromissoAudiencia); await dbContext.CompromissosAudiencia.AddAsync(newAud); dbContext.SaveUserGuidForLog(userGuid); await dbContext.SaveChangesAsync(); } }
public async Task Atualizar(Audiencia compromissoAudiencia, Guid funcionarioLogado) { var userContextData = _sessionContextDataSingleton.ObterUserContext(funcionarioLogado); compromissoAudiencia.IdResponsavel = userContextData.IdFuncionario; using (var dbContext = _fabricaDeContextos.CriaContextoDe <CadastroExternoContext>(TipoDeConexao.PreCadastro)) { await DeletarParticipantes(compromissoAudiencia.Id); var compromissoAudienciaDb = await dbContext.CompromissosAudiencia.FindAsync(compromissoAudiencia.Id); //compromissoAudiencia.DataCriacao = compromissoAudienciaDb.DataCriacao; //compromissoAudiencia.IdForo= compromissoAudienciaDb.IdForo; //o entity framework nao consegue atualizar subtarefas, ele tenta inserir novas //por isso temos que atualizar cada subtarefa individualmente //e o Audiencia.Atualizar() nao pode receber as subtarefas var upAud = new AudienciaBD().ConverterDeModelo(compromissoAudiencia); compromissoAudienciaDb.Atualizar(upAud); dbContext.Set <AudienciaBD>().Update(_mapper.Map <AudienciaBD>(compromissoAudienciaDb)); dbContext.SaveUserGuidForLog(funcionarioLogado); await dbContext.SaveChangesAsync(); await DeletaSubTarefas(compromissoAudiencia, dbContext); if (compromissoAudiencia.SubTarefas != null) { foreach (Audiencia st in compromissoAudiencia.SubTarefas) { if (st.PrecisaAtualizar()) { await Atualizar(st, funcionarioLogado); } else { await CadastrarNovo(st, funcionarioLogado); } } } } }
public async Task <Audiencia> Obter(int compromissoAudienciaId) { using (var dbContext = _fabricaDeContextos.CriaContextoDe <CadastroExternoContext>(TipoDeConexao.PreCadastro)) { var taskAudiencia = dbContext.CompromissosAudiencia.AsNoTracking().FirstOrDefaultAsync(x => x.Id == compromissoAudienciaId); var taskParticipantesAudiencia = ListaParticipantes(compromissoAudienciaId, dbContext); IQueryable <AudienciaBD> filhosQryObject = dbContext.CompromissosAudiencia.Where(x => x.IdPai == compromissoAudienciaId); var taskSubtarefas = filhosQryObject.AsNoTracking().ToListAsync(); Task.WaitAll(taskAudiencia, taskSubtarefas); AudienciaBD audiencia = taskAudiencia.Result; List <AudienciaParticipanteBD> participantes = taskParticipantesAudiencia; List <AudienciaBD> subTarefas = taskSubtarefas.Result; audiencia.Participantes = participantes; audiencia.SubTarefas = subTarefas; foreach (AudienciaBD st in audiencia.SubTarefas) { List <AudienciaParticipanteBD> participantesST = ListaParticipantes(st.Id, dbContext); st.Participantes = participantesST.ToArray(); } return(_mapper.Map <Audiencia>(audiencia)); } }