﻿# edited by glg
class PenjualanControllerFactoryService:
    def _build_diskon_controller(self):
        module = __import__(
            "pypos.modules.penjualan.controllers.diskon_controller",
            fromlist=["DiskonController"],
        )
        return module.DiskonController

    def _build_customer_search_controller(self):
        module = __import__(
            "pypos.modules.customer.controllers.customer_search_controller",
            fromlist=["CustomerSearchController"],
        )
        return module.CustomerSearchController

    def _build_load_transaksi_controller(self):
        module = __import__(
            "pypos.modules.penjualan.controllers.load_transaksi_controller",
            fromlist=["LoadTransaksiController"],
        )
        return module.LoadTransaksiController

    def _build_pembayaran_controller(self):
        module = __import__(
            "pypos.modules.penjualan.controllers.pembayaran_controller",
            fromlist=["PembayaranController"],
        )
        return module.PembayaranController

    def _build_settlement_controller(self):
        module = __import__(
            "pypos.modules.penjualan.controllers.settlement_controller",
            fromlist=["SettlementController"],
        )
        return module.SettlementController

    def _build_pembatalan_transaksi_controller(self):
        module = __import__(
            "pypos.modules.penjualan.controllers.pembatalan_transaksi_controller",
            fromlist=["PembatalanTransaksiController"],
        )
        return module.PembatalanTransaksiController

    def _build_return_controller(self):
        module = __import__(
            "pypos.modules.penjualan.controllers.return_controller",
            fromlist=["ReturnController"],
        )
        return module.ReturnController

    def _build_return_history_controller(self):
        module = __import__(
            "pypos.modules.penjualan.controllers.return_history_controller",
            fromlist=["ReturnHistoryController"],
        )
        return module.ReturnHistoryController

    def create_diskon_controller(self):
        return self._build_diskon_controller()()

    def create_customer_search_controller(self, parent=None):
        return self._build_customer_search_controller()(parent=parent)

    def create_load_transaksi_controller(self, parent, transaksi_controller, db_path):
        return self._build_load_transaksi_controller()(parent, transaksi_controller, db_path)

    def create_pembayaran_controller(self, parent=None, info_transaksi=None, multi_payment_mode=False):
        return self._build_pembayaran_controller()(
            parent=parent,
            info_transaksi=info_transaksi,
            multi_payment_mode=multi_payment_mode,
        )

    def create_settlement_controller(
        self,
        db_path,
        user_info,
        parent_window=None,
        as_page=False,
        on_close_requested=None,
        on_settlement_completed=None,
    ):
        return self._build_settlement_controller()(
            db_path=db_path,
            user_info=user_info,
            parent_window=parent_window,
            as_page=as_page,
            on_close_requested=on_close_requested,
            on_settlement_completed=on_settlement_completed,
        )

    def create_pembatalan_transaksi_controller(self, user_info=None, db_path=None):
        return self._build_pembatalan_transaksi_controller()(
            user_info=user_info,
            db_path=db_path,
        )

    def create_return_controller(self):
        return self._build_return_controller()()

    def create_return_history_controller(self, return_model=None, pembatalan_model=None):
        return self._build_return_history_controller()(
            return_model=return_model,
            pembatalan_model=pembatalan_model,
        )
