PHP code example of devmatika / desk365

1. Go to this page and download the library: Download devmatika/desk365 library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

devmatika / desk365 example snippets


use Devmatika\Desk365\Facades\Desk365;
use Devmatika\Desk365\DTO\{
    TicketCreateDto,
    TicketUpdateDto,
    TicketFilterDto,
    CommentDto,
    AgentDto,
    CustomerDto,
    ApiConfigDto
};

// Initialize with config
$config = new ApiConfigDto(
    baseUrl: config('desk365.base_url'),
    apiKey: config('desk365.api_key'),
    apiSecret: config('desk365.api_secret'),
    timeout: config('desk365.timeout', 30),
    version: config('desk365.version', 'v3')
);

Desk365::init($config);

$filters = new TicketFilterDto(
    status: 'open',
    priority: 'high',
    page: 1,
    perPage: 20
);
$response = Desk365::getAllTickets($filters);

$response = Desk365::getTicket('TKT-001');

$ticketData = new TicketCreateDto(
    email: '[email protected]',
    subject: 'Support Request',
    description: 'I need help with my account',
    assignedTo: 'agent_1',
    group: 'support',
    category: 'technical',
    status: 'open',
    priority: 1,
    type: 'Question'
);

$response = Desk365::createTicket($ticketData);

$ticketData = new TicketCreateDto(
    email: '[email protected]',
    subject: 'Support Request',
    description: 'I need help',
    assignedTo: 'agent_1',
    group: 'support',
    category: 'technical',
    file: $request->file('attachment')
);

$response = Desk365::createTicket($ticketData);

$updateData = new TicketUpdateDto(
    status: 'in_progress',
    priority: 2,
    assignedTo: 'agent_2'
);

$response = Desk365::updateTicket('TKT-001', $updateData);

$response = Desk365::deleteTicket('TKT-001');

$filters = new TicketFilterDto(status: 'open');
$response = Desk365::searchTickets('support request', $filters);

$response = Desk365::closeTicket('TKT-001');
$response = Desk365::reopenTicket('TKT-001');

$response = Desk365::updateTicketStatus('TKT-001', 'closed');
$response = Desk365::updateTicketPriority('TKT-001', '3');

$response = Desk365::getComments('TKT-001', ['page' => 1, 'per_page' => 20]);

$response = Desk365::getComment('TKT-001', 'comment_123');

$comment = new CommentDto(
    content: 'This is a test comment',
    authorId: 'agent_1',
    authorName: 'John Doe',
    authorType: 'agent',
    isPublic: true
);

$response = Desk365::addComment('TKT-001', $comment);

$comment = new CommentDto(content: 'Updated comment');
$response = Desk365::updateComment('TKT-001', 'comment_123', $comment);

$response = Desk365::deleteComment('TKT-001', 'comment_123');

$response = Desk365::uploadAttachment('TKT-001', $file, [
    'filename' => 'document.pdf',
    'description' => 'Support document'
]);

$response = Desk365::getAttachments('TKT-001');

$response = Desk365::getAttachment('TKT-001', 'attachment_123');

$response = Desk365::deleteAttachment('TKT-001', 'attachment_123');

$response = Desk365::downloadAttachment('TKT-001', 'attachment_123');

$response = Desk365::getAllAgents(['page' => 1, 'per_page' => 20]);

$response = Desk365::getAgent('agent_123');

$agentData = new AgentDto(
    name: 'John Doe',
    email: '[email protected]',
    phone: '+1234567890',
    role: 'agent',
    isActive: true
);

$response = Desk365::createAgent($agentData);

$agentData = new AgentDto(name: 'Jane Doe', role: 'admin');
$response = Desk365::updateAgent('agent_123', $agentData);

$response = Desk365::deleteAgent('agent_123');

$response = Desk365::getAllCustomers(['page' => 1, 'per_page' => 20]);

$response = Desk365::getCustomer('customer_123');

$customerData = new CustomerDto(
    name: 'John Customer',
    email: '[email protected]',
    phone: '+1234567890',
    company: 'Example Corp'
);

$response = Desk365::createCustomer($customerData);

$customerData = new CustomerDto(name: 'Jane Customer');
$response = Desk365::updateCustomer('customer_123', $customerData);

$response = Desk365::deleteCustomer('customer_123');

$response = Desk365::searchCustomers('john', ['page' => 1]);

$filters = new TicketFilterDto(status: 'open', dateFrom: '2024-01-01');
$response = Desk365::getTicketStatistics($filters);

$response = Desk365::getAgentStatistics('agent_123', '2024-01-01', '2024-12-31');

$response = Desk365::getDashboardData(['date_from' => '2024-01-01']);

$response = Desk365::createTicket($ticketData);

if ($response->isSuccess()) {
    $data = $response->getData();
    $message = $response->getMessage();
    $statusCode = $response->getStatusCode();
    $meta = $response->getMeta(); // For pagination, etc.
} else {
    $errors = $response->getErrors();
    $message = $response->getMessage();
    $statusCode = $response->getStatusCode();
}

$response = Desk365::getTicket('invalid_id');

if ($response->isError()) {
    Log::error('Desk365 Error', [
        'message' => $response->getMessage(),
        'errors' => $response->getErrors(),
        'status_code' => $response->getStatusCode()
    ]);
}
bash
php artisan vendor:publish --tag="desk365-config"