public static ControladoraUsuarios getInstance(IOptions<AppSettingsMongo> settings) { if (_instance == null) { _instance = new ControladoraUsuarios(settings); } return _instance; }
/// <summary> /// Se edita el vehiculo pasado. El id del vehiculo se utiliza para reconstruir el objeto ObjectId. /// si no se pasa un chofer, se crea solo un vehiculo /// </summary> /// <param name="vehiculo"></param> /// <param name="idVehiculo"></param> /// <param name="choferSeleccionado"></param> /// <param name="tipoVehiculo"></param> /// <returns></returns> public async Task editarVehiculo(Vehiculo vehiculo, string idVehiculo, string choferSeleccionado, TipoVehiculo tipoVehiculo) { try { if (vehiculo != null && !choferSeleccionado.Equals("000000000000000000000000")) { vehiculo.Id = new ObjectId(idVehiculo); vehiculo.Unidades = calcularUnidades(vehiculo.Alto, vehiculo.Ancho, vehiculo.Largo); vehiculo.Tipo = tipoVehiculo; //Chofer chofer = await DBRepositoryMongo<Chofer>.GetItemAsync(choferSeleccionado, "Choferes"); Chofer chofer = await ControladoraUsuarios.getInstance(_settings).getChofer(choferSeleccionado); if (chofer != null) { vehiculo.Chofer = chofer; } chofer = chofer.Encriptar(chofer); await DBRepositoryMongo <Vehiculo> .UpdateAsync(vehiculo.Id, vehiculo, "Vehiculos"); Vehiculo eliminar = null; foreach (Vehiculo v in Vehiculos) { if (v.Id.ToString().Equals(idVehiculo)) { if (v.Disponible && v.Items.Count > 0)// me fijo que no este en un viaje { eliminar = v; } } } if (eliminar != null) { Vehiculos.Remove(eliminar); Vehiculos.Add(vehiculo); } } else if (vehiculo != null && choferSeleccionado.Equals("000000000000000000000000")) { vehiculo.Id = new ObjectId(idVehiculo); vehiculo.Unidades = calcularUnidades(vehiculo.Alto, vehiculo.Ancho, vehiculo.Largo); vehiculo.Tipo = tipoVehiculo; vehiculo.Chofer = new Chofer(); await DBRepositoryMongo <Vehiculo> .UpdateAsync(vehiculo.Id, vehiculo, "Vehiculos"); Vehiculo eliminar = null; foreach (Vehiculo v in Vehiculos) { if (v.Id.ToString().Equals(idVehiculo)) { eliminar = v; } } Vehiculos.Remove(eliminar); Vehiculos.Add(vehiculo); } else { throw new MensajeException("Ha ocurrido un error inesperado, vuelva a intentarlo mas tarde"); } } catch (MensajeException msg) { throw msg; } catch (Exception ex) { throw ex; } }