<?php
namespace admin\Controllers;

use Domain\Update\UpdateRepository;

class UpdateController
{
    private UpdateRepository $repository;

    public function __construct( UpdateRepository $repository )
    {
        $this->repository = $repository;
    }

    public function main_view(): string
    {
        return \Shared\Tpl\Tpl::view( 'update/main-view', [
            'ver'     => \Shared\Helpers\Helpers::get_version(),
            'new_ver' => \Shared\Helpers\Helpers::get_new_version(),
        ] );
    }

    public function update(): void
    {
        $result = $this->repository->update();

        if ( !$result['success'] ) {
            \Shared\Helpers\Helpers::alert( 'W trakcie aktualizacji systemu wystąpił błąd. Proszę spróbować ponownie.' );
        } else {
            \Shared\Helpers\Helpers::set_message( 'Aktualizacja przebiegła pomyślnie.' );
        }

        header( 'Location: /admin/update/main_view/' );
        exit;
    }

    public function updateAll(): void
    {
        $result = $this->repository->update();

        $response = [
            'status'  => !empty( $result['success'] ) && empty( $result['no_updates'] ),
            'version' => number_format( (float) \Shared\Helpers\Helpers::get( 'version_current' ) + 0.001, 3, '.', '' ),
        ];

        echo json_encode( $response );
        exit;
    }
}
