public static void UpdateRecordHoldHours(RiskRecord riskRecord, DateTime?changedAt = null) { changedAt = changedAt == null ? DateTime.UtcNow : changedAt; var holdTime = changedAt - (riskRecord.LastTotalHoldHoursUpdate ?? riskRecord.LastStatusChange); riskRecord.LastTotalHoldHoursUpdate = DateTime.UtcNow; // 30 mins = 1 hr hold time, 1 hr 30 mins = 2 hr hold time if (holdTime.Value.TotalHours % 1 >= 0.5) { riskRecord.TotalHoldHours += Math.Ceiling(holdTime.Value.TotalHours); } // 29 mins = 0 hrs hold time, 1 hr 29 mins = 1 hr hold time else { riskRecord.TotalHoldHours += Math.Floor(holdTime.Value.TotalHours); } }
private void CalcRiskRegister(RiskRegisterViewModel vm) { var risks = db.Risks.Where(p => p.ProbLevelId != null && p.ImpactLevelId != null); if (vm.Param.PosId == 1) { risks = risks.Where(p => p.DeptId != null || p.BranchId != null); } else if (vm.Param.PosId == 2) { risks = risks.Where(p => p.SubDivId != null && p.DeptId != null); if (vm.Param.BranchId != null) { risks = risks.Where(p => p.DeptId != null && p.SubDivId == vm.Param.BranchId); } } else if (vm.Param.PosId == 3) { risks = risks.Where(p => p.BranchId != null); if (vm.Param.BranchId != null) { risks = risks.Where(p => p.BranchId == vm.Param.BranchId); } } else if (vm.Param.PosId == 4) { risks = risks.Where(p => p.BranchId != null); if (vm.Param.BranchId != null) { risks = risks.Where(p => p.Branch.KorwilId == vm.Param.BranchId); } } else if (vm.Param.PosId == 5) { risks = risks.Where(p => p.BranchId != null); if (vm.Param.BranchId != null) { risks = risks.Where(p => p.Branch.ClassId == vm.Param.BranchId); } } if (vm.Param.IsApproved) { risks = risks.Where(p => p.CloseDate == null || (p.CloseDate >= vm.Param.ReportDate && p.CloseDate <= vm.Param.ReportDate2)); risks = risks.Where(p => p.ApprovalDate != null && (p.ApprovalDate >= vm.Param.ReportDate && p.ApprovalDate <= vm.Param.ReportDate2)); } else { risks = risks.Where(p => p.ApprovalDate == null && (p.RiskDate >= vm.Param.ReportDate && p.RiskDate <= vm.Param.ReportDate2)); } risks = risks.OrderBy(p => p.RiskDate); /*switch(vm.Param.RiskLevelId) * { * case 1: // x <= 5 * risks = risks.Where(p => p.RiskLevel <= 5); * break; * case 2: // 5 < x <= 8 * risks = risks.Where(p => p.RiskLevel > 5 && p.RiskLevel <= 8); * break; * case 3: // 8 < x <= 12 * risks = risks.Where(p => p.RiskLevel > 8 && p.RiskLevel <= 12); * break; * case 4: // 12 < x <= 25 * risks = risks.Where(p => p.RiskLevel > 12 && p.RiskLevel <= 25); * break; * }*/ risks = risks.Where(p => p.RiskLevel >= vm.Param.RiskLevelId && p.RiskLevel <= vm.Param.RiskLevelId2); if (vm.Param.KlasId == 2) { if (vm.Param.BisnisId != null) { risks = risks.Where(p => p.RiskCatId == 13 && p.RiskGroupId == vm.Param.BisnisId).OrderBy(p => p.RiskEventId); } else { risks = risks.Where(p => p.RiskCatId == 13); } } else { risks = risks.Where(p => p.RiskCatId != 13); } vm.RiskList = new List <RiskRecord>(); foreach (var r in risks) { //if (vm.Param.IsApproved) //{ // var rm = db.RiskMitigations.Where(p => p.RiskId == r.RiskId && p.ApprovalDate != null && p.ApprovalDate <= vm.Param.ReportDate); // if (rm.Count() > 0) // { // var m = rm.OrderByDescending(p => p.ApprovalDate).First(); // AddRiskToList(r, (int)m.ProbLevelId, (int)m.ImpactLevelId, vm.RiskList); // } // else // vm.RiskList.Add(r); //} //else // vm.RiskList.Add(r); RiskRecord rc = new RiskRecord(); rc.Risk = r; rc.ApprovedMitigations = db.RiskMitigations.Where(p => p.RiskId == r.RiskId && p.ApprovalDate != null).ToList(); rc.PlannedMitigations = db.RiskMitigations.Where(p => p.RiskId == r.RiskId && p.ApprovalDate == null).ToList(); foreach (var a in rc.ApprovedMitigations) { rc.MitigationActionApprove = db.MitigationsActions.Where(p => p.MitigationId == a.MitigationId).ToList(); rc.MitigationUnit = db.MitigationUnits.Where(p => p.MitigationId == a.MitigationId).ToList(); } vm.RiskList.Add(rc); } //vm.RiskList = vm.RiskList.OrderByDescending(p => p.RiskLevel).ThenByDescending(p => p.ImpactLevelId).ThenByDescending(p => p.ProbLevelId).Take(10).ToList(); }