package com.example.tabbuy.data.repository

import androidx.lifecycle.LiveData
import com.example.tabbuy.data.local.dao.KeranjangDao
import com.example.tabbuy.data.local.dao.PelangganDao
import com.example.tabbuy.data.local.dao.ProdukDao
import com.example.tabbuy.data.local.entity.KeranjangEntity
import com.example.tabbuy.data.local.entity.PelangganEntity
import com.example.tabbuy.data.local.entity.ProdukEntity

class MainRepository(
    private val pelangganDao: PelangganDao,
    private val produkDao: ProdukDao,
    private val keranjangDao: KeranjangDao
) {
    // Pelanggan
    suspend fun insertPelanggan(pelanggan: PelangganEntity) = pelangganDao.insert(pelanggan)
    suspend fun getAllPelanggan() = pelangganDao.getAllPelanggan()
    suspend fun getPelangganByEmail(email: String) = pelangganDao.getPelangganByEmail(email)
    suspend fun updatePelanggan(pelanggan: PelangganEntity) = pelangganDao.update(pelanggan)
    suspend fun deletePelanggan(pelanggan: PelangganEntity) = pelangganDao.delete(pelanggan)

    // Produk
    fun getAllProduk(): LiveData<List<ProdukEntity>> = produkDao.getAllProduk()
    fun searchProduk(query: String): LiveData<List<ProdukEntity>> = produkDao.searchProduk(query)
    
    suspend fun insertProduk(produk: ProdukEntity) = produkDao.insert(produk)
    suspend fun updateProduk(produk: ProdukEntity) = produkDao.update(produk)
    suspend fun deleteProduk(produk: ProdukEntity) = produkDao.delete(produk)

    // Keranjang
    suspend fun getAllKeranjang() = keranjangDao.getAllKeranjang()
    suspend fun addToCart(keranjang: KeranjangEntity) = keranjangDao.insert(keranjang)
    suspend fun removeFromCart(keranjang: KeranjangEntity) = keranjangDao.delete(keranjang)
    suspend fun clearCart() = keranjangDao.clearKeranjang()
}
