private void GetData() { try { List <AccountCode> lstAccountCode = new AccountCodeDAL().GetAccountCodes().Where(x => x.Status == "A").ToList(); List <AccountCode> AccountCodesData = new List <AccountCode>(); if (AuthUser.JuncUserRoles.FirstOrDefault().RoleID == 3 || AuthUser.JuncUserRoles.FirstOrDefault().RoleID == 4) { AccountCodesData = lstAccountCode; } else { AccountCodesData = AuthUser.UserMengurusWorkflows.Where(x => x.Status == "A").Select(x => x.AccountCode1).ToList(); if (AccountCodesData.Count == 0) { lstAccountCode = new List <AccountCode>(); } else { List <string> lstprntcodes = AccountCodesData.Select(x => x.ParentAccountCode).Distinct().ToList(); while (lstprntcodes.Count > 0) { List <AccountCode> lstprnts = lstAccountCode.Where(x => lstprntcodes.Contains(x.AccountCode1)).ToList(); foreach (AccountCode o in lstprnts) { if (AccountCodesData.Where(x => x.AccountCode1 == o.AccountCode1).Count() == 0) { AccountCodesData.Add(o); } } lstprntcodes = lstprnts.Select(x => x.ParentAccountCode).Distinct().ToList(); } } } Session["AccountCodesData"] = lstAccountCode; List <int> lstperiod = GetSelectedPeriods(); List <PeriodMenguru> PeriodData = new PeriodMengurusDAL().GetPeriodMengurus().Where(x => x.Status == "A" && lstperiod.Contains(x.PeriodMengurusID)) .OrderBy(x => x.MengurusYear).ThenBy(x => x.FieldMenguru.FieldMengurusDesc).ToList(); List <PeriodMenguru> FixedData = ((List <FieldMenguru>)Session["FixedFieldMengurus"]).Where(x => lstperiod.Contains(x.FieldMengurusID)) .Select(x => new PeriodMenguru { PeriodMengurusID = lstperiod.Contains(x.FieldMengurusID) ? x.FieldMengurusID : 0, MengurusYear = DateTime.Now.Year, FieldMenguru = new FieldMenguru { FieldMengurusID = x.FieldMengurusID, FieldMengurusDesc = x.FieldMengurusDesc, Status = x.Status } }).OrderBy(x => x.MengurusYear).ThenBy(x => x.FieldMenguru.FieldMengurusDesc).ToList(); FixedData.AddRange(PeriodData); Session["PeriodData"] = FixedData; bool CanEdit = false; List <BudgetMenguru> BudgetData = new BudgetMengurusDAL().GetBudgetMengurusStatus(GetSelectedSegmentDetails(), ref CanEdit) .Where(x => x.Status == "A") .Select(x => new BudgetMenguru { BudgetMengurusID = 0, AccountCode = x.AccountCode, PeriodMengurusID = x.PeriodMengurusID, Status = x.Status, Remarks = string.Empty, Amount = (AccountCodesData.Where(y => y.ParentAccountCode == x.AccountCode).Count() == 0) ? x.Amount : 0 }) .GroupBy(x => new { x.AccountCode, x.PeriodMengurusID, x.Status }) .Select(x => new BudgetMenguru { AccountCode = x.Key.AccountCode, PeriodMengurusID = x.Key.PeriodMengurusID, Status = x.Key.Status, Amount = x.Sum(y => y.Amount) }) .ToList(); Session["BudgetData"] = BudgetData; Session["CanEdit"] = CanEdit; if (!CanEdit) { chkKeterangan.Checked = false; chkPengiraan.Checked = false; } } catch (Exception ex) { ((SiteMaster)this.Master).ShowMessage("Error", "An error occurred", ex, true); } }
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); }