public bool GrabarReUbicacionDomicilio(IDictionary <string, object> domicilio)
    {
        using (EntidadesConosud dc = new EntidadesConosud())
        {
            DomiciliosPersonal current = null;

            long id = long.Parse(domicilio["Id"].ToString());

            current = (from v in dc.DomiciliosPersonal
                       where v.Id == id
                       select v).FirstOrDefault();


            current.LatitudReposicion  = domicilio["LatitudReposicion"] != null ? domicilio["LatitudReposicion"].ToString() : null;
            current.LongitudReposicion = domicilio["LongitudReposicion"] != null ? domicilio["LongitudReposicion"].ToString() : null;

            dc.SaveChanges();
        }
        return(true);
    }
    public object LimpiarClave(IDictionary <string, object> domicilio)
    {
        using (EntidadesConosud dc = new EntidadesConosud())
        {
            DomiciliosPersonal current = null;

            if (domicilio.ContainsKey("Id"))
            {
                long id = long.Parse(domicilio["Id"].ToString());

                current = (from v in dc.DomiciliosPersonal
                           where v.Id == id
                           select v).FirstOrDefault();

                current.Clave = CLAVE_BASE;
                dc.SaveChanges();
            }
        }

        return(null);
    }
    public object GrabarDomicilio(IDictionary <string, object> domicilio)
    {
        using (EntidadesConosud dc = new EntidadesConosud())
        {
            DomiciliosPersonal current = null;
            long?valorNull             = null;


            if (domicilio.ContainsKey("Id"))
            {
                long id = long.Parse(domicilio["Id"].ToString());

                current = (from v in dc.DomiciliosPersonal
                           where v.Id == id
                           select v).FirstOrDefault();

                if (domicilio.ContainsKey("LineaAsignada") && domicilio["LineaAsignada"] != null && long.Parse(domicilio["LineaAsignada"].ToString()) > 0 &&
                    (current.LineaAsignada == null || current.LineaAsignada.Value != long.Parse(domicilio["LineaAsignada"].ToString())))
                {
                    long LineaAsignada = long.Parse(domicilio["LineaAsignada"].ToString());

                    int?capacidadMaxima = (from r in dc.CabeceraRutasTransportes
                                           where r.Id == LineaAsignada
                                           select r.Capacidad).FirstOrDefault();

                    if (capacidadMaxima != null)
                    {
                        int legajosAsignados = (from r in dc.DomiciliosPersonal
                                                where r.LineaAsignada == LineaAsignada
                                                select r).Count();

                        //if (legajosAsignados + 1 > capacidadMaxima)
                        //    return "No se puede asiganar este legajo al recorrido seleccionado ya que supera la capacidad máxima del recorrido (cap. max.: " + capacidadMaxima.ToString() + ")";
                    }
                }
            }
            else
            {
                if (domicilio.ContainsKey("LineaAsignada") && domicilio["LineaAsignada"] != null && long.Parse(domicilio["LineaAsignada"].ToString()) > 0)
                {
                    long LineaAsignada = long.Parse(domicilio["LineaAsignada"].ToString());

                    int?capacidadMaxima = (from r in dc.CabeceraRutasTransportes
                                           where r.Id == LineaAsignada
                                           select r.Capacidad).FirstOrDefault();

                    if (capacidadMaxima != null)
                    {
                        int legajosAsignados = (from r in dc.DomiciliosPersonal
                                                where r.LineaAsignada == LineaAsignada
                                                select r).Count();

                        //if (legajosAsignados + 1 > capacidadMaxima)
                        //    return "No se puede asiganar este legajo ya que supera la capacidad máxima de la línea (cap. max.: " + capacidadMaxima.ToString() + ")";
                    }
                }


                current       = new DomiciliosPersonal();
                current.Clave = CLAVE_BASE;
                dc.AddToDomiciliosPersonal(current);
            }



            if (current.Domicilio != domicilio["Domicilio"].ToString() || current.Poblacion != domicilio["Poblacion"].ToString() || current.Distrito != domicilio["Distrito"].ToString())
            {
                current.Latitud  = null;
                current.Longitud = null;
            }
            else
            {
                current.Latitud  = domicilio.ContainsKey("Latitud") && domicilio["Latitud"] != null ? domicilio["Latitud"].ToString() : null;
                current.Longitud = domicilio.ContainsKey("Longitud") && domicilio["Longitud"] != null ? domicilio["Longitud"].ToString() : null;
            }

            current.NombreLegajo = domicilio["NombreLegajo"].ToString();
            current.Domicilio    = domicilio["Domicilio"].ToString();
            current.Poblacion    = domicilio["Poblacion"].ToString();
            current.Distrito     = domicilio["Distrito"].ToString();
            current.TipoTurno    = domicilio.ContainsKey("TipoTurno") ? domicilio["TipoTurno"].ToString() : null;
            current.TipoServicio = domicilio.ContainsKey("TipoServicio") && domicilio["TipoServicio"] != null ? domicilio["TipoServicio"].ToString() : "";
            current.DestinoRuta  = domicilio.ContainsKey("DestinoRuta") && domicilio["DestinoRuta"] != null?long.Parse(domicilio["DestinoRuta"].ToString()) : valorNull;

            current.UbicacionTrabajo = domicilio.ContainsKey("UbicacionTrabajo") && domicilio["UbicacionTrabajo"] != null ? domicilio["DestinoRuta"].ToString() : "REFINERIA";


            current.Legajo = domicilio.ContainsKey("Legajo") ? domicilio["Legajo"].ToString() : "";

            current.Telefono = domicilio.ContainsKey("Telefono") && domicilio["Telefono"] != null ? domicilio["Telefono"].ToString() : "";
            current.Correo   = domicilio.ContainsKey("Correo") && domicilio["Correo"] != null ? domicilio["Correo"].ToString() : "";
            current.Chofer   = domicilio.ContainsKey("Chofer") && domicilio["Chofer"] != null?bool.Parse(domicilio["Chofer"].ToString()) : false;

            current.Activo = domicilio.ContainsKey("Activo") && domicilio["Activo"] != null?bool.Parse(domicilio["Activo"].ToString()) : false;



            if (domicilio.ContainsKey("LineaAsignada") && domicilio["LineaAsignada"] != null && long.Parse(domicilio["LineaAsignada"].ToString()) > 0)
            {
                current.LineaAsignada = long.Parse(domicilio["LineaAsignada"].ToString());
            }
            if (domicilio.ContainsKey("Empresa") && domicilio["Empresa"] != null && long.Parse(domicilio["Empresa"].ToString()) > 0)
            {
                current.Empresa = long.Parse(domicilio["Empresa"].ToString());
            }

            if (current.TipoTurno == "TURNO")
            {
                current.LineaAsignadaVuelta = null;
            }
            else
            if (domicilio.ContainsKey("LineaAsignadaVuelta") && domicilio["LineaAsignadaVuelta"] != null && long.Parse(domicilio["LineaAsignadaVuelta"].ToString()) > 0)
            {
                current.LineaAsignadaVuelta = long.Parse(domicilio["LineaAsignadaVuelta"].ToString());
            }


            dc.SaveChanges();

            return(null);
        }
    }
    public object AprobarSolicitud(IDictionary <string, object> domicilio)
    {
        using (EntidadesConosud dc = new EntidadesConosud())
        {
            DomiciliosPersonal current = null;

            if (domicilio.ContainsKey("Id"))
            {
                long id = long.Parse(domicilio["Id"].ToString());

                current = (from v in dc.DomiciliosPersonal
                           where v.Id == id
                           select v).FirstOrDefault();
            }

            if (current.Domicilio != domicilio["Domicilio"].ToString() || current.Poblacion != domicilio["Poblacion"].ToString() || current.Distrito != domicilio["Distrito"].ToString())
            {
                current.Latitud  = null;
                current.Longitud = null;
            }
            else
            {
                current.Latitud  = domicilio.ContainsKey("Latitud") && domicilio["Latitud"] != null ? domicilio["Latitud"].ToString() : null;
                current.Longitud = domicilio.ContainsKey("Longitud") && domicilio["Longitud"] != null ? domicilio["Longitud"].ToString() : null;
            }

            current.NombreLegajo = domicilio["NombreLegajo"].ToString();
            current.Domicilio    = domicilio["Domicilio"].ToString();
            current.Poblacion    = domicilio["Poblacion"].ToString();
            current.Distrito     = domicilio["Distrito"].ToString();
            current.TipoTurno    = domicilio.ContainsKey("TipoTurno") ? domicilio["TipoTurno"].ToString() : null;
            current.Legajo       = domicilio.ContainsKey("Legajo") ? domicilio["Legajo"].ToString() : "";

            if (domicilio.ContainsKey("LineaAsignada") && domicilio["LineaAsignada"] != null && long.Parse(domicilio["LineaAsignada"].ToString()) > 0)
            {
                current.LineaAsignada = long.Parse(domicilio["LineaAsignada"].ToString());
            }
            if (domicilio.ContainsKey("Empresa") && domicilio["Empresa"] != null && long.Parse(domicilio["Empresa"].ToString()) > 0)
            {
                current.Empresa = long.Parse(domicilio["Empresa"].ToString());
            }

            if (current.TipoTurno == "TURNO")
            {
                current.LineaAsignadaVuelta = null;
            }
            else
            if (domicilio.ContainsKey("LineaAsignadaVuelta") && domicilio["LineaAsignadaVuelta"] != null && long.Parse(domicilio["LineaAsignadaVuelta"].ToString()) > 0)
            {
                current.LineaAsignadaVuelta = long.Parse(domicilio["LineaAsignadaVuelta"].ToString());
            }


            current.EstadoActulizacion = "APROBADO";
            current.FechaAprobacionRechazoSolicitud = DateTime.Now;
            current.DatosActualizacion = "";

            dc.SaveChanges();

            return(null);
        }
    }