89 lines
2.6 KiB
PHP
89 lines
2.6 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App\Http\Controllers;
|
||
|
|
|
||
|
|
use Illuminate\Http\Request;
|
||
|
|
use App\Models\Ticket;
|
||
|
|
use App\Models\Comment;
|
||
|
|
use App\Models\Response;
|
||
|
|
use Carbon\Carbon;
|
||
|
|
|
||
|
|
class TicketController extends Controller
|
||
|
|
{
|
||
|
|
public function allTickets()
|
||
|
|
{
|
||
|
|
$tickets = Ticket::all();
|
||
|
|
return view('all-tickets', ['tickets' => $tickets]);
|
||
|
|
}
|
||
|
|
|
||
|
|
public function storeResponse(Request $request)
|
||
|
|
{
|
||
|
|
$this->validate($request, [
|
||
|
|
'message' => 'required'
|
||
|
|
]);
|
||
|
|
|
||
|
|
// Load the HTML content into DOMDocument
|
||
|
|
$dom = new \DOMDocument();
|
||
|
|
libxml_use_internal_errors(true); // Prevents HTML errors from being thrown as exceptions
|
||
|
|
$dom->loadHTML('<?xml encoding="utf-8" ?>' . $request->message);
|
||
|
|
libxml_clear_errors();
|
||
|
|
|
||
|
|
// Get all <p> tags
|
||
|
|
$paragraphs = $dom->getElementsByTagName('p');
|
||
|
|
|
||
|
|
// Add classes to each <p> tag
|
||
|
|
foreach ($paragraphs as $paragraph) {
|
||
|
|
$existingClasses = $paragraph->getAttribute('class');
|
||
|
|
$paragraph->setAttribute('class', trim($existingClasses . ' user-message bg-light-green-color color-light'));
|
||
|
|
}
|
||
|
|
|
||
|
|
// Save the modified HTML
|
||
|
|
$messageWithClasses = $dom->saveHTML($dom->documentElement);
|
||
|
|
|
||
|
|
$response = new Response;
|
||
|
|
$response->message = $messageWithClasses;
|
||
|
|
$response->ticket_id = $request->ticket_id;
|
||
|
|
$response->user_id = 1;
|
||
|
|
$response->save();
|
||
|
|
|
||
|
|
// Return the updated response and time
|
||
|
|
return response()->json([
|
||
|
|
'message' => strip_tags($response->message), // Stripping HTML tags
|
||
|
|
'created_at' => $response->created_at->format('h:i A') // Formatting time
|
||
|
|
]);
|
||
|
|
}
|
||
|
|
|
||
|
|
public function updateStatus(Request $request, $ticketId)
|
||
|
|
{
|
||
|
|
$request->validate([
|
||
|
|
'status' => 'required|in:open,waiting,done',
|
||
|
|
]);
|
||
|
|
|
||
|
|
$ticket = Ticket::find($ticketId);
|
||
|
|
$ticket->status = $request->status;
|
||
|
|
$ticket->save();
|
||
|
|
|
||
|
|
// Return a response if necessary
|
||
|
|
return response()->json(['message' => 'Ticket status updated successfully']);
|
||
|
|
}
|
||
|
|
|
||
|
|
public function storeComment(Request $request)
|
||
|
|
{
|
||
|
|
$request->validate([
|
||
|
|
'ticket_id' => 'required|exists:tickets,id',
|
||
|
|
'comment' => 'required|string',
|
||
|
|
]);
|
||
|
|
|
||
|
|
// Assuming authenticated user
|
||
|
|
$user_id = auth()->id();
|
||
|
|
|
||
|
|
$comment = new Comment();
|
||
|
|
$comment->author = $user_id;
|
||
|
|
$comment->ticket_id = $request->ticket_id;
|
||
|
|
$comment->comment = $request->comment;
|
||
|
|
$comment->save();
|
||
|
|
|
||
|
|
return $comment;
|
||
|
|
}
|
||
|
|
}
|