public int SetSolicitud(string data)
        {
            try
            {
                JObject o = JObject.Parse(data);
                var ctx = new Database.DB_InspeccionesEntities();

                string motivo = (string)o["tipoNegocio"];
                DateTime fechaCoordinacion = Convert.ToDateTime((string)o["fechaCoordinacion"]);
                string rutCliente = (string)o["rutCliente"].ToString().Replace(".", "").Replace(".", "");
                string nombre = o["nombre"].ToString();
                string apellidoPaterno = o["apellidoPaterno"].ToString();
                string apellidoMaterno = o["apellidoMaterno"].ToString();
                bool esEmpresa = Convert.ToBoolean(o["esEmpresa"]);
                string direccion = o["direccion"].ToString();
                string telefono1 = o["telefono1"].ToString();
                string telefono2 = o["telefono2"].ToString();
                string email = o["Email"].ToString();
                string contacto = o["contacto"].ToString();
                int idUsuario = Convert.ToInt32(o["usuario"].ToString());
                int comuna = Convert.ToInt32(o["comuna"]);

                JArray vehiculos = (JArray)o["vehiculos"];

                var cliExiste = (from c in ctx.Cliente
                                 where c.Rut == rutCliente
                                 select c).FirstOrDefault();
                Database.Cliente cliente = null;
                if (cliExiste != null)
                {

                    //Se actualiza

                    cliente = cliExiste;
                }
                else
                {
                    cliente = new Database.Cliente()
                    {
                        Rut = rutCliente,
                        Nombre = nombre,
                        RazonSocial = nombre,
                        ApellidoPaterno = apellidoPaterno,
                        ApellidoMaterno = apellidoMaterno,
                        Direccion = direccion,
                        Comuna = comuna,
                        Fono1 = telefono1,
                        Fono2 = telefono2,
                        Email = email,
                        NombreContacto = contacto,
                        Estado = 1
                    };

                    ctx.Cliente.Add(cliente);
                    ctx.SaveChanges();
                }

                var solicitud = new Database.Solicitud()
                {
                    Cliente1 = cliente,
                    Contacto = contacto,
                    Corredor = 1,
                    Estado = 1,
                    FechaSolicitud = DateTime.Now,
                    FechaFinalizacion = DateTime.Now,
                    UsuarioSolicitud = idUsuario
                };
                ctx.Solicitud.Add(solicitud);
                ctx.SaveChanges();

                var usuario = (from u in ctx.Usuario
                               where u.Id == idUsuario
                               select u).FirstOrDefault();

                foreach (var item in vehiculos)
                {
                    int idUsuarioACargo = 0;
                    string nombreSucursal = item["Sucursal"].ToString();
                    var sucursal = (from s in ctx.Sucursal
                                    where s.Nombre == nombreSucursal
                                    select s).FirstOrDefault();
                    //Si es inspector
                    if (usuario.UsuarioSucursal.FirstOrDefault().Cargo == 1)
                    {
                        idUsuarioACargo = usuario.Id;
                    }
                    else
                    {
                        var InspSucursal = (from usuSuc in ctx.UsuarioSucursal
                                            where usuSuc.Sucursal == sucursal.Id
                                            select usuSuc).ToList();

                        if (InspSucursal.Count == 1)
                        {
                            idUsuarioACargo = InspSucursal[0].Usuario;
                        }
                        else
                        {
                            idUsuarioACargo = (from u in InspSucursal
                                               where u.Supervisor == 1
                                               select u).FirstOrDefault().Usuario;
                        }

                    }

                    var inspeccion = new Database.Inspeccion()
                    {
                        Sucursal = sucursal.Id,
                        UsuarioAsociado = idUsuarioACargo,
                        Estado = 1,
                        FechaInspeccion = DateTime.Now,
                        Patente = item["patente"].ToString(),
                        Modelo = Convert.ToInt32(item["idModelo"]),
                        Motivo = Convert.ToInt32(motivo),
                        Solicitud1 = solicitud,
                        TipoVehiculo = item["tipoVehiculo"].ToString(),
                        UsuarioInspector = 1
                    };
                    ctx.Inspeccion.Add(inspeccion);
                    ctx.SaveChanges();
                }
                //TODO: Añadir log
                return solicitud.Id;
            }
            catch(Exception ex)
            {
                var mensaje = ex.InnerException.ToString();
                //TODO: Añadir log.
                return 0;
            }
        }
        public int SetInspeccion(string data)
        {
            JObject o = JObject.Parse(data);
            var ctx = new Database.DB_InspeccionesEntities();
            int idInspeccion = Convert.ToInt32(o["inspeccion"].ToString());
            string observacion = o["lugarInspeccion"].ToString();
               // int clienteRecepcion = Convert.ToInt32(o["nombreContactado"].ToString());
            //var usuarioAsociado = (from u in ctx.Usuario where u.Id == clienteRecepcion select u).FirstOrDefault();
            //int motivoInspeccion = Convert.ToInt32(o["motivoInspeccion"].ToString());

            string motivo = o["motivoInspeccion"].ToString();
            int motivoInspeccion;
            if (motivo == "Negocio nuevo")
            {
                motivoInspeccion = 1;
            }
            else
            {
                motivoInspeccion = 2;
            }

            //int modelo = Convert.ToInt32(o["marcaVehiculo"].ToString());
            //var marcaVehiculo = (from m in ctx.Modelo where m.Id == modelo select m).FirstOrDefault();
            string patente = o["patente"].ToString();
            string color = o["color"].ToString();
            string transmission = o["transmision"].ToString();
            int puertas = Convert.ToInt32(o["puertas"].ToString());
            string numeroMotor = o["numeroMotor"].ToString();
            string numeroChasis = o["numeroChasis"].ToString();
            int kilometraje = Convert.ToInt32(o["kilometraje"].ToString());
            int cilindrada = Convert.ToInt32(o["cilindrada"].ToString());
            string tipoAlarma = o["tipoAlarma"].ToString();
            var ruedaRepuesto = Convert.ToBoolean(o["ruedaRepuesto"].ToString());
            var antena = Convert.ToBoolean(o["antena"].ToString());
            string tipoantena = o["tipoAntena"].ToString();
            string estadoNeumatico = o["estadoNeumatico"].ToString();
            string estadoPintura = o["estadoPintura"].ToString();

            var inspeccion = (from i in ctx.Inspeccion where i.Id == idInspeccion select i).FirstOrDefault();

            if (inspeccion == null)
            {
                return -1;
            }
            else
            {
                inspeccion.Observacion = observacion;
                //inspeccion.UsuarioAsociado = usuarioAsociado.Id;
                inspeccion.Motivo = motivoInspeccion;
                //inspeccion.Modelo = marcaVehiculo.Id;
                inspeccion.Patente = patente;
                inspeccion.Color = color;
                inspeccion.Transmision = transmission;
                inspeccion.Puertas = puertas;
                inspeccion.NroMotor = numeroMotor;
                inspeccion.NroChasis = numeroChasis;
                inspeccion.Kilometraje = kilometraje;
                inspeccion.Cilindrada = cilindrada;
                inspeccion.TipoAlarma = tipoAlarma;
                if (ruedaRepuesto)
                {
                    inspeccion.RuedaRepuesto = 1;
                }
                else
                {
                    inspeccion.RuedaRepuesto = 0;
                }

                if (antena)
                {
                    inspeccion.Antena = 1;
                }
                else {
                    inspeccion.Antena = 0;
                }

                inspeccion.TipoAntena = tipoantena;
                inspeccion.EstadoNeumaticos = estadoNeumatico;
                inspeccion.EstadoPintura = estadoPintura;

                inspeccion.Estado = 3;

                var inspeccionesSolicitud = (from i in ctx.Inspeccion
                where i.Solicitud == inspeccion.Solicitud
                                             select i  ).ToList();
                var todas = true;

                foreach (var item in inspeccionesSolicitud)
                {
                    if (item.Estado != 3)
                    {
                        todas = false;
                    }
                }

                if (todas)
                {
                    var solicitud = (from s in ctx.Solicitud
                                     where s.Id == inspeccion.Solicitud
                                     select s).FirstOrDefault();
                    if (solicitud != null)
                    {
                        solicitud.Estado = 3;
                    }
                }

                ctx.SaveChanges();
                return 0;
            }
        }