public ActionResult ProgressNew(MitigationActionModel ma)
        {
            ActionProgress    ap = new ActionProgress();
            MitigationsAction mc = new MitigationsAction();

            if (db.ActionProgresses.Count() == 0)
            {
                ap.ActionProgressID = 1;
            }
            else
            {
                var id = db.ActionProgresses.OrderByDescending(p => p.ActionProgressID).First();
                ap.ActionProgressID = id.ActionProgressID + 1;
            }

            ap.ActionID        = ma.actionId;
            ap.RecordDate      = DateTime.Now;
            ap.ActionProgress1 = ma.ActionProgress;
            db.ActionProgresses.Add(ap);
            db.SaveChanges();

            mc = db.MitigationsActions.Single(p => p.ActionID == ma.actionId);
            mc.TotalProgress = ma.ActionProgress;
            db.SaveChanges();

            return(RedirectToAction("ProgressIndex", new { id = ma.actionId }));
        }
        public ActionResult MitigationActionEdit(int id)
        {
            MitigationsAction     ma = new MitigationsAction();
            MitigationActionModel mm = new MitigationActionModel();

            ma = db.MitigationsActions.Single(p => p.ActionID == id);
            mm.mitigationactioncode = ma.ActionCode;
            var mid = db.RiskMitigations.Single(p => p.MitigationId == ma.MitigationId);

            mm.mitigationcode = mid.MitigationCode;
            mm.pic            = ma.PIC2;
            mm.require        = ma.Require;
            mm.limitDate      = ma.LimitDate;
            mm.isRKAP1        = (bool)ma.RKAPF;
            mm.actionId       = ma.ActionID;
            mm.actionName     = ma.ActionName;
            mm.mitigationid   = ma.MitigationId;
            mm.biaya          = ma.Biaya;
            if (ma.TotalProgress == null)
            {
                mm.totalProgress = 0;
            }
            else
            {
                mm.totalProgress = (decimal)ma.TotalProgress;
            }

            return(View(mm));
        }
        public ActionResult MitigationAction(MitigationActionModel ma)
        {
            var userData = Utils.LoadUserDataFromSession();
            int riskId   = 0;

            if (ma.riskCode != null)
            {
                riskId = db.Risks.Where(x => x.RiskCode == ma.riskCode).FirstOrDefault().RiskId;
            }
            ma.tglAkhir        = ma.tglAkhir.AddHours(23).AddMinutes(59);
            ma.tglAwal         = ma.tglAwal.AddHours(0).AddMinutes(0);
            ma.RiskMitigations = db.RiskMitigations.Where(m => (m.ApprovalDate != null) &&
                                                          (m.InputDate == null || (m.InputDate >= ma.tglAwal && m.InputDate <= ma.tglAkhir)) &&
                                                          (ma.mitigationcode == null || m.MitigationCode == ma.mitigationcode) && (ma.riskCode == null || m.RiskId == riskId)
                                                          ).OrderByDescending(m => m.ApprovalDate);


            if (userData.BranchId == null)
            {
                ma.RiskMitigations = ma.RiskMitigations.Where(m => m.SubDivId == userData.SubDivId);
            }
            else
            {
                ma.RiskMitigations = ma.RiskMitigations.Where(m => m.BranchId == userData.BranchId);
            }

            return(View(ma));
        }
        public ActionResult ProgressNew(int id)
        {
            MitigationActionModel ma = new MitigationActionModel();

            ma.actionId = id;
            ma.action   = db.MitigationsActions.Single(m => m.ActionID == id);
            return(View(ma));
        }
        public ActionResult ProgressIndex(int id)
        {
            MitigationActionModel ma = new MitigationActionModel();

            ma.progressList = db.ActionProgresses.Where(m => m.ActionID == id).ToList();
            ma.actionId     = id;
            return(View(ma));
        }
        public ActionResult MitigationActionList(int id)
        {
            MitigationActionModel ma = new MitigationActionModel();

            ma.actionList   = db.MitigationsActions.Where(m => m.MitigationId == id).ToList();
            ma.mitigationid = id;
            return(View(ma));
        }
        public ActionResult MitigationActionApproval()
        {
            MitigationActionModel ma = new MitigationActionModel
            {
                actionList = new List <MitigationsAction>()
            };

            return(View(ma));
        }
        public ActionResult MitigationActionApproval(MitigationActionModel ma)
        {
            MitigationActionModel model = new MitigationActionModel();

            model.actionList = db.MitigationsActions.Where(x => (x.ActionDate >= ma.tglAwal || ma.tglAwal == null) &&
                                                           (x.ActionDate <= ma.tglAkhir || ma.tglAkhir == null) && (x.RiskMitigation.MitigationCode == ma.mitigationcode || ma.mitigationcode == null) &&
                                                           (x.RiskMitigation.Risk.RiskCode == ma.riskCode || ma.riskCode == null)
                                                           ).ToList();

            //MitigationActionModel ma = new MitigationActionModel();
            return(View(model));
        }
        public ActionResult MitigationActionNew(int id)
        {
            MitigationActionModel ma = new MitigationActionModel();
            var no = db.MitigationsActions.Count(m => m.MitigationId == id);

            ma.mitigationid         = id;
            ma.riskMitigation       = db.RiskMitigations.Single(m => m.MitigationId == id);
            ma.mitigationcode       = ma.riskMitigation.MitigationCode;
            ma.mitigationactioncode = ma.mitigationcode + "." + (no + 1);
            ma.prob   = new SelectList(db.ProbLevels, "ProbLevelId", "ProbLevelName");
            ma.impact = new SelectList(db.ImpactLevels, "ImpactLevelId", "ImpactLevelName");

            return(View(ma));
        }
        public ActionResult MitigationActionEdit(MitigationActionModel ma)
        {
            MitigationsAction ac = new MitigationsAction();

            ac = db.MitigationsActions.Single(m => m.ActionCode == ma.mitigationactioncode);

            ac.ActionName = ma.actionName;
            ac.LimitDate  = ma.limitDate;
            ac.PIC2       = ma.pic;
            ac.Require    = ma.require;
            ac.Biaya      = ma.biaya;
            ac.RKAPF      = ma.isRKAP1;
            db.SaveChanges();

            return(RedirectToAction("MitigationActionList", new { id = ac.MitigationId }));
        }
        public ActionResult MitigationAction()
        {
            var userData             = Utils.LoadUserDataFromSession();
            MitigationActionModel ma = new MitigationActionModel();

            ma.tglAwal         = DateTime.Now;
            ma.tglAkhir        = DateTime.Now;
            ma.RiskMitigations = db.RiskMitigations.Where(m => (m.SubDivId == userData.SubDivId) && (m.ApprovalDate != null) && (m.InputDate >= ma.tglAwal && m.InputDate <= ma.tglAkhir));

            if (userData.IsRiskOwner)
            {
                return(View(ma));
            }
            else if (userData.IsAdmin)
            {
                ViewBag.Message = "Tidak bisa melakukan input progress tindakan mitigasi ";
                return(View("Error"));
            }
            else
            {
                return(View(ma));
            }
        }
        public ActionResult MitigationActionNew(MitigationActionModel ma)
        {
            var userData = Utils.LoadUserDataFromSession();
            //if (ModelState.IsValid)
            //{
            //    try
            //    {
            //        using (TransactionScope trans = new TransactionScope())
            //        {
            MitigationsAction ac = new MitigationsAction();

            ac.ActionCode   = ma.mitigationactioncode;
            ac.MitigationId = ma.mitigationid;

            var rm = new RiskMitigation();

            rm = db.RiskMitigations.SingleOrDefault(p => p.MitigationId == ma.mitigationid);

            ac.ActionDate    = DateTime.Now;
            ac.ActionName    = ma.actionName;
            ac.BizUnitId     = userData.BizUnitId;
            ac.BranchId      = userData.BranchId;
            ac.DeptId        = userData.DeptId;
            ac.DivisionId    = userData.DivisionId;
            ac.LimitDate     = ma.limitDate;
            ac.PIC2          = ma.pic;
            ac.Require       = ma.require;
            ac.RKAPF         = ma.isRKAP1;
            ac.SubBranchId   = userData.SubBranchId;
            ac.SubDeptId     = userData.SubDeptId;
            ac.SubDivId      = userData.SubDivId;
            ac.UserId        = userData.UserId;
            ac.ImpactLevelId = rm.ImpactLevelId;
            ac.ImpactLevel   = rm.ImpactLevel;
            ac.ProbLevel     = rm.ProbLevel;
            ac.ProbLevelId   = rm.ProbLevelId;
            db.MitigationsActions.Add(ac);
            db.SaveChanges();

            ActionApproval    ap = new ActionApproval();
            MitigationsAction id = new MitigationsAction();

            id             = db.MitigationsActions.Single(p => p.ActionCode == ma.mitigationactioncode);
            ap.ActionID    = id.ActionID;
            ap.BizUnitId   = userData.BizUnitId;
            ap.BranchId    = userData.BranchId;
            ap.DeptId      = userData.DeptId;
            ap.DivisionId  = userData.DivisionId;
            ap.SubBranchId = userData.SubBranchId;
            ap.SubDeptId   = userData.SubDeptId;
            ap.SubDivId    = userData.SubDivId;
            db.ActionApprovals.Add(ap);
            db.SaveChanges();
            //            trans.Complete();
            return(RedirectToAction("MitigationActionEdit", new { id = id.ActionID }));
            //        }
            //    }
            //    catch
            //    {
            //        return View();
            //    }
            //}
            //return RedirectToAction("MitigationActionEdit");
        }