HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/demo.sports-crowd.com/app/Http/Controllers/Tickets/TransferController.php
<?php

namespace App\Http\Controllers\Tickets;

use App\Core\Ticket\Application\TransferService;
use App\Http\Controllers\Controller;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Auth;

class TransferController extends Controller
{
    protected $transferService;

    public function __construct(TransferService $transferService)
    {
        $this->transferService = $transferService;
    }

    public function batchTransfer(Request $request)
    {
        $user = Auth::user();
        $request->validate([
            'ticket_count' => 'required|integer|min:1',
            'recipient_email' => 'required|email',
            'match_event_id' => 'required|integer|exists:match_events,id',
            'ticket_ids' => 'array',
            'zone' => 'required|string',
        ]);

        try {
            $response = $this->transferService->batchTransfer(
                $user->id,
                $request->ticket_count,
                $request->recipient_email,
                $request->match_event_id,
                $request->zone,
                $request->ticket_ids
            );

            return response()->json([
                'status' => 'success',
                'data' => $response
            ]);
        } catch (Exception $e) {
            return response()->json([
                'status' => 'fail',
                'message' => $e->getMessage()
            ], Response::HTTP_INTERNAL_SERVER_ERROR);
        }
    }

    public function acceptTransfer($transferGroup)
    {
        try {
            $user = Auth::user();
            $this->transferService->acceptTransfer($user, $transferGroup);
            return response()->json([
                'status' => 'success',
                'data' => null,
                'message' => __('transfer_tickets.accepted_tickets')
            ]);
        } catch (Exception $e) {
            return response()->json([
                'status' => 'fail',
                'message' => $e->getMessage()
            ], Response::HTTP_INTERNAL_SERVER_ERROR);
        }
    }

    public function declineTransfer($transferGroup)
    {
        try {
            $user = Auth::user();
            $this->transferService->declineTransfer($user->id, $transferGroup);
            return response()->json([
                'status' => 'success',
                'data' => null,
                'message' => __('transfer_tickets.declined_tickets')
            ]);
        } catch (Exception $e) {
            return response()->json([
                'status' => 'fail',
                'message' => $e->getMessage()
            ], Response::HTTP_INTERNAL_SERVER_ERROR);
        }
    }

    public function reassignTransfer(Request $request, $transferGroup)
    {
        $request->validate([
            'new_user_email' => 'required|email'
        ]);

        try {
            $user = Auth::user();
            $this->transferService->reassignTransfer($user->id, $transferGroup, $request->new_user_email);
            return response()->json([
                'status' => 'success',
                'data' => null,
                'message' => __('transfer_tickets.reassigned_tickets')
            ]);
        } catch (Exception $e) {
            return response()->json([
                'status' => 'fail',
                'message' => $e->getMessage()
            ], Response::HTTP_INTERNAL_SERVER_ERROR);
        }
    }

    public function reverseTransfer($transferGroup)
    {
        try {
            $user = Auth::user();
            $this->transferService->reverseTransfer($user->id, $transferGroup);
            return response()->json([
                'status' => 'success',
                'data' => null,
                'message' => __('transfer_tickets.reversed_tickets')
            ]);
        } catch (Exception $e) {
            return response()->json([
                'status' => 'fail',
                'message' => $e->getMessage()
            ], Response::HTTP_INTERNAL_SERVER_ERROR);
        }
    }

    public function getPendingTransfers()
    {
        try {
            $user = Auth::user();
            $pendingTransfers = $this->transferService->getPendingTransfersByUser($user);
            foreach ($pendingTransfers as $pendingTransfer) {
                $pendingTransfer->match_event = null;
                $pendingTransfer->match_event = $this->transferService->getMatchEventByTransferGroupId($pendingTransfer->transfer_group);
            }
            return response()->json([
                'status' => 'success',
                'data' => $pendingTransfers
            ]);
        } catch (Exception $e) {
            return response()->json([
                'status' => 'fail',
                'message' => $e->getMessage()
            ], Response::HTTP_INTERNAL_SERVER_ERROR);
        }
    }
}