/// <summary> /// Gets the statistics. /// </summary> /// <param name="sessionID">The sessionID of the current session</param> /// <param name="stat">The stat.</param> /// <param name="typeOfStat">The type of stat.</param> /// <param name="productID">The product ID.</param> /// <param name="start">The start date and time </param> /// <param name="end">The end date and time</param> /// <returns></returns> public List<double> GetStatistics(string sessionID, StatObject stat, StatType typeOfStat, int productID, DateTime start, DateTime end) { if (stat == StatObject.Income) { if (typeOfStat == StatType.ForEachDay) { BillItemsTableAdapter bia = new BillItemsTableAdapter(); CustomerTransactionsTableAdapter cta = new CustomerTransactionsTableAdapter(); var transactions = cta.GetDataByTimeFrame(start, end); int numOfDays = (int)(end.Date.Subtract(start.Date).TotalDays); double[] re = new double[numOfDays+1]; foreach (var trans in transactions) { if (!trans.IsEndTimeNull()) { int dayVal = (int)(trans.EndTime.Date.Subtract(start.Date).TotalDays); var bills = bia.GetDataByWorkflowID(trans.WorkflowInstID); re[dayVal] += (double)(from p in bills select p.Price).Sum(); } } return re.ToList(); } } else if (stat == StatObject.PayroleExpence) { if (typeOfStat == StatType.ForEachDay) { WorkerShiftsTableAdapter wta = new WorkerShiftsTableAdapter(); var shifts = wta.GetDataByTimeFrame(start, end); int numOfDays = (int)(end.Date.Subtract(start.Date).TotalDays); RolePayrateTableAdapter rta = new RolePayrateTableAdapter(); var payoutTable = rta.GetData(); List<double> re = new List<double>(); DateTime i_start = start.Date; DateTime i_end = i_start.Add(new TimeSpan(1, 0, 0, 0)); for (int i = 0; i < numOfDays; i++) { decimal v = (from p in shifts where p.StartTime > i_start && p.StartTime < i_end && p.IsEndTimeNull() == false select (from q in payoutTable where q.Role == p.Role select q.PayPerHour).FirstOrDefault() * (decimal)(p.EndTime.Subtract(p.StartTime).TotalHours)).Sum(); re.Add((double)v); i_start = i_end; i_end = i_start.Add(new TimeSpan(1, 0, 0, 0)); } return re; } } return null; }
/// <summary> /// Gets the top sellers. /// </summary> /// <param name="sessionID">The sessionID of the current session</param> /// <param name="start">The start date and time </param> /// <param name="end">The end date and time</param> /// <param name="numberOfItems">The number of items.</param> /// <returns></returns> public List<ItemSalesSummery> GetTopSellers(string sessionID, DateTime start, DateTime end, int numberOfItems) { BillItemsTableAdapter bia = new BillItemsTableAdapter(); CustomerTransactionsTableAdapter cta = new CustomerTransactionsTableAdapter(); var transactions = cta.GetDataByTimeFrame(start, end); List<CRySTALDataConnections.CRySTALDataSet.BillItemsRow> bit = new List<CRySTALDataConnections.CRySTALDataSet.BillItemsRow>(); foreach (var trans in transactions) { var billsItems = bia.GetDataByWorkflowID(trans.WorkflowInstID).ToList(); bit.AddRange(billsItems); } List<string> itemNames = (from p in bit select p.Name).Distinct().ToList(); List<ItemSalesSummery> iss = new List<ItemSalesSummery>(); foreach (string itemName in itemNames) { ItemSalesSummery sum = new ItemSalesSummery(); sum.itemName = itemName; sum.totalAmountSold = (from p in bit where p.Name == itemName select p).Count(); sum.cost = (from p in bit where p.Name == itemName select p.Price).FirstOrDefault(); sum.totalAmount = sum.totalAmountSold * sum.cost; iss.Add(sum); } return (from p in iss orderby p.totalAmountSold descending select p).Take(numberOfItems).ToList(); }
/// <summary> /// Gets the bill from DB. /// </summary> /// <param name="workflowInstId">The workflow inst id.</param> /// <returns></returns> public BillData GetBillFromDB(Guid workflowInstId) { BillItemsTableAdapter bia = new BillItemsTableAdapter(); var rows = bia.GetDataByWorkflowID(workflowInstId); BillData bd = new BillData(); bd.BillTotal = 0.00M; bd.Items = new List<BillItem>(); foreach (var row in rows) { BillItem bi = new BillItem(); bi.ItemName = row.Name; bi.ItemPrice = row.Price; bi.Person = row.Person; bd.Items.Add(bi); bd.BillTotal += bi.ItemPrice; } return bd; }