// 
// Copyright 2016 Agencia Estatal de Administración Tibutaria
//
// Licencia con arreglo a la EUPL, Versión 1.1 o -en cuanto
// sean aprobadas por la Comisión Europea- versiones
// posteriores de la EUPL (la «Licencia»);
// Solo podrá usarse esta obra si se respeta la Licencia.
// Puede obtenerse una copia de la Licencia en:
//  
// https://joinup.ec.europa.eu/software/page/eupl
//  
// Salvo cuando lo exija la legislación aplicable o se acuerde
// por escrito, el programa distribuido con arreglo a la
// Licencia se distribuye «TAL CUAL», SIN GARANTÍAS NI CONDICIONES
// DE NINGÚN TIPO, ni expresasni implícitas.
//
// Véase la Licencia en el idioma concreto que rige los permisos y 
// limitaciones que establece la Licencia.
// 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace operador
{
    public partial class FormOperacionRealizada : Form
    {
        bool sePuedeCerrar = false;
        public RegistroCatEstadistica seleccionado = null;
        string cadenaFavoritas = null;

        public FormOperacionRealizada() {
            InitializeComponent();
            cargarListaTodas();
            cargarListaFavoritas();
            guardarCadenaFavoritas();
            int contadorFav = listTodas.CheckedItems.Count;
            labelSele.Text = "Favoritas = " + contadorFav.ToString(); 
            Refresh();
        }

        private void guardarCadenaFavoritas() {
        //    cadenaFavoritas = Principal.yo.catEstadisticas.listaFavoritas();
            cadenaFavoritas = Principal.yo.listaFavoritasCatEstadisticas;
        }

        private void cargarListaTodas() {
            TablaCategoriasEstadisticas tabla = Principal.yo.catEstadisticas;
            foreach (RegistroCatEstadistica reg in tabla) {
                if (reg.codigo != "0") {
                    listTodas.Items.Add(reg, reg.favorita);
                }
            }
        }

        private void cargarListaFavoritas() {
            listFavoritas.Items.Clear();
            TablaCategoriasEstadisticas tabla = Principal.yo.catEstadisticas;
            int cuenta = 0;
            foreach (RegistroCatEstadistica reg in tabla) {
                if (reg.favorita && reg.codigo != "0") {
                    listFavoritas.Items.Add(reg);
                    cuenta++;
                }
            }
            if (cuenta == 0) {
                tabControl1.TabPages.Remove(tabPageFavoritas);
            } else {
                if (!tabControl1.TabPages.Contains(tabPageFavoritas)) {
                    tabControl1.TabPages.Insert(0, tabPageFavoritas);
                }
            }
        }

        private void listTodas_ItemCheck(object sender, ItemCheckEventArgs e) {
            RegistroCatEstadistica item = listTodas.Items[e.Index] as RegistroCatEstadistica;
            item.favorita = (e.NewValue == CheckState.Checked);
            cargarListaFavoritas();
            int contadorFav = this.listFavoritas.Items.Count;
            labelSele.Text = "Favoritas = " + contadorFav.ToString(); 
        }

        private void btAceptar_Click(object sender, EventArgs e) {
            RegistroCatEstadistica item = null;
            if (tabControl1.SelectedTab == tabPageFavoritas) {
                item = listFavoritas.SelectedItem as RegistroCatEstadistica;
            } else {
                item = listTodas.SelectedItem as RegistroCatEstadistica;
            }
            if (item != null) {
                if (MessageBox.Show("Se seleccionó " + item.categoria +
                    "\n¿Está seguro?", "DESCRIPCIÓN DE TARÉA REALIZADA",
                    MessageBoxButtons.YesNo) == DialogResult.Yes) {
                 
                    sePuedeCerrar = true;
                    seleccionado = item;
                    DialogResult = DialogResult.OK;
                }
            } else {
                MessageBox.Show("Hay que seleccionar una categoría");
            }
        }

        private void FormOperacionRealizada_FormClosing(object sender, FormClosingEventArgs e) {
            if (!sePuedeCerrar) {
                MessageBox.Show("No puede cerrar esta ventana.\nSeleccione una categoría y pulse ACEPTAR");
                e.Cancel = true;
            } else {
                string favoritasAhora = Principal.yo.catEstadisticas.listaFavoritas();
               // string favoritasAhora = lista2Fovoritas();
                if (favoritasAhora == null || favoritasAhora.Length < 1) favoritasAhora = "0";
                if (favoritasAhora != cadenaFavoritas) {
                    Principal.yo.listaFavoritasCatEstadisticas = favoritasAhora;
                    Principal.yo.enviarFavoritasEstadisticas(favoritasAhora);
                }
            }
        }
        private string lista2Fovoritas()
        {
            string favoS;
            string favoT = "";
            int pi = this.listFavoritas.Items.Count;
            TablaCategoriasEstadisticas tabla = Principal.yo.catEstadisticas;
            for (int i = 0; i < pi; i++)
            {
                favoS = tabla.dameCodigo(listFavoritas.Items[i].ToString());
                if (!favoS.Equals("-1"))
                {
                    favoT = favoT + favoS + ",";
                }
            }
            favoT = favoT.Substring(0, favoT.Length - 1);
            return favoT;
        }

    }
}
