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