input('per_page', 15); // Получаем пагинированные данные $charactersPaginator = CharBase::paginate($perPage); // Если персонажей нет вообще if ($charactersPaginator->total() === 0) { return response()->json(['characters' => (object)[], 'code' => -2, 'msg' => 'Characters not found.'], 200); } // Трансформируем коллекцию текущей страницы, чтобы вернуть только нужные поля $transformedCharacters = $charactersPaginator->getCollection()->map(function ($character) { return [ 'DBKey' => $character->DBKey, 'Name' => $character->Name, 'Level' => $character->Level, 'AccountName' => $character->AccountName ]; }); // Собираем кастомный ответ с стандартным объектом пагинации Laravel $paginatedResponse = [ 'code' => 0, 'msg' => 'Characters successfully received.', 'characters' => [ 'current_page' => $charactersPaginator->currentPage(), 'data' => $transformedCharacters, 'first_page_url' => $charactersPaginator->url(1), 'from' => $charactersPaginator->firstItem(), 'last_page' => $charactersPaginator->lastPage(), 'last_page_url' => $charactersPaginator->url($charactersPaginator->lastPage()), 'links' => $charactersPaginator->linkCollection()->toArray(), 'next_page_url' => $charactersPaginator->nextPageUrl(), 'path' => $charactersPaginator->path(), 'per_page' => $charactersPaginator->perPage(), 'prev_page_url' => $charactersPaginator->previousPageUrl(), 'to' => $charactersPaginator->lastItem(), 'total' => $charactersPaginator->total(), ] ]; return response()->json($paginatedResponse, 200); } /** * Получение всех персонажей пользователя по AccountDBID. * * @param string $username * @return \Illuminate\Http\JsonResponse */ public function GetUserCharacters($username) { // Получаем всех персонажей по $username $characters = CharBase::where('AccountName', $username)->get(); // Проверяем, найдены ли персонажи if($characters->isEmpty()){ return response()->json(['characters' => [], 'code' => -2, 'msg' => 'Characters not found for this user.'], 200); } // Подсчитываем общее время в игре для всех персонажей пользователя $totalPlayTime = $characters->sum('TotalPlayTime'); // Возвращаем только DBKey, Name, Level, GuildDBKey, TotalPlayTime персонажей $characters = $characters->map(function ($character) { return [ 'DBKey' => $character->DBKey, 'Name' => $character->Name, 'Level' => $character->Level, 'GuildDBKey' => $character->GuildDBKey, 'CharPlayTime' => $character->TotalPlayTime ]; }); return response()->json([ 'code' => 0, 'msg' => 'Characters successfully received.', 'characters' => $characters, 'totalPlayTime' => $totalPlayTime ], 200); } public function SendItemToCharacter(Request $request) { $character = CharBase::where('DBKey', $request->Owner)->first(); if(!$character){ return response()->json(['code' => -1, 'msg' => 'Character not found.'], 404); } $validator = \Validator::make($request->all(), [ 'Owner' => 'required', 'Kind' => 'required', 'RecId' => 'required', 'Amount' => 'required|numeric', 'Period' => 'required|numeric', 'evPType' => 'required', 'Comment' => 'required' ], [], [ 'Owner' => '', 'Kind' => '', 'RecId' => '', 'Amount' => '', 'Period' => '', 'evPType' => '', 'Comment' => '' ]); if(!$validator->passes()) return response()->json(['code' => -1, 'msg' => $validator->errors() ], 400); CharCashItem_OutputBox::SENDITEMOUTPUTBOX($request); return response()->json([ 'code' => 0, 'msg' => 'Items successfully sent.' ], 200); } }