<?php

declare(strict_types=1);

namespace App\Repository;

final class WebInicioRepository
{
    private \PDO $database;

    public function __construct(\PDO $database)
    {
        $this->database = $database;
    }

    public function getDb(): \PDO
    {
        return $this->database;
    }

    public function checkAndGet(int $WebInicioId): object
    {
        $query = 'SELECT * FROM `WebInicio` WHERE `id` = :id';
        $statement = $this->getDb()->prepare($query);
        $statement->bindParam('id', $WebInicioId);
        $statement->execute();
        $WebInicio = $statement->fetchObject();
        if (! $WebInicio) {
            throw new \Exception('WebInicio not found.', 404);
        }

        return $WebInicio;
    }

    public function getAll(): array
    {
        $query = 'SELECT * FROM `WebInicio` ORDER BY `id`';
        $statement = $this->getDb()->prepare($query);
        $statement->execute();

        return (array) $statement->fetchAll();
    }

    public function create(object $WebInicio): object
    {
        $query = 'INSERT INTO `WebInicio` (`Titulo01`, `Texto01`, `Imagen01`, `Titulo02`, `Texto02`, `Imagen02`, `Titulo03`, `Texto03`, `Imagen03`, `Titulo11`, `Texto11`, `Imagen11`, 
        `Fondo11`, `Titulo21`, `Icono21`, `TituloIcono21`, `Icono22`, `TituloIcono22`, `Icono23`, `TituloIcono23`, `Icono24`, `TituloIcono24`, `Titulo31`, `Subtitulo31`, `Icono31`, 
        `TituloIcono31`, `TextoIcono31`, `Icono32`, `TituloIcono32`, `TextoIcono32`, `Icono33`, `TituloIcono33`, `TextoIcono33`, `Icono34`, `TituloIcono34`, `TextoIcono34`, `Experiencia41`, 
        `Avatar41`, `Empresa41`, `Experiencia42`, `Avatar42`, `Empresa42`, `Experiencia43`, `Avatar43`, `Empresa43`, `Experiencia44`, `Avatar44`, `Empresa44`, `Experiencia45`, `Avatar45`, 
        `Empresa45`, `Experiencia46`, `Avatar46`, `Empresa46`, `Nombre41`, `Nombre42`, `Nombre43`, `Nombre44`, `Nombre45`, `Nombre46`) VALUES (:Titulo01, :Texto01, :Imagen01, :Titulo02, :Texto02, :Imagen02, :Titulo03, :Texto03, :Imagen03, :Titulo11, :Texto11, 
        :Imagen11, :Fondo11, :Titulo21, :Icono21, :TituloIcono21, :Icono22, :TituloIcono22, :Icono23, :TituloIcono23, :Icono24, :TituloIcono24, :Titulo31, :Subtitulo31, :Icono31, 
        :TituloIcono31, :TextoIcono31, :Icono32, :TituloIcono32, :TextoIcono32, :Icono33, :TituloIcono33, :TextoIcono33, :Icono34, :TituloIcono34, :TextoIcono34, :Experiencia41, 
        :Avatar41, :Empresa41, :Experiencia42, :Avatar42, :Empresa42, :Experiencia43, :Avatar43, :Empresa43, :Experiencia44, :Avatar44, :Empresa44, :Experiencia45, :Avatar45, :Empresa45, 
        :Experiencia46, :Avatar46, :Empresa46, :Nombre41, :Nombre42, :Nombre43, :Nombre44, :Nombre45, :Nombre46)';
        $statement = $this->getDb()->prepare($query);
//         $statement->bindParam('id', $WebInicio->id);
//         $statement->bindParam('fecha', $WebInicio->fecha);
        $statement->bindParam('Titulo01', $WebInicio->Titulo01);
        $statement->bindParam('Texto01', $WebInicio->Texto01);
        $statement->bindParam('Imagen01', $WebInicio->Imagen01);
        $statement->bindParam('Titulo02', $WebInicio->Titulo02);
        $statement->bindParam('Texto02', $WebInicio->Texto02);
        $statement->bindParam('Imagen02', $WebInicio->Imagen02);
        $statement->bindParam('Titulo03', $WebInicio->Titulo03);
        $statement->bindParam('Texto03', $WebInicio->Texto03);
        $statement->bindParam('Imagen03', $WebInicio->Imagen03);
        $statement->bindParam('Titulo11', $WebInicio->Titulo11);
        $statement->bindParam('Texto11', $WebInicio->Texto11);
        $statement->bindParam('Imagen11', $WebInicio->Imagen11);
        $statement->bindParam('Fondo11', $WebInicio->Fondo11);
        $statement->bindParam('Titulo21', $WebInicio->Titulo21);
        $statement->bindParam('Icono21', $WebInicio->Icono21);
        $statement->bindParam('TituloIcono21', $WebInicio->TituloIcono21);
        $statement->bindParam('Icono22', $WebInicio->Icono22);
        $statement->bindParam('TituloIcono22', $WebInicio->TituloIcono22);
        $statement->bindParam('Icono23', $WebInicio->Icono23);
        $statement->bindParam('TituloIcono23', $WebInicio->TituloIcono23);
        $statement->bindParam('Icono24', $WebInicio->Icono24);
        $statement->bindParam('TituloIcono24', $WebInicio->TituloIcono24);
        $statement->bindParam('Titulo31', $WebInicio->Titulo31);
        $statement->bindParam('Subtitulo31', $WebInicio->Subtitulo31);
        $statement->bindParam('Icono31', $WebInicio->Icono31);
        $statement->bindParam('TituloIcono31', $WebInicio->TituloIcono31);
        $statement->bindParam('TextoIcono31', $WebInicio->TextoIcono31);
        $statement->bindParam('Icono32', $WebInicio->Icono32);
        $statement->bindParam('TituloIcono32', $WebInicio->TituloIcono32);
        $statement->bindParam('TextoIcono32', $WebInicio->TextoIcono32);
        $statement->bindParam('Icono33', $WebInicio->Icono33);
        $statement->bindParam('TituloIcono33', $WebInicio->TituloIcono33);
        $statement->bindParam('TextoIcono33', $WebInicio->TextoIcono33);
        $statement->bindParam('Icono34', $WebInicio->Icono34);
        $statement->bindParam('TituloIcono34', $WebInicio->TituloIcono34);
        $statement->bindParam('TextoIcono34', $WebInicio->TextoIcono34);
        $statement->bindParam('Experiencia41', $WebInicio->Experiencia41);
        $statement->bindParam('Avatar41', $WebInicio->Avatar41);
        $statement->bindParam('Empresa41', $WebInicio->Empresa41);
        $statement->bindParam('Experiencia42', $WebInicio->Experiencia42);
        $statement->bindParam('Avatar42', $WebInicio->Avatar42);
        $statement->bindParam('Empresa42', $WebInicio->Empresa42);
        $statement->bindParam('Experiencia43', $WebInicio->Experiencia43);
        $statement->bindParam('Avatar43', $WebInicio->Avatar43);
        $statement->bindParam('Empresa43', $WebInicio->Empresa43);
        $statement->bindParam('Experiencia44', $WebInicio->Experiencia44);
        $statement->bindParam('Avatar44', $WebInicio->Avatar44);
        $statement->bindParam('Empresa44', $WebInicio->Empresa44);
        $statement->bindParam('Experiencia45', $WebInicio->Experiencia45);
        $statement->bindParam('Avatar45', $WebInicio->Avatar45);
        $statement->bindParam('Empresa45', $WebInicio->Empresa45);
        $statement->bindParam('Experiencia46', $WebInicio->Experiencia46);
        $statement->bindParam('Avatar46', $WebInicio->Avatar46);
        $statement->bindParam('Empresa46', $WebInicio->Empresa46);
        $statement->bindParam('Nombre41', $WebInicio->Nombre41);
        $statement->bindParam('Nombre42', $WebInicio->Nombre42);
        $statement->bindParam('Nombre43', $WebInicio->Nombre43);
        $statement->bindParam('Nombre44', $WebInicio->Nombre44);
        $statement->bindParam('Nombre45', $WebInicio->Nombre45);
        $statement->bindParam('Nombre46', $WebInicio->Nombre46);

        $statement->execute();

        return $this->checkAndGet((int) $this->getDb()->lastInsertId());
    }

    public function update(object $WebInicio, object $data): object
    {
        if (isset($data->fecha)) {
            $WebInicio->fecha = $data->fecha;
        }
        if (isset($data->Titulo01)) {
            $WebInicio->Titulo01 = $data->Titulo01;
        }
        if (isset($data->Texto01)) {
            $WebInicio->Texto01 = $data->Texto01;
        }
        if (isset($data->Imagen01)) {
            $WebInicio->Imagen01 = $data->Imagen01;
        }
        if (isset($data->Titulo02)) {
            $WebInicio->Titulo02 = $data->Titulo02;
        }
        if (isset($data->Texto02)) {
            $WebInicio->Texto02 = $data->Texto02;
        }
        if (isset($data->Imagen02)) {
            $WebInicio->Imagen02 = $data->Imagen02;
        }
        if (isset($data->Titulo03)) {
            $WebInicio->Titulo03 = $data->Titulo03;
        }
        if (isset($data->Texto03)) {
            $WebInicio->Texto03 = $data->Texto03;
        }
        if (isset($data->Imagen03)) {
            $WebInicio->Imagen03 = $data->Imagen03;
        }
        if (isset($data->Titulo11)) {
            $WebInicio->Titulo11 = $data->Titulo11;
        }
        if (isset($data->Texto11)) {
            $WebInicio->Texto11 = $data->Texto11;
        }
        if (isset($data->Imagen11)) {
            $WebInicio->Imagen11 = $data->Imagen11;
        }
        if (isset($data->Fondo11)) {
            $WebInicio->Fondo11 = $data->Fondo11;
        }
        if (isset($data->Titulo21)) {
            $WebInicio->Titulo21 = $data->Titulo21;
        }
        if (isset($data->Icono21)) {
            $WebInicio->Icono21 = $data->Icono21;
        }
        if (isset($data->TituloIcono21)) {
            $WebInicio->TituloIcono21 = $data->TituloIcono21;
        }
        if (isset($data->Icono22)) {
            $WebInicio->Icono22 = $data->Icono22;
        }
        if (isset($data->TituloIcono22)) {
            $WebInicio->TituloIcono22 = $data->TituloIcono22;
        }
        if (isset($data->Icono23)) {
            $WebInicio->Icono23 = $data->Icono23;
        }
        if (isset($data->TituloIcono23)) {
            $WebInicio->TituloIcono23 = $data->TituloIcono23;
        }
        if (isset($data->Icono24)) {
            $WebInicio->Icono24 = $data->Icono24;
        }
        if (isset($data->TituloIcono24)) {
            $WebInicio->TituloIcono24 = $data->TituloIcono24;
        }
        if (isset($data->Titulo31)) {
            $WebInicio->Titulo31 = $data->Titulo31;
        }
        if (isset($data->Subtitulo31)) {
            $WebInicio->Subtitulo31 = $data->Subtitulo31;
        }
        if (isset($data->Icono31)) {
            $WebInicio->Icono31 = $data->Icono31;
        }
        if (isset($data->TituloIcono31)) {
            $WebInicio->TituloIcono31 = $data->TituloIcono31;
        }
        if (isset($data->TextoIcono31)) {
            $WebInicio->TextoIcono31 = $data->TextoIcono31;
        }
        if (isset($data->Icono32)) {
            $WebInicio->Icono32 = $data->Icono32;
        }
        if (isset($data->TituloIcono32)) {
            $WebInicio->TituloIcono32 = $data->TituloIcono32;
        }
        if (isset($data->TextoIcono32)) {
            $WebInicio->TextoIcono32 = $data->TextoIcono32;
        }
        if (isset($data->Icono33)) {
            $WebInicio->Icono33 = $data->Icono33;
        }
        if (isset($data->TituloIcono33)) {
            $WebInicio->TituloIcono33 = $data->TituloIcono33;
        }
        if (isset($data->TextoIcono33)) {
            $WebInicio->TextoIcono33 = $data->TextoIcono33;
        }
        if (isset($data->Icono34)) {
            $WebInicio->Icono34 = $data->Icono34;
        }
        if (isset($data->TituloIcono34)) {
            $WebInicio->TituloIcono34 = $data->TituloIcono34;
        }
        if (isset($data->TextoIcono34)) {
            $WebInicio->TextoIcono34 = $data->TextoIcono34;
        }
        if (isset($data->Experiencia41)) {
            $WebInicio->Experiencia41 = $data->Experiencia41;
        }
        if (isset($data->Avatar41)) {
            $WebInicio->Avatar41 = $data->Avatar41;
        }
        if (isset($data->Empresa41)) {
            $WebInicio->Empresa41 = $data->Empresa41;
        }
        if (isset($data->Experiencia42)) {
            $WebInicio->Experiencia42 = $data->Experiencia42;
        }
        if (isset($data->Avatar42)) {
            $WebInicio->Avatar42 = $data->Avatar42;
        }
        if (isset($data->Empresa42)) {
            $WebInicio->Empresa42 = $data->Empresa42;
        }
        if (isset($data->Experiencia43)) {
            $WebInicio->Experiencia43 = $data->Experiencia43;
        }
        if (isset($data->Avatar43)) {
            $WebInicio->Avatar43 = $data->Avatar43;
        }
        if (isset($data->Empresa43)) {
            $WebInicio->Empresa43 = $data->Empresa43;
        }
        if (isset($data->Experiencia44)) {
            $WebInicio->Experiencia44 = $data->Experiencia44;
        }
        if (isset($data->Avatar44)) {
            $WebInicio->Avatar44 = $data->Avatar44;
        }
        if (isset($data->Empresa44)) {
            $WebInicio->Empresa44 = $data->Empresa44;
        }
        if (isset($data->Experiencia45)) {
            $WebInicio->Experiencia45 = $data->Experiencia45;
        }
        if (isset($data->Avatar45)) {
            $WebInicio->Avatar45 = $data->Avatar45;
        }
        if (isset($data->Empresa45)) {
            $WebInicio->Empresa45 = $data->Empresa45;
        }
        if (isset($data->Experiencia46)) {
            $WebInicio->Experiencia46 = $data->Experiencia46;
        }
        if (isset($data->Avatar46)) {
            $WebInicio->Avatar46 = $data->Avatar46;
        }
        if (isset($data->Empresa46)) {
            $WebInicio->Empresa46 = $data->Empresa46;
        }
        if (isset($data->Nombre41)) {
            $WebInicio->Nombre41 = $data->Nombre41;
        }
        if (isset($data->Nombre42)) {
            $WebInicio->Nombre42 = $data->Nombre42;
        }
        if (isset($data->Nombre43)) {
            $WebInicio->Nombre43 = $data->Nombre43;
        }
        if (isset($data->Nombre44)) {
            $WebInicio->Nombre44 = $data->Nombre44;
        }
        if (isset($data->Nombre45)) {
            $WebInicio->Nombre45 = $data->Nombre45;
        }
        if (isset($data->Nombre46)) {
            $WebInicio->Nombre46 = $data->Nombre46;
        }

        $query = 'UPDATE `WebInicio` SET `fecha` = :fecha, `Titulo01` = :Titulo01, `Texto01` = :Texto01, `Imagen01` = :Imagen01, `Titulo02` = :Titulo02, `Texto02` = :Texto02, `Imagen02` = :Imagen02,
        `Titulo03` = :Titulo03, `Texto03` = :Texto03, `Imagen03` = :Imagen03, `Titulo11` = :Titulo11, `Texto11` = :Texto11, `Imagen11` = :Imagen11, `Fondo11` = :Fondo11, `Titulo21` = :Titulo21, 
        `Icono21` = :Icono21, `TituloIcono21` = :TituloIcono21, `Icono22` = :Icono22, `TituloIcono22` = :TituloIcono22, `Icono23` = :Icono23, `TituloIcono23` = :TituloIcono23, `Icono24` = :Icono24, 
        `TituloIcono24` = :TituloIcono24, `Titulo31` = :Titulo31, `Subtitulo31` = :Subtitulo31, `Icono31` = :Icono31, `TituloIcono31` = :TituloIcono31, `TextoIcono31` = :TextoIcono31, 
        `Icono32` = :Icono32, `TituloIcono32` = :TituloIcono32, `TextoIcono32` = :TextoIcono32, `Icono33` = :Icono33, `TituloIcono33` = :TituloIcono33, `TextoIcono33` = :TextoIcono33,
        `Icono34` = :Icono34, `TituloIcono34` = :TituloIcono34, `TextoIcono34` = :TextoIcono34, `Experiencia41` = :Experiencia41, `Avatar41` = :Avatar41, `Empresa41` = :Empresa41, 
        `Experiencia42` = :Experiencia42, `Avatar42` = :Avatar42, `Empresa42` = :Empresa42, `Experiencia43` = :Experiencia43, `Avatar43` = :Avatar43, `Empresa43` = :Empresa43,
        `Experiencia44` = :Experiencia44, `Avatar44` = :Avatar44, `Empresa44` = :Empresa44, `Experiencia45` = :Experiencia45, `Avatar45` = :Avatar45, `Empresa45` = :Empresa45, 
        `Experiencia46` = :Experiencia46, `Avatar46` = :Avatar46, `Empresa46` = :Empresa46, `Nombre41` = :Nombre41, `Nombre42` = :Nombre42, `Nombre43` = :Nombre43, `Nombre44` = :Nombre44,
        `Nombre45` = :Nombre45, `Nombre46` = :Nombre46 WHERE `id` = :id';
        $statement = $this->getDb()->prepare($query);
        $statement->bindParam('id', $WebInicio->id);
        $statement->bindParam('fecha', $WebInicio->fecha);
        $statement->bindParam('Titulo01', $WebInicio->Titulo01);
        $statement->bindParam('Texto01', $WebInicio->Texto01);
        $statement->bindParam('Imagen01', $WebInicio->Imagen01);
        $statement->bindParam('Titulo02', $WebInicio->Titulo02);
        $statement->bindParam('Texto02', $WebInicio->Texto02);
        $statement->bindParam('Imagen02', $WebInicio->Imagen02);
        $statement->bindParam('Titulo03', $WebInicio->Titulo03);
        $statement->bindParam('Texto03', $WebInicio->Texto03);
        $statement->bindParam('Imagen03', $WebInicio->Imagen03);
        $statement->bindParam('Titulo11', $WebInicio->Titulo11);
        $statement->bindParam('Texto11', $WebInicio->Texto11);
        $statement->bindParam('Imagen11', $WebInicio->Imagen11);
        $statement->bindParam('Fondo11', $WebInicio->Fondo11);
        $statement->bindParam('Titulo21', $WebInicio->Titulo21);
        $statement->bindParam('Icono21', $WebInicio->Icono21);
        $statement->bindParam('TituloIcono21', $WebInicio->TituloIcono21);
        $statement->bindParam('Icono22', $WebInicio->Icono22);
        $statement->bindParam('TituloIcono22', $WebInicio->TituloIcono22);
        $statement->bindParam('Icono23', $WebInicio->Icono23);
        $statement->bindParam('TituloIcono23', $WebInicio->TituloIcono23);
        $statement->bindParam('Icono24', $WebInicio->Icono24);
        $statement->bindParam('TituloIcono24', $WebInicio->TituloIcono24);
        $statement->bindParam('Titulo31', $WebInicio->Titulo31);
        $statement->bindParam('Subtitulo31', $WebInicio->Subtitulo31);
        $statement->bindParam('Icono31', $WebInicio->Icono31);
        $statement->bindParam('TituloIcono31', $WebInicio->TituloIcono31);
        $statement->bindParam('TextoIcono31', $WebInicio->TextoIcono31);
        $statement->bindParam('Icono32', $WebInicio->Icono32);
        $statement->bindParam('TituloIcono32', $WebInicio->TituloIcono32);
        $statement->bindParam('TextoIcono32', $WebInicio->TextoIcono32);
        $statement->bindParam('Icono33', $WebInicio->Icono33);
        $statement->bindParam('TituloIcono33', $WebInicio->TituloIcono33);
        $statement->bindParam('TextoIcono33', $WebInicio->TextoIcono33);
        $statement->bindParam('Icono34', $WebInicio->Icono34);
        $statement->bindParam('TituloIcono34', $WebInicio->TituloIcono34);
        $statement->bindParam('TextoIcono34', $WebInicio->TextoIcono34);
        $statement->bindParam('Experiencia41', $WebInicio->Experiencia41);
        $statement->bindParam('Avatar41', $WebInicio->Avatar41);
        $statement->bindParam('Empresa41', $WebInicio->Empresa41);
        $statement->bindParam('Experiencia42', $WebInicio->Experiencia42);
        $statement->bindParam('Avatar42', $WebInicio->Avatar42);
        $statement->bindParam('Empresa42', $WebInicio->Empresa42);
        $statement->bindParam('Experiencia43', $WebInicio->Experiencia43);
        $statement->bindParam('Avatar43', $WebInicio->Avatar43);
        $statement->bindParam('Empresa43', $WebInicio->Empresa43);
        $statement->bindParam('Experiencia44', $WebInicio->Experiencia44);
        $statement->bindParam('Avatar44', $WebInicio->Avatar44);
        $statement->bindParam('Empresa44', $WebInicio->Empresa44);
        $statement->bindParam('Experiencia45', $WebInicio->Experiencia45);
        $statement->bindParam('Avatar45', $WebInicio->Avatar45);
        $statement->bindParam('Empresa45', $WebInicio->Empresa45);
        $statement->bindParam('Experiencia46', $WebInicio->Experiencia46);
        $statement->bindParam('Avatar46', $WebInicio->Avatar46);
        $statement->bindParam('Empresa46', $WebInicio->Empresa46);
        $statement->bindParam('Nombre41', $WebInicio->Nombre41);
        $statement->bindParam('Nombre42', $WebInicio->Nombre42);
        $statement->bindParam('Nombre43', $WebInicio->Nombre43);
        $statement->bindParam('Nombre44', $WebInicio->Nombre44);
        $statement->bindParam('Nombre45', $WebInicio->Nombre45);
        $statement->bindParam('Nombre46', $WebInicio->Nombre46);

        $statement->execute();

        return $this->checkAndGet((int) $WebInicio->id);
    }

    public function delete(int $WebInicioId): void
    {
        $query = 'DELETE FROM `WebInicio` WHERE `id` = :id';
        $statement = $this->getDb()->prepare($query);
        $statement->bindParam('id', $WebInicioId);
        $statement->execute();
    }
}
