public ActionResult LoadCategories_V2(List <string> lstStoreIds, int typeId = 2) { RPHourlyItemizedSalesModels model = new RPHourlyItemizedSalesModels(); try { model.ListCategories = GetListCategories(lstStoreIds, typeId); model.ListStoreCate = model.ListCategories .GroupBy(x => new { StoreId = x.StoreId, StoreName = x.StoreName }) .Select(x => new StoreCate { StoreID = x.Key.StoreId, StoreName = x.Key.StoreName, ListCategoriesSel = new List <RFilterCategoryModel>() }).ToList(); int OffSet = 0; model.ListStoreCate.ForEach(x => { x.OffSet = OffSet++; x.ListCategoriesSel = model.ListCategories.Where(z => z.StoreName.Equals(x.StoreName)).ToList(); }); } catch (Exception ex) { _logger.Error(ex); } return(PartialView("_FilterCategory_V2", model)); }
public ActionResult Report(RPHourlyItemizedSalesModels model) { try { if (model.FromDate > model.ToDate) { ModelState.AddModelError("FromDate", CurrentUser.GetLanguageTextFromKey("From Date must be less than To Date.")); } else if (model.FromDate == model.ToDate) { if ((model.FromTime == model.ToTime && model.FromTime.Hours != 0) || (model.FromTime > model.ToTime)) { ModelState.AddModelError("FromDate", CurrentUser.GetLanguageTextFromKey("From Date must be less than To Date.")); } } if (model.Type == Commons.TypeCompanySelected) //Company { if (model.ListCompanys == null) { ModelState.AddModelError("ListCompanys", CurrentUser.GetLanguageTextFromKey("Please choose company.")); } } else //Store { if (model.ListStores == null) { ModelState.AddModelError("ListStores", CurrentUser.GetLanguageTextFromKey("Please choose store.")); } } if (!ModelState.IsValid) { Response.StatusCode = (int)HttpStatusCode.BadRequest; return(View("Index", model)); } var _lstCateChecked = new List <RFilterCategoryModel>(); var _lstSetChecked = new List <RFilterCategoryModel>(); // Get list categories selected // List categories V1, updated 03212018, get all parent & child category selected if (model.ListStoreCate != null) { foreach (var item in model.ListStoreCate) { model.ListCategories.AddRange(item.ListCategoriesSel); } } if (model.ListCategories != null && model.ListCategories.Any()) { _categoriesFactory.GetCategoryCheck_V1(ref _lstCateChecked, model.ListCategories); } else // Select all categories { var listCategories = GetListCategories(model.Type == 1 ? model.ListCompanys : model.ListStores, model.Type); _categoriesFactory.GetCategoryCheck_V1(ref _lstCateChecked, listCategories, true); } // List SetMenu selected if (model.ListStoreSetMenu != null) { foreach (var item in model.ListStoreSetMenu) { model.ListSetMenu.AddRange(item.ListSetMenuSel); } } if (model.ListSetMenu != null && model.ListSetMenu.Any()) { _lstSetChecked = model.ListSetMenu.Where(ww => ww.Checked).ToList(); var lstSetChild = model.ListSetMenu.Where(ww => ww.ListChilds != null && ww.ListChilds.Any()).ToList(); foreach (var item in lstSetChild) { _lstSetChecked.AddRange(item.ListChilds.Where(ww => ww.Checked)); } } else // Select all setmenu { _lstSetChecked = GetListSetMenus(model.Type == 1 ? model.ListCompanys : model.ListStores, model.Type); var lstSetChild = _lstSetChecked.Where(ww => ww.ListChilds != null && ww.ListChilds.Any()).ToList(); foreach (var item in lstSetChild) { _lstSetChecked.AddRange(item.ListChilds); } } if (_lstCateChecked == null) { _lstCateChecked = new List <RFilterCategoryModel>(); } if (_lstSetChecked == null) { _lstSetChecked = new List <RFilterCategoryModel>(); } var _lstCateCheckedId = _lstCateChecked.Select(ss => ss.Id).ToList(); var _lstSetCheckedId = _lstSetChecked.Select(ss => ss.Id).ToList(); // Get list stores selected from categories, setmenu selected var _lstStoreCate = _lstCateChecked.Select(ss => ss.StoreId).Distinct().ToList(); var _lstStoreSet = _lstSetChecked.Select(ss => ss.StoreId).Distinct().ToList(); // Get ListStores, all stores selected from list cate, list set var lstStoresCateSet = _lstStoreCate.Concat(_lstStoreSet).Distinct().ToList(); // Get Selected Store List <StoreModels> lstStores = new List <StoreModels>(); ////if (model.Type == Commons.TypeCompanySelected) // Company ////{ //// lstStores = model.GetSelectedStoreCompany(); //// lstStores = lstStores.Where(w => lstStoresCateSet.Contains(w.Id)).ToList(); //// model.ListStores = lstStoresCateSet; ////} ////else // Store ////{ //// List<SelectListItem> vbStore = ViewBag.Stores; //// lstStores = model.GetSelectedStore(vbStore); //// lstStores = lstStores.Where(w => lstStoresCateSet.Contains(w.Id)).ToList(); //// model.ListStores = lstStoresCateSet; ////} ///////======= Updated 072018 if (model.Type == Commons.TypeCompanySelected) //Company { lstStores = listStoresInfoSession.Where(ww => model.ListCompanys.Contains(ww.CompanyId)).ToList(); model.ListStores = lstStores.Select(ss => ss.Id).ToList(); } else //Store { lstStores = listStoresInfoSession.Where(ww => model.ListStores.Contains(ww.Id)).ToList(); } HourlyItemizedSalesReportFactory factory = new HourlyItemizedSalesReportFactory(); XLWorkbook wb = new XLWorkbook(); model.FromDate = new DateTime(model.FromDate.Year, model.FromDate.Month, model.FromDate.Day, 0, 0, 0); model.ToDate = new DateTime(model.ToDate.Year, model.ToDate.Month, model.ToDate.Day, 23, 59, 59); DateTime _dFromFilter = model.FromDate; // From date filter DateTime _dToFilter = model.ToDate; // To date filter int _hFromFilter = model.FromTime.Hours; // From hour filter int _hToFilter = model.ToTime.Hours; // To hour filter if (_hToFilter == 0) // ToTime == 00 <=> ToTime == 24 { _hToFilter = 24; } //Get business day var _lstBusDayAllStore = _baseFactory.GetBusinessDays(model.FromDate, model.ToDate, model.ListStores, model.Mode); if (_lstBusDayAllStore == null || !_lstBusDayAllStore.Any()) { IXLWorksheet ws = wb.Worksheets.Add("Hourly_Itemized_Sales_Report"); // Set header report ReportFactory reportFactory = new ReportFactory(); reportFactory.CreateReportHeaderNewFilterTime(ws, 8, _dFromFilter, _dToFilter, _hFromFilter, _hToFilter, _AttributeForLanguage.CurrentUser.GetLanguageTextFromKey("Hourly Itemized Sales Report").ToUpper()); } else { model.FromDate = _lstBusDayAllStore.Min(aa => aa.DateFrom); model.ToDate = _lstBusDayAllStore.Max(aa => aa.DateTo); #region Report with old DB // Get list items by category, datetime, storeId var listTemp = factory.GetDataHour(model, _lstStoreCate, _lstStoreSet, _lstCateCheckedId, _lstSetCheckedId); // Get list MISC DiscountAndMiscReportFactory miscFactory = new DiscountAndMiscReportFactory(); var listDiscountMisc = miscFactory.GetReceiptDiscountAndMiscByDateTime(model.FromDate, model.ToDate, model.ListStores, model.Mode); // Export data wb = factory.Export_NewFilter(listTemp, _dFromFilter, _dToFilter, _lstCateChecked, _lstSetChecked, listDiscountMisc, lstStores, model.Mode, _lstBusDayAllStore, _hFromFilter, _hToFilter); #endregion End report with old DB #region Report with new DB // Get list items by category, datetime, storeId //var listTemp = factory.GetDataHour_NewDB(model, _lstStoreCate, _lstStoreSet, _lstCateCheckedId, _lstSetCheckedId); // Get list MISC //PosSaleFactory posSaleFactory = new PosSaleFactory(); //var listDiscountMisc = posSaleFactory.GetReceiptDiscountAndMiscByDateTime(model.FromDate, model.ToDate, model.ListStores, model.Mode); // Export data //wb = factory.Export_NewDB(listTemp, _dFromFilter, _dToFilter, //_lstCateChecked, _lstSetChecked, listDiscountMisc, lstStores, model.Mode, _lstBusDayAllStore, _hFromFilter, _hToFilter); #endregion End report with new DB } string sheetName = string.Format("Report_Hourly_Itemized_Sales_{0}", DateTime.Now.ToString("MMddyyyy")).Replace(" ", "_"); Response.Clear(); Response.ClearContent(); Response.ClearHeaders(); //HttpContext.Response.Clear(); Response.Charset = UTF8Encoding.UTF8.WebName; Response.ContentEncoding = UTF8Encoding.UTF8; if (model.FormatExport.Equals(Commons.Html)) { Response.AddHeader("content-disposition", string.Format(@"attachment;filename={0}.html", sheetName)); } else { Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.AddHeader("content-disposition", string.Format(@"attachment;filename={0}.xlsx", sheetName)); } using (var memoryStream = new System.IO.MemoryStream()) { wb.SaveAs(memoryStream); if (model.FormatExport.Equals(Commons.Html)) { Workbook workbook = new Workbook(); workbook.LoadFromStream(memoryStream); //convert Excel to HTML Worksheet sheet = workbook.Worksheets[0]; using (var ms = new MemoryStream()) { sheet.SaveToHtml(ms); ms.WriteTo(HttpContext.Response.OutputStream); ms.Close(); } } else { memoryStream.WriteTo(HttpContext.Response.OutputStream); } memoryStream.Close(); } HttpContext.Response.End(); return(RedirectToAction("Index")); } catch (Exception ex) { _logger.Error("Hourly Itemized Sales Report Error: " + ex); return(new HttpStatusCodeResult(400, ex.Message)); } }
// GET: HourlyItemizedSalesReport public ActionResult Index() { RPHourlyItemizedSalesModels model = new RPHourlyItemizedSalesModels(); return(View(model)); }