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 } } }