示例#1
0
        public async Task <Prazo> Obter(int IdPrazo)
        {
            using (var dbContext = _fabricaDeContextos.CriaContextoDe <CadastroExternoContext>(TipoDeConexao.PreCadastro))
            {
                var taskPrazo = dbContext.Prazos.AsNoTracking().FirstOrDefaultAsync(x => x.Id == IdPrazo);
                List <PrazoParticipanteBD> taskParticipantesPrazo = await dbContext.PrazoParticipantes.Where(x => x.IdPrazo == IdPrazo).ToListAsync();

                IQueryable <PrazoBD> filhosQryObject = dbContext.Prazos.Where(x => x.IdPai == IdPrazo);
                var taskSubtarefas = filhosQryObject.AsNoTracking().ToListAsync();
                Task.WaitAll(taskPrazo, taskSubtarefas);
                PrazoBD prazo = taskPrazo.Result;
                //List<PrazoParticipanteBD> participantes = taskParticipantesPrazo;
                List <PrazoBD> subTarefas = taskSubtarefas.Result;

                prazo.Participantes = _mapper.Map <List <PrazoParticipanteBD> >(taskParticipantesPrazo);
                prazo.SubTarefas    = subTarefas;

                foreach (PrazoBD st in prazo.SubTarefas)
                {
                    List <PrazoParticipanteBD> participantesST = await dbContext.PrazoParticipantes.Where(x => x.IdPrazo == IdPrazo).ToListAsync();

                    st.Participantes = participantesST.ToArray();
                }
                return(_mapper.Map <Prazo>(prazo));
            }
        }
示例#2
0
        public async Task CadastrarNovo(Prazo prazo, Guid userGuid)
        {
            var userContextData = _sessionContextDataSingleton.ObterUserContext(userGuid);

            prazo.IdResponsavel = userContextData.IdFuncionario;
            DateTime agora = DateTime.Now;

            prazo.DataCriacao = agora;

            if (prazo.SubTarefas != null)
            {
                foreach (Prazo st in prazo.SubTarefas)
                {
                    st.DataCriacao   = agora;
                    st.IdResponsavel = prazo.IdResponsavel;
                }
            }

            using (var dbContext = _fabricaDeContextos.CriaContextoDe <CadastroExternoContext>(TipoDeConexao.PreCadastro))
            {
                prazo.TarefaPai = null;
                var newPrazo = new PrazoBD().ConverterDeModelo(prazo);
                await dbContext.Prazos.AddAsync(newPrazo);

                dbContext.SaveUserGuidForLog(userGuid);
                await dbContext.SaveChangesAsync();
            }
        }
示例#3
0
        public async Task Atualizar(Prazo prazo, Guid userGuid)
        {
            var userContextData = _sessionContextDataSingleton.ObterUserContext(userGuid);

            prazo.IdResponsavel = userContextData.IdFuncionario;
            using (var dbContext = _fabricaDeContextos.CriaContextoDe <CadastroExternoContext>(TipoDeConexao.PreCadastro))
            {
                await DeletarParticipantes(prazo.Id);
                await DeletaSubTarefas(prazo, dbContext);

                var prazoDB = await dbContext.Prazos.FindAsync(prazo.Id);

                var prazoAud = new PrazoBD().ConverterDeModelo(prazo);
                prazoDB.Atualizar(prazoAud);
                dbContext.Set <PrazoBD>().Update(prazoDB);
                dbContext.SaveUserGuidForLog(userGuid);
                await dbContext.SaveChangesAsync();

                if (prazo.SubTarefas != null)
                {
                    foreach (Prazo st in prazo.SubTarefas)
                    {
                        if (st.PrecisaAtualizar())
                        {
                            await Atualizar(st, userGuid);
                        }
                        else
                        {
                            await CadastrarNovo(st, userGuid);
                        }
                    }
                }
            }
        }