Beispiel #1
0
        public PerfilCatalogoSAPResponse ProcessaPerfilCatalogo(PerfilCatalogoSAPModelo modelo)
        {
            PerfilCatalogoSAPResponse response = new PerfilCatalogoSAPResponse();

            response.Itens = new List <PerfilCatalogoItemSAPResponse>();

            this.ValidaPerfilCatalogo(modelo);

            using (var entities = new DB_APRPTEntities())
            {
                entities.Database.CommandTimeout = 9999;

                using (var transaction = entities.Database.BeginTransaction())
                {
                    PerfilCatalogoItemSAPResponse itemResponse   = new PerfilCatalogoItemSAPResponse();
                    PerfilCatalogoModelo          perfilCatalogo = new PerfilCatalogoModelo();

                    try
                    {
                        List <PerfilCatalogoModelo> listaPerfilCatalogo = new List <PerfilCatalogoModelo>();
                        foreach (var item in modelo.Itens)
                        {
                            listaPerfilCatalogo.Add(new PerfilCatalogoModelo()
                            {
                                Codigo = item.PerfilCatalogo,
                                Nome   = item.Descricao,
                            });
                        }

                        foreach (var perfil in listaPerfilCatalogo)
                        {
                            perfilCatalogo = perfil;

                            var perfilExistente = perfilCatalogoPersistencia.ListarPerfilCatalogoPorCodigo(perfilCatalogo.Codigo);

                            if (perfilExistente == null)
                            {
                                perfilCatalogoPersistencia.Inserir(perfilCatalogo);
                            }
                            else
                            {
                                perfilCatalogoPersistencia.Editar(perfilCatalogo, entities);
                            }

                            itemResponse.Perfil_Do_Catalogo = perfilCatalogo.Codigo;
                            itemResponse.Descricao          = "";
                            itemResponse.Status             = Constantes.StatusResponseIntegracao.S.ToString();

                            response.Itens.Add(itemResponse);
                        }

                        entities.SaveChanges();
                        transaction.Commit();

                        return(response);
                    }
                    catch (Exception ex)
                    {
                        itemResponse.Perfil_Do_Catalogo = perfilCatalogo.Codigo;
                        itemResponse.Status             = Constantes.StatusResponseIntegracao.E.ToString();
                        itemResponse.Descricao          = ex.Message;

                        throw ex;
                    }
                }
            }
        }