public ActionResult AssignRoles(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            UserStory userStory = db.UserStories.Find(id);

            if (userStory == null)
            {
                return(HttpNotFound());
            }

            // hr interface method has to be given here
            //ViewBag.Developers = db.Employees.ToList()
            //                    .Where(e => e.Position.EmpPosition == "Software Engineer")
            //                    .Select(
            //                        e => new { ID = e.ID, Name = e.FirstName + ' ' + e.LastName }
            //                    );

            HRInterface hr = new clsHRFacade();

            ViewBag.Developers = hr.GetDevelopers();

            //ViewBag.Testers = db.Employees.ToList()
            //                    .Where(e => e.Position.EmpPosition == "Software Test Engineer")
            //                    .Select(
            //                        e => new { ID = e.ID, Name = e.FirstName + ' ' + e.LastName }
            //                    );

            ViewBag.Testers = hr.GetTesters();

            return(View(userStory));
        }
        //public ActionResult Edit([Bind(Include = "ID,Name,Description,CreatedBy,CreatedDate,StartDate,ExpectedEndDate,ActualEndDate,ProductBacklogID,ScrumMasterID")] ReleaseBacklog releaseBacklog, string[] selectedUserStories)
        public ActionResult Edit(int?id, string[] selectedUserStories, string ScrumMasterList)
        {
            ReleaseBacklog releaseBacklog = db.ReleaseBacklogs
                                            .Include(r => r.UserStories)
                                            .Where(r => r.ID == id)
                                            .Single();

            if (ModelState.IsValid)
            {
                UpdateReleaseBacklogUserStories(selectedUserStories, releaseBacklog);

                if (ScrumMasterList != "")
                {
                    releaseBacklog.EmployeeID = int.Parse(ScrumMasterList);
                    ////hr interface method has to be given here
                    //var emp = db.Employees.Find(int.Parse(ScrumMasterList));
                    //emp.Role = Role.ScrumMaster;
                    //emp.ReleaseBacklogs.Add(releaseBacklog);
                    HRInterface hr = new clsHRFacade();
                    hr.AssignScrumMaster(int.Parse(ScrumMasterList), releaseBacklog, db);
                }
                else
                {
                    //var emp = db.Employees.Find(releaseBacklog.EmployeeID);

                    //if (emp != null)
                    //{
                    //    if (emp.ReleaseBacklogs.Count == 1)
                    //    {
                    //        emp.Role = null;
                    //    }
                    //    emp.ReleaseBacklogs.Remove(releaseBacklog);
                    //}

                    HRInterface hr = new clsHRFacade();
                    hr.RemoveScrumMasterRole(releaseBacklog, db);

                    releaseBacklog.EmployeeID = null;
                    ////hr interface method has to be given here
                }

                db.Entry(releaseBacklog).State = EntityState.Modified;

                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.ProductBacklogID = new SelectList(db.ProductBacklogs, "ID", "Name", releaseBacklog.ProductBacklogID);

            PopulateAssignedUserStories(releaseBacklog);
            return(View(releaseBacklog));
        }
        public ActionResult Create([Bind(Include = "ID,Name,Description,CreatedBy,CreatedDate,StartDate,ExpectedEndDate,ActualEndDate,ProductBacklogID,EmployeeID")] ReleaseBacklog releaseBacklog, string[] selectedUserStories, string ScrumMasterList)
        {
            if (selectedUserStories != null)
            {
                releaseBacklog.UserStories = new List <UserStory>();

                foreach (var userStory in selectedUserStories)
                {
                    var userStoryToAdd = db.UserStories.Find(int.Parse(userStory));
                    releaseBacklog.UserStories.Add(userStoryToAdd);
                }
            }

            if (ScrumMasterList != "")
            {
                releaseBacklog.EmployeeID = int.Parse(ScrumMasterList);

                ////hr interface method has to be given here
                //var emp = db.Employees.Find(int.Parse(ScrumMasterList));
                //emp.Role = Role.ScrumMaster;
                //emp.ReleaseBacklogs.Add(releaseBacklog);

                HRInterface hr = new clsHRFacade();
                hr.AssignScrumMaster(int.Parse(ScrumMasterList), releaseBacklog, db);
            }

            releaseBacklog.CreatedBy   = 1;
            releaseBacklog.CreatedDate = DateTime.Now;

            if (ModelState.IsValid)
            {
                db.ReleaseBacklogs.Add(releaseBacklog);

                db.SaveChanges();

                return(RedirectToAction("Index"));
            }

            PopulateAssignedUserStories(releaseBacklog);

            ViewBag.ProductBacklogID = new SelectList(db.ProductBacklogs, "ID", "Name", releaseBacklog.ProductBacklogID);
            return(View(releaseBacklog));
        }
        // GET: ReleaseBacklog/Create
        public ActionResult Create()
        {
            ViewBag.ProductBacklogID = new SelectList(db.ProductBacklogs, "ID", "Name");

            var releaseBacklog = new ReleaseBacklog();

            releaseBacklog.UserStories = new List <UserStory>();

            PopulateAssignedUserStories(releaseBacklog);

            // hr interface method has to be given here
            //ViewBag.ScrumMasters = db.Employees.ToList()
            //                                .Where(e => e.Position.EmpPosition == "Senior Software Engineer")
            //                                .Select(
            //                                    e => new { ID = e.ID, Name = e.FirstName + ' ' + e.LastName }
            //                                );
            HRInterface hr = new clsHRFacade();

            ViewBag.ScrumMasters = hr.GetScrumMasters();

            return(View());
        }
        // GET: ReleaseBacklog/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            // hr interface method has to be given here
            //ViewBag.ScrumMasters = db.Employees.ToList()
            //                    .Where(e => e.Position.EmpPosition == "Senior Software Engineer")
            //                    .Select(
            //                        e => new { ID = e.ID, Name = e.FirstName + ' ' + e.LastName }
            //                    );

            HRInterface hr = new clsHRFacade();

            ViewBag.ScrumMasters = hr.GetScrumMasters();


            //ReleaseBacklog releaseBacklog = db.ReleaseBacklogs.Find(id);
            ReleaseBacklog releaseBacklog = db.ReleaseBacklogs
                                            .Include(r => r.UserStories)
                                            .Where(r => r.ID == id)
                                            .Single();

            PopulateAssignedUserStories(releaseBacklog);

            if (releaseBacklog == null)
            {
                return(HttpNotFound());
            }

            ViewBag.ProductBacklogID = new SelectList(db.ProductBacklogs, "ID", "Name", releaseBacklog.ProductBacklogID);

            return(View(releaseBacklog));
        }
        public ActionResult AssignRoles(string DeveloperList, string TesterList, [Bind(Include = "ID,Name,Description,CreatedBy,CreatedDate,StartDate,ExpectedEndDate,ActualEndDate,DevelopmentStatus,TestStatus,SprintID,ReleaseBacklogID,ProductBacklogID,DeveloperID,TesterID,DeveloperEstimateInHours,TesterEstimateInHours,DeveloperHoursCompleted,TesterHoursCompleted")] UserStory userStory, string DevID, string TesID)
        {
            if (ModelState.IsValid)
            {
                db.Entry(userStory).State = EntityState.Modified;

                if (DeveloperList != "")
                {
                    userStory.DeveloperID       = int.Parse(DeveloperList);
                    userStory.DevelopmentStatus = USDevelopmentStatus.Assigned;

                    ////hr interface method has to be given here
                    //var emp = db.Employees.Find(int.Parse(DeveloperList));
                    //emp.Role = Role.Developer;
                    //emp.UserStories.Add(userStory);

                    HRInterface hr = new clsHRFacade();
                    hr.AssignDeveloper(int.Parse(DeveloperList), userStory, db);
                }
                else
                {
                    if (DevID != "")
                    {
                        //var emp = db.Employees.Find(int.Parse(DevID));

                        //if (emp != null)
                        //{
                        //    if (emp.UserStories.Count == 1)
                        //    {
                        //        emp.Role = null;
                        //    }

                        //    emp.UserStories.Remove(userStory);
                        //}

                        HRInterface hr = new clsHRFacade();
                        hr.RemoveDeveloperRole(int.Parse(DevID), userStory, db);
                    }

                    userStory.DevelopmentStatus = USDevelopmentStatus.New;
                    userStory.DeveloperID       = null;
                    ////hr interface method has to be given here
                }
                if (TesterList != "")
                {
                    userStory.TesterID   = int.Parse(TesterList);
                    userStory.TestStatus = USTestStatus.Assigned;
                    ////hr interface method has to be given here
                    //var emp = db.Employees.Find(int.Parse(TesterList));
                    //emp.Role = Role.Tester;
                    //emp.UserStories.Add(userStory);

                    HRInterface hr = new clsHRFacade();
                    hr.AssignTester(int.Parse(TesterList), userStory, db);
                }
                else
                {
                    if (TesID != "")
                    {
                        //var emp = db.Employees.Find(int.Parse(TesID));

                        //if (emp != null)
                        //{
                        //    if (emp.UserStories.Count == 1)
                        //    {
                        //        emp.Role = null;
                        //    }

                        //    emp.UserStories.Remove(userStory);
                        //}

                        HRInterface hr = new clsHRFacade();
                        hr.RemoveTesterRole(int.Parse(TesID), userStory, db);
                    }

                    userStory.TestStatus = USTestStatus.WaitingDevelopment;
                    userStory.TesterID   = null;
                    ////hr interface method has to be given here
                }



                db.SaveChanges();
                return(RedirectToAction("UserStories"));
            }

            return(View(userStory));
        }