public IEnumerable <ProjetoTipoDemanda> AssociarTipoDemandaProjeto(int projetoId, IEnumerable <TipoDemanda> tiposDemandas)
        {
            var atual    = ObterTipoDemandasAssociadas(projetoId).ToList();
            var toRemove = atual.Except(tiposDemandas).ToList();
            var toAdd    = tiposDemandas.Except(atual).ToList();

            if (toRemove.Any())
            {
                var curr =
                    repoPrjTpDem.BuscarPor(t => t.ProjetoId == projetoId && t.Ativo).ToList()
                    .Join(
                        toRemove,
                        d => d.TipoDemandaId,
                        r => r.Id,
                        (TipoDemandaProjeto, TipoDemanda) => new { TipoDemandaProjeto, TipoDemanda }
                        ).Where(w => w.TipoDemanda.Id == w.TipoDemandaProjeto.TipoDemandaId);

                foreach (var r in curr)
                {
                    repository.Remover(r.TipoDemandaProjeto.Id);
                }
            }

            foreach (var a in toAdd)
            {
                var objToAdd = new ProjetoTipoDemanda {
                    ProjetoId = projetoId, TipoDemandaId = a.Id
                };
                repoPrjTpDem.Adicionar(objToAdd);
            }
            repository.SaveChanges();
            return(repoPrjTpDem.BuscarPor(b => b.ProjetoId == projetoId && b.Ativo));
        }
Exemplo n.º 2
0
        public dynamic ObterPessoaColaborador(int pessoaId)
        {
            try {
                var pessoa = repository.ObterPorId(pessoaId);
                if (pessoa == null)
                {
                    throw new Exception($"Pessoa com ID: {pessoaId}, não existe");
                }


                var colaborador = repColaborador.BuscarPor(c => c.PessoaId == pessoaId).FirstOrDefault();


                var telefones = repTelefones.BuscarPor(t => t.PessoaId == pessoaId && t.Ativo == true, i => i.Tipo).ToList();

                var ferramentasAssociadas = colaborador != null ? (from af in ctx.AcessoFerramentas
                                                                   join f in ctx.Ferramentas on af.FerramentaId equals f.Id
                                                                   where af.Ativo && af.ColaboradorId == colaborador.Id
                                                                   select f).ToList() :
                                            new List <Ferramenta>();
                var siglasAssociadas = colaborador != null ? (from acs in ctx.AcessoSiglas
                                                              join s in ctx.Siglas on acs.SiglaId equals s.Id
                                                              where acs.Ativo && acs.ColaboradorId == colaborador.Id
                                                              select s).ToList() :
                                       new List <Sigla>();
                dynamic result = new {
                    pessoa,
                    colaborador,
                    ferramentasAssociadas,
                    siglasAssociadas,
                    telefones
                };
                return(result);
            }

            catch (Exception ex) {
                throw ex;
            }
        }