Example #1
0
        //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);
        }