Exemplo n.º 1
0
 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;
            }
        }