43 lines
1.5 KiB
PHP
43 lines
1.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace MonetaPhpShop\order;
|
|
|
|
/**
|
|
* Ñïèñîê ñòàòóñîâ çàêàçà äëÿ âûïàäàþùèõ ñïèñêîâ íàñòðîåê («Îïëàòà ïðè ñòàòóñå»,
|
|
* «Ñòàòóñ ïîñëå îïëàòû») â ôîðìàòå `PHPShopGUI::setSelect()`: `[ïîäïèñü, çíà÷åíèå, òåêóùåå]`.
|
|
* Ñòàòóñû ìàãàçèíà ÷èòàåò àäìèíêà ìîäóëÿ èç `PHPShopOrderStatusArray`; çäåñü — òîëüêî ñáîðêà.
|
|
*/
|
|
final class OrderStatusOptions
|
|
{
|
|
private function __construct() {}
|
|
|
|
/**
|
|
* Ïåðâûì èä¸ò çàäàííûé ïóíêò, çà íèì ñòàòóñû ìàãàçèíà. Ñòàòóñ ñ òåì æå çíà÷åíèåì, ÷òî
|
|
* ó ïåðâîãî ïóíêòà, ïðîïóñêàåòñÿ: «Îïëà÷åíî ïëàòåæíûìè ñèñòåìàìè» (101) ÿäðî ñîçäà¸ò
|
|
* êàê îáû÷íûé ñòàòóñ, è áåç ýòîãî îí ïîïàë áû â ñïèñîê äâàæäû.
|
|
*
|
|
* @param array<mixed> $statuses ñòàòóñû ìàãàçèíà: ñòðîêè ñ êëþ÷àìè `id` è `name`
|
|
* @param int $current çíà÷åíèå èç íàñòðîåê — ïóíêò ñ íèì áóäåò âûáðàí
|
|
*
|
|
* @return array<int, array{0: string, 1: int, 2: int}>
|
|
*/
|
|
public static function build(array $statuses, int $current, string $firstLabel, int $firstValue): array
|
|
{
|
|
$options = [[$firstLabel, $firstValue, $current]];
|
|
foreach ($statuses as $status) {
|
|
if (!is_array($status) || !isset($status['id'], $status['name'])) {
|
|
continue;
|
|
}
|
|
|
|
$id = (int) $status['id'];
|
|
if ($id !== $firstValue) {
|
|
$options[] = [(string) $status['name'], $id, $current];
|
|
}
|
|
}
|
|
|
|
return $options;
|
|
}
|
|
}
|