81 lines
3.1 KiB
PHP
81 lines
3.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace mirzaev\calculator\controllers;
|
|
|
|
use mirzaev\calculator\controllers\core;
|
|
use mirzaev\calculator\models\accounts_model as accounts;
|
|
use mirzaev\calculator\models\supplies_model as supplies;
|
|
|
|
use mirzaev\calculator\models\filters\import_aluminum_filter;
|
|
use mirzaev\calculator\models\filters\import_brass_filter;
|
|
use mirzaev\calculator\models\filters\import_copper_filter;
|
|
use mirzaev\calculator\models\filters\import_stainless_steel_filter;
|
|
use mirzaev\calculator\models\filters\import_steel_filter;
|
|
use mirzaev\calculator\models\filters\import_galvanized_steel_filter;
|
|
|
|
use Exception;
|
|
|
|
/**
|
|
* Контроллер поставок
|
|
*
|
|
* @package mirzaev\calculator\controllers
|
|
* @author Arsen Mirzaev Tatyano-Muradovich <arsen@mirzaev.sexy>
|
|
*/
|
|
final class supplies_controller extends core
|
|
{
|
|
/**
|
|
* Записать
|
|
*
|
|
* @param array $vars Параметры
|
|
*/
|
|
public function write(array $vars = []): ?string
|
|
{
|
|
// Инициализация журнала ошибок
|
|
$vars['errors'] = ['supplies' => []];
|
|
|
|
// Инициализация аккаунта
|
|
$vars['account'] = accounts::account($vars['errors']);
|
|
|
|
if ($vars['account'] && $vars['account']['permissions']['supplies'] ?? 0 === 1) {
|
|
// Удалось аутентифицироваться и пройдена проверка авторизации
|
|
|
|
// Сохранение файла
|
|
move_uploaded_file($_FILES['supplies']['tmp_name'], $file = SUPPLIES . DIRECTORY_SEPARATOR . $_FILES['supplies']['name']);
|
|
|
|
// Запись данных из файла в базу данных
|
|
try {
|
|
@supplies::write($file, new import_aluminum_filter);
|
|
@supplies::write($file, new import_brass_filter);
|
|
@supplies::write($file, new import_copper_filter);
|
|
@supplies::write($file, new import_stainless_steel_filter);
|
|
} catch (exception $e) {
|
|
// Запись в журнал ошибок
|
|
$vars['errors']['supplies'] = [
|
|
'text' => $e->getMessage(),
|
|
'file' => $e->getFile(),
|
|
'line' => $e->getLine(),
|
|
'stack' => $e->getTrace()
|
|
];
|
|
}
|
|
|
|
try {
|
|
@supplies::write($file, new import_steel_filter, $vars['errors']['supplies']);
|
|
@supplies::write($file, new import_galvanized_steel_filter, $vars['errors']['supplies']);
|
|
} catch (exception $e) {
|
|
// Запись в журнал ошибок
|
|
$vars['errors']['supplies'] = [
|
|
'text' => $e->getMessage(),
|
|
'file' => $e->getFile(),
|
|
'line' => $e->getLine(),
|
|
'stack' => $e->getTrace()
|
|
];
|
|
}
|
|
}
|
|
|
|
// Если вернуть null покажет ошибку 404 (будет исправлено в будущих версиях mirzaev/minimal)
|
|
return json_encode($vars['errors']);
|
|
}
|
|
}
|