<?php

declare(strict_types=1);

namespace app\controllers;

use yii;
use yii\web\Controller;
use yii\web\Response;

use app\models\AccountForm;
use app\models\Order;

class IdentificationController extends Controller
{
    public function actionIndex()
    {
        if (yii::$app->request->isPost) {
            // POST-запрос

            yii::$app->response->format = Response::FORMAT_JSON;

            if (yii::$app->user->isGuest) {
                // Аккаунт не аутентифицирован

                // Инициализация
                $model = new AccountForm(yii::$app->request->post('AccountForm') ?? yii::$app->request->get('AccountForm') ?? null);

                // Запись ответа
                $return = [
                    'menu' => $this->renderPartial('/account/panel/deauthenticated', compact('model')),
                    '_csrf' => yii::$app->request->getCsrfToken()
                ];
            } else {
                // Аккаунт аутентифицирован

                // Инициализация
                $model = yii::$app->user;

                // Инициализация
                $notifications_button = $this->renderPartial('/notification/button');
                $notifications_panel = $this->renderPartial('/notification/panel', ['notifications_panel_full' => true]);
                $cart_button = $this->renderPartial('/cart/button', ['cart_amount' => Order::count(supplies: true)]);

                // Запись ответа
                $return = [
                    'menu' => $this->renderPartial('/account/panel/authenticated', compact(
                        'notifications_button',
                        'notifications_panel',
                        'cart_button'
                    )),
                    '_csrf' => yii::$app->request->getCsrfToken()
                ];
            }

            if (($cookies = yii::$app->request->cookies)->has('redirect')) {
                // Найдено cookie с переадресацией

                // Запись ответа
                $return['redirect'] = '/' . $cookies['redirect'];

                // Очистка cookie
                unset(yii::$app->response->cookies['redirect']);
            }

            return $return;
        }
    }
}
