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.
 
 
 
 

102 lines
4.1 KiB

using Biskilog_Accounting.Client.Pages.Product;
using Biskilog_Accounting.Shared.CustomModels;
using BlazorDateRangePicker;
using Microsoft.AspNetCore.Components.Web;
namespace Biskilog_Accounting.Client.Pages.Transactions
{
public partial class Sales
{
private IEnumerable<SaleItem> m_salesItems { get; set; } = Enumerable.Empty<SaleItem>();
private DateTimeOffset? m_startDate { get; set; } = DateTimeOffset.Now;
private DateTimeOffset? m_endDate { get; set; } = DateTimeOffset.Now;
private Dictionary<string, DateRange> m_ranges = new Dictionary<string, DateRange>();
private double m_totalRevenue { get; set; }
private double m_totalCancelledRevenue { get; set; }
private int m_totalNbrRevenue { get; set; }
private int m_totalNbrCancelled { get; set; }
private bool m_lookUpMode { get; set; }
private bool m_fetching { get; set; }
private bool m_recent { get; set; }
protected override void OnInitialized()
{
PopulateRange();
m_salesRepo.TransactionsChanged += TransactionsChanged;
m_searchControl.SearchValueChanged += SearchValueChanged;
m_salesRepo.FetchStart += FetchStart;
m_salesRepo.FetchComplete += FetchComplete;
m_salesItems = m_salesRepo.GetRecentTransaction();
SetParams();
m_recent = true;
base.OnInitialized();
}
private void FetchComplete(object? sender, EventArgs e)
{
m_fetching = false;
StateHasChanged();
}
private void FetchStart(object? sender, EventArgs e)
{
m_fetching = true;
StateHasChanged();
}
void ResetClick(MouseEventArgs e, DateRangePicker picker)
{
m_startDate = DateTimeOffset.UtcNow;
m_endDate = DateTimeOffset.UtcNow;
// Close the picker
picker.Close();
// Fire OnRangeSelectEvent
picker.OnRangeSelect.InvokeAsync(new DateRange());
}
private void PopulateRange()
{
m_ranges.Clear();
m_ranges.Add("Today", new DateRange() { Start = DateTime.Now, End = DateTime.Now.AddDays(1) });
m_ranges.Add("Yesterday", new DateRange() { Start = DateTime.Now.AddDays(-1), End = DateTime.Now });
m_ranges.Add("Last 7 Days", new DateRange() { Start = DateTime.Now.AddDays(-7), End = DateTime.Now });
m_ranges.Add("Last 30 Days", new DateRange() { Start = DateTime.Now.AddDays(-30), End = DateTime.Now });
}
private void TransactionsChanged(object? sender, EventArgs e)
{
m_salesItems = m_salesRepo.GetTransactions(m_startDate.Value.Date, m_endDate.Value.Date);
SetParams();
StateHasChanged();
}
private void SearchValueChanged(string a_searchKey)
{
m_salesRepo.FetchReceipt(a_searchKey);
m_lookUpMode = !string.IsNullOrEmpty(a_searchKey);
}
public void Dispose()
{
m_salesRepo.TransactionsChanged -= TransactionsChanged;
m_searchControl.SearchValueChanged -= SearchValueChanged;
m_salesRepo.FetchStart -= FetchStart;
m_salesRepo.FetchComplete -= FetchComplete;
}
private void SetParams()
{
m_totalRevenue = (double)m_salesItems.Where(c => c.Status == "SOLD").Sum(t => t.Total).Value;
m_totalNbrRevenue = m_salesItems.Where(c => c.Status == "SOLD").Count();
m_totalNbrCancelled = m_salesItems.Where(c => c.Status != "SOLD").Count();
m_totalCancelledRevenue = (double)m_salesItems.Where(c => c.Status != "SOLD").Sum(t => t.Total).Value;
m_recent = false;
}
private void LoadTransactions()
{
m_searchControl.SearchValueChanged -= SearchValueChanged;
m_searchControl.Clear();
m_lookUpMode = false;
m_salesRepo.FetchTransaction(m_startDate.Value.Date, m_endDate.Value.Date);
m_searchControl.SearchValueChanged += SearchValueChanged;
}
}
}