<?php

namespace app\commands;

use yii\console\Controller;
use yii\console\ExitCode;

use app\models\Invoice;
use app\models\Product;
use app\models\ProductGroup;
use app\models\ImportEdgeSupply;

class TestController extends Controller
{
    public function actionInvoice($buyer = 123123, $order = 0)
    {
        // Генерация счета
        Invoice::generate($order, $this->renderPartial('/invoice/order/pattern', [
            'buyer' => [
                'id' => $buyer,
                'info' => 'Неизвестно'
            ],
            'order' => [
                'id' => $order,
                'date' => time(),
                'entries' => [
                    [
                        'title' => 'Тестовое вхождение',
                        'amount' => [
                            'value' => 1,
                            'unit' => 'шт'
                        ],
                        'cost' => [
                            'value' => 1000,
                            'unit' => 'руб'
                        ],
                        'type' => 'supply'
                    ],
                    [
                        'title' => 'Тестовое вхождение',
                        'amount' => [
                            'value' => 1,
                            'unit' => 'шт'
                        ],
                        'cost' => [
                            'value' => 1000,
                            'unit' => 'руб'
                        ],
                        'type' => 'supply'
                    ],
                    [
                        'title' => 'Тестовое вхождение',
                        'amount' => [
                            'value' => 1,
                            'unit' => 'шт'
                        ],
                        'cost' => [
                            'value' => 1000,
                            'unit' => 'руб'
                        ],
                        'type' => 'supply'
                    ],
                    [
                        'title' => 'Тестовое вхождение',
                        'amount' => [
                            'value' => 5,
                            'unit' => 'шт'
                        ],
                        'cost' => [
                            'value' => 1000,
                            'unit' => 'руб'
                        ],
                        'type' => 'supply'
                    ]
                ]
            ]
        ]));

        return ExitCode::OK;
    }


    public function actionAnalogs($_id = 'product/51987159')
    {


        return ExitCode::OK;
    }

    public function actionWriteAnalog($_id = 'product/51987159', $analog = 'product/12051485')
    {
        // Инициализация товара
        $product = Product::searchById($_id);

        // Инициализация аналога
        $analog = Product::searchById($analog);

        if (!$group = ProductGroup::searchByProduct($product)) {
            // Не найдена группа товаров

            // Запись новой группы
            $group = ProductGroup::writeEmpty(active: true);

            // Запись товара в группу
            $group->writeProduct($product);
        }

        if ($_group = ProductGroup::searchByProduct($analog)) {
            // Найдена друга группа у товара который надо добавить в группу

            // Перенос всех участников (включая целевой товар)
            return $group->transfer($_group);
        } else {
            // Не найдена группа у товара который надо добавить в группу

            // Запись целевого товара в группу
            return $group->writeProduct($analog);
        }

        return ExitCode::OK;
    }

    public function actionReadAnalog($_id = 'product/51987159')
    {
        var_dump((ProductGroup::searchByProduct(Product::searchById($_id))->searchProducts()));

        return ExitCode::OK;
    }

    public function actionEdgeMax()
    {
        var_dump(ImportEdgeSupply::generateVersion());

        return ExitCode::OK;
    }
}
