using Biskilog_Accounting.Shared.CustomModels;
using Biskilog_Accounting.Shared.POSModels;
namespace Biskilog_Accounting.Shared.Interfaces
{
public interface IAnalytics
{
///
/// Fetches a collection of sales transaction made from the specified start date to the end date
///
/// Specified Start Date
/// Specified end Date
///
IEnumerable GetSalesTransaction(DateTime a_start, DateTime a_end);
///
/// Fetches a collection of sales transaction made within a one week period
///
///
IEnumerable GetWeeklySalesTransaction();
///
/// Fetches a collection of in-debt customers
///
IEnumerable GetInDebtCustomers();
///
/// Fetches a collection of Product Items which are currently out of stock
///
///
IEnumerable GetOutOfStockItems();
///
/// Fetches a collection of the most purchased Product Items within a specified date range
///
///
///
///
IEnumerable GetMostPurchasedItem(DateTime a_start, DateTime a_end);
///
/// Fetches a collection of cancelled transaction within a specified date range
///
///
///
///
IEnumerable GetCancelledSales(DateTime a_start, DateTime a_end);
///
/// Fetches a collection of transaction made by employees within a specified date range
///
///
///
/// A dictionary of transactions made by employees with employee name as key
Dictionary> GetEmployeeSales(DateTime a_start, DateTime a_end);
///
/// Fetches a collection of product price changes with a specified date range
///
///
///
///
IEnumerable GetPriceChanges(DateTime a_start, DateTime a_end);
///
/// Fetch the trade summary which is made of the total sales made currently and previous trade
///
///
TradeSummary GetTradeSummary();
///
/// Fetches the most recent sales transactions
///
/// The number of rows to return
///
IEnumerable GetRecentSales(int a_limit);
///
/// Fetches a collection of product price changes recently made
///
/// the number of rows to return
///
IEnumerable GetRecentPriceChanges(int a_limit);
///
/// Fetches a collection of price change history per product
///
/// the number of products to fetch history
///
IEnumerable GetProductPriceChangeHistory(int a_limit);
///
/// Fetches a collection of sales transaction grouped by category made within a one week period
///
///
IEnumerable GetWeeklySalesCategoryTransaction(int a_limit);
}
}