<?php

namespace common\components;

use domain\Config\TaxRate\TaxRateModule;
use domain\Config\Unit\UnitModule;
use domain\Distribution\Distribution\DistributionModule;
use domain\Distribution\PointSaleDistribution\PointSaleDistributionModule;
use domain\Distribution\ProductDistribution\ProductDistributionModule;
use domain\Document\DeliveryNote\DeliveryNoteModule;
use domain\Document\Document\DocumentModule;
use domain\Document\Invoice\InvoiceModule;
use domain\Document\Quotation\QuotationModule;
use domain\Feature\Feature\FeatureModule;
use domain\Feature\FeatureProducer\FeatureProducerModule;
use domain\Opinion\OpinionModule;
use domain\Order\Order\OrderModule;
use domain\Order\OrderStatus\OrderStatusModule;
use domain\Order\OrderStatusHistory\OrderStatusHistoryModule;
use domain\Order\ProductOrder\ProductOrderModule;
use domain\Payment\PaymentModule;
use domain\PointSale\PointSale\PointSaleModule;
use domain\PointSale\SharedPointSale\SharedPointSaleModule;
use domain\PointSale\UserPointSale\UserPointSaleModule;
use domain\Producer\Producer\ProducerModule;
use domain\Producer\ProducerPriceRange\ProducerPriceRangeModule;
use domain\Product\Accessory\AccessoryModule;
use domain\Product\Product\ProductModule;
use domain\Product\ProductAccessory\ProductAccessoryModule;
use domain\Product\ProductCategory\ProductCategoryModule;
use domain\Product\ProductPointSale\ProductPointSaleModule;
use domain\Product\ProductPrice\Module\ProductPriceModule;
use domain\Setting\SettingModule;
use domain\Subscription\ProductSubscription\ProductSubscriptionModule;
use domain\Subscription\Subscription\SubscriptionModule;
use domain\Ticket\Ticket\TicketModule;
use domain\Ticket\TicketMessage\TicketMessageModule;
use domain\Ticket\TicketUser\TicketUserModule;
use domain\User\User\UserModule;
use domain\User\UserGroup\UserGroupModule;
use domain\User\UserMessage\UserMessageModule;
use domain\User\UserProducer\UserProducerModule;
use domain\User\UserUserGroup\UserUserGroupModule;

trait BusinessLogicTrait
{
    public function getProductAccessoryModule(): ProductAccessoryModule
    {
        return ProductAccessoryModule::getInstance();
    }

    public function getAccessoryModule(): AccessoryModule
    {
        return AccessoryModule::getInstance();
    }

    public function getOrderStatusModule(): OrderStatusModule
    {
        return OrderStatusModule::getInstance();
    }

    public function getOrderStatusHistoryModule(): OrderStatusHistoryModule
    {
        return OrderStatusHistoryModule::getInstance();
    }

    public function getUnitModule(): UnitModule
    {
        return UnitModule::getInstance();
    }

    public function getOpinionModule(): OpinionModule
    {
        return OpinionModule::getInstance();
    }

    public function getUserProducerModule(): UserProducerModule
    {
        return UserProducerModule::getInstance();
    }

    public function getOrderModule(): OrderModule
    {
        return OrderModule::getInstance();
    }

    public function getTaxRateModule(): TaxRateModule
    {
        return TaxRateModule::getInstance();
    }

    public function  getDistributionModule(): DistributionModule
    {
        return DistributionModule::getInstance();
    }

    public function getPointSaleDistributionModule(): PointSaleDistributionModule
    {
        return PointSaleDistributionModule::getInstance();
    }

    public function getProductDistributionModule(): ProductDistributionModule
    {
        return ProductDistributionModule::getInstance();
    }

    public function getDeliveryNoteModule(): DeliveryNoteModule
    {
        return DeliveryNoteModule::getInstance();
    }

    public function getDocumentModule(): DocumentModule
    {
        return DocumentModule::getInstance();
    }

    public function  getInvoiceModule(): InvoiceModule
    {
        return InvoiceModule::getInstance();
    }

    public function getQuotationModule(): QuotationModule
    {
        return QuotationModule::getInstance();
    }

    public function getProductOrderModule(): ProductOrderModule
    {
        return ProductOrderModule::getInstance();
    }

    public function getPointSaleModule(): PointSaleModule
    {
        return PointSaleModule::getInstance();
    }

    public function getSharedPointSaleModule(): SharedPointSaleModule
    {
        return SharedPointSaleModule::getInstance();
    }

    public function getUserPointSaleModule(): UserPointSaleModule
    {
        return UserPointSaleModule::getInstance();
    }

    public function getProducerModule(): ProducerModule
    {
        return ProducerModule::getInstance();
    }

    public function getProducerPriceRangeModule(): ProducerPriceRangeModule
    {
        return ProducerPriceRangeModule::getInstance();
    }

    public function getProductModule(): ProductModule
    {
        return ProductModule::getInstance();
    }

    public function getProductCategoryModule(): ProductCategoryModule
    {
        return ProductCategoryModule::getInstance();
    }

    public function getProductPointSaleModule(): ProductPointSaleModule
    {
        return ProductPointSaleModule::getInstance();
    }

    public function getProductPriceModule(): ProductPriceModule
    {
        return ProductPriceModule::getInstance();
    }

    public function getProductSubscriptionModule(): ProductSubscriptionModule
    {
        return ProductSubscriptionModule::getInstance();
    }

    public function getSubscriptionModule(): SubscriptionModule
    {
        return SubscriptionModule::getInstance();
    }

    public function getPaymentModule(): PaymentModule
    {
        return PaymentModule::getInstance();
    }

    public function getUserModule(): UserModule
    {
        return UserModule::getInstance();
    }

    public function getUserMessageModule(): UserMessageModule
    {
        return UserMessageModule::getInstance();
    }

    public function getUserGroupModule(): UserGroupModule
    {
        return UserGroupModule::getInstance();
    }

    public function getUserUserGroupModule(): UserUserGroupModule
    {
        return UserUserGroupModule::getInstance();
    }

    public function getTicketModule(): TicketModule
    {
        return TicketModule::getInstance();
    }

    public function getTicketMessageModule(): TicketMessageModule
    {
        return TicketMessageModule::getInstance();
    }

    public function getTicketUserModule(): TicketUserModule
    {
        return TicketUserModule::getInstance();
    }

    public function getFeatureModule(): FeatureModule
    {
        return FeatureModule::getInstance();
    }

    public function getFeatureProducerModule(): FeatureProducerModule
    {
        return FeatureProducerModule::getInstance();
    }

    public function getSettingModule(): SettingModule
    {
        return SettingModule::getInstance();
    }
}