Skip to content
FULLTime eCommerce

Technical Details

Architecture

FutiCustomerServiceCenter/
├── src/
│   ├── Core/
│   │   ├── Content/           # Entities and definitions
│   │   │   ├── Ticket/        # Ticket system
│   │   │   ├── Category/      # Category management
│   │   │   ├── TicketMessage/ # Messaging system
│   │   │   └── MailTemplate/  # Email templates
│   │   └── Api/               # REST API Endpoints
│   ├── Service/               # Business Logic
│   │   ├── NotificationService.php
│   │   └── FaqIntegrationService.php
│   ├── Storefront/            # Frontend Controller
│   │   └── Controller/
│   └── Resources/
│       ├── views/             # Twig Templates
│       ├── app/               # JavaScript/CSS
│       ├── config/            # Configuration
│       └── snippet/           # Translations

Database Schema

Tickets Table

CREATE TABLE `futi_customer_service_ticket` (
  `id` BINARY(16) NOT NULL,
  `ticket_number` VARCHAR(255) NOT NULL,
  `subject` VARCHAR(255) NOT NULL,
  `description` LONGTEXT,
  `status` VARCHAR(50) DEFAULT 'open',
  `priority` VARCHAR(50) DEFAULT 'normal',
  `customer_id` BINARY(16),
  `category_id` BINARY(16),
  `assigned_user_id` BINARY(16),
  `order_id` BINARY(16),
  `created_at` DATETIME(3) NOT NULL,
  `updated_at` DATETIME(3),
  PRIMARY KEY (`id`)
);

Categories Table

CREATE TABLE `futi_customer_service_category` (
  `id` BINARY(16) NOT NULL,
  `name` VARCHAR(255) NOT NULL,
  `description` LONGTEXT,
  `color` VARCHAR(7),
  `icon` VARCHAR(100),
  `sort_order` INT DEFAULT 0,
  `active` TINYINT(1) DEFAULT 1,
  `created_at` DATETIME(3) NOT NULL,
  `updated_at` DATETIME(3),
  PRIMARY KEY (`id`)
);

API Endpoints

# Retrieve tickets
GET /store-api/futi/service-center/tickets

# Create ticket
POST /store-api/futi/service-center/tickets

# Ticket details
GET /store-api/futi/service-center/tickets/{ticketId}

# Add message
POST /store-api/futi/service-center/tickets/{ticketId}/messages

Events and Hooks

class TicketStatusChangedListener
{
    public function onTicketStatusChanged(TicketStatusChangedEvent $event): void
    {
        $ticket = $event->getTicket();
        $oldStatus = $event->getOldStatus();
        $newStatus = $event->getNewStatus();
        // Custom Logic here
    }
}

Was this page helpful?

Support

Rented Plugins (Shopware Store)

For support with plugins rented from the Shopware Store, please open a support ticket in your Shopware account.

Create Shopware Ticket

General Inquiries

For general questions or purchase licenses, reach us by email.

Send Email
Kunden Service Center · Technical Details | FULLTime eCommerce | FULLTime eCommerce