from pypos.core.base_controller import BaseController
from pypos.modules.penjualan.views.diskon_view import DiskonView
from pypos.modules.penjualan.models.diskon_model import DiskonModel
from pypos.modules.penjualan.services.diskon_service import DiskonService


class DiskonController(BaseController):
    def __init__(self):
        super().__init__()
        self.model = DiskonModel()
        self.service = DiskonService()
        self.bind_view(DiskonView(), bind_back=False)

    def tampilkan_keterangan_produk_grosir(self, produk_id):
        data = self.model.get_keterangan_grosir(produk_id)
        hasil_keterangan = self.service.format_keterangan_grosir(data)
        if hasattr(self, "view") and self.view:
            self.view.tampilkan_keterangan_diskon(hasil_keterangan)
        return hasil_keterangan

    def tampilkan_keterangan_produk_free(self, produk_id):
        data = self.model.get_keterangan_free(produk_id)
        hasil_keterangan = self.service.format_keterangan_free(data)
        if hasattr(self, "view") and self.view:
            self.view.tampilkan_keterangan_diskon(hasil_keterangan)
        return hasil_keterangan

    def hitung_diskon_barang(self, barang_data, jenis_diskon, harga, jumlah):
        return self.service.hitung_diskon_barang(barang_data, jenis_diskon, harga, jumlah)
