// 
// 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.Text;
using System.IO;
using System.Windows.Forms;
using operador.iexplorer;
using ateneo.utiles;

namespace operador
{
    public class ProcesoClienteRenta : ProcesoCliente
    {
        private const string pathImpresas = "C:\\AEAT\\Ateneo\\Operador\\Productos";
        private int impresas = 0;
        private int intranet = 0;
        private string cadenaFinalizacion;
        private ConjuntoSinRepetidos listaPdf;
        private ConjuntoSinRepetidos listaInm;
        private ConjuntoSinRepetidos listaBrc;
        private ConjuntoSinRepetidos listaBrr;
        int numeroCitas = 1;
        int numeroRentas = 0;
        int numeroModificados = 0;
        int numeroConfirmados = 0;
        public bool hayDatosTitular;
        public bool hayDatosConyuge;

        public ProcesoClienteRenta(Principal central) : base(central) { }

        public override void procesoInicial() {
            navegar();
            if (indicadores != null && indicadores.StartsWith("D")) {
                MessageBox.Show(" **  ATENCIÓN ** \nVerifique modificación en los datos de DOMICILIO");
            }
            if (indicadores != null && indicadores.Length > 13)
            {
                if (indicadores.Substring(13, 1) == " " || indicadores.Substring(13, 1) == "X") return;
               
                string tiponot = indicadores.Substring(13, 1);
                string mensa = " **  ATENCIÓN ** \nNotificaciones Pendientes:";
                switch (tiponot) {
                    case "T":
                        mensa += "\n  Titular con Notificaciones Pendientes";
                        break;
                    case "C":
                        mensa += "\n  Cónyuge con Notificaciones Pendientes";
                        break;
                    case "A":
                        mensa += "\n  Ambos Titulares tienen Notificaciones Pendientes";
                        break;
                }
                MessageBox.Show(mensa);
            }
        }

        public override void procesoFinalizacionEspecial() {
            leerValoresDeImpresasTxt();
            cadenaFinalizacion = numeroCitas + "|" + numeroRentas + "|" + numeroModificados + "|" + numeroConfirmados +
                "|" + impresas + "|" + intranet + "|" + ticket + "|" + colaActual.cola;
            if (central.ieControl != null) {
                try {
                    central.ieControl.cerrarVentanaSec();
                    if (!central.quedanEnLista()) {
                        central.ieControl.navegarHome();
                    }
                } catch (Exception) { }
            }
        }

        public override string getMensajeFinalizacion() {
            return cadenaFinalizacion;
        }

        public void vaciarCarpetaImpresas() {
            string[] ficheros = Directory.GetFiles(pathImpresas, "*.dcl");
            foreach (string fichero in ficheros) {
                File.Delete(fichero);
            }
        }

        void leerValoresDeImpresasTxt() {
            string[] ficheros = Directory.GetFiles(pathImpresas, "*.dcl");
            if (ficheros.Length == 0) return;
            listaPdf = new ConjuntoSinRepetidos();
            listaInm = new ConjuntoSinRepetidos();
            listaBrc = new ConjuntoSinRepetidos();
            listaBrr = new ConjuntoSinRepetidos();
            try {
                foreach (string fich in ficheros) {
                    StreamReader sr = new StreamReader(fich);
                    string cadena = sr.ReadLine();
                    string[] ps = cadena.Split('|');
                    string id = ps[0];
                    string tipo = ps[1].ToUpper();
                    switch (tipo) {
                        case "PDF":
                            listaPdf.Add(id); break;
                        case "INM":
                            listaInm.Add(id); break;
                        case "BRC":
                            listaBrc.Add(id); break;
                        case "BRR":
                            listaBrr.Add(id); break;
                    }
                    sr.Close();
                    File.Delete(fich);
                }
                impresas = listaPdf.Count;
                numeroModificados = listaBrr.Count;
                numeroConfirmados = listaBrc.Count;
                intranet = listaInm.Count;
            } catch (Exception ex) {
                LogExcepcion.guardar("Error en ValoresDeImpresas", ex);
            }
        }

        public override void navegar() {

            if (!Configuracion.instanciaUnica().navegarIntranet || nif.StartsWith("XX")) {
                return;
            }
            central.ieControl.esperarEstadocompleto();
            navegar(nif, apellido);
        }

        public override void navegarConyuge() {
            navegar(nifConyuge, apeConyuge);
        }

        public void navegar(string unNif, string unApellido) {
            string urlPagina = "https://www.aeat/es13/s/dabodaboa33w?EJERCICIO=2011";
            if (central.cargarPagina(urlPagina, urlPagina)) {
                IEDocument doc = central.ieControl.documento;
                doc.setCampoForm("FORM1", "NIF", unNif, "APELLIDO", unApellido);
                doc.clickBoton("FORM1", "Acceder");
            }
        }
    }
}
