from pypos.modules.customer.models.customer_model import CustomerModel


class CustomerService:
    def __init__(self, model=None):
        self.model = model or CustomerModel()

    def get_customers(self, search_term=None):
        return self.model.get_customers(search_term)

    def count_customers(self, search_term=None):
        return self.model.count_customers(search_term)

    def get_customers_paged(self, search_term=None, limit=100, offset=0):
        return self.model.get_customers_paged(search_term, limit=limit, offset=offset)

    def add_customer(self, nama, alamat, telepon):
        self._validate_required_fields(nama, alamat, telepon)
        return self.model.add_customer(nama, alamat, telepon)

    def update_customer(self, customer_id, nama, alamat, telepon):
        self._validate_required_fields(nama, alamat, telepon)
        return self.model.update_customer(customer_id, nama, alamat, telepon)

    def delete_customer(self, customer_id):
        return self.model.delete_customer(customer_id)

    def get_customer_by_id(self, customer_id):
        return self.model.get_customer_by_id(customer_id)

    def load_all_customers(self):
        return self.model.load_all_customers()

    def _validate_required_fields(self, nama, alamat, telepon):
        values = (str(nama or "").strip(), str(alamat or "").strip(), str(telepon or "").strip())
        if not all(values):
            raise ValueError("Semua field customer wajib diisi.")
