private bool sentSingleEmailRCM(string userToSentEmail, RiskControlMatrix risk, int walktroughId)
        {
            string   baseUrl = Request.Url.GetLeftPart(UriPartial.Authority);
            Employee emp     = db.Employees.Where(p => p.Name.Equals(userToSentEmail)).FirstOrDefault();

            if (emp != null)
            {
                string emailContent = "Dear {0}, <BR/><BR/>RCM : {1} need your approval. Please click on this <a href=\"{2}\" title=\"RCM\">link</a> to show the RCM.<BR/><BR/><BR/> Regards,<BR/><BR/> ePatria Team";
                string url          = baseUrl + "/Walktroughs/Create/" + walktroughId;
                emailTransact.SentEmailApproval(emp.Email, emp.Name, risk.Objectives, emailContent, url);
            }
            return(true);
        }
        public ActionResult DetailRCM(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            RiskControlMatrix rcm = db.RiskControlMatrixs.Find(id);
            var rdr = db.RCMDetailRisks.Where(p => p.RiskControlMatrixID == id).Select(p => new { riskId = p.RCMDetailRiskID, riskName = p.RiskName }).ToList();

            ViewBag.RCMStatus = rcm.Status;
            ViewBag.prelimID  = rcm.Walktrough.PreliminaryID;
            ViewBag.RDR       = new SelectList(rdr, "riskId", "riskName");;
            return(View(rcm));
        }
        public async Task <ActionResult> CreateRCM(IEnumerable <HttpPostedFileBase> files, [Bind(Include = "RiskControlMatrixID,BusinessProcesID,SubBusinessProcess,Objectives,WalktroughID")] RiskControlMatrix rcm, string bpms, string submit)
        {
            if (ModelState.IsValid)
            {
                var bpm = db.BPMs.Where(p => p.Name.Equals(bpms)).FirstOrDefault();
                if (bpm != null && bpm.Status == "Approve")
                {
                    int bpmid = bpm.BPMID;
                    rcm.BusinessProcesID = bpmid;
                    string user = submit.Contains("By") ? submit.Split('y')[1] : String.Empty;
                    if (submit == "Save")
                    {
                        rcm.Status = "Draft";
                    }
                    else if (submit == "Send Back")
                    {
                        rcm.Status = "Draft";
                    }
                    else if (submit == "Approve")
                    {
                        rcm.Status = "Approve";
                    }
                    else if (submit == "Submit For Review By" + user)
                    {
                        rcm.Status = "Pending for Review by" + user;
                    }
                    else if (submit == "Submit For Approve By" + user)
                    {
                        bpm.Status = "Pending for Approve by" + user;
                    }
                    db.RiskControlMatrixs.Add(rcm);
                    await db.SaveChangesAsync();

                    await db.SaveChangesAsync();

                    ReviewRelationMaster rrm = new ReviewRelationMaster();
                    string page = "rcm";
                    rrm.Description = page + rcm.RiskControlMatrixID;
                    db.ReviewRelationMasters.Add(rrm);
                    db.SaveChanges();
                    string username = User.Identity.Name;
                    int    wallid   = Convert.ToInt32(rcm.WalktroughID);

                    RiskControlMatrix rc = new RiskControlMatrix();
                    auditTransact.CreateAuditTrail("Create", wallid, "RiskControlMatrix", rc, rcm, username);
                    //return RedirectToAction("Create");
                }
            }
            return(RedirectToAction("Create", new { id = rcm.WalktroughID }));
        }
        private bool sentEmailRCM(RiskControlMatrix risk, string user, int walktroughId)
        {
            string          baseUrl            = Request.Url.GetLeftPart(UriPartial.Authority);
            List <string>   CIAUserIdsPengawas = Request.GetOwinContext().GetUserManager <ApplicationRoleManager>().Roles.Where(p => p.Name.Equals(user.Trim())).FirstOrDefault().Users.Select(p => p.UserId).ToList();
            List <Employee> CIAEmpListPengawas = new List <Employee>();

            if (CIAUserIdsPengawas.Count() > 0)
            {
                var CIAUsers = Request.GetOwinContext().GetUserManager <ApplicationUserManager>().Users.Where(p => (CIAUserIdsPengawas.Contains(p.Id))).ToList();
                foreach (var CIAUser in CIAUsers)
                {
                    Employee emp = db.Employees.Where(p => p.Email.Equals(CIAUser.Email)).FirstOrDefault();
                    if (emp != null)
                    {
                        string emailContent = "Dear {0}, <BR/><BR/>RCM : {1} need your approval. Please click on this <a href=\"{2}\" title=\"RCM\">link</a> to show the RCM.<BR/><BR/><BR/> Regards,<BR/><BR/> ePatria Team";
                        string url          = baseUrl + "/Walktroughs/Create/" + walktroughId;
                        emailTransact.SentEmailApproval(emp.Email, emp.Name, risk.Objectives, emailContent, url);
                    }
                }
            }
            return(true);
        }
        public ActionResult UpdateRCMStatus(int rcmId, string status, int walktroughId, int prelimID)
        {
            //var RCM = db.RiskControlMatrixs.Find(rcmId);
            string username = User.Identity.Name;

            db.Configuration.ProxyCreationEnabled = false;
            RiskControlMatrix oldData = db.RiskControlMatrixs.AsNoTracking().Where(p => p.RiskControlMatrixID.Equals(rcmId)).FirstOrDefault();
            RiskControlMatrix risk    = db.RiskControlMatrixs.Find(rcmId);
            Preliminary       prelim  = db.Preliminaries.Find(prelimID);

            if (status == "Draft")
            {
                risk.Status = HelperController.GetStatusSendback(db, "RCM", risk.Status);
            }
            else
            {
                risk.Status = status;
            }


            auditTransact.CreateAuditTrail("Update", risk.WalktroughID, "RiskControlMatrix", oldData, risk, username);
            db.Entry(risk).State = EntityState.Modified;
            db.SaveChanges();
            if (status.Contains("Pending for Approve"))
            {
                string user            = status.Split('y')[1];
                string userToSentEmail = String.Empty;
                if (user.Trim() == "CIA")
                {
                    userToSentEmail = prelim.PICID;
                    if (userToSentEmail != null)
                    {
                        sentSingleEmailRCM(userToSentEmail, risk, walktroughId);
                    }
                    else
                    {
                        sentEmailRCM(risk, user.Trim(), walktroughId);
                    }
                }
                else if (user.Trim() == "Pengawas")
                {
                    userToSentEmail = prelim.SupervisorID;
                    if (userToSentEmail != null)
                    {
                        sentSingleEmailRCM(userToSentEmail, risk, walktroughId);
                    }
                    else
                    {
                        sentEmailRCM(risk, user.Trim(), walktroughId);
                    }
                }
                else if (user.Trim() == "Ketua Tim")
                {
                    userToSentEmail = prelim.TeamLeaderID;
                    if (userToSentEmail != null)
                    {
                        sentSingleEmailRCM(userToSentEmail, risk, walktroughId);
                    }
                    else
                    {
                        sentEmailRCM(risk, user.Trim(), walktroughId);
                    }
                }
                else if (user.Trim() == "Member")
                {
                    userToSentEmail = prelim.MemberID;
                    if (userToSentEmail != null)
                    {
                        sentSingleEmailRCM(userToSentEmail, risk, walktroughId);
                    }
                    else
                    {
                        sentEmailRCM(risk, user.Trim(), walktroughId);
                    }
                }
            }

            var        listStatus           = db.RiskControlMatrixs.Where(p => p.WalktroughID.Equals(walktroughId)).Select(p => new { RCMStatus = p.Status }).ToList();
            SelectList listStatusSelectList = new SelectList(listStatus, "RCMStatus", "RCMStatus", 0);

            return(Json(listStatusSelectList));
        }