private ControladoraVehiculos(IOptions <AppSettingsMongo> settings)
        {
            _settings           = settings;
            _controladoraViajes = ControladoraViajes.getInstancia(_settings);
            UbicacionVehiculos  = new Hashtable();
            DBRepositoryMongo <Vehiculo> .Iniciar(_settings);

            DBRepositoryMongo <Chofer> .Iniciar(_settings);

            cargarVehicuos();
            datos();
        }
        public APIController(IOptions <AppSettingsMongo> settings, IHttpContextAccessor httpContextAccessor, IConfiguration configuration)
        {
            _session       = httpContextAccessor.HttpContext.Session;
            _configuration = configuration;
            _httpContext   = httpContextAccessor;
            _settings      = settings;
            DBRepositoryMongo <Usuario> .Iniciar(_settings);

            DBRepositoryMongo <Cliente> .Iniciar(_settings);

            DBRepositoryMongo <Chofer> .Iniciar(_settings);

            _controladoraViajes    = ControladoraViajes.getInstancia(_settings);
            _controladoraVehiculos = ControladoraVehiculos.getInstance(_settings);
            _controladoraUsuarios  = ControladoraUsuarios.getInstance(_settings);
        }
        /// <summary>
        /// guarda un nuevo vehiculo con o sin chofer. si no tiene chofer no queda disponible
        /// </summary>
        /// <param name="vehiculo"></param>
        /// <param name="idChofer"></param>
        /// <returns></returns>
        public async Task nuevoVehiculo(Vehiculo vehiculo, string idChofer)
        {
            try
            {
                if (vehiculo != null && !idChofer.Equals("000000000000000000000000"))
                {
                    Chofer chofer = await getChofer(idChofer);

                    chofer.Disponible   = false;
                    chofer              = chofer.Encriptar(chofer);
                    vehiculo.Chofer     = chofer;
                    vehiculo.Disponible = true;
                    vehiculo.Unidades   = calcularUnidades(vehiculo.Largo, vehiculo.Ancho, vehiculo.Alto);
                    Tarifa t = await ControladoraViajes.getInstancia(_settings).obtenerUltimaTarifa();

                    if (vehiculo.Tipo.Equals(TipoVehiculo.Camioneta))
                    {
                        vehiculo.Tarifa = t.Camioneta;
                    }
                    if (vehiculo.Tipo.Equals(TipoVehiculo.CamionChico))
                    {
                        vehiculo.Tarifa = t.CamionChico;
                    }
                    if (vehiculo.Tipo.Equals(TipoVehiculo.Camion))
                    {
                        vehiculo.Tarifa = t.Camion;
                    }
                    if (vehiculo.Tipo.Equals(TipoVehiculo.CamionGrande))
                    {
                        vehiculo.Tarifa = t.CamionGrande;
                    }
                    if (vehiculo.Tipo.Equals(TipoVehiculo.CamionMudanza))
                    {
                        vehiculo.Tarifa = t.CamionMudanza;
                    }
                    await DBRepositoryMongo <Vehiculo> .Create(vehiculo, "Vehiculos");

                    Vehiculos.Add(vehiculo);
                    await DBRepositoryMongo <Chofer> .UpdateAsync(chofer.Id, chofer, "Choferes");
                }
                else if (vehiculo != null && idChofer.Equals("000000000000000000000000"))
                {
                    Tarifa t = await ControladoraViajes.getInstancia(_settings).obtenerUltimaTarifa();

                    if (vehiculo.Tipo.Equals(TipoVehiculo.Camioneta))
                    {
                        vehiculo.Tarifa = t.Camioneta;
                    }
                    if (vehiculo.Tipo.Equals(TipoVehiculo.CamionChico))
                    {
                        vehiculo.Tarifa = t.CamionChico;
                    }
                    if (vehiculo.Tipo.Equals(TipoVehiculo.Camion))
                    {
                        vehiculo.Tarifa = t.Camion;
                    }
                    if (vehiculo.Tipo.Equals(TipoVehiculo.CamionGrande))
                    {
                        vehiculo.Tarifa = t.CamionGrande;
                    }
                    if (vehiculo.Tipo.Equals(TipoVehiculo.CamionMudanza))
                    {
                        vehiculo.Tarifa = t.CamionMudanza;
                    }
                    vehiculo.Chofer     = new Chofer();
                    vehiculo.Disponible = false;
                    vehiculo.Unidades   = calcularUnidades(vehiculo.Largo, vehiculo.Ancho, vehiculo.Alto);
                    await DBRepositoryMongo <Vehiculo> .Create(vehiculo, "Vehiculos");

                    Vehiculos.Add(vehiculo);
                }
                else
                {
                    throw new MensajeException("Ha ocurrido un error inesperado. Vuelva a intentarlo mas tarde");
                }
            }
            catch (MensajeException msg)
            {
                throw msg;
            }
            catch (Exception e)
            {
                throw (e);
            }
        }