добавляю все изменения проекта на текущий момент
This commit is contained in:
@@ -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[]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user