#!/usr/bin/python
# -*- coding: utf-8 -*-

""" Ejemplo de Clase de Altas, Bajas y Cambios
	:author: ACL
	:version: 0.1
"""

from Televisor import Televisor
from Reproductor import Reproductor
import pickle
import os


class Prueba:
    """Clase de prueba"""

    def __init__(self):
        """Constructor de la clase"""
        self.__lista = []  # Lista para los objetos creados
        self.__archivo = "ArchivoBD"
        self.__msw = 1
        if os.path.exists(self.__archivo):
            with open(self.__archivo, "rb") as fp:
                self.__lista = pickle.load(fp)
        # print("constructor")

    def __del__(self):
        """Destructor"""
        # print("Destructor")

    def menu(self):
        """menu"""
        sw = {
            "1": self.altas,
            "2": self.bajas,
            "3": self.cambios,
            "4": self.visualiza,
            "9": self.salir,
        }
        while self.__msw:
            # os.system('clear') # NOTA para windows tienes que cambiar clear por cls
            print("Selecciona una opcion")
            print("\t1 - Altas")
            print("\t2 - Bajas")
            print("\t3 - Cambios")
            print("\t4 - Visualizar")
            print("\t9 - salir")
            # solicituamos una opcion al usuario
            opcionMenu = input("inserta un numero >> ")
            sw.get(opcionMenu, self.otro)()

    def altas(self):
        """Altas"""
        print("")
        opcion = input("Deseas dar de alta un Televisor (1) o un reproductor(2)? ")
        if opcion == "1":
            a = Televisor()
            a.captura()
            for i in self.__lista:
                if a.id == i.id:
                    print("Error identificador existe")
                    break
            else:
                self.__lista.append(a)
        elif opcion == "2":
            b = Reproductor()
            b.captura()
            for i in self.__lista:
                if b.id == i.id:
                    print("Error identificador existe")
                    break
            else:
                self.__lista.append(b)

    def bajas(self):
        """Bajas"""
        print("")
        id = input("Identificador a borrar?")
        for i in self.__lista:
            if id == i.id:
                print("identificador borrado")
                print(i.identificador())
                self.__lista.remove(i)

    def cambios(self):
        """Cambios"""
        print("")
        id = input("Identificador a cambiar?")
        for i in self.__lista:
            if id == i.id:
                i.captura()
        else:
            print("identificador no encontrado")

    def visualiza(self):
        """Visualizar"""
        # print("Visualiza la lista de articulos desde la lista")
        # print(self.__lista) # Visualiza el objeto lista
        print("Visualiza la lista de articulos")
        for i in self.__lista:
            # i.visualizar()
            # i.visualizaAtributosJeraquia()
            print(i)

    def salir(self):
        """Salir"""
        self.__msw = 0
        with open(self.__archivo, "wb") as fp:
            pickle.dump(self.__lista, fp)

    def otro(self):
        """En caso de no ser alguna de las opciones definidas"""
        print("")
        input(
            "No has pulsado ninguna opcion correcta...\npulsa una tecla para continuar"
        )


"""
Prueba de las clases
"""
if __name__ == "__main__":
    a = Prueba()
    a.menu()
