using Biskilog_Accounting.Shared.CustomModels ;
using Biskilog_Accounting.Shared.POSModels ;
namespace Biskilog_Accounting.Shared.Interfaces
{
public interface IAnalytics
{
/// <summary>
/// Fetches a collection of sales transaction made from the specified start date to the end date
/// </summary>
/// <param name="a_start">Specified Start Date</param>
/// <param name="a_end">Specified end Date</param>
/// <returns></returns>
IEnumerable < Tblcart > GetSalesTransaction ( DateTime a_start , DateTime a_end ) ;
/// <summary>
/// Fetches a collection of in-debt customers
/// <returns></returns>
IEnumerable < InDebtCustomers > GetInDebtCustomers ( ) ;
/// <summary>
/// Fetches a collection of Product Items which are currently out of stock
/// </summary>
/// <returns></returns>
IEnumerable < ProductItem > GetOutOfStockItems ( ) ;
/// <summary>
/// Fetches a collection of the most purchased Product Items within a specified date range
/// </summary>
/// <param name="a_start"></param>
/// <param name="a_end"></param>
/// <returns></returns>
IEnumerable < MostPurchasedItem > GetMostPurchasedItem ( DateTime a_start , DateTime a_end ) ;
/// <summary>
/// Fetches a collection of cancelled transaction within a specified date range
/// </summary>
/// <param name="a_start"></param>
/// <param name="a_end"></param>
/// <returns></returns>
IEnumerable < CancelledSales > GetCancelledSales ( DateTime a_start , DateTime a_end ) ;
/// <summary>
/// Fetches a collection of transaction made by employees within a specified date range
/// </summary>
/// <param name="a_start"></param>
/// <param name="a_end"></param>
/// <returns>A dictionary of transactions made by employees with employee name as key</returns>
Dictionary < string , List < SaleItem > > GetEmployeeSales ( DateTime a_start , DateTime a_end ) ;
/// <summary>
/// Fetches a collection of product price changes with a specified date range
/// </summary>
/// <param name="a_start"></param>
/// <param name="a_end"></param>
/// <returns></returns>
IEnumerable < ProductPriceChange > GetPriceChanges ( DateTime a_start , DateTime a_end ) ;
//void SetContraints(string a_token);
}
}