from pypos.modules.penjualan.config.penjualan_config import (
    get_autocomplete_debounce_ms,
    get_autocomplete_contains_min_keyword,
    get_autocomplete_limit,
    get_autocomplete_min_keyword,
    get_transaksi_payload_error_log_limit,
    get_quick_price_sync_tables,
    get_pembatalan_allowed_days,
    get_pembatalan_search_limit,
    get_admin_qty_verify_threshold,
    is_transaksi_payload_strict_mode_enabled,
    is_lookup_require_active_harga_enabled,
    is_performance_profile_enabled,
    get_return_allowed_days,
    get_return_search_limit,
)
from pypos.modules.penjualan.models.penjualan_config_model import PenjualanConfigModel


class PenjualanConfigService:
    def __init__(self, db_path=None, model=None):
        self.model = model or PenjualanConfigModel(db_path=db_path)

    def get_ppn_percent(self, default=11):
        return self.model.get_ppn_percent(default=default)

    # edited by glg
    def get_ppn_mode(self, default="include"):
        return self.model.get_ppn_mode(default=default)

    # edited by glg
    def is_ppn_include_mode(self, default="include"):
        return self.get_ppn_mode(default=default) == "include"

    def get_pembatalan_allowed_days(self, default=0):
        return get_pembatalan_allowed_days(default=default)

    def get_pembatalan_search_limit(self, default=200):
        return get_pembatalan_search_limit(default=default)

    def get_return_allowed_days(self, default=0):
        return get_return_allowed_days(default=default)

    def get_return_search_limit(self, default=200):
        return get_return_search_limit(default=default)

    def get_autocomplete_limit(self, default=50):
        return get_autocomplete_limit(default=default)

    def get_autocomplete_min_keyword(self, default=1):
        return get_autocomplete_min_keyword(default=default)

    def get_autocomplete_debounce_ms(self, default=220):
        return get_autocomplete_debounce_ms(default=default)

    # edited by glg
    def get_autocomplete_contains_min_keyword(self, default=2):
        return get_autocomplete_contains_min_keyword(default=default)

    def is_performance_profile_enabled(self):
        return is_performance_profile_enabled()

    # edited by glg
    def is_lookup_require_active_harga_enabled(self, default=1):
        return is_lookup_require_active_harga_enabled(default=default)

    # edited by glg
    def get_quick_price_sync_tables(self, default=None):
        return get_quick_price_sync_tables(default=default)

    # edited by glg
    def get_admin_qty_verify_threshold(self, default=99):
        return get_admin_qty_verify_threshold(default=default)

    # edited by glg
    def is_transaksi_payload_strict_mode_enabled(self, default=0):
        return is_transaksi_payload_strict_mode_enabled(default=default)

    # edited by glg
    def get_transaksi_payload_error_log_limit(self, default=20):
        return get_transaksi_payload_error_log_limit(default=default)
