private IEnumerable <Risk> CalcRisks(RiskChartViewModel vm) { /*var risks = db.Risks.Where(p => p.ProbLevelId != null && p.ImpactLevelId != null); * if (vm.PosId == 1) * risks = risks.Where(p => p.DeptId != null); * else if (vm.PosId == 2) * { * risks = risks.Where(p => p.BranchId != null); * if (vm.BranchId != null) * risks = risks.Where(p => p.BranchId == vm.BranchId); * }*/ var risks = db.Risks.Where(p => p.ProbLevelId != null && p.ImpactLevelId != null); if (vm.PosId == 1) { risks = risks.Where(p => p.DeptId != null || p.BranchId != null); } else if (vm.PosId == 2) { risks = risks.Where(p => p.DeptId != null && p.SubDivId == vm.BranchId); } else if (vm.PosId == 3) { risks = risks.Where(p => p.BranchId != null); if (vm.BranchId != null) { risks = risks.Where(p => p.BranchId == vm.BranchId); } } else if (vm.PosId == 4) { risks = risks.Where(p => p.BranchId != null); if (vm.BranchId != null) { risks = risks.Where(p => p.Branch.KorwilId == vm.BranchId); } } else if (vm.PosId == 5) { risks = risks.Where(p => p.BranchId != null); if (vm.BranchId != null) { risks = risks.Where(p => p.Branch.ClassId == vm.BranchId); } } if (vm.IsApproved) { risks = risks.Where(p => p.CloseDate == null || p.CloseDate >= vm.ReportDate && p.CloseDate <= vm.ReportDate2); risks = risks.Where(p => p.ApprovalDate != null && p.ApprovalDate <= vm.ReportDate2 && p.ApprovalDate >= vm.ReportDate); } else { risks = risks.Where(p => p.ApprovalDate == null && p.RiskDate <= vm.ReportDate2 && p.RiskDate >= vm.ReportDate); } return(risks); }
public ActionResult Index(RiskChartViewModel vm) { UpdateParam(vm); var risks = CalcRisks(vm); var listData = CalcChartData(risks, vm); Session["ListData"] = listData; Session["RiskChartViewModel"] = vm; ViewBag.DataTypeText = GetDataTypeText(vm.YValueId); return(View(vm)); }
public ActionResult Index() { RiskChartViewModel vm = new RiskChartViewModel(); vm.PosId = 1; vm.IsApproved = true; vm.ReportDate = DateTime.Now; vm.ReportDate2 = DateTime.Now; vm.ChartTypeId = 1; vm.XValueId = 1; vm.YValueId = 1; UpdateParam(vm); var risks = CalcRisks(vm); var listData = CalcChartData(risks, vm); Session["ListData"] = listData; Session["RiskChartViewModel"] = vm; ViewBag.DataTypeText = GetDataTypeText(vm.YValueId); return(View(vm)); }
public ActionResult ChartGenerator() { List <ChartData> listData = Session["ListData"] as List <ChartData>; RiskChartViewModel vm = Session["RiskChartViewModel"] as RiskChartViewModel; List <string> xValues = new List <string>(); List <decimal> yValues = new List <decimal>(); List <decimal> yValues2 = new List <decimal>(); foreach (var data in listData) { xValues.Add(data.Name); yValues.Add(data.Value); yValues2.Add(data.Value2); } string seriesName = string.Empty; string seriesName2 = string.Empty; if (vm.YValueId == DATA_COUNT) { seriesName = "Banyak Data"; } else if (vm.YValueId == DATA_PROBLEVEL) { seriesName = "Tingkat Probabilitas"; } else if (vm.YValueId == DATA_IMPACTLEVEL) { seriesName = "Tingkat Dampak"; } else if (vm.YValueId == DATA_PROBIMPACTLEVEL) { seriesName = "Tingkat Probabilitas"; seriesName2 = "Tingkat Dampak"; } else { seriesName = "Tingkat Risiko"; } string chartType = "column"; int chartTypeId = vm.ChartTypeId; if (chartTypeId == 2) { chartType = "bar"; } else if (chartTypeId == 3) { chartType = "pie"; } string xAxisTitle = GetXAxisTitle(vm.XValueId); string yAxisTitle = GetYAxisTitle(vm.YValueId); var cht = new Chart(width: 600, height: 400, theme: ChartTheme.Blue) .SetXAxis(xAxisTitle) .SetYAxis(yAxisTitle) .AddSeries(name: seriesName, chartType: chartType, xValue: xValues, yValues: yValues, markerStep: 1, axisLabel: "aaaa"); if (!string.IsNullOrEmpty(seriesName2)) { cht = cht .AddSeries(name: seriesName2, chartType: chartType, xValue: xValues, yValues: yValues2, axisLabel: "aaaa") .AddLegend(); } var bytes = cht.GetBytes("jpg"); return(File(bytes, "image/jdpg")); }
private List <ChartData> CalcChartData(IEnumerable <Risk> risks, RiskChartViewModel vm) { List <ChartData> listData = new List <ChartData>(); InitializeListData(listData, vm.XValueId); switch (vm.XValueId) { case GROUP_NONE: CalcChartData_NoGroup(listData, risks, vm.YValueId); break; case GROUP_CAUSE: CalcChartData_Cause(listData, risks, vm.YValueId); break; case GROUP_EFFECT: CalcChartData_Effect(listData, risks, vm.YValueId); break; case GROUP_RISKCLASS: CalcChartData_RiskClass(listData, risks, vm.YValueId); break; case GROUP_HQ_BRANCH: CalcChartData_HQBranch(listData, risks, vm.YValueId); break; case GROUP_CLASSBRANCH: CalcChartData_ClassBranch(listData, risks, vm.YValueId); break; case GROUP_BRANCH_CLASS1: CalcChartData_Branch1(listData, risks, vm.YValueId); break; case GROUP_BRANCH_CLASS2: CalcChartData_Branch2(listData, risks, vm.YValueId); break; case GROUP_BRANCH_CLASS3: CalcChartData_Branch3(listData, risks, vm.YValueId); break; case GROUP_PROBLEVEL: CalcChartData_ProbLevel(listData, risks, vm.YValueId); break; case GROUP_IMPACTLEVEL: CalcChartData_ImpactLevel(listData, risks, vm.YValueId); break; case GROUP_RISKLEVEL: CalcChartData_RiskLevel(listData, risks, vm.YValueId); break; } foreach (var data in listData) { if (data.Count > 0) { switch (vm.YValueId) { case DATA_COUNT: //data.Value++; break; case DATA_PROBLEVEL: data.Value = data.Value / data.Count; break; case DATA_IMPACTLEVEL: data.Value = data.Value / data.Count; //data.Value += (int)r.ImpactLevelId; break; case DATA_PROBIMPACTLEVEL: data.Value = data.Value / data.Count; data.Value2 = data.Value2 / data.Count; break; case DATA_RISKLEVEL: data.Value = data.Value / data.Count; break; } } } return(listData); }
private void UpdateParam(RiskChartViewModel vm) { Dictionary <int, string> posList = new Dictionary <int, string>(); posList.Add(1, "Nasional"); posList.Add(2, "Kantor Pusat"); posList.Add(3, "Kantor Cabang"); posList.Add(4, "Korwil"); posList.Add(5, "Kelas KC"); vm.PosList = new SelectList(posList, "Key", "Value", vm.PosId); /*Dictionary<int, string> branchList = new Dictionary<int, string>(); * foreach (var branch in db.Branches.OrderBy(m => m.ClassId).ThenBy(m => m.BranchName)) * branchList.Add(branch.BranchId, branch.BranchName + " (Kelas " + branch.BranchClass.ClassName + ")"); * vm.Branches = new SelectList(branchList, "Key", "Value", vm.BranchId); */ if (vm.PosId == 2) { Dictionary <int, string> divList = new Dictionary <int, string>(); foreach (var div in db.SubDivs.OrderBy(m => m.SubDivId).ThenBy(m => m.SubDivId)) { divList.Add(div.SubDivId, div.SubDivName); } vm.Unit = new SelectList(divList, "Key", "Value", vm.SubDivId); } else if (vm.PosId == 3) { Dictionary <int, string> branchList2 = new Dictionary <int, string>(); foreach (var branch in db.Branches.OrderBy(m => m.ClassId).ThenBy(m => m.BranchName)) { branchList2.Add(branch.BranchId, branch.BranchName + " (Kelas " + branch.BranchClass.ClassName + ")"); } vm.Unit = new SelectList(branchList2, "Key", "Value", vm.BranchId); } else if (vm.PosId == 4) { Dictionary <int, string> korwilList = new Dictionary <int, string>(); foreach (var korwil in db.Korwils.OrderBy(m => m.KorwilId).ThenBy(m => m.Korwil1)) { korwilList.Add(korwil.KorwilId, korwil.Korwil1); } vm.Unit = new SelectList(korwilList, "Key", "Value", vm.BranchId); } else if (vm.PosId == 5) { Dictionary <int, string> kelasList = new Dictionary <int, string>(); foreach (var kelas in db.BranchClasses.OrderBy(m => m.ClassId).ThenBy(m => m.ClassName)) { kelasList.Add(kelas.ClassId, kelas.ClassName); } vm.Unit = new SelectList(kelasList, "Key", "Value", vm.BranchId); } else { vm.Unit = new SelectList(Enumerable.Empty <SelectListItem>()); } Dictionary <int, string> chartTypes = new Dictionary <int, string>(); chartTypes.Add(1, "Kolom"); chartTypes.Add(2, "Bar"); chartTypes.Add(3, "Pie"); vm.ChartTypes = new SelectList(chartTypes, "Key", "Value", vm.ChartTypeId); Dictionary <int, string> xValues = new Dictionary <int, string>(); xValues.Add(1, "(Tanpa pengelompokan)"); xValues.Add(2, "Sebab Risiko"); xValues.Add(3, "Akibat Risiko"); xValues.Add(4, "Klasifikasi Risiko"); xValues.Add(5, "Pusat/Cabang"); xValues.Add(6, "Kelas Cabang"); xValues.Add(7, "Cabang Kelas I"); xValues.Add(8, "Cabang Kelas II"); xValues.Add(9, "Cabang Kelas III"); xValues.Add(10, "Tingkat Probabilitas"); xValues.Add(11, "Tingkat Dampak"); xValues.Add(12, "Tingkat Risiko"); vm.XValues = new SelectList(xValues, "Key", "Value", vm.XValueId); Dictionary <int, string> yValues = new Dictionary <int, string>(); yValues.Add(1, "Jumlah Data"); yValues.Add(2, "Tingkat Probabilitas"); yValues.Add(3, "Tingkat Dampak"); yValues.Add(4, "Tingkat Probabilitas dan Tingkat Dampak"); yValues.Add(5, "Tingkat Risiko"); vm.YValues = new SelectList(yValues, "Key", "Value", vm.YValueId); }