using OnlineSalesAutoCrop.CoreAPI.Models;
using OnlineSalesAutoCrop.CoreAPI.Models.Objects.Setups;
using OnlineSalesAutoCrop.CoreAPI.Models.Requests.Systems;
using OnlineSalesAutoCrop.CoreAPI.Models.Responses;
using OnlineSalesAutoCrop.CoreAPI.Models.Responses.Systems;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace OnlineSalesAutoCrop.CoreAPI.Services.Contracts.Systems
{
	public interface IParamTypeService
	{
		Task<LabelSettingResponse> GetLabelSettingAsync(int settingId);
		Task<BooleanResponse> SaveLabelSettingAsync(LabelSettingRequest request);

		Task<bool> DeleteLookupDataAsync(int lookupId, int deletedBy);
		Task<LookupDataExtResponse> GetLookupDataExtAsync(EnumLookupType lookupType);
		Task<bool> SaveLookupDataAsync(List<LookupDataExt> items, string ipAddress, int userId);
		Task<LookupDataResponse> GetLookupDataAsync(EnumLookupType lookupType, int excludeItemId);

		Task<SalesTxnTypeResponse> GetSalesTxnTypesAsync(int txnType, int typeOfTran);

		Task<ProdByInvTypeResponse> GetFASparePartsAsync(string criteria);
		Task<ProdByInvTypeResponse> GetProductsAsync(int inventoryTypeId, string criteria);
		Task<ProdByInvTypeAndCodeResponse> GetProductByCodeAsync(int inventoryTypeId, string productCode);
		Task<ProdByInvTypeResponse> GetProductsExtAsync(List<int> inventoryTypeIds, bool materialOnly, string criteria);
		Task<ProdByInvTypeExtResponse> GetProductsStockAsync(int storeId, int stockOf, bool stockOnly, List<int> inventoryTypeIds, bool materialOnly, string criteria);
	}
}
