Ejemplo n.º 1
0
    public void QueryData(int searchBY, int tahun)
    {
        Literal LiteralChart = (Literal)this.Page.Master.FindControl("LiteralChart");

        LiteralChart.Text = string.Empty;

        using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext())
        {
            PanelMarketShare.Visible = true;

            #region MARKET SHARE
            List <string> ListKota = new List <string>();
            var           KotaDB   = db.TBAlamats.Select(item => item.Kota).Distinct();

            foreach (var item in KotaDB)
            {
                ListKota.Add(item);
            }

            var DataSalesDB = db.TBTransaksis.Where(item => item.IDStatusTransaksi == (int)EnumStatusTransaksi.Complete).GroupBy(item => new
            {
                item.TBPelanggan.TBAlamats.FirstOrDefault().Kota
            })
                              .Select(item => new
            {
                Key                  = item.Key,
                GrandTotal           = item.Sum(item2 => item2.GrandTotal),
                TotalTransaksi       = item.Where(item2 => item2.IDStatusTransaksi == (int)EnumStatusTransaksi.Complete).Count(),
                TotalNominalDiscount = item.Sum(item2 => item2.TotalPotonganHargaJualDetail),
                JumlahProduk         = item.Sum(item2 => item2.JumlahProduk)
            }).OrderByDescending(item => item.GrandTotal).ToArray();

            var DataSales = ListKota.Select(item => new
            {
                Kota               = item,
                JumlahTransaksi    = DataSalesDB.Where(item2 => item2.Key.Kota == item).Count() == 0 ? 0 : DataSalesDB.Where(item2 => item2.Key.Kota == item).Sum(item2 => item2.TotalTransaksi),
                GrandTotal         = DataSalesDB.Where(item2 => item2.Key.Kota == item).Count() == 0 ? 0 : DataSalesDB.Where(item2 => item2.Key.Kota == item).Sum(item2 => item2.GrandTotal),
                JumlahProduk       = DataSalesDB.Where(item2 => item2.Key.Kota == item).Count() == 0 ? 0 : DataSalesDB.Where(item2 => item2.Key.Kota == item).Sum(item2 => item2.JumlahProduk),
                SumJumlahProduk    = DataSalesDB.Sum(item2 => item2.JumlahProduk),
                SumJumlahTransaksi = DataSalesDB.Sum(item2 => item2.TotalTransaksi),
                SumGrandTotal      = DataSalesDB.Sum(item2 => item2.GrandTotal)
            }).ToArray();

            if (searchBY == 1)
            {
                RepeaterMarketShare.DataSource = DataSales.OrderByDescending(item2 => item2.GrandTotal).ToArray();
                RepeaterMarketShare.DataBind();
            }
            else
            {
                RepeaterMarketShare.DataSource = DataSales.OrderByDescending(item2 => item2.JumlahProduk).ToArray();
                RepeaterMarketShare.DataBind();
            }


            var           Data5Kota = DataSales.OrderByDescending(item2 => item2.GrandTotal).Take(5).ToArray();
            List <string> Top5_Kota = new List <string>();

            for (int i = 0; i < Data5Kota.Count(); i++)
            {
                Top5_Kota.Add(Data5Kota[i].Kota);
            }

            LiteralChart.Text += "<script> $(function () { var dataChart = [";

            for (int i = 0; i < Top5_Kota.Count(); i++)
            {
                var _transaksiTahunIni = DataSalesDB.FirstOrDefault(item => item.Key.Kota == Top5_Kota[i].ToString());
                //var _transaksiTahunLalu = _dataDetailTransaksiTahunLaluGroupByIDTempat.FirstOrDefault(item => item.Key.IDTempat == tempatDatabase[i].IDTempat);

                decimal _grandTotal = 0, _grandTotalTahunLalu = 0;

                if (_transaksiTahunIni != null)
                {
                    _grandTotal = (decimal)_transaksiTahunIni.GrandTotal;
                }

                //if (_transaksiTahunLalu != null)
                //    _grandTotalTahunLalu = (decimal)_transaksiTahunLalu.GrandTotal;

                LiteralChart.Text += "{ 'y': '" + Top5_Kota[i].ToString() + "', '" + (tahun - 1) + "': " + _grandTotalTahunLalu + ", '" + tahun + "': " + _grandTotal + " }, ";
            }
            LiteralChart.Text += "]; Morris.Bar({ element: 'graph13', behaveLikeLine: true, data: dataChart, xkey: 'y', ";

            LiteralChart.Text += "ykeys: ['" + (DropDownListTahun.SelectedValue.ToInt() - 1) + "','" + DropDownListTahun.SelectedValue.ToInt() + "'],";
            LiteralChart.Text += "labels: ['" + (DropDownListTahun.SelectedValue.ToInt() - 1) + "','" + DropDownListTahun.SelectedValue.ToInt() + "'],";
            LiteralChart.Text += "barColors:['#7FC4C1','#FF625D'],";
            LiteralChart.Text += " parseTime: false,resize:true}); eval(dataChart); }); </script>";

            #region Labelling
            LabelTotalJumlahTransaksiHeader.Text = DataSales.Sum(item => item.JumlahTransaksi).ToFormatHargaBulat();
            LabelTotalGrandTotalHeader.Text      = DataSales.Sum(item => item.GrandTotal).ToFormatHarga();
            LabelJumlahProdukHeader.Text         = DataSales.Sum(item => item.JumlahProduk).ToFormatHargaBulat();

            LabelTotalJumlahTransaksiFooter.Text = DataSales.Sum(item => item.JumlahTransaksi).ToFormatHargaBulat();
            LabelTotalGrandTotalFooter.Text      = DataSales.Sum(item => item.GrandTotal).ToFormatHarga();
            LabelJumlahProdukFooter.Text         = DataSales.Sum(item => item.JumlahProduk).ToFormatHargaBulat();
            #endregion

            #endregion
        }
    }
    protected void LoadChartKategori(int tahun, int idkategori, int idtempat, int searchby)
    {
        using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext())
        {
            if (searchby == 1)
            {
                PanelReportPenjualan.Visible = true;
                PanelReportQty.Visible       = false;
                //PanelSalesPerChannelPenjualan.Visible = true;
                //PanelSalesPerChannelQty.Visible = false;
            }
            else
            {
                PanelReportPenjualan.Visible = false;
                PanelReportQty.Visible       = true;
                //PanelSalesPerChannelPenjualan.Visible = false;
                //PanelSalesPerChannelQty.Visible = true;
            }

            LabelHeader.Text = "SALES TREND ANALYSIS " + tahun.ToString().ToUpper();
            //Literal LiteralChart = (Literal)this.Page.Master.FindControl("LiteralChart");
            LiteralChart.Text = string.Empty;

            var _dataDetailTransaksi2TahunDataBase = (from itemDetailTransaksi in db.TBTransaksiDetails
                                                      join itemKombinasiProduk in db.TBKombinasiProduks on itemDetailTransaksi.IDKombinasiProduk equals itemKombinasiProduk.IDKombinasiProduk
                                                      join itemProduk in db.TBProduks on itemKombinasiProduk.IDProduk equals itemProduk.IDProduk
                                                      join itemRelasiKategori in db.TBRelasiProdukKategoriProduks on itemProduk.IDProduk equals itemRelasiKategori.IDProduk
                                                      where
                                                      itemDetailTransaksi.TBTransaksi.TanggalOperasional.Value.Year >= tahun - 1
                                                      select new
            {
                Kode = itemKombinasiProduk.KodeKombinasiProduk,
                IDPelanggan = itemDetailTransaksi.TBTransaksi.IDPelanggan,
                Produk = itemKombinasiProduk.Nama,
                Warna = itemProduk.TBWarna.Nama ?? string.Empty,
                IDKategori = itemRelasiKategori.IDKategoriProduk,
                Kategori = StokProduk_Class.GabungkanSemuaKategoriProduk(db, null, itemKombinasiProduk),
                Brand = itemProduk.TBPemilikProduk.Nama ?? string.Empty,
                JumlahProduk = itemDetailTransaksi.Quantity,
                HargaPokok = itemDetailTransaksi.HargaBeli,
                HargaJual = itemDetailTransaksi.HargaJual,
                PotonganHargaJual = itemDetailTransaksi.Discount,
                Subtotal = itemDetailTransaksi.Subtotal,
                TanggalOperasional = itemDetailTransaksi.TBTransaksi.TanggalOperasional,
                IDTempat = itemDetailTransaksi.TBTransaksi.IDTempat,
                Nama = itemDetailTransaksi.TBTransaksi.TBTempat.Nama,
                Kota = itemDetailTransaksi.TBTransaksi.TBPelanggan.TBAlamats.FirstOrDefault().TBWilayah.TBWilayah1.Nama,
                TBTransaksi = itemDetailTransaksi.TBTransaksi
            }).ToArray();

            var _dataDetailTransaksi2TahunDataBaseDefault = (from itemDetailTransaksi in db.TBTransaksiDetails
                                                             join itemKombinasiProduk in db.TBKombinasiProduks on itemDetailTransaksi.IDKombinasiProduk equals itemKombinasiProduk.IDKombinasiProduk
                                                             join itemProduk in db.TBProduks on itemKombinasiProduk.IDProduk equals itemProduk.IDProduk
                                                             join itemRelasiKategori in db.TBRelasiProdukKategoriProduks on itemProduk.IDProduk equals itemRelasiKategori.IDProduk
                                                             where
                                                             itemDetailTransaksi.TBTransaksi.TanggalOperasional.Value.Year >= tahun - 1
                                                             select new
            {
                Kode = itemKombinasiProduk.KodeKombinasiProduk,
                IDPelanggan = itemDetailTransaksi.TBTransaksi.IDPelanggan,
                Produk = itemKombinasiProduk.Nama,
                Warna = itemProduk.TBWarna.Nama ?? string.Empty,
                IDKategori = itemRelasiKategori.IDKategoriProduk,
                Kategori = StokProduk_Class.GabungkanSemuaKategoriProduk(db, null, itemKombinasiProduk),
                Brand = itemProduk.TBPemilikProduk.Nama ?? string.Empty,
                JumlahProduk = itemDetailTransaksi.Quantity,
                HargaPokok = itemDetailTransaksi.HargaBeli,
                HargaJual = itemDetailTransaksi.HargaJual,
                PotonganHargaJual = itemDetailTransaksi.Discount,
                Subtotal = itemDetailTransaksi.Subtotal,
                TanggalOperasional = itemDetailTransaksi.TBTransaksi.TanggalOperasional,
                IDTempat = itemDetailTransaksi.TBTransaksi.IDTempat,
                Nama = itemDetailTransaksi.TBTransaksi.TBTempat.Nama,
                Kota = itemDetailTransaksi.TBTransaksi.TBPelanggan.TBAlamats.FirstOrDefault().TBWilayah.TBWilayah1.Nama,
                TBTransaksi = itemDetailTransaksi.TBTransaksi
            }).ToArray();

            if (idkategori != 0)
            {
                //Detail transaksi tahun ini, dan setahun yg lalu.. di seluruh tempat
                _dataDetailTransaksi2TahunDataBase = _dataDetailTransaksi2TahunDataBase.Where(item => item.IDKategori == idkategori).ToArray();
            }
            else
            {
                //Detail transaksi tahun ini, dan setahun yg lalu.. di seluruh tempat
                _dataDetailTransaksi2TahunDataBase = _dataDetailTransaksi2TahunDataBase.ToArray();
            }

            //Group by Month
            var _dataDetailTransaksiTahunIni = _dataDetailTransaksi2TahunDataBase
                                               .Where(item => item.TanggalOperasional.Value.Year == tahun)
                                               .GroupBy(item => item.TanggalOperasional.Value.Month)
                                               .Select(item => new
            {
                Key        = item.Key,
                GrandTotal = item.Sum(item2 => item2.Subtotal) == 0 ? 0 : item.Sum(item2 => item2.Subtotal),
                TotalQty   = item.Sum(item2 => item2.JumlahProduk) == 0 ? 0 : item.Sum(item2 => item2.JumlahProduk)
            }).ToArray();

            var _dataDetailTransaksiTahunIniNoFilter = _dataDetailTransaksi2TahunDataBase
                                                       .Where(item => item.TanggalOperasional.Value.Year == tahun)
                                                       .GroupBy(item => item.TanggalOperasional.Value.Month)
                                                       .Select(item => new
            {
                Key        = item.Key,
                GrandTotal = item.Sum(item2 => item2.Subtotal) == 0 ? 0 : item.Sum(item2 => item2.Subtotal),
                TotalQty   = item.Sum(item2 => item2.JumlahProduk) == 0 ? 0 : item.Sum(item2 => item2.JumlahProduk)
            }).ToArray();

            //Group by Month
            var _dataDetailTransaksiTahunLalu = _dataDetailTransaksi2TahunDataBase
                                                .Where(item => item.TanggalOperasional.Value.Year == tahun - 1)
                                                .GroupBy(item => item.TanggalOperasional.Value.Month)
                                                .Select(item => new
            {
                Key        = item.Key,
                GrandTotal = item.Sum(item2 => item2.Subtotal) == 0 ? 0 : item.Sum(item2 => item2.Subtotal),
                TotalQty   = item.Sum(item2 => item2.JumlahProduk) == 0 ? 0 : item.Sum(item2 => item2.JumlahProduk)
            }).ToArray();

            var _dataDetailTransaksiTahunLaluNoFilter = _dataDetailTransaksi2TahunDataBase
                                                        .Where(item => item.TanggalOperasional.Value.Year == tahun - 1)
                                                        .GroupBy(item => item.TanggalOperasional.Value.Month)
                                                        .Select(item => new
            {
                Key        = item.Key,
                GrandTotal = item.Sum(item2 => item2.Subtotal) == 0 ? 0 : item.Sum(item2 => item2.Subtotal),
                TotalQty   = item.Sum(item2 => item2.JumlahProduk) == 0 ? 0 : item.Sum(item2 => item2.JumlahProduk)
            }).ToArray();

            #region Line Chart - Trend Analysis Monthly (tahun ini dan tahun lalu)
            LiteralChart.Text += "<script> $(function () { var dataChart = [";
            if (idtempat == 0)
            {
                //If searched by Penjualan
                if (searchby == 1)
                {
                    for (int i = 1; i <= 12; i++)
                    {
                        var _transaksiTahunIni  = _dataDetailTransaksiTahunIniNoFilter.FirstOrDefault(item => item.Key == i);
                        var _transaksiTahunLalu = _dataDetailTransaksiTahunLaluNoFilter.FirstOrDefault(item => item.Key == i);

                        decimal _grandTotal = 0, _grandTotalTahunLalu = 0;

                        if (_transaksiTahunIni != null)
                        {
                            _grandTotal = (decimal)_transaksiTahunIni.GrandTotal;
                        }

                        if (_transaksiTahunLalu != null)
                        {
                            _grandTotalTahunLalu = (decimal)_transaksiTahunLalu.GrandTotal;
                        }

                        LiteralChart.Text += "{ 'y': '" + new DateTime(DropDownListTahun.SelectedValue.ToInt(), i, 1).ToString("MMM") + "', '" + (tahun - 1) + "': " + _grandTotalTahunLalu + ", '" + tahun + "': " + _grandTotal + " }, ";
                    }
                }
                else //searched by Qty
                {
                    for (int i = 1; i <= 12; i++)
                    {
                        var _transaksiTahunIni  = _dataDetailTransaksiTahunIniNoFilter.FirstOrDefault(item => item.Key == i);
                        var _transaksiTahunLalu = _dataDetailTransaksiTahunLaluNoFilter.FirstOrDefault(item => item.Key == i);

                        decimal _totalQty = 0, _totalQtyTahunLalu = 0;

                        if (_transaksiTahunIni != null)
                        {
                            _totalQty = (decimal)_transaksiTahunIni.TotalQty;
                        }

                        if (_transaksiTahunLalu != null)
                        {
                            _totalQtyTahunLalu = (decimal)_transaksiTahunLalu.TotalQty;
                        }

                        LiteralChart.Text += "{ 'y': '" + new DateTime(DropDownListTahun.SelectedValue.ToInt(), i, 1).ToString("MMM") + "', '" + (tahun - 1) + "': " + _totalQtyTahunLalu + ", '" + tahun + "': " + _totalQty + " }, ";
                    }
                }

                LiteralChart.Text += "]; Morris.Line({ element: 'graph11', behaveLikeLine: true, data: dataChart, xkey: 'y', ";

                LiteralChart.Text += "ykeys: ['" + (DropDownListTahun.SelectedValue.ToInt() - 1) + "','" + DropDownListTahun.SelectedValue.ToInt() + "'],";
                LiteralChart.Text += "labels: ['" + (DropDownListTahun.SelectedValue.ToInt() - 1) + "','" + DropDownListTahun.SelectedValue.ToInt() + "'],";
                LiteralChart.Text += "lineColors:['#7FC4C1','#FF625D'],";
                LiteralChart.Text += " parseTime: false}); eval(dataChart); }); </script>";
            }
            else
            {
                //If searched by Penjualan
                if (searchby == 1)
                {
                    for (int i = 1; i <= 12; i++)
                    {
                        var _transaksiTahunIni  = _dataDetailTransaksiTahunIni.FirstOrDefault(item => item.Key == i);
                        var _transaksiTahunLalu = _dataDetailTransaksiTahunLalu.FirstOrDefault(item => item.Key == i);

                        decimal _grandTotal = 0, _grandTotalTahunLalu = 0;

                        if (_transaksiTahunIni != null)
                        {
                            _grandTotal = (decimal)_transaksiTahunIni.GrandTotal;
                        }

                        if (_transaksiTahunLalu != null)
                        {
                            _grandTotalTahunLalu = (decimal)_transaksiTahunLalu.GrandTotal;
                        }

                        LiteralChart.Text += "{ 'y': '" + new DateTime(DropDownListTahun.SelectedValue.ToInt(), i, 1).ToString("MMM") + "', '" + (tahun - 1) + "': " + _grandTotalTahunLalu + ", '" + tahun + "': " + _grandTotal + " }, ";
                    }
                }
                else //searched by Qty
                {
                    for (int i = 1; i <= 12; i++)
                    {
                        var _transaksiTahunIni  = _dataDetailTransaksiTahunIni.FirstOrDefault(item => item.Key == i);
                        var _transaksiTahunLalu = _dataDetailTransaksiTahunLalu.FirstOrDefault(item => item.Key == i);

                        decimal _totalQty = 0, _totalQtyTahunLalu = 0;

                        if (_transaksiTahunIni != null)
                        {
                            _totalQty = (decimal)_transaksiTahunIni.TotalQty;
                        }

                        if (_transaksiTahunLalu != null)
                        {
                            _totalQtyTahunLalu = (decimal)_transaksiTahunLalu.TotalQty;
                        }

                        LiteralChart.Text += "{ 'y': '" + new DateTime(DropDownListTahun.SelectedValue.ToInt(), i, 1).ToString("MMM") + "', '" + (tahun - 1) + "': " + _totalQtyTahunLalu + ", '" + tahun + "': " + _totalQty + " }, ";
                    }
                }

                LiteralChart.Text += "]; Morris.Line({ element: 'graph11', behaveLikeLine: true, data: dataChart, xkey: 'y', ";

                LiteralChart.Text += "ykeys: ['" + (DropDownListTahun.SelectedValue.ToInt() - 1) + "','" + DropDownListTahun.SelectedValue.ToInt() + "'],";
                LiteralChart.Text += "labels: ['" + (DropDownListTahun.SelectedValue.ToInt() - 1) + "','" + DropDownListTahun.SelectedValue.ToInt() + "'],";
                LiteralChart.Text += "lineColors:['#7FC4C1','#FF625D'],";
                LiteralChart.Text += " parseTime: false}); eval(dataChart); }); </script>";
            }
            #endregion

            #region RepeaterDetail dari Trend Analysis Monthly
            PanelDetail.Visible = true;
            //Group by Month & Year, ini digunakan untuk tampilan repeater detail
            var _dataDetail2Tahun = _dataDetailTransaksi2TahunDataBase
                                    .GroupBy(item => new
            {
                item.TanggalOperasional.Value.Month,
                item.TanggalOperasional.Value.Year
            })
                                    .Select(item => new
            {
                Key                  = item.Key,
                GrandTotal           = item.Sum(item2 => item2.Subtotal),
                TotalQty             = item.Sum(item2 => item2.JumlahProduk),
                TotalNominalDiscount = item.Sum(item2 => item2.PotonganHargaJual) == 0 ? 0 : item.Sum(item2 => item2.PotonganHargaJual * item2.JumlahProduk)
            }).ToArray();

            List <int> Bulan = new List <int>();
            for (int i = 1; i <= 12; i++)
            {
                Bulan.Add(i);
            }

            if (DropDownListFilter.SelectedValue.ToInt() == 1)
            {
                var Data = Bulan.Select(item => new
                {
                    Bulan = new DateTime(DropDownListTahun.SelectedValue.ToInt(), item, 1).ToString("MMMM"),
                    GrandTotalTahunLalu           = _dataDetail2Tahun.Where(item2 => item2.Key.Month == item && item2.Key.Year == tahun - 1).Count() == 0 ? 0 : _dataDetail2Tahun.Where(item2 => item2.Key.Month == item && item2.Key.Year == tahun - 1).Sum(item2 => item2.GrandTotal),
                    GrandTotalTahunIni            = _dataDetail2Tahun.Where(item2 => item2.Key.Month == item && item2.Key.Year == tahun).Count() == 0 ? 0 : _dataDetail2Tahun.Where(item2 => item2.Key.Month == item && item2.Key.Year == tahun).Sum(item2 => item2.GrandTotal),
                    TotalNominalDiscountTahunLalu = _dataDetail2Tahun.Where(item2 => item2.Key.Month == item && item2.Key.Year == tahun - 1).Count() == 0 ? 0 : _dataDetail2Tahun.Where(item2 => item2.Key.Month == item && item2.Key.Year == tahun - 1).Sum(item2 => item2.TotalNominalDiscount),
                    TotalNominalDiscountTahunIni  = _dataDetail2Tahun.Where(item2 => item2.Key.Month == item && item2.Key.Year == tahun).Count() == 0 ? 0 : _dataDetail2Tahun.Where(item2 => item2.Key.Month == item && item2.Key.Year == tahun).Sum(item2 => item2.TotalNominalDiscount)
                }).ToArray();

                RepeaterDetail.DataSource = Data;
                RepeaterDetail.DataBind();

                LabelTotalNormalSalesTahunIni.Text  = Data.Sum(item => item.GrandTotalTahunIni + item.TotalNominalDiscountTahunIni).ToFormatHarga();
                LabelTotalDiscountTahunIni.Text     = Data.Sum(item => item.TotalNominalDiscountTahunIni).ToFormatHarga();
                LabelGrandTotalTahunIni.Text        = Data.Sum(item => item.GrandTotalTahunIni).ToFormatHarga();
                LabelTotalNormalSalesTahunLalu.Text = Data.Sum(item => item.GrandTotalTahunLalu + item.TotalNominalDiscountTahunLalu).ToFormatHarga();
                LabelTotalDiscountTahunLalu.Text    = Data.Sum(item => item.TotalNominalDiscountTahunLalu).ToFormatHarga();
                LabelGrandTotalTahunLalu.Text       = Data.Sum(item => item.GrandTotalTahunLalu).ToFormatHarga();
                LabelTotalSelisih.Text = Pertumbuhan((decimal)Data.Sum(item => item.GrandTotalTahunIni - item.GrandTotalTahunLalu));
            }
            else
            {
                var Data = Bulan.Select(item => new
                {
                    Bulan = new DateTime(DropDownListTahun.SelectedValue.ToInt(), item, 1).ToString("MMMM"),
                    GrandTotalTahunLalu           = _dataDetail2Tahun.Where(item2 => item2.Key.Month == item && item2.Key.Year == tahun - 1).Count() == 0 ? 0 : _dataDetail2Tahun.Where(item2 => item2.Key.Month == item && item2.Key.Year == tahun - 1).Sum(item2 => item2.TotalQty),
                    GrandTotalTahunIni            = _dataDetail2Tahun.Where(item2 => item2.Key.Month == item && item2.Key.Year == tahun).Count() == 0 ? 0 : _dataDetail2Tahun.Where(item2 => item2.Key.Month == item && item2.Key.Year == tahun).Sum(item2 => item2.TotalQty),
                    TotalNominalDiscountTahunLalu = _dataDetail2Tahun.Where(item2 => item2.Key.Month == item && item2.Key.Year == tahun - 1).Count() == 0 ? 0 : _dataDetail2Tahun.Where(item2 => item2.Key.Month == item && item2.Key.Year == tahun - 1).Sum(item2 => item2.TotalNominalDiscount),
                    TotalNominalDiscountTahunIni  = _dataDetail2Tahun.Where(item2 => item2.Key.Month == item && item2.Key.Year == tahun).Count() == 0 ? 0 : _dataDetail2Tahun.Where(item2 => item2.Key.Month == item && item2.Key.Year == tahun).Sum(item2 => item2.TotalNominalDiscount)
                }).ToArray();

                RepeaterDetailQty.DataSource = Data;
                RepeaterDetailQty.DataBind();

                LabelTotalQtyTahunIni.Text  = Data.Sum(item => item.GrandTotalTahunIni).ToFormatHargaBulat();
                LabelTotalQtyTahunLalu.Text = Data.Sum(item => item.GrandTotalTahunLalu).ToFormatHargaBulat();
                LabelTotalGrowthQty.Text    = Pertumbuhan((decimal)Data.Sum(item => item.GrandTotalTahunIni - item.GrandTotalTahunLalu));;
            }
            #endregion

            //#region Bar Chart - Sales per channel
            //TBTempat[] tempatDatabase = Database.db.TBTempats.ToArray();
            //List<int> datatempat = new List<int>();
            //for (int i = 0; i < tempatDatabase.Count(); i++)
            //{
            //    datatempat.Add(tempatDatabase[i].IDTempat);
            //}
            ////Detail Transaksi tahun ini, Group by Tempat
            //var _dataDetailTransaksiTahunIniGroupByIDTempat = _dataDetailTransaksi2TahunDataBase
            //                        .Where(item => item.TanggalOperasional.Value.Year == tahun)
            //                       .GroupBy(item => new
            //                       {
            //                           item.IDTempat,
            //                           item.Nama
            //                       })
            //                       .Select(item => new
            //                       {
            //                           Key = item.Key,
            //                           GrandTotal = item.Sum(item2 => item2.Subtotal) == 0 ? 0 : item.Sum(item2 => item2.Subtotal),
            //                           TotalQty = item.Sum(item2 => item2.JumlahProduk) == 0 ? 0 : item.Sum(item2 => item2.JumlahProduk),
            //                           TotalNominalDiscount = item.Sum(item2 => item2.PotonganHargaJual) == 0 ? 0 : item.Sum(item2 => item2.PotonganHargaJual * item2.JumlahProduk)
            //                       }).ToArray();

            ////Detail Transaksi tahun lalu, Group by Tempat
            //var _dataDetailTransaksiTahunLaluGroupByIDTempat = _dataDetailTransaksi2TahunDataBase
            //                       .Where(item => item.TanggalOperasional.Value.Year == tahun - 1)
            //                       .GroupBy(item => new
            //                       {
            //                           item.IDTempat,
            //                           item.Nama
            //                       })
            //                       .Select(item => new
            //                       {
            //                           Key = item.Key,
            //                           NormalSales = item.Sum(item2 => item2.HargaJual) * item.Sum(item2 => item2.JumlahProduk),
            //                           GrandTotal = item.Sum(item2 => item2.Subtotal) == 0 ? 0 : item.Sum(item2 => item2.Subtotal),
            //                           TotalQty = item.Sum(item2 => item2.JumlahProduk) == 0 ? 0 : item.Sum(item2 => item2.JumlahProduk),
            //                           TotalNominalDiscount = item.Sum(item2 => item2.PotonganHargaJual) == 0 ? 0 : item.Sum(item2 => item2.PotonganHargaJual * item2.JumlahProduk)
            //                       }).ToArray();
            //LiteralChart.Text += "<script> $(function () { var dataChart = [";

            //for (int i = 0; i < datatempat.Count(); i++)
            //{
            //    var _transaksiTahunIni = _dataDetailTransaksiTahunIniGroupByIDTempat.FirstOrDefault(item => item.Key.IDTempat == tempatDatabase[i].IDTempat);
            //    var _transaksiTahunLalu = _dataDetailTransaksiTahunLaluGroupByIDTempat.FirstOrDefault(item => item.Key.IDTempat == tempatDatabase[i].IDTempat);

            //    decimal _grandTotal = 0, _grandTotalTahunLalu = 0;

            //    if (_transaksiTahunIni != null)
            //        _grandTotal = (decimal)_transaksiTahunIni.GrandTotal;

            //    if (_transaksiTahunLalu != null)
            //        _grandTotalTahunLalu = (decimal)_transaksiTahunLalu.GrandTotal;

            //    LiteralChart.Text += "{ 'y': '" + tempatDatabase[i].Nama + "', '" + (tahun - 1) + "': " + _grandTotalTahunLalu + ", '" + tahun + "': " + _grandTotal + " }, ";
            //}
            //LiteralChart.Text += "]; Morris.Bar({ element: 'graph13', behaveLikeLine: true, data: dataChart, xkey: 'y', ";

            //LiteralChart.Text += "ykeys: ['" + (DropDownListTahun.SelectedValue.ToInt() - 1) + "','" + DropDownListTahun.SelectedValue.ToInt() + "'],";
            //LiteralChart.Text += "labels: ['" + (DropDownListTahun.SelectedValue.ToInt() - 1) + "','" + DropDownListTahun.SelectedValue.ToInt() + "'],";
            //LiteralChart.Text += "barColors:['#7FC4C1','#FF625D'],";
            //LiteralChart.Text += " parseTime: false,resize:true}); eval(dataChart); }); </script>";

            //if (DropDownListFilter.SelectedValue) == 1)
            //{
            //    var DataSalesPerChannel = datatempat.Select(item => new
            //    {
            //        NamaTempat = tempatDatabase.FirstOrDefault(item2 => item2.IDTempat == item).Nama,
            //        GrandTotalTahunLalu = _dataDetailTransaksiTahunLaluGroupByIDTempat.Where(item2 => item2.Key.IDTempat == item).Count() == 0 ? 0 : _dataDetailTransaksiTahunLaluGroupByIDTempat.Where(item2 => item2.Key.IDTempat == item).Sum(item2 => item2.GrandTotal),
            //        GrandTotalTahunIni = _dataDetailTransaksiTahunIniGroupByIDTempat.Where(item2 => item2.Key.IDTempat == item).Count() == 0 ? 0 : _dataDetailTransaksiTahunIniGroupByIDTempat.Where(item2 => item2.Key.IDTempat == item).Sum(item2 => item2.GrandTotal),
            //        TotalNominalDiscountTahunLalu = _dataDetailTransaksiTahunLaluGroupByIDTempat.Where(item2 => item2.Key.IDTempat == item).Count() == 0 ? 0 : _dataDetailTransaksiTahunLaluGroupByIDTempat.Where(item2 => item2.Key.IDTempat == item).Sum(item2 => item2.TotalNominalDiscount),
            //        TotalNominalDiscountTahunIni = _dataDetailTransaksiTahunIniGroupByIDTempat.Where(item2 => item2.Key.IDTempat == item).Count() == 0 ? 0 : _dataDetailTransaksiTahunIniGroupByIDTempat.Where(item2 => item2.Key.IDTempat == item).Sum(item2 => item2.TotalNominalDiscount)
            //    }).ToArray();

            //    RepeaterSalesPerChannel.DataSource = DataSalesPerChannel;
            //    RepeaterSalesPerChannel.DataBind();

            //    LabelTotalNormalSalesTahunLaluPerChannel.Text = DataSalesPerChannel.Sum(item => item.GrandTotalTahunLalu + item.TotalNominalDiscountTahunLalu).ToFormatHarga();
            //    LabelTotalDiscountTahunLaluPerChannel.Text = DataSalesPerChannel.Sum(item => item.TotalNominalDiscountTahunLalu).ToFormatHarga();
            //    LabelGrandTotalTahunLaluPerChannel.Text = DataSalesPerChannel.Sum(item => item.GrandTotalTahunLalu).ToFormatHarga();
            //    LabelTotalNormalSalesTahunIniPerChannel.Text = DataSalesPerChannel.Sum(item => item.GrandTotalTahunIni + item.TotalNominalDiscountTahunIni).ToFormatHarga();
            //    LabelTotalDiscountTahunIniPerChannel.Text = DataSalesPerChannel.Sum(item => item.TotalNominalDiscountTahunIni).ToFormatHarga();
            //    LabelGrandTotalTahunIniPerChannel.Text = DataSalesPerChannel.Sum(item => item.GrandTotalTahunIni).ToFormatHarga();
            //    LabelTotalSelisihPerChannel.Text = Pertumbuhan((decimal)DataSalesPerChannel.Sum(item => item.GrandTotalTahunIni - item.GrandTotalTahunLalu));
            //}
            //else
            //{
            //    var DataSalesPerChannel = datatempat.Select(item => new
            //    {
            //        NamaTempat = tempatDatabase.FirstOrDefault(item2 => item2.IDTempat == item).Nama,
            //        GrandTotalTahunLalu = _dataDetailTransaksiTahunLaluGroupByIDTempat.Where(item2 => item2.Key.IDTempat == item).Count() == 0 ? 0 : _dataDetailTransaksiTahunLaluGroupByIDTempat.Where(item2 => item2.Key.IDTempat == item).Sum(item2 => item2.TotalQty),
            //        GrandTotalTahunIni = _dataDetailTransaksiTahunIniGroupByIDTempat.Where(item2 => item2.Key.IDTempat == item).Count() == 0 ? 0 : _dataDetailTransaksiTahunIniGroupByIDTempat.Where(item2 => item2.Key.IDTempat == item).Sum(item2 => item2.TotalQty),
            //        TotalNominalDiscountTahunLalu = _dataDetailTransaksiTahunLaluGroupByIDTempat.Where(item2 => item2.Key.IDTempat == item).Count() == 0 ? 0 : _dataDetailTransaksiTahunLaluGroupByIDTempat.Where(item2 => item2.Key.IDTempat == item).Sum(item2 => item2.TotalNominalDiscount),
            //        TotalNominalDiscountTahunIni = _dataDetailTransaksiTahunIniGroupByIDTempat.Where(item2 => item2.Key.IDTempat == item).Count() == 0 ? 0 : _dataDetailTransaksiTahunIniGroupByIDTempat.Where(item2 => item2.Key.IDTempat == item).Sum(item2 => item2.TotalNominalDiscount)
            //    }).ToArray();

            //    RepeaterSalesPerChannelQty.DataSource = DataSalesPerChannel;
            //    RepeaterSalesPerChannelQty.DataBind();

            //    LabelTotalQtySalesPerChannelTahunLalu.Text = DataSalesPerChannel.Sum(item => item.GrandTotalTahunLalu).ToFormatHargaBulat();
            //    LabelTotalQtySalesPerChannelTahunIni.Text = DataSalesPerChannel.Sum(item => item.GrandTotalTahunIni).ToFormatHargaBulat();
            //    LabelTotalGrowthQtySalesPerChannel.Text = Pertumbuhan((decimal)DataSalesPerChannel.Sum(item => item.GrandTotalTahunIni - item.GrandTotalTahunLalu));
            //}

            //#endregion

            #region Sales per kota
            List <string> ListKota = new List <string>();
            var           KotaDB   = db.TBAlamats.Select(item => item.TBWilayah.TBWilayah1.Nama).Distinct();

            if (KotaDB != null)
            {
                foreach (var item in KotaDB)
                {
                    ListKota.Add(item);
                }

                var DataSalesPerKota = _dataDetailTransaksi2TahunDataBase
                                       .Where(item => item.TanggalOperasional.Value.Year == tahun &&
                                              item.IDPelanggan != 1 &&
                                              item.TBTransaksi.TBPelanggan.TBAlamats.FirstOrDefault().TBWilayah != null)
                                       .GroupBy(item => new
                {
                    Kota     = item.Kota,
                    Provinsi = item.TBTransaksi.TBPelanggan.TBAlamats.FirstOrDefault().TBWilayah.TBWilayah1.TBWilayah1.Nama,
                })
                                       .Select(item => new
                {
                    Key                  = item.Key,
                    GrandTotal           = item.Sum(item2 => item2.HargaJual * item2.JumlahProduk),
                    TotalTransaksi       = item.Where(item2 => item2.TBTransaksi.IDStatusTransaksi == 5).Count(),
                    TotalNominalDiscount = item.Sum(item2 => item2.PotonganHargaJual),
                    JumlahProduk         = item.Sum(item2 => item2.JumlahProduk)
                }).OrderByDescending(item => item.GrandTotal).ToArray();

                var DataSalesPerKotaSum = ListKota.Select(item => new
                {
                    Kota               = item,
                    Provinsi           = DataSalesPerKota.Where(item2 => item2.Key.Kota == item).Count() == 0 ? "" : DataSalesPerKota.FirstOrDefault(item2 => item2.Key.Kota == item).Key.Provinsi,
                    JumlahTransaksi    = DataSalesPerKota.Where(item2 => item2.Key.Kota == item).Count() == 0 ? 0 : DataSalesPerKota.FirstOrDefault(item2 => item2.Key.Kota == item).TotalTransaksi,
                    GrandTotal         = DataSalesPerKota.Where(item2 => item2.Key.Kota == item).Count() == 0 ? 0 : DataSalesPerKota.FirstOrDefault(item2 => item2.Key.Kota == item).GrandTotal,
                    JumlahProduk       = DataSalesPerKota.Where(item2 => item2.Key.Kota == item).Count() == 0 ? 0 : DataSalesPerKota.FirstOrDefault(item2 => item2.Key.Kota == item).JumlahProduk,
                    SumJumlahProduk    = DataSalesPerKota.Sum(item2 => item2.JumlahProduk),
                    SumJumlahTransaksi = DataSalesPerKota.Sum(item2 => item2.TotalTransaksi),
                    SumGrandTotal      = DataSalesPerKota.Sum(item2 => item2.GrandTotal)
                }).ToArray();

                RepeaterMarketShare.DataSource = DataSalesPerKotaSum.Where(item2 => item2.GrandTotal != 0)
                                                 .OrderByDescending(item2 => item2.GrandTotal).ToArray();
                RepeaterMarketShare.DataBind();

                #region Labelling
                LabelTotalJumlahTransaksiHeader.Text = DataSalesPerKotaSum.Sum(item => item.JumlahTransaksi).ToFormatHargaBulat();
                LabelTotalGrandTotalHeader.Text      = DataSalesPerKotaSum.Sum(item => item.GrandTotal).ToFormatHarga();
                LabelJumlahProdukHeader.Text         = DataSalesPerKotaSum.Sum(item => item.JumlahProduk).ToFormatHarga();

                LabelTotalJumlahTransaksiFooter.Text = DataSalesPerKotaSum.Sum(item => item.JumlahTransaksi).ToFormatHargaBulat();
                LabelTotalGrandTotalFooter.Text      = DataSalesPerKotaSum.Sum(item => item.GrandTotal).ToFormatHarga();
                LabelJumlahProdukFooter.Text         = DataSalesPerKotaSum.Sum(item => item.JumlahProduk).ToFormatHarga();
                #endregion

                var SettingGrafik = DataSalesPerKotaSum.Where(item2 => item2.GrandTotal != 0)
                                    .OrderByDescending(item2 => item2.GrandTotal)
                                    .Take(20);

                int Height = SettingGrafik.Count() * 25;

                container.Attributes.Add("style", "width: auto; height: " + (Height > 600 ? Height : 600) + "px; margin: 0 auto;");

                string Judul    = "";
                string SubJudul = "";
                string JudulX   = "Sales Per Kota";
                string DataX    = "";

                string JudulY = "Sales";

                string DataY   = "";
                string Tooltip = "";

                if (DropDownListFilter.SelectedItem.Value == "1")
                {
                    foreach (var item in SettingGrafik)
                    {
                        DataX += "'" + item.Kota + "',";
                        DataY += item.GrandTotal + ",";
                    }
                }
                else
                {
                    foreach (var item in SettingGrafik)
                    {
                        DataX += "'" + item.Kota + "',";
                        DataY += item.JumlahProduk + ",";
                    }
                }

                LiteralChart.Text += "<script type=\"text/javascript\">";
                LiteralChart.Text += "$(function () { $('#container').highcharts({";
                LiteralChart.Text += "        chart: { type: 'bar' },";
                LiteralChart.Text += "        title: { text: '" + Judul + "' },";
                LiteralChart.Text += "        subtitle: { text: '" + SubJudul + "' },";
                LiteralChart.Text += "        xAxis: { categories: [" + DataX + "] },";
                LiteralChart.Text += "        yAxis: { min: 0, title: { text: '" + JudulY + "' } },";
                LiteralChart.Text += "        tooltip: { valueSuffix: '" + Tooltip + "' },";
                LiteralChart.Text += "        legend: { reversed: true },";
                LiteralChart.Text += "        plotOptions: { series: { stacking: 'normal' } },";
                LiteralChart.Text += "        credits: { enabled: false },";
                LiteralChart.Text += "        exporting: { enabled: false },";
                LiteralChart.Text += "        series: [";
                LiteralChart.Text += "		{";
                LiteralChart.Text += "            name: '" + JudulX + "',";
                LiteralChart.Text += "            data: [" + DataY + "]";
                LiteralChart.Text += "        },";
                LiteralChart.Text += "		]";
                LiteralChart.Text += "    }); });";
                LiteralChart.Text += "</script>";

                #endregion
            }
        }
    }