добавляю все изменения проекта на текущий момент

This commit is contained in:
vasya
2026-02-27 18:49:27 +03:00
parent e927910fda
commit 9c35f4e35e
303 changed files with 79434 additions and 2558 deletions
@@ -0,0 +1,103 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Spatie\Activitylog\Models\Activity;
// use App\Services\ModuleService;
use App\Services\UserService;
use App\Facades\UserContext;
use App\Services\ApiResponder;
use App\Dto\ApiResponseDto;
use App\Enums\LogBusinessAction;
use App\Models\User;
use Illuminate\Http\JsonResponse;
class AppHistoryController extends Controller
{
public function __construct(protected ApiResponder $apiResponder)
{}
public function getAppHistory($appName, $subjectId): JsonResponse
{
#Гаврилов
//ПОКА НЕ РЕАЛИЗОВЫВАЮ ОГРАНИЧЕНИЕ ДОСТУПА К ИСТОРИИ ПО РОЛЯМ (РОЛЬ ИСТОЧНИКА ЗАПРОСА НЕ ЗАПРАШИВАЕТСЯ И НЕ ВАЛИДИРУЕТСЯ, ТОЛЬКО НАЛИЧИЕ ДОСТУПА К ПРИЛОЖЕНИЮ)
if (array_key_exists($appName, UserContext::getUserAppPermissions()) === false) {
$this->apiResponder->setDto(new ApiResponseDto('Отсутствует доступ к ресурсу'));
return response()->json($this->apiResponder->error(), 403);
}
$entityHistory = Activity::where('log_name', $appName)
->where('subject_id', $subjectId)
->get()
->toArray();
$this->apiResponder->setDto(new ApiResponseDto(null, $this->formatHistory($entityHistory)));
//echo '<pre>'; var_dump($this->apiResponder->success()); echo'</pre>';
//return $this->apiResponder->success();
// return response()->json();
return $this->apiResponder->success();
// die();
// if (empty($entityHistory)) {
// $this->apiResponder->setDto(new ApiResponseDto());
// return response()->json($this->apiResponder->error());
// }
// $this->apiResponder->setDto(new ApiResponseDto('', ));
// return response()->json($this->apiResponder->error());
// die();
// //$appName = $moduleName ?? (new ModuleService())->getModuleName();
// //echo '<pre>'; var_dump(UserService->getUserAppPermissions()); echo'</pre>';
// echo '<pre>'; var_dump($rqst->subject_id); echo'</pre>';
// echo '<pre>'; var_dump($appName); echo'</pre>';
// if (!$appName) {
// #Гаврилов
// //ВОЗВРАЩАЕМ ОШИБКУ, ЕСЛИ ИСТОРИЯ НЕ НАЙДЕНА. ИЛИ НА УРОВНЕ ФРОНТА ПРОВЕРЯЕМ ПУСТАЯ ЛИ ИСТОРИЯ И ВЫВОДИМ ВСПЛЫВАЮЩЕЕ ОКНО что "ИСТОРИЯ ОТСУТСТВУЕТ"
// return '';
// }
// return '';
// // $entityHistory = Activity::where('log_name', 'Taxi')
// // ->where('subject_id', $entityId)
// // ->get();
// // return $entityHistory;
}
private function formatHistory($historyData)
{
$formattedHistory = [];
foreach ($historyData as $historyAction) {
$historyChange = [];
#Гаврилов
//ДОЛЖНО ЛОГИРОВАТЬСЯ ID АУТЕНТИФИЦИРОВАННОГО ПОЛЬЗОВАТЕЛЯ. сЕЙЧАС ЗАПИСЫВАЕМ КОЛХОЗНО В PROPERTIES.
//ПРОВЕРЬ ЧТО ДЕЛАТЬ, ЕСЛИ ПОЛЬЗОВАТЕЛЬ - API?
$historyChange['changeAction'] = $historyAction['business_event'];
$user = User::find($historyAction['causer_id']);
$login = $user->login;
$historyChange['changeAuthor'] = $login;
$actionDate = new \DateTime($historyAction['created_at']);
$historyChange['changeDate'] = $actionDate->format('d.m.Y');
$historyChange['changeTime'] = $actionDate->format('H:i:s');
$historyChange['changeDetails'] = json_encode($historyAction['properties']['attributes'], JSON_UNESCAPED_UNICODE);
$formattedHistory[] = $historyChange;
}
//ГАВРИЛОВ. СОЗДАЙ СЕРВИС. В НЕМ РЕАЛ3ИЗУЙ МЕТОДЫ НАЗНАЧЕНИЯ ЗНАЧЕНИЙ КАЖДОМУ СВОЙСТВУ ОБЪЕКТА ИСТОРИИ . ИЗ КОНТРОЛЛЕРА СОЗДАВАЙ ЭКЗЕМПЛЯР КЛАССА СЕРВИСА. В КОНТРОЛЛЕРЕ СЕРВИСА ПО ОЧЕРЕДИ ВЫЗЫВАЙ ВСЕ МЕТОДЫ НАЗНАЧЕНИЯ СВОЙСТВ ИСТОРИИ.
return $formattedHistory;
//changeAction: string, //Совершенное действие: создание, удаление, редактирование, архивирование и т.д.
// changeAuthor: string, //Автор изменения: логин, сервисная УЗ
// changeDate: Date //Объект даты изменения. В объекте будет либо время (тогда показываем), либо время будет отсутствовать (тогда не показываем) //что будем передавать? объект new Date или библиотечный объект для работы с датами?
// changeTime?: string //Время изменений. Передавать не нужно, на этабе сборки компонента будет формироваться на основе пропса changeDate
// changeDetails?: HistoryEntityElDetails[]
}
}