#include "ListaPeliculas.h"
using namespace std;


bool cargar(tListaPeliculas & listaPelis){
	bool carga = false;
	ifstream archivo;
	int numPelis = 0;

	listaPelis.cont = 0;
	archivo.open("peliculas.txt");
	if (archivo.is_open()) {
		archivo >> numPelis;
		archivo.ignore();
		while ((!archivo.fail()) && (listaPelis.cont < numPelis)){
			listaPelis.pelicula[listaPelis.cont] = new tPelicula;
			carga = cargar(*listaPelis.pelicula[listaPelis.cont], archivo);
			listaPelis.cont++;
		}
	}

	return carga;
}

void filtrarPorActor(tListaPeliculas & listaPelis, std::string & nombre){
	tListaPeliculas listaAUX;
	listaAUX.cont = 0;

	for (int i = 0; i < listaPelis.cont; i++) {
		if (interviene(*listaPelis.pelicula[i], nombre)) {
			listaAUX.pelicula[listaAUX.cont] = listaPelis.pelicula[i];
			listaAUX.cont++;
		}
	}

	ordenarPorGenero(listaAUX);
	mostrar(listaAUX);
	
}

void mostrar(tListaPeliculas& listaPelis){
	for (int i = 0; i < listaPelis.cont; i++){
		mostrar(*listaPelis.pelicula[i]);
		cout << "---" << endl;
	}
}

void ordenarPorGenero(tListaPeliculas& listaPelis){
	tPelicula* AUX;
	int cont;

	for (int i = 0; i < listaPelis.cont; i++) {
		cont = i;
		while ((cont > 0) && (listaPelis.pelicula[cont]->genero <= listaPelis.pelicula[cont - 1]->genero)) { //
			if (listaPelis.pelicula[cont]->genero == listaPelis.pelicula[cont - 1]->genero) {
				ordenarPorValoracion(*listaPelis.pelicula[cont - 1], *listaPelis.pelicula[cont]);
			}
			else {
				AUX = listaPelis.pelicula[cont];
				listaPelis.pelicula[cont] = listaPelis.pelicula[cont - 1];
				listaPelis.pelicula[cont - 1] = AUX;
			}
			cont--;
		}
	}
}

void ordenarPorValoracion(tPelicula& pelIZQ, tPelicula& pelDER){
	tPelicula AUX;

	if (pelIZQ.valoracion < pelDER.valoracion) {
		AUX = pelIZQ;
		pelIZQ = pelDER;
		pelDER = AUX;
	}
}

void destruir(tListaPeliculas & listaPelis){
	for (int i = 0; i < listaPelis.cont; i++){
		delete listaPelis.pelicula[i];
	}
}
