using Exferia_Aplicacion.Herencia.Abstractas;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Exferia_Aplicacion.Modelos_MantenimientoSimple;
using Exferia_Aplicacion.General;
using Exferia_EntityFramework;
using Exferia_Maestros.General;
using Exferia_Maestros._3_Vistas.Listados;
using Exferia_Maestros._3_Vistas.ListadosAgrupaciones;
using Exferia_Maestros._0_Modelos;
using Exferia_Aplicacion.Modelos_Maestros;
using Exferia_Aplicacion.Modelos_Listado_Filtros;
using static Exferia_Aplicacion.General.Enumerados;

namespace Exferia_Maestros._3_Vistas.MantenimientoSimple
{
    public class ABS_MantenimientoAgrupacionesCabecera_MAE_AgrupacionesArticulosCabeceras : ABS_MantenimientoAgrupacionesCabecera
    {
        public override string NOMBRE_LIBRERIA()
        {
            return Variables.G_STR_LIBRERIA_MAESTROS;
        }

        public override string NOMBRE_CLASE_DATOSAGRUPACIONESLINEAS()
        {
            return Variables.G_STR_LIBRERIA_DATOSMAESTROS;
        }

        public override string NOMBRE_PROCEDIMIENTO_EXISTENREPETIDOS()
        {
            return Variables.G_STR_LIBRERIA_DATOSMAESTROS_PROCEDIMIENTO_AGRUPACIONESLINEAS_EXISTENREPETIDOS;
        }

        public override string NOMBRE_PROCEDIMIENTO_REGISTROSREPETIDOS()
        {
            return Variables.G_STR_LIBRERIA_DATOSMAESTROS_PROCEDIMIENTO_AGRUPACIONESLINEAS_OBTENERREGISTROREPETIDOS;
        }

        #region Cabecera
        public override string OPCION_CABECERA()
        {
            return Variables.G_STR_OPCION_MAE_AGRUPACIONARTICULOCABECERA;
        }
        public override string NOMBRE_TABLA_CABECERA()
        {
            return nameof(MAE_AgrupacionesArticulosCabeceras);
        }

        public override string NOMBRE_CAMPO_ID_CABECERA()
        {
            return nameof(MAE_AgrupacionesArticulosCabeceras.id);
        }

        public override string NOMBRE_CAMPO_IDEMPRESA_CABECERA()
        {
            return nameof(MAE_AgrupacionesArticulosCabeceras.idEmpresa);
        }
        public override string NOMBRE_CAMPO_CODIGO_CABECERA()
        {
            return nameof(MAE_AgrupacionesArticulosCabeceras.codigo);
        }

        public override bool TIENE_FECHABORRADO_CABECERA()
        {
            return true;
        }
        public override bool ES_DEARTICULO_CABECERA()
        {
            return true;
        }

        public override ABS_Listado LISTADO_LINEAS()
        {
            return new ABS_Listado_MAE_AgrupacionesArticulosLineas();
        }
        #endregion

        #region Lineas
        public override string OPCION_LINEA()
        {
            return Variables.G_STR_OPCION_MAE_AGRUPACIONARTICULOLINEA;
        }
        public override string NOMBRE_TABLA_LINEA()
        {
            return nameof(MAE_AgrupacionesArticulosLineas);
        }

        public override string NOMBRE_CAMPO_ID_LINEA()
        {
            return nameof(MAE_AgrupacionesArticulosLineas.id);
        }

        public override string NOMBRE_CAMPO_IDEMPRESA_LINEA()
        {
            return nameof(MAE_AgrupacionesArticulosLineas.idEmpresa);
        }
        public override string NOMBRE_CAMPO_CODIGO_LINEA()
        {
            return nameof(MAE_AgrupacionesArticulosLineas.codigo);
        }

        public override bool TIENE_FECHABORRADO_LINEA()
        {
            return true;
        }

        public override ABS_Listado ABS_LISTADO_INCLUIRREGISTROS()
        {
            return new ABS_ListadoAgrupaciones_MAE_Articulos_IncluirRegistros();
        }

        public override ABS_Listado ABS_LISTADO_REGISTROSSELECCIONADOS()
        {
            return new ABS_ListadoAgrupaciones_MAE_Articulos_RegistrosSeleccionados();
        }

        public override string NOMBRE_CAMPO_SELECCIONAR_LINEA()
        {
            return nameof(INTERNO_MAE_Articulos_Listado_Modelo.Seleccionar);
        }

        public override bool MOSTRAR_SELECCION_COLORES()
        {
            return false;
        }

        public override bool MOSTRAR_SELECCION_IMAGEN()
        {
            return true;
        }

        public override bool MOSTRAR_CAMPO_ORDEN()
        {
            return false;
        }
        public override string NOMBRE_CAMPO_ORDEN_LINEA()
        {
            return "";
        }

        public override Dictionary<string, object> FILTROS()
        {
            //Instanciar la Variable
            Dictionary<string, object>  dct_ListadoFiltros = new Dictionary<string, object>();

            INTERNO_Listado_Filtros_Fecha_Modelo mdl_INTERNO_Listado_Filtros_Fecha_Modelo = new INTERNO_Listado_Filtros_Fecha_Modelo();
            mdl_INTERNO_Listado_Filtros_Fecha_Modelo.CAMPO = nameof(INTERNO_MAE_Articulos_Listado_Modelo.fechaBaja);
            mdl_INTERNO_Listado_Filtros_Fecha_Modelo.CONDICIONAL = (int)G_ENUM_CONDICIONALES.Y;
            mdl_INTERNO_Listado_Filtros_Fecha_Modelo.OPCION = Variables.G_MDL_INTERNO_CODIGODESCRIPCION_OPCIONES_FECHA_PERSONALIZADA.Codigo;
            mdl_INTERNO_Listado_Filtros_Fecha_Modelo.PRIMERA_FECHA = Variables.G_DTT_FECHA_INICIAL_PORDEFECTO;
            mdl_INTERNO_Listado_Filtros_Fecha_Modelo.PRIMERA_TIPOBUSQUEDA = Variables.G_MDL_INTERNO_CODIGODESCRIPCION_TIPOBUSQUEDA_FECHA_POSTERIORA.Codigo;
            mdl_INTERNO_Listado_Filtros_Fecha_Modelo.SEGUNDA_FECHA = null;
            mdl_INTERNO_Listado_Filtros_Fecha_Modelo.SEGUNDA_TIPOBUSQUEDA = Variables.G_MDL_INTERNO_CODIGODESCRIPCION_TIPOBUSQUEDA_FECHA_IGUALA.Codigo;
            dct_ListadoFiltros.Add(nameof(INTERNO_MAE_Articulos_Listado_Modelo.fechaBaja), mdl_INTERNO_Listado_Filtros_Fecha_Modelo);

            return dct_ListadoFiltros;
        }

        #endregion

        #region LineasFoto
        public override string OPCION_LINEAFOTO()
        {
            return Variables.G_STR_OPCION_MAE_AGRUPACIONARTICULOLINEAFOTOS;
        }
        #endregion

        #region LineasImpresora
        public override bool MOSTRAR_LINEA_IMPRESORA()
        {
            return false;
        }

        public override string NOMBRE_PROCEDIMIENTO_LINEAS_IMPRESORA_GRABAR()
        {
            return "";
        }

        public override ABS_Listado ABS_LISTADO_INCLUIRREGISTROS_IMPRESORA()
        {
            return null;
        }

        public override ABS_Listado ABS_LISTADO_REGISTROSSELECCIONADOS_IMPRESORA()
        {
            return null;
        }

        public override string IMPRESORA_NOMBRE_LIBRERIA()
        {
            return "";
        }

        public override string IMPRESORA_NOMBRE_OPCION()
        {
            return "";
        }
        #endregion

    }
}
