File: /var/www/api.ayokah.co.uk/app/Http/Controllers/TicketController.php
<?php
namespace App\Http\Controllers;
use App\Models\Ticket;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class TicketController extends Controller
{
public function store(Request $request)
{
try {
$validatedData = $request->validate([
'title' => 'required|string|max:255',
'description' => 'required|string',
'user_id' => 'required|string',
]);
$ticket = Ticket::create([
'user_id' => $validatedData['user_id'],
'title' => $validatedData['title'],
'description' => $validatedData['description'],
]);
return response()->json(['status' => 'success', 'message' => $ticket], 200);
} catch (\Throwable $th) {
return response()->json(['status' => 'error', 'message' => $th->getMessage()], 200);
}
}
public function update(Request $request, Ticket $ticket)
{
try {
$validatedData = $request->validate([
'id' => 'sometimes|string|exists:tickets,id',
'user_id' => 'sometimes|string|exists:tickets,user_id',
'title' => 'sometimes|string|max:255',
'description' => 'sometimes|string',
'status' => 'sometimes|in:open,closed,pending',
]);
$ticket->update($validatedData);
return response()->json(['status' => 'success', 'message' => $ticket], 200);
} catch (\Throwable $th) {
return response()->json(['status' => 'error', 'message' => $th->getMessage()], 400);
}
}
public function destroy(Request $request)
{
try {
$validatedData = $request->validate([
'id' => 'required|exists:tickets,id',
]);
$ticket = Ticket::findOrFail($validatedData['id']);
$ticket->delete();
return response()->json(['status' => 'success', 'message' => 'Ticket deleted successfully'], 200);
} catch (\Throwable $th) {
return response()->json(['status' => 'error', 'message' => $th->getMessage()], 400);
}
}
public function list()
{
$tickets = Ticket::all();
return response()->json(['status' => 'success', 'message' => $tickets], 200);
}
}