Example #1
0
        public ResultModels InsertDailySalesReport(List <DailySalesReportInsertModels> lstInfo)
        {
            NSLog.Logger.Info("Start insert Daily sale data.......................", lstInfo);
            var result = new ResultModels();

            if (lstInfo != null && lstInfo.Any())
            {
                DailySalesReportFactory dailySalesReportFactory = new DailySalesReportFactory();
                result.IsOk = dailySalesReportFactory.Insert(lstInfo);
            }
            return(result);
        }
Example #2
0
        public ResultModels InsertShiftLog(List <ShiftLogModels> lstShiftLogs)
        {
            NSLog.Logger.Info("Start insert ShiftLog data.......................", lstShiftLogs);
            var result = new ResultModels();

            if (lstShiftLogs != null && lstShiftLogs.Any())
            {
                DailySalesReportFactory dailySalesReportFactory = new DailySalesReportFactory();
                result.IsOk = dailySalesReportFactory.InsertShiftLogs(lstShiftLogs);
            }
            return(result);
        }
        public async Task <IActionResult> Post([FromBody] Dictionary <string, string> options) => await Task.Run <IActionResult>(async() =>
        {
            IReportFactory factory;
            string type   = options.ContainsKey("type") ? options["type"] : "sales";
            bool isJson   = options.ContainsKey("json") ? Boolean.Parse(options["json"]) : false;
            bool willSave = options.ContainsKey("save") ? Boolean.Parse(options["save"]) : true;

            DateTime begin = options.ContainsKey("begin") ?
                             DateTime.Parse(options["begin"]) : DateTime.Now.Subtract(new TimeSpan(7, 0, 0, 0));
            DateTime end = options.ContainsKey("end") ? DateTime.Parse(options["end"]) : DateTime.Now;


            switch (type)
            {
            case "sales":
                factory = new SalesReportFactory(begin, end);
                break;

            case "stock":
                factory = new StockReportFactory(begin, end);
                break;

            case "low":
                factory = new LowStockReportFactory(options.ContainsKey("threshold") ?
                                                    Int32.Parse(options["threshold"]) : 5);
                break;

            case "daily":
                factory = new DailySalesReportFactory();
                break;

            default:
                throw new Exception("Invalid Report Type");
            }
            if (willSave)
            {
                await factory.WriteReport();
            }
            return(Content(isJson ? await factory.GenerateJson() : await factory.GenerateCsv()));
        });
Example #4
0
        public ActionResult Report_Current(DailySalesViewModel model)
        {
            try
            {
                /*editor by trongntn 18-01-2017*/
                if (model.EndTime.Hours == 0)
                {
                    model.EndTime = new TimeSpan(23, 59, 59);
                }
                /*end*/
                DateTime dFrom = new DateTime(model.FromDate.Year, model.FromDate.Month, model.FromDate.Day, model.StartTime.Hours, model.StartTime.Minutes, 0)
                , dTo          = new DateTime(model.ToDate.Year, model.ToDate.Month, model.ToDate.Day, model.EndTime.Hours, model.EndTime.Minutes, 59);
                DailySalesReportFactory factory = new DailySalesReportFactory();
                if (dFrom > dTo)
                {
                    ModelState.AddModelError("FromDate", CurrentUser.GetLanguageTextFromKey("From Date must be less than To Date."));
                }
                else 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)
                {
                    return(View("Index", model));
                }
                //Get Selected Store
                List <StoreModels> lstStore = new List <StoreModels>();
                //List<StoreModels> _lstCompany = ViewBag.CompanyExtend;
                if (CurrentUser.IsMerchantExtend)
                {
                    if (model.Type == Commons.TypeCompanySelected) //Company
                    {
                        lstStore         = model.GetSelectedStoreCompanyForExtend(ViewBag.StoresExtend);
                        model.ListStores = lstStore.Select(ss => ss.Id).ToList();
                    }
                    else //Store
                    {
                        List <StoreModels> vbStore = ViewBag.StoresExtend;
                        lstStore = model.GetSelectedStoreForMerchantExtend(vbStore);
                    }
                }
                else
                {
                    if (model.Type == Commons.TypeCompanySelected) //Company
                    {
                        lstStore         = model.GetSelectedStoreCompany();
                        model.ListStores = lstStore.Select(ss => ss.Id).ToList();
                    }
                    else //Store
                    {
                        //List<SelectListItem> vbStore = ViewBag.Stores;
                        lstStore = ViewBag.StoresIncludeCompany;
                        if (lstStore != null && lstStore.Any())
                        {
                            lstStore = lstStore.Where(ww => model.ListStores.Contains(ww.Id)).ToList();
                        }
                    }
                }
                //update 201-01-31
                //Check list company
                bool isMultiCompany = false;
                if (lstStore != null && lstStore.Any())
                {
                    var lstCompanyIds = lstStore.Select(ss => ss.CompanyId).Distinct().ToList();
                    if (lstCompanyIds != null && lstCompanyIds.Count > 1)
                    {
                        isMultiCompany = true;
                    }
                }

                //End Get Selected Store

                if (model.StartTime.Hours == 0 && model.StartTime.Minutes == 0 && model.EndTime.Hours == 0 && model.EndTime.Minutes == 0)
                {
                    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);
                }
                else
                {
                    model.FromDate = new DateTime(model.FromDate.Year, model.FromDate.Month, model.FromDate.Day, model.StartTime.Hours, model.StartTime.Minutes, 0);
                    model.ToDate   = new DateTime(model.ToDate.Year, model.ToDate.Month, model.ToDate.Day, model.EndTime.Hours, model.EndTime.Minutes, 59);
                }
                //List<DailySalesReportModels> receiptItems = factory.GetDataReceiptItems(model);
                //List<DailySalesReportModels> paymentItems = factory.GetDataPaymentItems(model);

                //Export excel
                //XLWorkbook wb = factory.ExportExcel(model, lstStore);
                XLWorkbook wb = null;

                #region Export with old DB
                if (CurrentUser.IsMerchantExtend)
                {
                    wb = factory.ExportExcel_NewForMerchantExtend(model, lstStore, model.IsIncludeShift);
                }
                else if (isMultiCompany)
                {
                    wb = factory.ExportExcel_NewForMultiCompany(model, lstStore, model.IsIncludeShift);
                }
                else
                {
                    wb = factory.ExportExcel_New(model, lstStore, model.IsIncludeShift);
                }
                #endregion

                ViewBag.wb = wb;
                string sheetName = string.Format("Report_Daily_Sales_{0}", DateTime.Now.ToString("MMddyyyy"));
                Response.Clear();
                Response.ClearContent();
                Response.ClearHeaders();
                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.Replace(" ", "_")));
                }
                else
                {
                    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                    Response.AddHeader("content-disposition", String.Format(@"attachment;filename={0}.xlsx", sheetName.Replace(" ", "_")));
                }
                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(View("Index", model));
            }
            catch (Exception ex)
            {
                _logger.Error("Daily Sales Report Error: " + ex);
                return(new HttpStatusCodeResult(400, ex.Message));
            }
        }
Example #5
0
        public ActionResult Report(DailySalesViewModel model)
        {
            try
            {
                model.FilterType = (int)EFilterType.OnDay;

                if (model.EndTime.Hours == 0 && model.EndTime.Minutes == 0)
                {
                    model.EndTime = new TimeSpan(23, 59, 59);
                    if (model.StartTime.Hours == 0 && model.StartTime.Minutes == 0)
                    {
                        model.FilterType = (int)EFilterType.None;
                    }
                }
                else if (model.StartTime > model.EndTime)
                {
                    model.FilterType = (int)EFilterType.Days;
                }

                DateTime dFrom = new DateTime(model.FromDate.Year, model.FromDate.Month, model.FromDate.Day, model.StartTime.Hours, model.StartTime.Minutes, 0)
                , dTo          = new DateTime(model.ToDate.Year, model.ToDate.Month, model.ToDate.Day, model.EndTime.Hours, model.EndTime.Minutes, 0);
                if (dFrom >= dTo)
                {
                    ModelState.AddModelError("FromDate", CurrentUser.GetLanguageTextFromKey("From Date must be less than To Date."));
                }
                else
                {
                    dTo = dTo.AddSeconds(59);
                }

                if (model.Type == Commons.TypeCompanySelected) //Company
                {
                    if (model.ListCompanys == null || !model.ListCompanys.Any())
                    {
                        ModelState.AddModelError("ListCompanys", CurrentUser.GetLanguageTextFromKey("Please choose company."));
                    }
                }
                else //Store
                {
                    if (model.ListStores == null || !model.ListStores.Any())
                    {
                        ModelState.AddModelError("ListStores", CurrentUser.GetLanguageTextFromKey("Please choose store."));
                    }
                }

                if (!ModelState.IsValid)
                {
                    return(View("Index", model));
                }

                //Get Selected Store
                //List<StoreModels> lstStore = new List<StoreModels>();
                //if (CurrentUser.IsMerchantExtend)
                //{
                //    if (model.Type == Commons.TypeCompanySelected) //Company
                //    {

                //        lstStore = model.GetSelectedStoreCompanyForExtend(ViewBag.StoresExtend);
                //        model.ListStores = lstStore.Select(ss => ss.Id).ToList();
                //    }
                //    else //Store
                //    {
                //        List<StoreModels> vbStore = ViewBag.StoresExtend;
                //        lstStore = model.GetSelectedStoreForMerchantExtend(vbStore);
                //    }
                //}
                //else
                //{
                //    if (model.Type == Commons.TypeCompanySelected) //Company
                //    {
                //        lstStore = model.GetSelectedStoreCompany();
                //        model.ListStores = lstStore.Select(ss => ss.Id).ToList();
                //    }
                //    else //Store
                //    {
                //        lstStore = ViewBag.StoresIncludeCompany;
                //        if (lstStore != null && lstStore.Any())
                //        {
                //            lstStore = lstStore.Where(ww => model.ListStores.Contains(ww.Id)).ToList();
                //        }
                //    }
                //}
                //End Get Selected Store

                //////========= Updated 07172018
                List <StoreModels> lstStore = new List <StoreModels>();
                if (model.Type == Commons.TypeCompanySelected) //Company
                {
                    lstStore         = listStoresInfoSession.Where(ww => model.ListCompanys.Contains(ww.CompanyId)).ToList();
                    model.ListStores = lstStore.Select(ss => ss.Id).ToList();
                }
                else //Store
                {
                    lstStore = listStoresInfoSession.Where(ww => model.ListStores.Contains(ww.Id)).ToList();
                }

                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);

                model.FromDateFilter = dFrom;
                model.ToDateFilter   = dTo;

                //Export excel
                DailySalesReportFactory factory = new DailySalesReportFactory();
                XLWorkbook wb = null;

                #region Export with Credit Note
                bool isExtend = false;
                if (CurrentUser.IsMerchantExtend)
                {
                    isExtend = true;
                }
                wb = factory.ExportExcel_WithCreditNote(model, lstStore, model.IsIncludeShift, isExtend);
                #endregion

                #region Export with new DB
                //Boolean isExtend = false;
                //if (CurrentUser.IsMerchantExtend)
                //{
                //    isExtend = true;
                //}
                //wb = factory.ExportExcel_NewDB(model, lstStore, model.IsIncludeShift, isExtend);
                #endregion
                ViewBag.wb = wb;
                string sheetName = string.Format("Report_Daily_Sales_{0}", DateTime.Now.ToString("MMddyyyy"));
                Response.Clear();
                Response.ClearContent();
                Response.ClearHeaders();
                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.Replace(" ", "_")));
                }
                else
                {
                    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                    Response.AddHeader("content-disposition", String.Format(@"attachment;filename={0}.xlsx", sheetName.Replace(" ", "_")));
                }
                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(View("Index", model));
            }
            catch (Exception ex)
            {
                _logger.Error("Daily Sales Report Error: " + ex);
                return(new HttpStatusCodeResult(400, ex.Message));
            }
        }