using Biskilog_Accounting.Shared.CustomModels ;
using Biskilog_Accounting.Shared.POSModels ;
using System ;
using System.Collections.Generic ;
using System.Linq ;
using System.Text ;
using System.Threading.Tasks ;
namespace Biskilog_Accounting.Shared.Interfaces
{
public interface IProduct
{
IEnumerable < Unitofmeasure > GetUnitofmeasures ( ) ;
IEnumerable < ProductItem > GetProducts ( string a_productKey = "" ) ;
IEnumerable < Tblbrand > GetBrands ( string a_brandKey = "" ) ;
IEnumerable < Tblcategory > GetCategories ( string a_categoryKey = "" ) ;
IEnumerable < ProductItem > GetLowstockItems ( ) ;
Task FetchProducts ( ) ;
Task FetchLowStockProducts ( ) ;
Task FetchUnits ( ) ;
Task FetchBrands ( ) ;
Task FetchCategories ( ) ;
void RefreshList ( ) ;
ProductItem GetProductById ( string a_id ) ;
ProductItem GetProductByName ( string name ) ;
string GetUnitName ( string a_unitCode ) ;
event EventHandler ProductsChanged ;
event EventHandler UnitsChanged ;
event EventHandler BrandsChanged ;
event EventHandler CategoriesChanged ;
Task SyncProducts ( List < Tblproduct > a_item ) ;
Task SyncInventory ( List < Tblinventory > a_item ) ;
Task SyncInventoryEntries ( List < Tblinventoryentry > a_item ) ;
Task SyncPriceChanges ( List < Tblpricechange > a_items ) ;
Task SyncProductAltUnit ( List < Productaltunit > a_items ) ;
Task SyncRestockAsync ( List < Restocklevel > a_items ) ;
Task SyncUnitOfMeasureAsync ( List < Unitofmeasure > a_items ) ;
Task SyncStockAsync ( List < Tbstock > a_items ) ;
Task SyncBrandsAsync ( List < Tblbrand > a_items ) ;
Task SyncCategoriesAsync ( List < Tblcategory > a_items ) ;
DateTime GetLastSyncDate ( string a_tablename ) ;
void SetLastSyncDate ( string a_tableName , DateTime a_timestamp ) ;
}
}