Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 2
0
        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);
                        }
                    }
                }
            }
        }
Exemplo n.º 3
0
        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));
            }
        }