public bool loginTaxista(string codigoTaxista, string apikey)
        {
            //variables de twilio
            string AccountSid = Constantes.ACCOUNT_SID_CABSPOT;
            string AuthToken = Constantes.AUTH_TOKEN_CABSPOT;
            var twilio = new TwilioRestClient(AccountSid, AuthToken);

            //buscar el taxista que tiene ese codigoTaxista
            if (!string.IsNullOrEmpty(codigoTaxista) && !string.IsNullOrEmpty(apikey))
            {
                var taxistasCodigo = (from t in db.taxistas where t.codigoTaxista.Equals(codigoTaxista) select t);   //taxistas.BuscarPorCodigo(codigoTaxista);
                taxistas taxistaLogin = null;
                if(taxistasCodigo.Count() > 0)
                {
                    taxistaLogin = taxistasCodigo.First();
                    taxistaLogin.apikey = apikey;
                    db.Entry(taxistaLogin).State = EntityState.Modified;
                    db.SaveChanges();
                }
                else
                {
                    return false;
                }
                


                if (taxistaLogin != null)
                {
                    //enviar mensaje de texto 
                    autenticacionsmstaxista sms = taxistas.generarCodigoTaxista(taxistaLogin.idTaxista);
                    if (sms != null)
                    {
                        try
                        {
                            //formato EI64 para el numero
                            var numero = contactos.FormatearCelular(taxistaLogin.personas.contactos.telefonoMovil);  
                            //si el numero no esta en el formato correcto SALIR
                            if (numero == null)
                            {
                                return false;
                            }
                            //enviando mensaje
                            var message = twilio.SendMessage(Constantes.PHONE_CABSPOT, numero, Constantes.Mensaje_Codigo + sms.codigo);

                            //guardando apikey
                            try
                            {
                                //actualizar entidad
                                taxistaLogin.apikey = apikey;
                                db.Entry(taxistaLogin).State = EntityState.Modified;

                                db.SaveChanges();
                            }
                            catch (Exception e) { }



                            //respuesta si el mensaje fue enviado o no
                            if (!string.IsNullOrEmpty(message.Sid))
                                return true;
                            return false;
                        }
                        catch (Exception e)
                        {
                            return false;
                        }
                    }
                    return false;
                    
                }
                return false; 
            }
            return false;          
        }
        public IHttpActionResult autenticarTaxista(string codigoVerificacion)
        {
            if (!string.IsNullOrEmpty(codigoVerificacion))
            {
                //buscar codigo en tabla autenticacionsmstaxista
                autenticacionsmstaxista sms = new autenticacionsmstaxista();// = autenticacionsmstaxista.getAutenticacionSMS(codigoVerificacion);
                
                var listaSMS = from l in db.autenticacionSmsTaxista where l.codigo.Equals(codigoVerificacion) select l;
                if (listaSMS.Count() > 0)
                {
                    sms = listaSMS.FirstOrDefault();
                }
                

                if (sms != null)
                {
                    //revisar codigo no ha sido verificado
                    if (!sms.verificado)
                    {
                        //buscar taxista
                        taxistas taxista = db.taxistas.Find(sms.idTaxista);
                        
                        if (taxista != null)
                        {
                            //cambio de verificado en DB
                            sms.verificado = true;
                            var vehiculos = taxista.vehiculos.Where(v => v.idEstadoVehiculo == 31);

                            //cambiando estado del taxista a disponible si tiene por lo menos un vehiculo activo
                            if (vehiculos.Count() > 0 && taxista.idEstadoDisponibilidad != 81)
                            {
                                taxista.idEstadoDisponibilidad = 81;
                            }
                                                        
                            try
                            {
                                //actualizando en bd
                                db.Entry(sms).State = EntityState.Modified;
                                db.Entry(taxista).State = EntityState.Modified;
                                db.SaveChanges();
                                //devolver taxista
                                //return Ok(taxista);
                                return getVehiculos(taxista.idTaxista);  //Ok(vehiculosEnviar);
                            }
                            catch (Exception e)
                            {
                                return BadRequest();
                            }
                            
                        }
                        else
                        {
                            return BadRequest();
                        }                        
                    }
                    else
                    {
                        return BadRequest();
                    }
                }
                else
                {
                    return NotFound();
                }                
            }
            else
            {
                return BadRequest();
            }
        }