using Exferia_Aplicacion.General;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static Exferia_Aplicacion.General.Enumerados;

namespace Exferia_EntityFramework.Script_Actualizacion
{
    public class Scripts_Version_1159
    {
        public static Version G_VRS_VERSION = new Version("1.1.5.9");
        public static long G_LNG_VERSION = 1159;
        public static int G_INT_TIPO = 0;
        public static string G_STR_SCRIPT =
                                    //CREAR TABLA HPV_SeccionesMenu
                                    " IF not exists " +
                                    " ( " +
                                        " SELECT * " +
                                        " FROM INFORMATION_SCHEMA.TABLES " +
                                        " WHERE TABLE_NAME = 'HPV_SeccionesMenu' " +
                                    " ) " +
                                    " BEGIN " +
                                        " CREATE TABLE [HPV_SeccionesMenu] " +
                                        " ( " +
                                            " [id][bigint] IDENTITY(1,1) NOT NULL, " +
                                            " [codigo] [varchar](13)NOT NULL, " +
                                            " [descripcion] [varchar](50) NOT NULL, " +
                                            " [idEmpresa] [bigint] NOT NULL, " +
                                            " [fechaBorrado][datetime]NULL, " +
                                        " CONSTRAINT[PK_HPV_SeccionesMenu] PRIMARY KEY CLUSTERED " +
                                        " ( " +
                                        " [id] ASC " +
                                        " )WITH(PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON[PRIMARY] " +
                                        " ) ON[PRIMARY] " +
                                        //Releaciones
                                        " ALTER TABLE [HPV_SeccionesMenu] WITH CHECK ADD CONSTRAINT[FK_HPV_SeccionesMenu_GEN_Empresas] FOREIGN KEY([idEmpresa]) REFERENCES [GEN_Empresas] ([id]) " +
                                        " ALTER TABLE [HPV_SeccionesMenu] CHECK CONSTRAINT[FK_HPV_SeccionesMenu_GEN_Empresas] " +
                                    " END " +
                                    //CREAR OPCION HPV_SECCIONESMENU
                                    "IF not exists " +
                                    "( " +
                                        "SELECT * " +
                                        "FROM PRV_Opciones " +
                                        "WHERE opcion = 'HPV_SECCIONESMENU' " +
                                    ") " +
                                    "BEGIN " +
                                        "INSERT INTO " + nameof(PRV_OpcionesDetalle) + " (" + nameof(PRV_OpcionesDetalle.opcion) + "," + nameof(PRV_OpcionesDetalle.descripcion_TituloListado) + "," + nameof(PRV_OpcionesDetalle.descripcion_TituloMantenimiento) + "," + nameof(PRV_OpcionesDetalle.descripcion_Plural) + "," + nameof(PRV_OpcionesDetalle.descripcion_Singular) + "," + nameof(PRV_OpcionesDetalle.camposMostrar_TituloMantenimiento) + ") VALUES('HPV_SECCIONESMENU','Secciones del menú','Sección del menú','Secciones del menú','Sección del menú', 'codigo,descripcion') " +
                                        "INSERT INTO " + nameof(PRV_Opciones) + " (" + nameof(PRV_Opciones.opcion) + "," + nameof(PRV_Opciones.libreria) + "," + nameof(PRV_Opciones.descripcionAMostrar) + "," + nameof(PRV_Opciones.mostrable_Arbol) + "," + nameof(PRV_Opciones.fechaCreacion) + ") VALUES('HPV_SECCIONESMENU','Exferia_HotelPuntoVenta','Secciones del menú',1,GETDATE()) " +
                                        "INSERT INTO " + nameof(PRV_Opcion_Objeto_Permiso) + " (" + nameof(PRV_Opcion_Objeto_Permiso.opcion) + "," + nameof(PRV_Opcion_Objeto_Permiso.idPermiso) + "," + nameof(PRV_Opcion_Objeto_Permiso.idObjeto) + "," + nameof(PRV_Opcion_Objeto_Permiso.opcionPadre) + "," + nameof(PRV_Opcion_Objeto_Permiso.mostrar) + ") VALUES('HPV_SECCIONESMENU',1, NULL,NULL,1) " +
                                        "INSERT INTO " + nameof(PRV_Opcion_Objeto_Permiso) + " (" + nameof(PRV_Opcion_Objeto_Permiso.opcion) + "," + nameof(PRV_Opcion_Objeto_Permiso.idPermiso) + "," + nameof(PRV_Opcion_Objeto_Permiso.idObjeto) + "," + nameof(PRV_Opcion_Objeto_Permiso.opcionPadre) + "," + nameof(PRV_Opcion_Objeto_Permiso.mostrar) + ") VALUES('HPV_SECCIONESMENU',2, NULL,NULL,1) " +
                                        "INSERT INTO " + nameof(PRV_Opcion_Objeto_Permiso) + " (" + nameof(PRV_Opcion_Objeto_Permiso.opcion) + "," + nameof(PRV_Opcion_Objeto_Permiso.idPermiso) + "," + nameof(PRV_Opcion_Objeto_Permiso.idObjeto) + "," + nameof(PRV_Opcion_Objeto_Permiso.opcionPadre) + "," + nameof(PRV_Opcion_Objeto_Permiso.mostrar) + ") VALUES('HPV_SECCIONESMENU',3, NULL,NULL,1) " +
                                        "INSERT INTO " + nameof(PRV_Opcion_Objeto_Permiso) + " (" + nameof(PRV_Opcion_Objeto_Permiso.opcion) + "," + nameof(PRV_Opcion_Objeto_Permiso.idPermiso) + "," + nameof(PRV_Opcion_Objeto_Permiso.idObjeto) + "," + nameof(PRV_Opcion_Objeto_Permiso.opcionPadre) + "," + nameof(PRV_Opcion_Objeto_Permiso.mostrar) + ") VALUES('HPV_SECCIONESMENU',4, NULL,NULL,1) " +
                                        "INSERT INTO " + nameof(PRV_Opcion_Objeto_Permiso) + " (" + nameof(PRV_Opcion_Objeto_Permiso.opcion) + "," + nameof(PRV_Opcion_Objeto_Permiso.idPermiso) + "," + nameof(PRV_Opcion_Objeto_Permiso.idObjeto) + "," + nameof(PRV_Opcion_Objeto_Permiso.opcionPadre) + "," + nameof(PRV_Opcion_Objeto_Permiso.mostrar) + ") VALUES('HPV_SECCIONESMENU',5, NULL,NULL,1) " +
                                        "INSERT INTO " + nameof(PRV_Opcion_Objeto_Permiso) + " (" + nameof(PRV_Opcion_Objeto_Permiso.opcion) + "," + nameof(PRV_Opcion_Objeto_Permiso.idPermiso) + "," + nameof(PRV_Opcion_Objeto_Permiso.idObjeto) + "," + nameof(PRV_Opcion_Objeto_Permiso.opcionPadre) + "," + nameof(PRV_Opcion_Objeto_Permiso.mostrar) + ") VALUES('HPV_SECCIONESMENU',6, NULL,NULL,1) " +
                                        "INSERT INTO " + nameof(PRV_Opcion_Objeto_Permiso) + " (" + nameof(PRV_Opcion_Objeto_Permiso.opcion) + "," + nameof(PRV_Opcion_Objeto_Permiso.idPermiso) + "," + nameof(PRV_Opcion_Objeto_Permiso.idObjeto) + "," + nameof(PRV_Opcion_Objeto_Permiso.opcionPadre) + "," + nameof(PRV_Opcion_Objeto_Permiso.mostrar) + ") VALUES('HPV_SECCIONESMENU',7, NULL,NULL,1) " +
                                        "INSERT INTO " + nameof(PRV_Opcion_Objeto_Permiso) + " (" + nameof(PRV_Opcion_Objeto_Permiso.opcion) + "," + nameof(PRV_Opcion_Objeto_Permiso.idPermiso) + "," + nameof(PRV_Opcion_Objeto_Permiso.idObjeto) + "," + nameof(PRV_Opcion_Objeto_Permiso.opcionPadre) + "," + nameof(PRV_Opcion_Objeto_Permiso.mostrar) + ") VALUES('HPV_SECCIONESMENU',8, NULL,NULL,1) " +
                                        "INSERT INTO " + nameof(PRV_Opcion_Objeto_Permiso) + " (" + nameof(PRV_Opcion_Objeto_Permiso.opcion) + "," + nameof(PRV_Opcion_Objeto_Permiso.idPermiso) + "," + nameof(PRV_Opcion_Objeto_Permiso.idObjeto) + "," + nameof(PRV_Opcion_Objeto_Permiso.opcionPadre) + "," + nameof(PRV_Opcion_Objeto_Permiso.mostrar) + ") VALUES('HPV_SECCIONESMENU',9, NULL,NULL,1) " +
                                    " END " +
                                    //AÑADIR el campo idSeccionMenu a la tabla HPV_Escandallos
                                    "IF not exists " +
                                      "( " +
                                      "    SELECT * " +
                                      "    FROM INFORMATION_SCHEMA.COLUMNS " +
                                      "    WHERE COLUMN_NAME='idSeccionMenu' AND TABLE_NAME = 'HPV_Escandallos' " +
                                      ") " +
                                    "BEGIN " +
                                        " ALTER TABLE [HPV_Escandallos]ADD[idSeccionMenu] bigint NOT NULL " +
                                        //Relaciones
                                        " ALTER TABLE [HPV_Escandallos] WITH CHECK ADD CONSTRAINT[FK_HPV_Escandallos_HPV_SeccionesMenu] FOREIGN KEY([idSeccionMenu])REFERENCES [HPV_SeccionesMenu] ([id]) " +
                                        " ALTER TABLE [HPV_Escandallos] CHECK CONSTRAINT[FK_HPV_Escandallos_HPV_SeccionesMenu] " +
                                    "END " +
                                    //AÑADIR el campo observaciones a la tabla HPV_Terminales_Salas
                                    "IF not exists " +
                                      "( " +
                                      "    SELECT * " +
                                      "    FROM INFORMATION_SCHEMA.COLUMNS " +
                                      "    WHERE COLUMN_NAME='observaciones' AND TABLE_NAME = 'HPV_Terminales_Salas' " +
                                      ") " +
                                    "BEGIN " +
                                        " ALTER TABLE [HPV_Terminales_Salas]ADD[observaciones] varchar(200) NULL " +
                                    "END " +
                                    //AÑADIR el campo orden a la tabla HPV_Tarifas
                                    "IF not exists " +
                                      "( " +
                                      "    SELECT * " +
                                      "    FROM INFORMATION_SCHEMA.COLUMNS " +
                                      "    WHERE COLUMN_NAME='orden' AND TABLE_NAME = 'HPV_Tarifas' " +
                                      ") " +
                                    "BEGIN " +
                                        " ALTER TABLE [HPV_Tarifas]ADD[orden] int NOT NULL " +
                                    "END " +
                                    //BORRAR TABLA INF_Impresoras_PLV
                                    " IF exists " +
                                    " ( " +
                                        " SELECT * " +
                                        " FROM INFORMATION_SCHEMA.TABLES " +
                                        " WHERE TABLE_NAME = 'INF_Impresoras_PLV' " +
                                    " ) " +
                                    "BEGIN " +
                                        " DROP TABLE INF_Impresoras_PLV " +
                                    "END " +
                                    //BORRAR OPCION INF_IMPRESORAS_PLV
                                    "IF exists " +
                                    "( " +
                                        "SELECT * " +
                                        "FROM PRV_Opciones " +
                                        "WHERE opcion = 'INF_IMPRESORAS_PLV' " +
                                    ") " +
                                    "BEGIN " +
                                        " DELETE FROM " + nameof(PRV_ArbolPrincipal_USR_Usuarios) + " WHERE " + nameof(PRV_ArbolPrincipal_USR_Usuarios.opcion) + "='INF_IMPRESORAS_PLV' " +
                                        " DELETE FROM " + nameof(PRV_ArbolPrincipal) + " WHERE " + nameof(PRV_ArbolPrincipal.opcion) + "='INF_IMPRESORAS_PLV' " +
                                        " DELETE FROM " + nameof(PRV_Opcion_Objeto_Permiso) + " WHERE " + nameof(PRV_Opcion_Objeto_Permiso.opcion) + "='INF_IMPRESORAS_PLV' " +
                                        " DELETE FROM " + nameof(PRV_Opciones_USR_Usuarios) + " WHERE " + nameof(PRV_Opciones_USR_Usuarios.opcion) + "='INF_IMPRESORAS_PLV' " +
                                        " DELETE FROM " + nameof(PRV_OpcionesDetalle_USR_Usuarios) + " WHERE " + nameof(PRV_OpcionesDetalle_USR_Usuarios.opcion) + "='INF_IMPRESORAS_PLV' " +
                                        " DELETE FROM " + nameof(PRV_Opciones) + " WHERE " + nameof(PRV_Opciones.opcion) + "='INF_IMPRESORAS_PLV' " +
                                        " DELETE FROM " + nameof(PRV_OpcionesDetalle) + " WHERE " + nameof(PRV_OpcionesDetalle.opcion) + "='INF_IMPRESORAS_PLV' " +
                                    " END  " +
                                    //AÑADIR UN NUEVO INFORMES TICKETS
                                    " IF not exists  " +
                                    " ( " +
                                        " SELECT *  " +
                                        " FROM INF_InformesTipos  " +
                                        " WHERE codigo = '10'  " +
                                    " ) " +
                                    " BEGIN " +
                                        " INSERT INTO INF_InformesTipos(codigo, descripcion) VALUES('10','Tickets (HPV)')  " +
                                    " END " +
                                    //CREAR TABLA HPV_PLV_Impresoras
                                    " IF not exists " +
                                    " ( " +
                                        " SELECT * " +
                                        " FROM INFORMATION_SCHEMA.TABLES " +
                                        " WHERE TABLE_NAME = 'HPV_PLV_Impresoras' " +
                                    " ) " +
                                    " BEGIN " +
                                        " CREATE TABLE [HPV_PLV_Impresoras] " +
                                        " ( " +
                                            " [idPLV] [bigint] NOT NULL, " +
                                            " [idImpresora] [bigint] NOT NULL, " +
                                            " [observaciones] [varchar] (50) NULL, " +
                                        " CONSTRAINT[PK_HPV_PLV_Impresoras] PRIMARY KEY CLUSTERED " +
                                        " ( " +
                                        " [idPLV] ASC, " +
                                        " [idImpresora] ASC " +
                                        " )WITH(PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON[PRIMARY] " +
                                        " ) ON[PRIMARY] " +
                                        //Relaciones
                                        " ALTER TABLE [HPV_PLV_Impresoras] WITH CHECK ADD CONSTRAINT[FK_HPV_PLV_Impresoras_HPV_PLV] FOREIGN KEY([idPLV])REFERENCES [HPV_PLV] ([id]) ON DELETE CASCADE " +
                                        " ALTER TABLE [HPV_PLV_Impresoras] CHECK CONSTRAINT[FK_HPV_PLV_Impresoras_HPV_PLV] " +

                                        " ALTER TABLE [HPV_PLV_Impresoras] WITH CHECK ADD CONSTRAINT[FK_HPV_PLV_Impresoras_INF_Impresoras] FOREIGN KEY([idImpresora])REFERENCES [INF_Impresoras] ([id]) ON DELETE CASCADE  " +
                                        " ALTER TABLE [HPV_PLV_Impresoras] CHECK CONSTRAINT[FK_HPV_PLV_Impresoras_INF_Impresoras] " +
                                    " END " +
                                    //CREAR TABLA HPV_AgrupacionesPLVLineas_Impresoras
                                    " IF not exists " +
                                    " ( " +
                                        " SELECT * " +
                                        " FROM INFORMATION_SCHEMA.TABLES " +
                                        " WHERE TABLE_NAME = 'HPV_AgrupacionesPLVLineas_Impresoras' " +
                                    " ) " +
                                    " BEGIN " +
                                        " CREATE TABLE [HPV_AgrupacionesPLVLineas_Impresoras] " +
                                        " ( " +
                                            " [idAgrupacionPLVLinea] [bigint] NOT NULL, " +
                                            " [idImpresora] [bigint] NOT NULL, " +
                                            " [observaciones] [varchar] (50) NULL, " +
                                        " CONSTRAINT[PK_HPV_AgrupacionesPLVLineas_Impresoras] PRIMARY KEY CLUSTERED " +
                                        " ( " +
                                        " [idAgrupacionPLVLinea] ASC, " +
                                        " [idImpresora] ASC " +
                                        " )WITH(PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON[PRIMARY] " +
                                        " ) ON[PRIMARY] " +
                                        //Relaciones
                                        " ALTER TABLE [HPV_AgrupacionesPLVLineas_Impresoras] WITH CHECK ADD CONSTRAINT[FK_HPV_AgrupacionesPLVLineas_Impresoras_HPV_AgrupacionesPLVLineas] FOREIGN KEY([idAgrupacionPLVLinea])REFERENCES [HPV_AgrupacionesPLVLineas] ([id]) ON DELETE CASCADE " +
                                        " ALTER TABLE [HPV_AgrupacionesPLVLineas_Impresoras] CHECK CONSTRAINT[FK_HPV_AgrupacionesPLVLineas_Impresoras_HPV_AgrupacionesPLVLineas] " +

                                        " ALTER TABLE [HPV_AgrupacionesPLVLineas_Impresoras] WITH CHECK ADD CONSTRAINT[FK_HPV_AgrupacionesPLVLineas_Impresoras_INF_Impresoras] FOREIGN KEY([idImpresora])REFERENCES [INF_Impresoras] ([id]) ON DELETE CASCADE  " +
                                        " ALTER TABLE [HPV_AgrupacionesPLVLineas_Impresoras] CHECK CONSTRAINT[FK_HPV_AgrupacionesPLVLineas_Impresoras_INF_Impresoras] " +
                                    " END " +
                                    //CREAR TABLA HPV_Salas_Impresoras
                                    " IF not exists " +
                                    " ( " +
                                        " SELECT * " +
                                        " FROM INFORMATION_SCHEMA.TABLES " +
                                        " WHERE TABLE_NAME = 'HPV_Salas_Impresoras' " +
                                    " ) " +
                                    " BEGIN " +
                                        " CREATE TABLE [HPV_Salas_Impresoras] " +
                                        " ( " +
                                            " [idSala] [bigint] NOT NULL, " +
                                            " [idImpresora] [bigint] NOT NULL, " +
                                            " [porDefecto] [bit] NOT NULL, " +
                                            " [observaciones] [varchar] (50) NULL, " +
                                        " CONSTRAINT[PK_HPV_Salas_Impresoras] PRIMARY KEY CLUSTERED " +
                                        " ( " +
                                        " [idSala] ASC, " +
                                        " [idImpresora] ASC " +
                                        " )WITH(PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON[PRIMARY] " +
                                        " ) ON[PRIMARY] " +
                                        //Relaciones
                                        " ALTER TABLE [HPV_Salas_Impresoras] WITH CHECK ADD CONSTRAINT[FK_HPV_Salas_Impresoras_HPV_Salas] FOREIGN KEY([idSala])REFERENCES [HPV_Salas] ([id]) ON DELETE CASCADE " +
                                        " ALTER TABLE [HPV_Salas_Impresoras] CHECK CONSTRAINT[FK_HPV_Salas_Impresoras_HPV_Salas] " +

                                        " ALTER TABLE [HPV_Salas_Impresoras] WITH CHECK ADD CONSTRAINT[FK_HPV_Salas_Impresoras_INF_Impresoras] FOREIGN KEY([idImpresora])REFERENCES [INF_Impresoras] ([id]) ON DELETE CASCADE  " +
                                        " ALTER TABLE [HPV_Salas_Impresoras] CHECK CONSTRAINT[FK_HPV_Salas_Impresoras_INF_Impresoras] " +
                                    " END ";

    }
}
