private static void prepareGremio(Gremio gremio)
        {
            var direccion = gremio.Direccion;

            saveDepartamentoMunicipio(direccion.Departamento, direccion.Municipio);

            using (var uow = new NHibernateUnitOfWork(_sessionFactory.OpenSession()))
            {
                var representanteRepository = new RepresentanteLegalRepositoryReadOnly(uow.Session);
                var direccionRepository     = new DireccionRepositoryReadOnly(uow.Session);
                var gremioRead = new GremioRepositoryReadOnly(uow.Session);
                if (!gremioRead.exists(gremio.Id))
                {
                    var gremioRepository = new GremioRepositoryCommands(uow.Session, representanteRepository,
                                                                        direccionRepository);
                    gremioRepository.save(gremio);
                    uow.commit();
                }
            }
        }
        private static void prepareEmpresa(Empresa empresa)
        {
            var gremio      = empresa.Gremial;
            var sucursales  = empresa.Sucursales;
            var actividades = empresa.ActividadesEconomicas;

            prepareGremio(gremio);
            sucursales.ToList().ForEach(x => prepareUser(x.Firma.User));
            actividades.ToList().ForEach(prepareActividades);


            _session = _sessionFactory.OpenSession();
            using (var uow = new NHibernateUnitOfWork(_sessionFactory.OpenSession()))
            {
                var repositoryGremios = new GremioRepositoryReadOnly(uow.Session);
                var repository        = new EmpresaRepositoryCommands(uow.Session, repositoryGremios);
                repository.save(empresa);
                uow.commit();
            }
        }