protected void UiVistaPolignos_CustomCallback(object sender, DevExpress.Web.ASPxGridViewCustomCallbackEventArgs e)
        {
            if (!ValidarConexionYUsuarioLogueado(sender))
            {
                return;
            }

            try
            {
                string etiquetas = "", canales = "";
                switch (e.Parameters.Split('|')[0])
                {
                case "ObtenerPuntosDePoligonoPadre":
                    var lstEtiqueta = UiListaEtiqueta.GridView.GetSelectedFieldValues("TAG_COLOR");
                    var lstCanal    = UiListaCanal.GridView.GetSelectedFieldValues("CHANNEL_ID");

                    etiquetas = lstEtiqueta.Aggregate(etiquetas, (current, tag) => current + (tag + "|"));
                    canales   = lstCanal.Aggregate(canales, (current, canal) => current + (canal + "|"));

                    UsuarioDeseaObtenerPuntosDePoligonoPadre?.Invoke(sender,
                                                                     new PoligonoArgumento
                    {
                        Poligono =
                            new Poligono
                        {
                            POLYGON_ID = int.Parse(UiListaSectorDeFrecuencia.Value.ToString().Split('|')[0])
                        },
                        CHANNEL_ID = canales,
                        TAG_COLOR  = etiquetas
                    });
                    UsuarioDeseaObtenerPuntosDePoligonoPadre?.Invoke(sender, new PoligonoArgumento {
                        Poligono = new Poligono {
                            POLYGON_ID = int.Parse(UiListaSectorDeFrecuencia.Value.ToString().Split('|')[0])
                        }
                    });
                    if (PuntosDePoligonoPadre.Count > 0)
                    {
                        if (e.Parameters.Split('|')[1] == "0")
                        {
                            UiVistaPolignos.JSProperties.Add("cpFormarPoligonoPadre", new Poligono {
                                POLYGON_ID = int.Parse(UiListaSectorDeFrecuencia.Value.ToString().Split('|')[0]), POLYGON_NAME = UiListaSectorDeFrecuencia.Value.ToString().Split('|')[1], Puntos = PuntosDePoligonoPadre
                            });
                        }
                    }
                    UiVistaPolignos.JSProperties.Add("cpCargarClienteDePoligono", ClientesDePoligono);
                    break;

                case "CargarPoligonos":
                    var lstEtiquetas = UiListaEtiqueta.GridView.GetSelectedFieldValues("TAG_COLOR");
                    var lstCanales   = UiListaCanal.GridView.GetSelectedFieldValues("CHANNEL_ID");
                    etiquetas            = lstEtiquetas.Aggregate(etiquetas, (current, tag) => current + (tag + "|"));
                    canales              = lstCanales.Aggregate(canales, (current, canal) => current + (canal + "|"));
                    PoligonossDeVendedor = new List <Poligono>();
                    var codigoVendedor = UiListaVendedor.Value.ToString().Split('|')[0];
                    if (!string.IsNullOrEmpty(UiListaSectorDeFrecuencia.Value?.ToString()) && !string.IsNullOrEmpty(codigoVendedor))
                    {
                        UsuarioDeseaOptenerPoligonosTipoRuta?.Invoke(sender, new PoligonoArgumento
                        {
                            Poligono = new Poligono {
                                POLYGON_TYPE = Enums.GetStringValue(TiposDePoligono.Ruta), POLYGON_ID_PARENT = int.Parse(UiListaSectorDeFrecuencia.Value.ToString().Split('|')[0]), IS_MULTIPOLYGON = int.Parse(Enums.GetStringValue(SiNo.Si)), IS_MULTISELLER = int.Parse(Enums.GetStringValue(SiNo.Si))
                            }
                            ,
                            TAG_COLOR = etiquetas
                            ,
                            CHANNEL_ID = canales
                        });    //, IS_MULTIPOLYGON = int.Parse(Enums.GetStringValue(SiNo.Si)),AVAILABLE = int.Parse(Enums.GetStringValue(SiNo.Si)) } });
                        if (PoligonosTipoRuta != null)
                        {
                            if (PoligonosTipoRuta.Count > 0)
                            {
                                UsuarioDeseaObtenerPuntosDePoligono?.Invoke(sender,
                                                                            new PoligonoArgumento
                                {
                                    Poligono =
                                        new Poligono
                                    {
                                        POLYGON_TYPE      = Enums.GetStringValue(TiposDePoligono.Ruta),
                                        POLYGON_ID_PARENT =
                                            int.Parse(UiListaSectorDeFrecuencia.Value.ToString().Split('|')[0])
                                            //,
                                            //IS_MULTIPOLYGON = int.Parse(Enums.GetStringValue(SiNo.Si))
                                            //,
                                            //AVAILABLE = int.Parse(Enums.GetStringValue(SiNo.Si))
                                    }
                                    ,
                                    TAG_COLOR = etiquetas
                                    ,
                                    CHANNEL_ID = canales
                                });

                                foreach (var poligono in PoligonosTipoRuta.Where(poligono => !string.IsNullOrEmpty(poligono.SELLER_CODE)).Where(poligono => poligono.SELLER_CODE.Equals(codigoVendedor) && poligono.IS_MULTIPOLYGON.Equals(int.Parse(Enums.GetStringValue(SiNo.Si)))))
                                {
                                    poligono.IS_MODIFIABLE = int.Parse(Enums.GetStringValue(SiNo.Si));
                                }
                                UiVistaPolignos.JSProperties.Add("cpFormarPoligonos", PoligonosTipoRuta);

                                var poligonoEncontrados = PoligonosTipoRuta.Where(poligono => !string.IsNullOrEmpty(poligono.SELLER_CODE)).Where(poligono => poligono.SELLER_CODE.Equals(codigoVendedor) && poligono.IS_MULTIPOLYGON.Equals(int.Parse(Enums.GetStringValue(SiNo.Si)))).ToList();
                                PoligonossDeVendedor = poligonoEncontrados;
                                UiVistaPolignos.JSProperties.Add("cpEstablecerVendedor", codigoVendedor);
                                //UiVistaPolignos.JSProperties.Add("cpCargarClientes", "Enabled");
                                UiVistaPolignos.JSProperties.Add("cpCargarPolignosParaAsociar", "Enabled");
                                UiVistaPolignos.JSProperties.Add("cpCargarClienteDePoligono", ClientesDePoligono);
                            }
                            else
                            {
                                UiVistaPolignos.JSProperties.Add("cpCargarClienteDePoligono", ClientesDePoligono);
                                UiVistaPolignos.JSProperties.Add("cpCerrarPanelDeCarga", "Enabled");
                            }
                        }
                        else
                        {
                            UiVistaPolignos.JSProperties.Add("cpCargarClienteDePoligono", ClientesDePoligono);
                            UiVistaPolignos.JSProperties.Add("cpCerrarPanelDeCarga", "Enabled");
                        }
                    }
                    break;

                case "ObtenerPoligo":
                    var poligonoSeleccionado = new Poligono();
                    foreach (var item in PoligonosTipoRuta.Where(item => item.POLYGON_ID == int.Parse(e.Parameters.Split('|')[1])))
                    {
                        poligonoSeleccionado = item;
                        break;
                    }
                    UiVistaPolignos.JSProperties.Add("cpEstablecerPoligonoEncabezado", poligonoSeleccionado);
                    break;

                case "ObtenerClientes":
                    UiVistaPolignos.JSProperties.Add("cpCargarClienteDePoligono2", ClientesDePoligono);
                    break;

                case "ObtenerFrecuenciaDePoligono":
                    var poligonoDeFrecuencia = new Poligono();
                    foreach (var item in PoligonosTipoRuta.Where(item => item.POLYGON_ID == int.Parse(UiPoligonoCodigo.Text)))
                    {
                        poligonoDeFrecuencia = item;
                        break;
                    }
                    if (poligonoDeFrecuencia.ID_FREQUENCY != null)
                    {
                        int idFrecuencias = int.Parse(poligonoDeFrecuencia.ID_FREQUENCY.ToString());
                        UsuarioDeseaObtenerFrecuenciaDePoligono?.Invoke(sender, new PoligonoArgumento {
                            Frecuencia = new Frecuencia {
                                ID_FREQUENCY = idFrecuencias
                            }
                        });
                        UiVistaPolignos.JSProperties.Add("cpEstablecerFrecuenciaDePoligono", FrecuenciaDePoligono);
                    }

                    break;

                case "GurdarPoligono":
                    var lstEtiquetasParaGrabar = UiListaEtiqueta.GridView.GetSelectedFieldValues("TAG_COLOR");
                    var lstCanalesParaGrabar   = UiListaCanal.GridView.GetSelectedFieldValues("CHANNEL_ID");
                    etiquetas = lstEtiquetasParaGrabar.Aggregate(etiquetas, (current, tag) => current + (tag + "|"));
                    canales   = lstCanalesParaGrabar.Aggregate(canales, (current, canal) => current + (canal + "|"));


                    var vendedor = new Vendedor
                    {
                        SELLER_CODE = UiListaVendedor.Value.ToString().Split('|')[0]
                        ,
                        ROUTE       = int.Parse(UiListaVendedor.Value.ToString().Split('|')[1]),
                        SELLER_NAME =
                            UiListaVendedor.GridView.GetRowValues(UiListaVendedor.GridView.FocusedRowIndex,
                                                                  "SELLER_NAME").ToString()
                    };


                    var frecuencia = new Frecuencia
                    {
                        SUNDAY           = (UiCheckListaCliente.Items[0].Selected) ? 1 : 0,
                        MONDAY           = (UiCheckListaCliente.Items[1].Selected) ? 1 : 0,
                        TUESDAY          = (UiCheckListaCliente.Items[2].Selected) ? 1 : 0,
                        WEDNESDAY        = (UiCheckListaCliente.Items[3].Selected) ? 1 : 0,
                        THURSDAY         = (UiCheckListaCliente.Items[4].Selected) ? 1 : 0,
                        FRIDAY           = (UiCheckListaCliente.Items[5].Selected) ? 1 : 0,
                        SATURDAY         = (UiCheckListaCliente.Items[6].Selected) ? 1 : 0,
                        FREQUENCY_WEEKS  = int.Parse(UiListaSemanasCliente.Value.ToString()),
                        REFERENCE_SOURCE = "BO",
                        TYPE_TASK        = null
                    };
                    var fecha = UiFechaUltimaVisita.Date;
                    while (DayOfWeek.Sunday != fecha.DayOfWeek)
                    {
                        fecha = fecha.AddDays(-1);
                    }

                    frecuencia.LAST_DATE_VISITED = fecha;
                    frecuencia.LAST_WEEK_VISITED = fecha;
                    frecuencia.LAST_UPDATED_BY   = Session["LOGIN"].ToString();



                    var poligonoDibjugado = new Poligono
                    {
                        POLYGON_ID = int.Parse(UiPoligonoCodigo.Text)
                        ,
                        POLYGON_NAME = UiPoligonoNombre.Text
                        ,
                        POLYGON_DESCRIPTION = UiMemoDescripocion.Text
                        ,
                        COMMENT = string.Empty
                        ,
                        POLYGON_TYPE = Enums.GetStringValue(TiposDePoligono.Ruta)
                        ,
                        Puntos = new List <PoligonoPuntos>()
                        ,
                        LAST_UPDATE_BY = Session["LOGIN"].ToString()
                        ,
                        POLYGON_ID_PARENT = int.Parse(UiListaSectorDeFrecuencia.Value.ToString().Split('|')[0])
                        ,
                        TYPE_TASK = null
                        ,
                        SAVE_ROUTE = 1
                        ,
                        IS_MULTIPOLYGON = int.Parse(Enums.GetStringValue(SiNo.Si))
                        ,
                        AVAILABLE = int.Parse(Enums.GetStringValue(SiNo.Si))
                        ,
                        ROUTE_ID = vendedor.ROUTE
                        ,
                        IS_MULTISELLER = int.Parse(Enums.GetStringValue(SiNo.Si))
                    };

                    /*var validarSiSoloSeActualiza = false;
                     * if (poligonoDibjugado.POLYGON_ID != 0)
                     * {
                     *  if (PoligonosTipoRuta.Any(poligonoExistente => poligonoDibjugado.POLYGON_ID == poligonoExistente.POLYGON_ID && poligonoExistente.HAS_CHILD == 1))
                     *  {
                     *      validarSiSoloSeActualiza = true;
                     *  }
                     * }*/

                    //if (!validarSiSoloSeActualiza)
                    //{
                    var cordenadas = e.Parameters.Split('|')[2].Split('(');

                    for (int i = 0; i < cordenadas.Length; i++)
                    {
                        if (string.IsNullOrEmpty(cordenadas[i]))
                        {
                            continue;
                        }
                        var punto = cordenadas[i].Split(',');

                        var poligonoPunto = new PoligonoPuntos
                        {
                            POSITION = i
                            ,
                            LATITUDE = punto[0].Trim()
                            ,
                            LONGITUDE = punto[1].Replace(")", "").Trim()
                        };
                        poligonoDibjugado.Puntos.Add(poligonoPunto);
                    }

                    var listaTareas = (from object tipoTarea in UiListaCheckTipoDeTareas.SelectedValues select tipoTarea.ToString()).ToList();

                    UsuarioDeseaGrabarPoligonoTipoRuta?.Invoke(sender, new PoligonoArgumento {
                        Poligono = poligonoDibjugado, Vendedor = vendedor, Frecuencia = frecuencia, ListaDeTareas = listaTareas, Canales = canales, Etiquetas = etiquetas
                    });
                    //}
                    //else
                    //{
                    //    UsuarioDeseaActualizarSoloEncabezdo?.Invoke(sender, new PoligonoArgumento { Poligono = poligonoDibjugado });
                    //}
                    break;

                case "BorrarPoligono":
                    var poligonoBorrar = new Poligono
                    {
                        POLYGON_ID = int.Parse(UiPoligonoCodigo.Text)
                        ,
                        POLYGON_ID_PARENT = int.Parse(UiListaSectorDeFrecuencia.Value.ToString().Split('|')[0])
                        ,
                        IS_MULTIPOLYGON = int.Parse(Enums.GetStringValue(SiNo.Si))
                        ,
                        AVAILABLE = int.Parse(Enums.GetStringValue(SiNo.Si))
                    };

                    UsuarioDeseaBorrarPoligonoTipoRuta?.Invoke(sender, new PoligonoArgumento {
                        Poligono = poligonoBorrar
                    });
                    break;

                case "DesAsociar":
                    var poligonoADesAsociar = new Poligono
                    {
                        POLYGON_ID = int.Parse(UiPoligonoCodigo.Text)
                        ,
                        POLYGON_ID_PARENT = int.Parse(UiListaSectorDeFrecuencia.Value.ToString().Split('|')[0])
                        ,
                        IS_MULTIPOLYGON = int.Parse(Enums.GetStringValue(SiNo.Si))
                        ,
                        AVAILABLE = int.Parse(Enums.GetStringValue(SiNo.Si))
                    };

                    UsuarioDeseaDesAsociarPoligono?.Invoke(sender, new PoligonoArgumento {
                        Poligono = poligonoADesAsociar
                    });
                    break;

                case "AsociarPoligonos":
                    var vendedorParaAsociar = new Vendedor
                    {
                        SELLER_CODE = UiListaVendedorAsociar.Value.ToString().Split('|')[0]
                        ,
                        ROUTE = int.Parse(UiListaVendedorAsociar.Value.ToString().Split('|')[1])
                    };

                    vendedorParaAsociar.SELLER_NAME = UiListaVendedorAsociar.GridView.GetRowValues(UiListaVendedorAsociar.GridView.FocusedRowIndex, "SELLER_NAME").ToString();

                    var listaDePoligonoParaaAsociar = new List <Poligono>();
                    var lst = UiListaDePoligonosAsociar.GridView.GetSelectedFieldValues("POLYGON_ID");

                    foreach (var poligono in from item in lst from poligono in PoligonosParaAsociar where int.Parse(item.ToString()) == poligono.POLYGON_ID select poligono)
                    {
                        poligono.LAST_UPDATE_BY    = Session["LOGIN"].ToString();
                        poligono.POLYGON_ID_PARENT = int.Parse(UiListaSectorDeFrecuencia.Value.ToString().Split('|')[0]);
                        poligono.ROUTE_ID          = vendedorParaAsociar.ROUTE;
                        poligono.IS_MULTIPOLYGON   = int.Parse(Enums.GetStringValue(SiNo.Si));
                        poligono.POLYGON_TYPE      = Enums.GetStringValue(TiposDePoligono.Ruta);
                        listaDePoligonoParaaAsociar.Add(poligono);
                    }
                    //listaDePoligonoParaaAsociar.AddRange(from item in lst from poligono in PoligonosTipoRuta where int.Parse(item.ToString()) == poligono.POLYGON_ID select poligono);
                    var listaTareasFrecuenciaUnica = (from object tipoTarea in UiListaCheckTipoDeTareas.SelectedValues select tipoTarea.ToString()).ToList();
                    UsuarioDeseaAsociarPoligonos?.Invoke(sender, new PoligonoArgumento {
                        ListaDePoligonos = listaDePoligonoParaaAsociar, Vendedor = vendedorParaAsociar, ListaDeTareas = listaTareasFrecuenciaUnica
                    });
                    break;

                case "AsignarClientesBajoPeticion":
                    var lstEtiqueta1 = UiListaEtiqueta.GridView.GetSelectedFieldValues("TAG_COLOR");
                    var lstCanal1    = UiListaCanal.GridView.GetSelectedFieldValues("CHANNEL_ID");

                    etiquetas = lstEtiqueta1.Aggregate(etiquetas, (current, tag) => current + (tag + "|"));
                    canales   = lstCanal1.Aggregate(canales, (current, canal) => current + (canal + "|"));
                    UsuarioDeseaAsignarClientesSinPoligono?.Invoke(sender, new PoligonoArgumento
                    {
                        LOGIN    = Session["LOGIN"].ToString(),
                        Poligono = new Poligono
                        {
                            POLYGON_ID_PARENT = int.Parse(UiListaSectorDeFrecuencia.Value.ToString().Split('|')[0])
                        },
                        CHANNEL_ID = canales,
                        TAG_COLOR  = etiquetas
                    });
                    break;
                }
            }
            catch (Exception ex)
            {
                EstablecerError(ex.Message, UiVistaPolignos);
            }
        }
Exemple #2
0
        protected void UiVistaPolignos_CustomCallback(object sender, DevExpress.Web.ASPxGridViewCustomCallbackEventArgs e)
        {
            if (!ValidarConexionYUsuarioLogueado(sender))
            {
                return;
            }
            try
            {
                switch (e.Parameters.Split('|')[0])
                {
                case "ObtenerPuntos":
                    UiVistaPolignos.JSProperties.Add("cpFormarPoligonos", PoligonosTipoRegion);
                    break;

                case "CargarPoligonos":
                    UsuarioDeseaOptenerPoligonosTipoRegion?.Invoke(sender, new PoligonoArgumento {
                        Poligono = new Poligono {
                            POLYGON_TYPE = Enums.GetStringValue(TiposDePoligono.Region)
                        }
                    });
                    UsuarioDeseaObtenerPuntosDePoligono?.Invoke(sender, new PoligonoArgumento {
                        Poligono = new Poligono {
                            POLYGON_TYPE = Enums.GetStringValue(TiposDePoligono.Region)
                        }
                    });
                    UiVistaPolignos.JSProperties.Add("cpFormarPoligonos", PoligonosTipoRegion);
                    break;

                case "ObtenerPoligo":
                    var poligono = new Poligono();
                    foreach (var item in PoligonosTipoRegion.Where(item => item.POLYGON_ID == int.Parse(e.Parameters.Split('|')[1])))
                    {
                        poligono = item;
                        break;
                    }
                    UiVistaPolignos.JSProperties.Add("cpEstablecerPoligonoEncabezado", poligono);
                    break;

                case "GurdarPoligono":

                    var poligonoDibjugado = new Poligono
                    {
                        POLYGON_ID = int.Parse(UiPoligonoCodigo.Text)
                        ,
                        POLYGON_NAME = UiPoligonoNombre.Text
                        ,
                        POLYGON_DESCRIPTION = UiMemoDescripocion.Text
                        ,
                        COMMENT = UiMemoComentario.Text
                        ,
                        POLYGON_TYPE = Enums.GetStringValue(TiposDePoligono.Region)
                        ,
                        Puntos = new List <PoligonoPuntos>()
                        ,
                        LAST_UPDATE_BY = Session["LOGIN"].ToString()
                    };

                    var validarSiSoloSeActualiza = false;
                    if (poligonoDibjugado.POLYGON_ID != 0)
                    {
                        if (PoligonosTipoRegion.Any(poligonoExistente => poligonoDibjugado.POLYGON_ID == poligonoExistente.POLYGON_ID && poligonoExistente.HAS_CHILD == 1))
                        {
                            validarSiSoloSeActualiza = true;
                        }
                    }

                    if (!validarSiSoloSeActualiza)
                    {
                        var cordenadas = e.Parameters.Split('|')[2].Split('(');

                        for (int i = 0; i < cordenadas.Length; i++)
                        {
                            if (string.IsNullOrEmpty(cordenadas[i]))
                            {
                                continue;
                            }
                            var punto = cordenadas[i].Split(',');

                            var poligonoPunto = new PoligonoPuntos
                            {
                                POSITION = i
                                ,
                                LATITUDE = punto[0].Trim()
                                ,
                                LONGITUDE = punto[1].Replace(")", "").Trim()
                            };
                            poligonoDibjugado.Puntos.Add(poligonoPunto);
                        }
                        UsuarioDeseaGrabarPoligonoTipoRegion?.Invoke(sender, new PoligonoArgumento {
                            Poligono = poligonoDibjugado, ListaDeTareas = new List <string>()
                        });
                    }
                    else
                    {
                        UsuarioDeseaActualizarSoloEncabezdo?.Invoke(sender, new PoligonoArgumento {
                            Poligono = poligonoDibjugado
                        });
                    }

                    break;

                case "BorrarPoligono":
                    var poligonoBorrar = new Poligono
                    {
                        POLYGON_ID = int.Parse(UiPoligonoCodigo.Text)
                    };

                    UsuarioDeseaBorrarPoligonoTipoRegion?.Invoke(sender, new PoligonoArgumento {
                        Poligono = poligonoBorrar
                    });
                    break;
                }
            }
            catch (Exception ex)
            {
                EstablecerError(ex.Message, sender);
            }
        }
Exemple #3
0
        protected void UiVistaPolignos_CustomCallback(object sender, DevExpress.Web.ASPxGridViewCustomCallbackEventArgs e)
        {
            if (!ValidarConexionYUsuarioLogueado(sender))
            {
                return;
            }

            try
            {
                switch (e.Parameters.Split('|')[0])
                {
                case "ObtenerPuntosPadre":
                    UsuarioDeseaObtenerPuntosDePoligonoPadre?.Invoke(sender, new PoligonoArgumento {
                        Poligono = new Poligono {
                            POLYGON_ID = int.Parse(UiListaSector.Value.ToString().Split('|')[0])
                        }
                    });
                    if (PuntosDePoligonoPadre.Count > 0)
                    {
                        if (e.Parameters.Split('|')[1] == "0")
                        {
                            UiVistaPolignos.JSProperties.Add("cpFormarPoligonoPadre", new Poligono {
                                POLYGON_ID = int.Parse(UiListaSector.Value.ToString().Split('|')[0]), POLYGON_NAME = UiListaSector.Value.ToString().Split('|')[1], Puntos = PuntosDePoligonoPadre
                            });
                            //UiVistaPolignos.JSProperties.Add("cpFormarPoligonoPadre", PuntosDePoligonoPadre);
                        }
                        UiVistaPolignos.JSProperties.Add("cpCargarClienteDePoligono", ClientesDePoligno);

                        PoligonosTipoRuta = new List <Poligono>();
                    }
                    break;

                case "CargarPoligonos":
                    if (!string.IsNullOrEmpty(UiListaSector.Value?.ToString()))
                    {
                        UsuarioDeseaOptenerPoligonosTipoRuta?.Invoke(sender, new PoligonoArgumento {
                            Poligono = new Poligono {
                                POLYGON_TYPE = Enums.GetStringValue(TiposDePoligono.Ruta), POLYGON_ID_PARENT = int.Parse(UiListaSector.Value.ToString().Split('|')[0])
                            }
                        });
                        UsuarioDeseaObtenerPuntosDePoligono?.Invoke(sender, new PoligonoArgumento {
                            Poligono = new Poligono {
                                POLYGON_TYPE = Enums.GetStringValue(TiposDePoligono.Ruta), POLYGON_ID_PARENT = int.Parse(UiListaSector.Value.ToString().Split('|')[0])
                            }
                        });
                        UiVistaPolignos.JSProperties.Add("cpFormarPoligonos", PoligonosTipoRuta);


                        PoligonosTipoRuta = PoligonosTipoRuta.Where(poligonoAbuscar => poligonoAbuscar.IS_MULTIPOLYGON == int.Parse(Enums.GetStringValue(SiNo.No))).Where(poligonoAbuscar => poligonoAbuscar.AVAILABLE == int.Parse(Enums.GetStringValue(SiNo.No))).ToList();
                    }

                    break;

                case "ObtenerPoligo":
                    var poligono = new Poligono();
                    foreach (var item in PoligonosTipoRuta.Where(item => item.POLYGON_ID == int.Parse(e.Parameters.Split('|')[1])))
                    {
                        poligono = item;
                        break;
                    }

                    UiVistaPolignos.JSProperties.Add("cpEstablecerPoligonoEncabezado", poligono);
                    break;

                case "GurdarPoligono":

                    var vendedor = new Vendedor
                    {
                        SELLER_CODE = UiListaVendedor.Value.ToString(),
                        SELLER_NAME =
                            UiListaVendedor.GridView.GetRowValues(UiListaVendedor.GridView.FocusedRowIndex,
                                                                  "SELLER_NAME").ToString()
                    };


                    var poligonoDibjugado = new Poligono
                    {
                        POLYGON_ID = int.Parse(UiPoligonoCodigo.Text)
                        ,
                        POLYGON_NAME = UiPoligonoNombre.Text
                        ,
                        POLYGON_DESCRIPTION = UiMemoDescripocion.Text
                        ,
                        COMMENT = UiMemoComentario.Text
                        ,
                        POLYGON_TYPE = Enums.GetStringValue(TiposDePoligono.Ruta)
                        ,
                        Puntos = new List <PoligonoPuntos>()
                        ,
                        LAST_UPDATE_BY = Session["LOGIN"].ToString()

                        ,
                        POLYGON_ID_PARENT = int.Parse(UiListaSector.Value.ToString().Split('|')[0])
                        ,
                        TYPE_TASK = null
                        ,
                        SAVE_ROUTE = int.Parse(Enums.GetStringValue(SiNo.Si))
                        ,
                    };

                    var listaTareas = (from object tipoTarea in UiListaCheckTipoDeTarea.SelectedValues select tipoTarea.ToString()).ToList();

                    var validarSiSoloSeActualiza = false;
                    if (poligonoDibjugado.POLYGON_ID != 0)
                    {
                        if (PoligonosTipoRuta.Any(poligonoExistente => poligonoDibjugado.POLYGON_ID == poligonoExistente.POLYGON_ID && poligonoExistente.HAS_CHILD == 1))
                        {
                            validarSiSoloSeActualiza = true;
                        }
                    }

                    if (!validarSiSoloSeActualiza)
                    {
                        var cordenadas = e.Parameters.Split('|')[2].Split('(');

                        for (var i = 0; i < cordenadas.Length; i++)
                        {
                            if (string.IsNullOrEmpty(cordenadas[i]))
                            {
                                continue;
                            }
                            var punto = cordenadas[i].Split(',');

                            var poligonoPunto = new PoligonoPuntos
                            {
                                POSITION = i
                                ,
                                LATITUDE = punto[0].Trim()
                                ,
                                LONGITUDE = punto[1].Replace(")", "").Trim()
                            };
                            poligonoDibjugado.Puntos.Add(poligonoPunto);
                        }
                        UsuarioDeseaGrabarPoligonoTipoRuta?.Invoke(sender, new PoligonoArgumento {
                            Poligono = poligonoDibjugado, Vendedor = vendedor, ListaDeTareas = listaTareas
                        });
                    }
                    else
                    {
                        UsuarioDeseaActualizarSoloEncabezdo?.Invoke(sender, new PoligonoArgumento {
                            Poligono = poligonoDibjugado, Vendedor = vendedor, ListaDeTareas = listaTareas
                        });
                    }
                    break;

                case "BorrarPoligono":
                    var poligonoBorrar = new Poligono
                    {
                        POLYGON_ID = int.Parse(UiPoligonoCodigo.Text)
                    };

                    UsuarioDeseaBorrarPoligonoTipoRuta?.Invoke(sender, new PoligonoArgumento {
                        Poligono = poligonoBorrar
                    });
                    break;

                case "ObtenerCliente":
                    var cliente = new Cliente();

                    foreach (var itemCliente in ClientesDePoligno.Where(itemCliente => itemCliente.CODE_CUSTOMER.Equals(e.Parameters.Split('|')[1])))
                    {
                        cliente = itemCliente;
                        break;
                    }
                    UiVistaPolignos.JSProperties.Add("cpEstablecerCliente", cliente);

                    UsuarioDeseaObtenerScoutingDeCliente?.Invoke(sender, new ClienteArgumento {
                        Data = cliente
                    });
                    //UiImagenScouting.ImageUrl = "";
                    UiVistaPolignos.JSProperties.Add("cpEstablecerFoto", Scouting);

                    break;

                case "GrabarFrecuenciaDeCliente":
                    var codigoFrecuencia = ClientesDePoligno.Where(itemCliente => itemCliente.CODE_CUSTOMER.Equals(e.Parameters.Split('|')[1].ToString())).Select(itemCliente => itemCliente.CODE_FREQUENCY).FirstOrDefault();

                    var frecuencia = new Frecuencia(); frecuencia.ID_FREQUENCY = codigoFrecuencia;
                    frecuencia.CODE_CUSTOMER    = e.Parameters.Split('|')[1]; //UiCodigoCliente.Text;
                    frecuencia.SUNDAY           = (UiCheckListaCliente.Items[0].Selected) ? 1 : 0;
                    frecuencia.MONDAY           = (UiCheckListaCliente.Items[1].Selected) ? 1 : 0;
                    frecuencia.TUESDAY          = (UiCheckListaCliente.Items[2].Selected) ? 1 : 0;
                    frecuencia.WEDNESDAY        = (UiCheckListaCliente.Items[3].Selected) ? 1 : 0;
                    frecuencia.THURSDAY         = (UiCheckListaCliente.Items[4].Selected) ? 1 : 0;
                    frecuencia.FRIDAY           = (UiCheckListaCliente.Items[5].Selected) ? 1 : 0;
                    frecuencia.SATURDAY         = (UiCheckListaCliente.Items[6].Selected) ? 1 : 0;
                    frecuencia.FREQUENCY_WEEKS  = int.Parse(UiListaSemanasCliente.Value.ToString());
                    frecuencia.POLYGON_ID       = int.Parse(UiPoligonoCodigo.Text);
                    frecuencia.REFERENCE_SOURCE = "BO";

                    var fecha = UiFechaUltimaVisita.Date;
                    while (DayOfWeek.Sunday != fecha.DayOfWeek)
                    {
                        fecha = fecha.AddDays(-1);
                    }

                    frecuencia.LAST_DATE_VISITED = fecha;
                    frecuencia.LAST_UPDATED_BY   = Session["LOGIN"].ToString();

                    UsuarioDeseaGrabarFrecuenciaCliente?.Invoke(sender, new FrecuenciaArgumento {
                        Data = frecuencia
                    });



                    foreach (var itemCliente in ClientesDePoligno.Where(itemCliente => itemCliente.CODE_CUSTOMER.Equals(e.Parameters.Split('|')[1])))
                    {
                        UiVistaPolignos.JSProperties.Add("cpEstablecerDatosCliente", itemCliente);
                        break;
                    }

                    UiVistaPolignos.JSProperties.Add("cpOcultarPopupCargaRuta", "Enabled");
                    break;

                case "DesAsociar":

                    if (UiPoligonoCodigo.Text.Length <= 0 || UiPoligonoCodigo.Text == "0")
                    {
                        throw new Exception("Debe de seleccionar un poligono.");
                    }

                    var rutaADesasociar = new Ruta
                    {
                        CODE_ROUTE = UiPoligonoCodigo.Text
                    };
                    UsuarioDeseaDesAsociarVendedorDeRuta?.Invoke(sender, new RutaArgumento {
                        Data = rutaADesasociar
                    });
                    UiVistaPolignos.JSProperties.Add("cpCargarPoligonos", "cpCargarPoligonos");
                    break;
                }
            }
            catch (Exception ex)
            {
                EstablecerError(ex.Message, sender);
            }
        }