Exemple #1
0
 /// <summary>
 /// ingresa un nuevo chofer al sistema y lo devuelve
 /// </summary>
 /// <param name="chofer"></param>
 /// <param name="libreta"></param>
 /// <returns>Chofer</returns>
 public async Task<Chofer> CrearChofer(Chofer chofer, LibretaDeConducir libreta)
 {
     Chofer salida = null;
     try
     {
         Chofer c = await DBRepositoryMongo<Chofer>.GetUsuario(chofer.User, "Choferes");
         if (c != null)
         {
             throw new MensajeException("El chofer ya existe");
         }
         else
         {
             salida = chofer;
             salida.Tipo = "Chofer";
             salida.Disponible = true;
             salida.LibretaDeConducir = libreta;
             salida.Leyenda = chofer.Numero + " - " + chofer.Nombre + " " + chofer.Apellido;
             if (salida.Ubicacion == null)
             {
                 salida.Ubicacion = new PosicionSatelital() { Latitud = "", Longitud = "" };
             }
             salida = salida.Encriptar(salida);
             await DBRepositoryMongo<Chofer>.Create(salida, "Choferes");
         }
         return salida;
     }
     catch(MensajeException msg)
     {
         throw msg;
     }catch(Exception ex)
     {
         throw ex;
     }
 }
Exemple #2
0
        /// <summary>
        /// modifica el chofer pasado en la base. Se tienen en cuenta tambien los vehiculos en base y en memoria
        /// </summary>
        /// <param name="chofer"></param>
        /// <param name="idChofer"></param>
        /// <returns></returns>
        public async Task ModificarChofer(Chofer chofer, string idChofer)
        {
            try
            {
                if (chofer != null && idChofer != null)
                {
                    chofer.Id = new ObjectId(idChofer);
                    if (chofer.Ubicacion == null)
                    {
                        chofer.Ubicacion = new PosicionSatelital() { Latitud = "", Longitud = "" };
                    }
                    chofer = chofer.Encriptar(chofer);
                    await DBRepositoryMongo<Chofer>.UpdateAsync(chofer.Id, chofer, "Choferes");
                    Vehiculo v = await ControladoraVehiculos.getInstance(_settings).getVehiculoChofer(idChofer);
                    if (v != null)
                    {
                        v.Chofer = chofer.Encriptar(chofer);
                        await ControladoraVehiculos.getInstance(_settings).editarVehiculo(v, v.Id.ToString(), chofer.Id.ToString(), v.Tipo);
                    }
                }
                else
                {
                    throw new MensajeException("Ha ocurrido un error inesperado. Vuelva a intentarlo mas tarde");
                }

            }
            catch (MensajeException msg)
            {
                throw msg;
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }
        /// <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;
            }
        }
        /// <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);
            }
        }