#include "Envio.h"
using namespace std;

bool cargar(tEnvio& envio, std::ifstream& archivo) {
	bool carga = false;
	int numItems = 0;

	envio.cont = 0;

	archivo.ignore();
	getline(archivo, envio.destinatario);
	getline(archivo, envio.ciudad);
	archivo >> numItems;
	envio.item = new tItem[numItems];
	for (int i = 0; i < numItems; i++){
		cargar(envio.item[i], archivo);
		envio.cont++;
	}
	if (!archivo.fail()) { carga = true; }

	return carga;
}

void mostrar(tEnvio& envio) {
	cout << "A " << envio.destinatario << " de " << envio.ciudad << ":" << endl;
	for (int i = 0; i < envio.cont; i++){
		mostrar(envio.item[i]);
	}
}

void destruir(tEnvio& envio) {
	delete[] envio.item;
}

int cantidad(tEnvio& envio, std::string id, int& ini, int&fin, int& pos) {
	int cant = 0;

	if (ini <= fin) {
		pos = (ini + fin) / 2;
		if (id < envio.item[pos].id) {
			fin = pos - 1;
			cant = cantidad(envio, id, ini, fin, pos);
		}
		else if (envio.item[pos].id < id) {
			ini = pos + 1;
			cant = cantidad(envio, id, ini, fin, pos);
		}
		else {
			cant = envio.item[pos].cantidad;
		}
	}

	return cant;
}