protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext())
            {
                Store_Class ClassStore = new Store_Class(db);

                if (!string.IsNullOrWhiteSpace(Request.QueryString["id"]) && !string.IsNullOrWhiteSpace(Request.QueryString["month"]) && !string.IsNullOrWhiteSpace(Request.QueryString["year"]))
                {
                    var DataStore = ClassStore.Data();
                    LabelNamaStore.Text   = DataStore.Nama;
                    LabelAlamatStore.Text = DataStore.Alamat;

                    //cari kategori tempat sesuai dengan yang dicari
                    var KategoriTempatDB = db.TBKategoriTempats.FirstOrDefault(item => item.IDKategoriTempat.ToString() == Request.QueryString["id"].ToString());

                    //cari forecast seluruh store dengan IDKategoriTempat yang sesuai
                    var forecastDB = db.TBForecasts.Where(item => item.TBTempat.IDKategoriTempat == KategoriTempatDB.IDKategoriTempat).ToArray();

                    var hasil = db.TBTransaksis.AsEnumerable()
                                .Where(item => item.TBTempat.TBKategoriTempat.IDKategoriTempat.ToString() == Request.QueryString["id"].ToString() &&
                                       item.TanggalTransaksi.Value.Year == int.Parse(Request.QueryString["year"].ToString()) &&
                                       item.TanggalTransaksi.Value.Month.ToString() == Request.QueryString["month"].ToString() &&
                                       item.IDStatusTransaksi == (int)EnumStatusTransaksi.Complete)
                                .GroupBy(item => new
                    {
                        IDTempat = item.IDTempat,
                        Tempat   = item.TBTempat.Nama,
                        item.TanggalTransaksi,
                        NamaPenggunaTransaksi = item.TBPengguna.NamaLengkap
                    }).Select(item => new
                    {
                        item.Key,
                        Qty              = item.Sum(item2 => item2.JumlahProduk),
                        ActualIncome     = item.Sum(item2 => item2.GrandTotal),
                        ForecastIncome   = forecastDB.FirstOrDefault(item2 => item2.Tanggal.Date == item.Key.TanggalTransaksi.Value.Date) == null ? 0 : forecastDB.FirstOrDefault(item2 => item2.Tanggal.Date == item.Key.TanggalTransaksi.Value.Date).Nominal,
                        ForecastQuantity = forecastDB.FirstOrDefault(item2 => item2.Tanggal.Date == item.Key.TanggalTransaksi.Value.Date) == null ? 0 : forecastDB.FirstOrDefault(item2 => item2.Tanggal.Date == item.Key.TanggalTransaksi.Value.Date).Quantity
                    }).ToArray().OrderBy(item => item.Key.Tempat).ThenBy(item2 => item2.Key.TanggalTransaksi);

                    RepeaterDataSales.DataSource = hasil;
                    RepeaterDataSales.DataBind();

                    if (hasil != null)
                    {
                        LabelTotalForecastQuantity.Text = hasil.Sum(item => item.ForecastQuantity).ToFormatHargaBulat();
                        LabelTotalForecastIncome.Text   = hasil.Sum(item => item.ForecastIncome).ToFormatHarga();
                        LabelTotalQty.Text          = hasil.Sum(item => item.Qty).ToFormatHargaBulat();
                        LabelTotalActualIncome.Text = hasil.Sum(item => item.ActualIncome).ToFormatHarga();

                        LabelNamaKategoriTempat.Text = KategoriTempatDB.Nama.ToUpper() + " " + DataStore.Nama.ToUpper();
                    }
                }
            }
        }
    }
Esempio n. 2
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext())
            {
                if (!string.IsNullOrWhiteSpace(Request.QueryString["year"]))
                {
                    int Year = 0;
                    int.TryParse(Request.QueryString["year"].ToString(), out Year);

                    var DataStore = db.TBStores.FirstOrDefault();
                    LabelNamaStore.Text   = DataStore.Nama;
                    LabelAlamatStore.Text = DataStore.Alamat;

                    #region Data Header KategoriTempat
                    RepeaterKategoriTempat.DataSource = db.TBKategoriTempats.ToArray().OrderBy(item => item.IDKategoriTempat);
                    RepeaterKategoriTempat.DataBind();
                    #endregion

                    #region Data Sales
                    var _result = db.TBTransaksis.AsEnumerable().Where(x => x.TanggalPembayaran.Value.Year == Year &&
                                                                       x.IDStatusTransaksi == (int)EnumStatusTransaksi.Complete).GroupBy(item => new
                    {
                        Bulan     = item.TanggalPembayaran.Value.Month,
                        NamaBulan = item.TanggalPembayaran.Value.ToString("MMMM")
                    })
                                  .Select(itemTransaksi => new
                    {
                        itemTransaksi.Key,
                        NamaBulan = itemTransaksi.Key.NamaBulan,
                        Hasil     = db.TBKategoriTempats.Select(itemHasil => new
                        {
                            itemHasil.IDKategoriTempat,
                            Grandtotal = db.TBTransaksis.Where(item => item.TBTempat.TBKategoriTempat.IDKategoriTempat == itemHasil.IDKategoriTempat && item.TanggalPembayaran.Value.Month == itemTransaksi.Key.Bulan).Select(item => item.IDTransaksi).Count() == 0
                                ?
                                         0
                                : db.TBTransaksis.Where(item => item.TBTempat.TBKategoriTempat.IDKategoriTempat == itemHasil.IDKategoriTempat && item.TanggalPembayaran.Value.Month == itemTransaksi.Key.Bulan).Sum(item => item.GrandTotal)
                        }).OrderBy(item => item.IDKategoriTempat),
                    });

                    if (_result.Count() != 0)
                    {
                        RepeaterDataSales.DataSource = _result.OrderBy(item => item.Key.Bulan);
                        RepeaterDataSales.DataBind();

                        var DataTotal = db.TBKategoriTempats.Select(itemHasil => new
                        {
                            GrandTotalKategoriTempat = db.TBTransaksis.Where(item => item.TBTempat.TBKategoriTempat.IDKategoriTempat == itemHasil.IDKategoriTempat).Select(item => item.IDTransaksi).Count() == 0
                            ? 0
                            : db.TBTransaksis.Where(item => item.TBTempat.TBKategoriTempat.IDKategoriTempat == itemHasil.IDKategoriTempat).Sum(item2 => item2.GrandTotal)
                        }).ToArray();

                        RepeaterTotalKategoriTempat.DataSource = DataTotal;
                        RepeaterTotalKategoriTempat.DataBind();

                        #region Labelling
                        LabelTahun.Text      = Request.QueryString["year"].ToString().ToUpper();
                        LabelGrandTotal.Text = Parse.ToFormatHarga(_result.Sum(x => x.Hasil.Sum(y => y.Grandtotal)));
                        #endregion
                    }
                    #endregion
                }
            }
        }
    }