//Registrar Negocio public int Registrar(RequestNegocioRegistrarDto modelo, ref long idNuevo) { int respuesta = 0; try { if (modelo.ListaUbicacion != null) { if (modelo.ListaUbicacion.Any()) { modelo.ListaUbicacion = modelo.ListaUbicacion.Where(x => x.Latitud != 0 && x.Longitud != 0).ToList(); if (modelo.ListaUbicacion.Any()) { int cantidadPredeterminados = modelo.ListaUbicacion.Where(x => x.Predeterminado == 1).Count(); if (cantidadPredeterminados > 1) { //Desmarcar todos menos uno bool seEncontroMarcado = false; foreach (var ubicacion in modelo.ListaUbicacion) { if (!seEncontroMarcado) { if (ubicacion.Predeterminado == 1) { seEncontroMarcado = true; } } else { ubicacion.Predeterminado = 0; } } } else { modelo.ListaUbicacion.First().Predeterminado = 1; } } } } using (var scope = new TransactionScope()) { respuesta = _adNegocio.Registrar(modelo, ref idNuevo); LnNegocioUbicacion lnNegocioUbicacion = new LnNegocioUbicacion(); if (modelo.ListaUbicacion == null) { modelo.ListaUbicacion = new List <RequestNegocioRegistrarUbicacionRegistrarDto>(); } if (modelo.ListaUbicacion.Any()) { int cantidadOkEsperadas = modelo.ListaUbicacion.Count; int cantidadUbicacionesOk = 0; foreach (var negUbi in modelo.ListaUbicacion) { var entUbi = new RequestNegocioUbicacionRegistrarDto { IdNegocio = idNuevo, Descripcion = negUbi.Descripcion, Titulo = negUbi.Titulo, Latitud = negUbi.Latitud, Longitud = negUbi.Longitud, Predeterminado = false }; if (negUbi.Predeterminado == 1) { entUbi.Predeterminado = true; } long idNuevoUbicacion = 0; int resultadoUbicacion = lnNegocioUbicacion.Registrar(entUbi, ref idNuevoUbicacion); if (resultadoUbicacion > 0 && idNuevoUbicacion > 0) { cantidadUbicacionesOk++; } } if (cantidadOkEsperadas == cantidadUbicacionesOk) { scope.Complete(); } } else { scope.Complete(); } } } catch (Exception ex) { Log(Level.Error, ex.InnerException == null ? ex.Message : ex.InnerException.Message); } return(respuesta); }