New source control repo for Biskilog POS - secure hub to store & manage source code. Streamlines dev process, tracks changes, & improves collaboration. Ensures reliable software.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

158 lines
5.7 KiB

using Biskilog_Accounting.Shared.CustomModels;
using Biskilog_Accounting.Shared.Interfaces;
using Biskilog_Accounting.Shared.POSModels;
using System.Text.Json;
namespace Biskilog_Accounting.Client.Repos
{
public class SalesRepository : ISalesInterface
{
private IEnumerable<SaleItem> m_transactions;
private IEnumerable<SaleItem> m_recentTransactions;
private readonly HttpClient m_http;
public event EventHandler TransactionsChanged;
public event EventHandler FetchComplete;
public event EventHandler FetchStart;
public SalesRepository(HttpClient a_http)
{
m_recentTransactions = m_transactions = new List<SaleItem>();
m_http = a_http;
}
public async Task FetchRecentTransaction(int a_limit)
{
FetchStart?.Invoke(this, EventArgs.Empty);
var response = await m_http.GetAsync($"api/analytics/sales/recent/{a_limit}");
if (response.IsSuccessStatusCode)
{
var jsonContent = await response.Content.ReadAsStringAsync();
var options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true };
var recent = JsonSerializer.Deserialize<List<SaleItem>>(jsonContent, options);
m_recentTransactions = recent;
}
FetchComplete?.Invoke(this, EventArgs.Empty);
}
public async Task FetchTransaction(DateTime a_start, DateTime a_end)
{
FetchStart?.Invoke(this, EventArgs.Empty);
string start = a_start.ToString("yyyy-MM-dd");
string end = a_end.ToString("yyyy-MM-dd");
var response = await m_http.GetAsync($"api/sales/transactions/{start}/{end}");
if (response.IsSuccessStatusCode)
{
var jsonContent = await response.Content.ReadAsStringAsync();
var options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true };
var recent = JsonSerializer.Deserialize<List<SaleItem>>(jsonContent, options);
m_transactions = recent;
TransactionsChanged?.Invoke(this, new EventArgs());
}
FetchComplete?.Invoke(this, EventArgs.Empty);
}
public IEnumerable<SaleItem> GetTransactions(DateTime a_start, DateTime a_end)
{
return m_transactions;
}
public IEnumerable<SaleItem> GetRecentTransaction()
{
return m_recentTransactions;
}
public async Task FetchReceipt(string a_receiptId)
{
FetchStart?.Invoke(this, EventArgs.Empty);
var response = await m_http.GetAsync($"api/sales/transactions/lookup/{a_receiptId}");
if (response.IsSuccessStatusCode)
{
var jsonContent = await response.Content.ReadAsStringAsync();
var options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true };
var recent = JsonSerializer.Deserialize<List<SaleItem>>(jsonContent, options);
m_transactions = recent;
TransactionsChanged?.Invoke(this, new EventArgs());
}
FetchComplete?.Invoke(this, EventArgs.Empty);
}
public async Task<IEnumerable<Tblcart>> GetReceiptDetail(string a_receiptId)
{
var response = await m_http.GetAsync($"api/sales/receipt/lookup/{a_receiptId}");
if (response.IsSuccessStatusCode)
{
var jsonContent = await response.Content.ReadAsStringAsync();
var options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true };
var recent = JsonSerializer.Deserialize<List<Tblcart>>(jsonContent, options);
return recent;
}
return null;
}
#region Unimplemented
public IEnumerable<SaleItem> GetReceipt(string a_receiptId)
{
throw new NotImplementedException();
}
public Task SyncCart(List<Tblcart> a_item)
{
throw new NotImplementedException();
}
public DateTime GetLastSyncDate(string a_tablename)
{
throw new NotImplementedException();
}
public void SetLastSyncDate(string a_tableName, DateTime a_timestamp)
{
throw new NotImplementedException();
}
public Task SyncCancelledTransaction(List<Tblcancelledtransaction> a_item)
{
throw new NotImplementedException();
}
public Task SyncCreditPurchase(List<Creditpurchase> a_item)
{
throw new NotImplementedException();
}
public Task SyncCustomerAccount(List<Customeraccount> a_customerAccounts)
{
throw new NotImplementedException();
}
public Task SyncCustomerPurchase(List<Tblcustomerpurchase> a_customerPurchase)
{
throw new NotImplementedException();
}
public Task SyncDiscountLogs(List<Tbldiscountlog> a_discountLog)
{
throw new NotImplementedException();
}
public Task SyncDeliveryDetails(List<Tbldeliverydetail> a_details)
{
throw new NotImplementedException();
}
public Task SyncDeliveryHead(List<Tbldeliveryhead> a_heads)
{
throw new NotImplementedException();
}
public Task SyncDeliveryRecipients(List<Tbldeliveryrecipient> a_recipients)
{
throw new NotImplementedException();
}
public Task SyncInvoice(List<Tblinvoice> a_invoice)
{
throw new NotImplementedException();
}
#endregion
}
}