Esempio n. 1
0
        private void CalcRiskMap(RiskMapViewModel vm)
        {
            vm.RiskList = new List<Models.RiskMap.RiskMapData>();
            for (var i = 1; i <= 5; i++)
                for (var j = 1; j <= 5; j++)
                    vm.RiskList.Add(new RiskMapData { ProbLevelId = i, ImpactLevelId = j, Count = 0, RiskLevel = i * j });

            var risks = db.Risks.Where(p => p.ProbLevelId != null && p.ImpactLevelId != null);

            if (vm.Param.PosId == 1)
                risks = risks.Where(p => p.DeptId != null);
            else if (vm.Param.PosId == 2)
            {
                risks = risks.Where(p => p.BranchId != null);
                if (vm.Param.BranchId != null)
                    risks = risks.Where(p => p.BranchId == vm.Param.BranchId);
            }

            if (vm.Param.IsApproved)
            {
                risks = risks.Where(p => p.CloseDate == null || p.CloseDate > vm.Param.MapDate);
                risks = risks.Where(p => p.ApprovalDate != null && p.ApprovalDate <= vm.Param.MapDate);
            }
            else
            {
                risks = risks.Where(p => p.ApprovalDate == null && p.RiskDate <= vm.Param.MapDate);
            }

            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.MapDate)
                        .OrderByDescending(p => p.ApprovalDate)
                        .First();
                    if (rm != null)
                        AddProbImpactToList((int)rm.ProbLevelId, (int)rm.ImpactLevelId, vm.RiskList);
                    else
                        AddProbImpactToList((int)r.ProbLevelId, (int)r.ImpactLevelId, vm.RiskList);
                }
                else
                    AddProbImpactToList((int)r.ProbLevelId, (int)r.ImpactLevelId, vm.RiskList);
            }
            vm.CalcMinMaxCount();
        }