public void MostSellableItemsReport()
        {
            DateCriteriaForm rf = new DateCriteriaForm();

            rf.onSuccessfulDateSelect += new EventHandler(child_onDateSelect);
            rf.ShowDialog();

            using (var db = new posdbEntities())
            {
                var query = (from c in db.salesorderdetails
                             join d in db.salesorders on
                             c.OrderID equals d.OrderID
                             join p in db.products on
                             c.ProductID equals p.ProductID
                             join cat in db.categories on
                             p.CategoryID equals cat.CategoryID
                             where d.SaleDate >= AppConfig.ReportCriteria_FromDate && d.SaleDate <= AppConfig.ReportCriteria_ToDate
                             select new
                {
                    OrderID = c.OrderID,
                    CategoryID = p.CategoryID,
                    CategoryName = cat.CategoryName,
                    ProductName = p.ProductName,
                    SaleQuantity = c.Quantity,
                    SaleAmount = c.SalePrice
                }).ToList();

                var query2 = (from a in query
                              group a by new
                {
                    a.CategoryName,
                    a.ProductName
                } into g
                              select new { CategoryName = g.Key.CategoryName, ProductName = g.Key.ProductName, TotalQuantitySold = g.Sum(p => p.SaleQuantity), SaleAmount = g.Sum(p => p.SaleAmount) }
                              ).ToList();

                var resultList = query2.OrderByDescending(i => i.SaleAmount).Take(5);

                DataSet   ds = new DataSet("MostSellableItemsDataSet");
                DataTable dt = new DataTable("MostSellableItemsTable");
                dt.Columns.Add("CategoryName");
                dt.Columns.Add("ProductName");
                dt.Columns.Add("TotalQuantitySold");
                dt.Columns.Add("SaleAmount");
                ds.Tables.Add(dt);

                Microsoft.Reporting.WinForms.ReportDataSource rds = new Microsoft.Reporting.WinForms.ReportDataSource("MostSellableItemsDataSet", resultList);
                reportViewer1.LocalReport.ReportPath = @"../../Reports/Sales_Reports/MostSellableItemsReport.rdlc";
                reportViewer1.LocalReport.DataSources.Clear();
                reportViewer1.LocalReport.DataSources.Add(rds);
                reportViewer1.LocalReport.Refresh();
                reportViewer1.LocalReport.EnableExternalImages = true;

                string          imagePath = @"file:///" + AppConfig.imagefile;
                ReportParameter parameter = new ReportParameter("ImagePathParameter", imagePath);
                reportViewer1.LocalReport.SetParameters(parameter);

                reportViewer1.RefreshReport();
            }
        }
        public void salesReportMonthly()
        {
            DateCriteriaForm rf = new DateCriteriaForm();

            rf.onSuccessfulDateSelect += new EventHandler(child_onDateSelect);
            rf.ShowDialog();

            using (var db = new posdbEntities())
            {
                var query = (from c in db.salesorders
                             where c.SaleDate >= AppConfig.ReportCriteria_FromDate && c.SaleDate <= AppConfig.ReportCriteria_ToDate
                             group c by c.date_month_string into g
                             select new { SaleDate = g.Key, SaleAmount = g.Sum(p => p.SaleAmount) }).ToList();
                Microsoft.Reporting.WinForms.ReportDataSource rds = new Microsoft.Reporting.WinForms.ReportDataSource("SalesDataSet", query.ToList());
                reportViewer1.LocalReport.ReportPath = @"../../Reports/Sales_Reports/SalesReportMonthly.rdlc";
                reportViewer1.LocalReport.DataSources.Clear();
                reportViewer1.LocalReport.DataSources.Add(rds);
                reportViewer1.LocalReport.Refresh();
                reportViewer1.LocalReport.EnableExternalImages = true;

                string          imagePath = @"file:///" + AppConfig.imagefile;
                ReportParameter parameter = new ReportParameter("ImagePathParameter", imagePath);
                reportViewer1.LocalReport.SetParameters(parameter);

                reportViewer1.RefreshReport();
            }
        }