private static void ComputeDiscounts(OrdersReport ordersReport) { var discounts = new List <OrderItem>(); if (ordersReport.Items.All(i => i.Type.Equals(OrderItemType.SmallParcel))) { var filteredOrdersReport = ordersReport.Items.Where(i => i.Quantity >= 4).ToList(); ComputeDiscountsInternal(filteredOrdersReport, discounts, 4, OrderItemType.SmallParcelMania); } else if (ordersReport.Items.All(i => i.Type.Equals(OrderItemType.MediumParcel))) { var filteredOrdersReport = ordersReport.Items.Where(i => i.Quantity >= 3).ToList(); ComputeDiscountsInternal(filteredOrdersReport, discounts, 3, OrderItemType.MediumParcelMania); } else { var filteredOrdersReport = ordersReport .Items.Where(i => i.Quantity >= 5) .OrderBy(i => i.Type) .GroupBy(i => i.Type) .FirstOrDefault()?.ToList(); ComputeDiscountsInternal(filteredOrdersReport, discounts, 5, OrderItemType.MixedParcelMania); } foreach (var discount in discounts) { ordersReport.Items.Add(discount); } }
private void ShowOrdersEventHandler(object sender, EventArgs args) { OrdersReport OrdRep = new OrdersReport(); OrdRep.Text = "Orders of the patient"; OrdRep.ShowDialog(); }
private void OrdersReport_DataSourceDemanded(object sender, EventArgs e) { OrdersReport report = (OrdersReport)sender; DateTime endDate = (DateTime)report.Parameters["paramEndDate"].Value; endDate = endDate.AddHours(24); report.Parameters["paramEndDate"].Value = endDate; }
public void GivenOrderItems_GetOrdersReportWithHeavyProduct_ThenShouldReturnOrdersReportWithHeavyProduct() { //Arrange var expectedResult = new OrdersReport { Items = new List <OrderItem> { new OrderItem { Type = OrderItemType.SmallParcel, Cost = 12, Quantity = 4 }, new OrderItem { Type = OrderItemType.HeavyParcel, Cost = 104, Quantity = 2 }, new OrderItem { Type = OrderItemType.XlParcel, Cost = 75, Quantity = 3 } }, Total = 191 }; // Act var result = _service.GetOrdersReport(new OrderCart { Products = new List <Product> { new Product { Dimension = 10, Quantity = 2, WeightPerItem = 52 }, new Product { Dimension = 2.4, Quantity = 4 }, new Product { Dimension = 100, Quantity = 3 } } }); //Assert Assert.IsTrue(JsonConvert.SerializeObject(result.Items.OrderBy(r => r.Type).ToList()) .Equals(JsonConvert.SerializeObject(expectedResult.Items.OrderBy(r => r.Type))) && result.Total.Equals(expectedResult.Total)); }
protected void cbExport_Callback(object source, CallbackEventArgs e) { XtraReport report = new OrdersReport(); MemoryStream stream = new MemoryStream(); switch (e.Parameter) { case "pdf": report.ExportToPdf(stream); break; case "xls": report.ExportToXls(stream); break; case "xlsx": report.ExportToXlsx(stream); break; case "rtf": report.ExportToRtf(stream); break; case "mht": report.ExportToMht(stream); break; case "html": report.ExportToHtml(stream); break; case "txt": report.ExportToText(stream); break; case "csv": report.ExportToCsv(stream); break; case "png": report.ExportToImage(stream); break; default: return; } //Delay to emulate long exporting Thread.Sleep(2000); Session["ExportedData"] = stream; Session["ExportedDataType"] = e.Parameter; }
public async Task <IActionResult> GetReportOfTodaysOrders(DateTime?orddate = null) { if (orddate == null)//по умолчанию, показываются записи до сегоднящнего дня. { orddate = DateTime.Today.AddHours(23); } else { orddate = orddate.Value.AddHours(23);//так как клиент отправляет только дату, без уточнения времени, } //то чтобы увидеть заказы до того дня включительно, надо указать конец того дня, потому что время по дефолту T00:00:00 var allOrders = await _orderRepository.GetAllOrderReceipt((DateTime)orddate, Status.Complete); var numb = allOrders.ToList().Count; if (numb == 0) { return(BadRequest($"No orders completed for date {orddate}")); } var ordersCompleted = allOrders.Select(ord => ord.Id).Distinct().Count(); var totalOrdersPrice = allOrders.Select(ord => ord.Meals.Price * ord.Quantity * ord.AmountBought).Sum(); var mealIds = allOrders.Select(ord => ord.MealId).Distinct(); ICollection <MealStat> exactMeals = new LinkedList <MealStat>(); foreach (Guid mealN in mealIds) { var mealSoldQuantities = allOrders.Where(ord => ord.MealId == mealN).Select(m => (int)m.Quantity).Sum(); var mealInfo = allOrders.FirstOrDefault(ord => ord.MealId == mealN); MealStat mealRecord = new MealStat() { MealId = mealN, MealName = mealInfo.Meals.Name, MealAmount = (decimal)mealInfo.Meals.Amount, MealPrice = (decimal)mealInfo.Meals.Price, SoldQuantity = mealSoldQuantities }; exactMeals.Add(mealRecord); } OrdersReport report = new OrdersReport() { OrderDate = (DateTime)orddate, OrdersMade = ordersCompleted, FoodSale = exactMeals, TotalPrice = (decimal)totalOrdersPrice }; return(Ok(report)); }
private static void AddSpeedyShipping(bool hasFastDeliver, OrdersReport ordersReport) { if (!hasFastDeliver) { return; } ordersReport.Items.Add(new OrderItem { Type = OrderItemType.FastShipping, Cost = ordersReport.Total, Quantity = 1 }); }
private static OrdersReport ComputeOrdersReport(OrderCart cart) { var result = new List <OrderItem>(); cart.Products.ToList().ForEach(p => ComputeOrdersReportInternal(result, p)); var ordersReport = new OrdersReport { Items = result, Total = result.Sum(r => r.Cost) }; return(ordersReport); }
public static object Create(Type reportType) { switch (reportType.ToString()) { case "CustomerReport": var custRpt = new CustomerReport(); custRpt.Date = DateTime.Now; return(custRpt); default: case "OrdersReport": var ordsRpt = new OrdersReport(); ordsRpt.Date = DateTime.Now; return(ordsRpt); } }
public static OrdersReport Convert(OrdersReportDto debtDto) { if (debtDto == null) { return(null); } OrdersReport debt = new OrdersReport(); debtDto.Cost = debt.Cost; debtDto.FinallyDate = debt.FinallyDate; debtDto.NameCarrier = debt.NameCarrier; debtDto.NameEnterprise = debt.NameEnterprise; debtDto.NameReklama = debt.NameReklama; debtDto.StartDate = debt.StartDate; debtDto.AllSum = debt.AllSum; return(debt); }
public static void Main(string[] args) { if (args == null) { throw new ArgumentNullException(nameof(args)); } if (args.Length < 2) { throw new ArgumentException("Please, specify data source (books, orders) and report format (excel, text)"); } var isBooks = string.Compare(args[0], "books", StringComparison.OrdinalIgnoreCase) == 0; var useExcel = string.Compare(args[1], "excel", StringComparison.OrdinalIgnoreCase) == 0; var file = isBooks ? useExcel ? BooksReport.BuildExcel() : BooksReport.BuildText() : useExcel?OrdersReport.BuildExcel() : OrdersReport.BuildText(); OpenFile(file); }
private static void RecalculateTotal(OrdersReport ordersReport) => ordersReport.Total = ordersReport.Items.Sum(i => i.Cost);
public void GivenOrderItems_GetOrdersReportWithSpeedyShipping_ThenShouldReturnOrdersReportWithSpeedyShipping() { //Arrange var expectedResult = new OrdersReport { Items = new List <OrderItem> { new OrderItem { Type = OrderItemType.SmallParcel, Cost = 9, Quantity = 3 }, new OrderItem { Type = OrderItemType.MediumParcel, Cost = 8, Quantity = 1 }, new OrderItem { Type = OrderItemType.XlParcel, Cost = 75, Quantity = 3 }, new OrderItem { Type = OrderItemType.FastShipping, Cost = 92, Quantity = 1 } }, Total = 184 }; // Act var result = _service.GetOrdersReport(new OrderCart { Products = new List <Product> { new Product { Dimension = 10, Quantity = 1 }, new Product { Dimension = 2.4, Quantity = 3 }, new Product { Dimension = 100, Quantity = 3 } }, HasFastDeliver = true }); //Assert Assert.IsTrue(JsonConvert.SerializeObject(result.Items.OrderBy(r => r.Type).ToList()) .Equals(JsonConvert.SerializeObject(expectedResult.Items.OrderBy(r => r.Type))) && result.Total.Equals(expectedResult.Total)); }
GivenOrderItems_GetOrdersReportWithMixedParcelDiscount_ThenShouldReturnOrdersReportMixedParcelDiscount() { //Arrange var expectedResult = new OrdersReport { Items = new List <OrderItem> { new OrderItem { Type = OrderItemType.SmallParcel, Cost = 15, Quantity = 5 }, new OrderItem { Type = OrderItemType.MediumParcel, Cost = 40, Quantity = 5 }, new OrderItem { Type = OrderItemType.XlParcel, Cost = 75, Quantity = 3 }, new OrderItem { Type = OrderItemType.MixedParcelMania, Cost = -3, Quantity = 1 } }, Total = 127 }; // Act var result = _service.GetOrdersReport(new OrderCart { Products = new List <Product> { new Product { Dimension = 10, Quantity = 5 }, new Product { Dimension = 2.4, Quantity = 5 }, new Product { Dimension = 100, Quantity = 3 } } }); //Assert Assert.IsTrue(JsonConvert.SerializeObject(result.Items.OrderBy(r => r.Type).ToList()) .Equals(JsonConvert.SerializeObject(expectedResult.Items.OrderBy(r => r.Type))) && result.Total.Equals(expectedResult.Total)); }
GivenOrderItems_GetOrdersReportWithMediumParcelDiscount_ThenShouldReturnOrdersReportWithMediumParcelDiscount() { //Arrange var expectedResult = new OrdersReport { Items = new List <OrderItem> { new OrderItem { Type = OrderItemType.MediumParcel, Cost = 30, Quantity = 3 }, new OrderItem { Type = OrderItemType.MediumParcel, Cost = 32, Quantity = 4 }, new OrderItem { Type = OrderItemType.MediumParcel, Cost = 42, Quantity = 3 }, new OrderItem { Type = OrderItemType.MediumParcelMania, Cost = -8, Quantity = 1 }, new OrderItem { Type = OrderItemType.MediumParcelMania, Cost = -8, Quantity = 1 }, new OrderItem { Type = OrderItemType.MediumParcelMania, Cost = -8, Quantity = 1 } }, Total = 80 }; // Act var result = _service.GetOrdersReport(new OrderCart { Products = new List <Product> { new Product { Dimension = 11, Quantity = 3, WeightPerItem = 4 }, new Product { Dimension = 12, Quantity = 4, WeightPerItem = 3 }, new Product { Dimension = 13, Quantity = 3, WeightPerItem = 6 } } }); //Assert Assert.IsTrue(JsonConvert.SerializeObject(result.Items.OrderBy(r => r.Type).ToList()) .Equals(JsonConvert.SerializeObject(expectedResult.Items.OrderBy(r => r.Type))) && result.Total.Equals(expectedResult.Total)); }