get('/customer/notes', function () { // Require the user to be logged in global $response; $this->requirePermission('list_customer_notes'); // Get the user object $user = (new authentication())->get_user(); // Check if the request was successful if ($user) { // Get the query parameters from the URL $data = $_GET; // Check if the required fields are set if (!isset($data['customer_number']) && !isset($data['user_id'])) { $response->error('User ID or Customer Number is required', 400); } // Log the incident (new logs_o())->add('customer_notes', 'global', 1, $user->id, 'LIST_CUSTOMER_NOTES', 'Successfully listed customer notes'); // Check if the user exists $targetUser = (new users_o())->automaticGetTargetUserFromRequest(); if (!$targetUser->exists()) { $response->error('Customer not found', 400); } // Return the list of customer notes $response->success( ($targetUser->getNotes()) ); } else { // Log the incident (new logs_o())->add('customer_notes', 'global', 1, 0, 'LIST_CUSTOMER_NOTES', 'No user found, or invalid session'); // Return an error $response->error('Invalid session', 400); } }, [ 'list_customer_notes' => 'List all customer notes' ] ); $this->post('/customer/notes', function () { // Require the user to be logged in global $response; $this->requirePermission('add_customer_note'); // Get the user object $user = (new authentication())->get_user(); // Check if the request was successful if ($user) { // Get the post data $data = json_decode(file_get_contents('php://input'), true); // Check if the required fields are set if (!isset($data['user_id']) && !isset($data['customer_number'])) { $response->error('User ID or Customer Number is required', 400); } if (!isset($data['note'])) { $response->error('Note is required', 400); } // Add the note to the customer $customer = (new users_o())->automaticGetTargetUserFromRequest(); // Check if the customer exists if (!$customer->exists()) { $response->error('Customer not found', 400); } $note = $customer->addNote((int)$customer->id, (string)$data['note'], (int)$user->id); // Log the incident (new logs_o())->add('customer_notes', 'global', 1, $user->id, 'ADD_CUSTOMER_NOTE', 'Successfully added a customer note'); // Return a success message $response->success($note->asArray()); } else { // Log the incident (new logs_o())->add('customer_notes', 'global', 1, 0, 'ADD_CUSTOMER_NOTE', 'No user found, or invalid session'); // Return an error $response->error('Invalid session', 400); } }, [ 'add_customer_note' => 'Add a customer note' ] ); $this->delete('/customer/notes', function () { // Require the user to be logged in global $response; $this->requirePermission('delete_customer_note'); // Get the user object $user = (new authentication())->get_user(); // Check if the request was successful if ($user) { // Get the query parameters from the URL $data = $_GET; // Check if the required fields are set if (!isset($data['id'])) { $response->error('Note ID is required', 400); } // Delete the note from the customer (new customer_notes_o())->delete((int)$data['id']); // Log the incident (new logs_o())->add('customer_notes', 'global', 1, $user->id, 'DELETE_CUSTOMER_NOTE', 'Successfully deleted a customer note'); // Return a success message $response->success(['message' => 'Customer note deleted']); } else { // Log the incident (new logs_o())->add('customer_notes', 'global', 1, 0, 'DELETE_CUSTOMER_NOTE', 'No user found, or invalid session'); // Return an error $response->error('Invalid session', 400); } }, [ 'delete_customer_note' => 'Delete a customer note' ] ); } }