<?php

namespace common\components;

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

trait BusinessLogicTrait
{
    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 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 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();
    }
}