public ActionResult DeleteConfirmed(int id)
        {
            context.Configuration.ProxyCreationEnabled = false;
            string username = User.Identity.Name;
            ConsultingLetterOfCommand               consultingletterofcommand = context.ConsultingLetterOfCommands.Single(x => x.ConsultingSuratPerintahID == id);
            ConsultingLetterOfCommand               conletcom = new ConsultingLetterOfCommand();
            ConsultingLetterOfCommandDetailDasar    conletdas = new ConsultingLetterOfCommandDetailDasar();
            ConsultingLetterOfCommandDetailUntuk    conletunt = new ConsultingLetterOfCommandDetailUntuk();
            ConsultingLetterOfCommandDetailTembusan conlettem = new ConsultingLetterOfCommandDetailTembusan();

            context.ConsultingLetterOfCommands.Remove(consultingletterofcommand);
            var iduntuk    = context.ConsultingLetterOfCommandDetailUntuks.Where(p => p.ConsultingSuratPerintahID.Equals(id)).Select(p => p.ConsultingLetterOfCommandDetailUntukID).FirstOrDefault();
            var idtembusan = context.ConsultingLetterOfCommandDetailTembusans.Where(p => p.ConsultingSuratPerintahID.Equals(id)).Select(p => p.ConsultingLetterOfCommandDetailTembusanID).FirstOrDefault();
            var iddasar    = context.ConsultingLetterOfCommandDetailDasars.Where(p => p.ConsultingSuratPerintahID.Equals(id)).Select(p => p.ConsultingLetterOfCommandDetailDasarID).FirstOrDefault();
            var Ldasar     = context.ConsultingLetterOfCommandDetailDasars.Find(iddasar);
            var Ltembusan  = context.ConsultingLetterOfCommandDetailTembusans.Find(idtembusan);
            var Luntuk     = context.ConsultingLetterOfCommandDetailUntuks.Find(iduntuk);

            context.ConsultingLetterOfCommandDetailDasars.Remove(Ldasar);
            context.ConsultingLetterOfCommandDetailTembusans.Remove(Ltembusan);
            context.ConsultingLetterOfCommandDetailUntuks.Remove(Luntuk);
            context.SaveChanges();
            auditTransact.CreateAuditTrail("Delete", id, "Consulting Letter Of Command", consultingletterofcommand, conletcom, username);
            auditTransact.CreateAuditTrail("Delete", id, "Consulting Letter Of Command Dasar", Ldasar, conletdas, username);
            auditTransact.CreateAuditTrail("Delete", id, "Consulting Letter Of Command Untuk", Luntuk, conletunt, username);
            auditTransact.CreateAuditTrail("Delete", id, "Consulting Letter Of Command Tembusan", Ltembusan, conlettem, username);
            TempData["message"] = "Consulting Letter Of Command successfully deleted!";
            return(RedirectToAction("Index"));
        }
        public ActionResult Create([Bind(Include = "ConsultingSuratPerintahID,NomorSP,ConsultingRequestID,EngagementName,EngagementID,StartDate,EndDate,PicID,SupervisorID,TeamLeaderID,Menimbang,Penutup,MemberID,Remarks")] ConsultingLetterOfCommand consultingletterofcommand,
                                   EngagementActivity engagementActivity, string ActivityName, string submit,
                                   string[] member, string ConsultingRequest, ConsultingLetterOfCommandDetailDasar Ldasar,
                                   ConsultingLetterOfCommandDetailTembusan Ltembusan, ConsultingLetterOfCommandDetailUntuk Luntuk,
                                   string[] dasar, string[] tembusan, string[] untuk)
        {
            if (ModelState.IsValid)
            {
                string username = User.Identity.Name;
                IQueryable <ConsultingRequest> cr = context.ConsultingRequests.Where(p => p.NoRequest.Equals(ConsultingRequest));
                int ConsulId = 0;
                if (cr.Count() > 0 || cr != null)
                {
                    ConsulId = cr.Select(p => p.ConsultingRequestID).FirstOrDefault();
                }
                consultingletterofcommand.ConsultingRequestID = ConsulId;
                foreach (var mb in member)
                {
                    consultingletterofcommand.MemberID += mb + ";";
                }
                string user = submit.Contains("By") ? submit.Split('y')[1] : String.Empty;
                if (submit == "Save")
                {
                    consultingletterofcommand.Status = "Draft";
                }
                else if (submit == "Send Back")
                {
                    consultingletterofcommand.Status = HelperController.GetStatusSendback(context, "Consulting Surat Perintah", consultingletterofcommand.Status);
                }
                else if (submit == "Approve")
                {
                    consultingletterofcommand.Status = "Approve";
                }
                else if (submit == "Submit For Review By" + user)
                {
                    consultingletterofcommand.Status = "Pending for Review by" + user;
                }
                else if (submit == "Submit For Approve By" + user)
                {
                    consultingletterofcommand.Status = "Pending for Approve by" + user;
                }

                context.ConsultingLetterOfCommands.Add(consultingletterofcommand);

                //Engagement Activity

                //IQueryable<Activity> act = context.Activities.Where(p => p.Name.Equals(ActivityName));
                //int ActivityID = 0;
                //if (act.Count() > 0 || act != null)
                //    ActivityID = act.Select(p => p.ActivityID).FirstOrDefault();
                engagementActivity.ActivityStr  = ActivityName;
                engagementActivity.Name         = consultingletterofcommand.EngagementName;
                engagementActivity.PICID        = consultingletterofcommand.PicID;
                engagementActivity.TeamLeaderID = consultingletterofcommand.TeamLeaderID;
                engagementActivity.SupervisorID = consultingletterofcommand.SupervisorID;
                engagementActivity.MemberID     = consultingletterofcommand.MemberID;
                context.EngagementActivities.Add(engagementActivity);

                //Letter of Command Dasar
                Ldasar.ConsultingSuratPerintahID = consultingletterofcommand.ConsultingSuratPerintahID;
                Ldasar.Dasar = null;
                foreach (var ds in dasar)
                {
                    Ldasar.Dasar += ds + ";";
                }
                context.ConsultingLetterOfCommandDetailDasars.Add(Ldasar);

                //Letter of Command Untuk
                Luntuk.ConsultingSuratPerintahID = consultingletterofcommand.ConsultingSuratPerintahID;
                Luntuk.Untuk = null;
                foreach (var utk in untuk)
                {
                    Luntuk.Untuk += utk + ";";
                }
                context.ConsultingLetterOfCommandDetailUntuks.Add(Luntuk);

                //Letter of Command Tembusan
                Ltembusan.ConsultingSuratPerintahID = consultingletterofcommand.ConsultingSuratPerintahID;
                Ltembusan.Tembusan = null;
                foreach (var tmb in tembusan)
                {
                    Ltembusan.Tembusan += tmb + ";";
                }
                context.ConsultingLetterOfCommandDetailTembusans.Add(Ltembusan);

                context.SaveChanges();

                //assign engagementID in consulting SP
                consultingletterofcommand.EngagementID         = engagementActivity.EngagementID;
                context.Entry(consultingletterofcommand).State = EntityState.Modified;

                //Review Relation Master
                ReviewRelationMaster rrm = new ReviewRelationMaster();
                string page = "conleterdetail";
                rrm.Description = page + consultingletterofcommand.ConsultingSuratPerintahID;
                context.ReviewRelationMasters.Add(rrm);
                context.SaveChanges();
                ConsultingLetterOfCommand               conletcom      = new ConsultingLetterOfCommand();
                ConsultingLetterOfCommandDetailDasar    conletdasar    = new ConsultingLetterOfCommandDetailDasar();
                ConsultingLetterOfCommandDetailUntuk    conletuntuk    = new ConsultingLetterOfCommandDetailUntuk();
                ConsultingLetterOfCommandDetailTembusan conlettembusan = new ConsultingLetterOfCommandDetailTembusan();
                ConsultingLetterOfCommand               conletnew      = context.ConsultingLetterOfCommands.Find(consultingletterofcommand.ConsultingSuratPerintahID);
                auditTransact.CreateAuditTrail("Create", consultingletterofcommand.ConsultingSuratPerintahID, "Consulting Letter Of Command", conletcom, conletnew, username);
                auditTransact.CreateAuditTrail("Create", Ldasar.ConsultingLetterOfCommandDetailDasarID, "Consulting Letter Of Command Dasar", conletdasar, Ldasar, username);
                auditTransact.CreateAuditTrail("Create", Luntuk.ConsultingLetterOfCommandDetailUntukID, "Consulting Letter Of Command Untuk", conletuntuk, Luntuk, username);
                auditTransact.CreateAuditTrail("Create", Ltembusan.ConsultingLetterOfCommandDetailTembusanID, "Consulting Letter Of Command Tembusan", conlettembusan, Ltembusan, username);
                TempData["message"] = "Consulting Letter Of Command successfully created!";
                return(RedirectToAction("Index"));
            }

            return(View(consultingletterofcommand));
        }
        public ActionResult Edit([Bind(Include = "ConsultingSuratPerintahID,NomorSP,ConsultingRequestID,EngagementName,Status,StartDate,EndDate,PicID,SupervisorID,TeamLeaderID,Menimbang,Penutup,MemberID,Remarks,EngagementID")]
                                 ConsultingLetterOfCommand consultingletterofcommand, string ConsultingRequest, string enggname, string submit, string ActivityName, string[] member, string[] Dasar, string[] Untuk, string[] Tembusan)
        {
            if (ModelState.IsValid)
            {
                string username = User.Identity.Name;
                context.Configuration.ProxyCreationEnabled = false;
                IQueryable <ConsultingRequest> cr = context.ConsultingRequests.Where(p => p.NoRequest.Equals(ConsultingRequest));
                int ConsulId = 0;
                if (cr.Count() > 0 || cr != null)
                {
                    ConsulId = cr.Select(p => p.ConsultingRequestID).FirstOrDefault();
                }
                consultingletterofcommand.ConsultingRequestID = ConsulId;
                if (member != null)
                {
                    foreach (var mb in member)
                    {
                        consultingletterofcommand.MemberID += mb + ";";
                    }
                }
                else
                {
                    consultingletterofcommand.MemberID += ";";
                }
                string user = submit.Contains("By") ? submit.Split('y')[1] : String.Empty;
                if (submit == "Save")
                {
                    consultingletterofcommand.Status = "Draft";
                }
                else if (submit == "Send Back")
                {
                    consultingletterofcommand.Status = HelperController.GetStatusSendback(context, "Consulting Surat Perintah", consultingletterofcommand.Status);
                }
                else if (submit == "Approve")
                {
                    consultingletterofcommand.Status = "Approve";
                }
                else if (submit == "Submit For Review By" + user)
                {
                    consultingletterofcommand.Status = "Pending for Review by" + user;
                }
                else if (submit == "Submit For Approve By" + user)
                {
                    consultingletterofcommand.Status = "Pending for Approve by" + user;
                }
                ConsultingLetterOfCommand oldData = context.ConsultingLetterOfCommands.AsNoTracking().Where(p => p.ConsultingSuratPerintahID.Equals(consultingletterofcommand.ConsultingSuratPerintahID)).FirstOrDefault();
                auditTransact.CreateAuditTrail("Update", consultingletterofcommand.ConsultingSuratPerintahID, "Consulting Letter Of Command", oldData, consultingletterofcommand, username);
                context.Entry(consultingletterofcommand).State = EntityState.Modified;
                context.SaveChanges();

                ConsultingLetterOfCommandDetailDasar ConsultingletterOfCommandDetailDasar = context.ConsultingLetterOfCommandDetailDasars.Where(p => p.ConsultingSuratPerintahID == consultingletterofcommand.ConsultingSuratPerintahID).FirstOrDefault();
                ConsultingletterOfCommandDetailDasar.Dasar = null;
                if (Dasar != null)
                {
                    foreach (var ab in Dasar)
                    {
                        ConsultingletterOfCommandDetailDasar.Dasar += ab + ";";
                    }
                }
                else
                {
                    ConsultingletterOfCommandDetailDasar.Dasar = ";";
                }

                ConsultingLetterOfCommandDetailUntuk ConsultingletterOfCommandDetailUntuk = context.ConsultingLetterOfCommandDetailUntuks.Where(p => p.ConsultingSuratPerintahID == consultingletterofcommand.ConsultingSuratPerintahID).FirstOrDefault();
                ConsultingletterOfCommandDetailUntuk.Untuk = null;
                if (Untuk != null)
                {
                    foreach (var cd in Untuk)
                    {
                        ConsultingletterOfCommandDetailUntuk.Untuk += cd + ";";
                    }
                }
                else
                {
                    ConsultingletterOfCommandDetailUntuk.Untuk = ";";
                }

                ConsultingLetterOfCommandDetailTembusan ConsultingletterOfCommandDetailTembusan = context.ConsultingLetterOfCommandDetailTembusans.Where(p => p.ConsultingSuratPerintahID == consultingletterofcommand.ConsultingSuratPerintahID).FirstOrDefault();
                ConsultingletterOfCommandDetailTembusan.Tembusan = null;
                if (Tembusan != null)
                {
                    foreach (var ef in Tembusan)
                    {
                        ConsultingletterOfCommandDetailTembusan.Tembusan += ef + ";";
                    }
                }
                else
                {
                    ConsultingletterOfCommandDetailTembusan.Tembusan = ";";
                }


                var eng = context.EngagementActivities.Find(consultingletterofcommand.EngagementID);
                eng.Name         = consultingletterofcommand.EngagementName;
                eng.PICID        = consultingletterofcommand.PicID;
                eng.TeamLeaderID = consultingletterofcommand.TeamLeaderID;
                eng.SupervisorID = consultingletterofcommand.SupervisorID;
                eng.MemberID     = consultingletterofcommand.MemberID;
                ConsultingLetterOfCommandDetailDasar    oldDataDasar    = context.ConsultingLetterOfCommandDetailDasars.AsNoTracking().Where(p => p.ConsultingLetterOfCommandDetailDasarID.Equals(ConsultingletterOfCommandDetailDasar.ConsultingLetterOfCommandDetailDasarID)).FirstOrDefault();
                ConsultingLetterOfCommandDetailUntuk    oldDataUntuk    = context.ConsultingLetterOfCommandDetailUntuks.AsNoTracking().Where(p => p.ConsultingLetterOfCommandDetailUntukID.Equals(ConsultingletterOfCommandDetailUntuk.ConsultingLetterOfCommandDetailUntukID)).FirstOrDefault();
                ConsultingLetterOfCommandDetailTembusan oldDataTembusan = context.ConsultingLetterOfCommandDetailTembusans.AsNoTracking().Where(p => p.ConsultingLetterOfCommandDetailTembusanID.Equals(ConsultingletterOfCommandDetailTembusan.ConsultingLetterOfCommandDetailTembusanID)).FirstOrDefault();
                auditTransact.CreateAuditTrail("Update", ConsultingletterOfCommandDetailDasar.ConsultingLetterOfCommandDetailDasarID, "Consulting Letter Of Command Dasar", oldDataDasar, ConsultingletterOfCommandDetailDasar, username);
                auditTransact.CreateAuditTrail("Update", ConsultingletterOfCommandDetailUntuk.ConsultingLetterOfCommandDetailUntukID, "Consulting Letter Of Command Untuk", oldDataUntuk, ConsultingletterOfCommandDetailUntuk, username);
                auditTransact.CreateAuditTrail("Update", ConsultingletterOfCommandDetailTembusan.ConsultingLetterOfCommandDetailTembusanID, "Consulting Letter Of Command Tembusan", oldDataTembusan, ConsultingletterOfCommandDetailTembusan, username);
                context.Entry(ConsultingletterOfCommandDetailDasar).State    = EntityState.Modified;
                context.Entry(ConsultingletterOfCommandDetailUntuk).State    = EntityState.Modified;
                context.Entry(ConsultingletterOfCommandDetailTembusan).State = EntityState.Modified;
                context.Entry(eng).State = EntityState.Modified;
                context.SaveChanges();
                TempData["message"] = "Consulting Letter Of Command successfully updated!";
                return(RedirectToAction("Index"));
            }
            return(View(consultingletterofcommand));
        }