site-tordv-calculator/mirzaev/calculator/system/controllers/supplies_controller.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']);
}
}