Example #1
0
        private DataTable GetMengurusExcel()
        {
            DataTable dt = new DataTable();

            try
            {
                List <BudgetMengurusYearEnd> data = new BudgetMengurusDAL().BudgetMengurusYearEnd(Convert.ToInt32(ddlBudgetYear.SelectedValue));
                List <string> acccodes            = data.Select(x => x.AccountCode).Distinct().OrderBy(x => x).ToList();
                List <string> prefixs             = data.Select(x => x.Prefix).Distinct().OrderBy(x => x).ToList();
                List <string> periods             = data.Select(x => x.PeriodMengurus).Distinct().OrderBy(x => x).ToList();

                //Start Build DataTable
                DataColumn dc = new DataColumn();
                foreach (Segment seg in new SegmentDAL().GetSegments().OrderBy(x => x.SegmentOrder))
                {
                    dc = new DataColumn(seg.SegmentName);
                    dt.Columns.Add(dc);
                }
                dc = new DataColumn("AccountCode");
                dt.Columns.Add(dc);
                dc = new DataColumn("Objeck");
                dt.Columns.Add(dc);
                dc = new DataColumn("Description");
                dt.Columns.Add(dc);
                foreach (string pe in periods)
                {
                    dc = new DataColumn(pe);
                    dt.Columns.Add(dc);
                }
                //End Build DataTable

                //Start pushing data into DataTable
                foreach (string pr in prefixs)
                {
                    foreach (string ac in acccodes)
                    {
                        List <BudgetMengurusYearEnd> subset = data.Where(x => x.AccountCode == ac && x.Prefix == pr).ToList();
                        if (subset.Count > 0)
                        {
                            int     c  = 0;
                            DataRow dr = dt.NewRow();
                            foreach (string sgd in subset[0].ListSegmentDetails)
                            {
                                dr[c] = sgd;
                                c++;
                            }
                            dr[c] = ac;
                            c++;
                            dr[c] = pr + "-" + ac;
                            c++;
                            dr[c] = subset[0].Description;
                            c++;
                            foreach (string pe in periods)
                            {
                                BudgetMengurusYearEnd d = subset.Where(x => x.PeriodMengurus == pe).FirstOrDefault();

                                if (d != null)
                                {
                                    dr[c] = d.Amount.ToString("F");
                                }
                                else
                                {
                                    dr[c] = string.Empty;
                                }

                                c++;
                            }
                            dt.Rows.Add(dr);
                        }
                    }
                }
                //End pushing data into DataTable
            }
            catch (Exception ex)
            {
                ((SiteMaster)this.Master).ShowMessage("Error", "An error occurred", ex, true);
            }

            return(dt);
        }