コード例 #1
0
        private void UpdateReleaseBacklogUserStories(string[] selectedUserStories, ReleaseBacklog releaseBacklogToUpdate)
        {
            if (selectedUserStories == null)
            {
                releaseBacklogToUpdate.UserStories = new List <UserStory>();
                return;
            }

            var selectedUserStoriesHS     = new HashSet <string>(selectedUserStories);
            var releaseBacklogUserStories = new HashSet <int>(releaseBacklogToUpdate.UserStories.Select(u => u.ID));

            foreach (var userStory in db.UserStories)
            {
                if (selectedUserStoriesHS.Contains(userStory.ID.ToString()))
                {
                    if (!releaseBacklogUserStories.Contains(userStory.ID))
                    {
                        releaseBacklogToUpdate.UserStories.Add(userStory);
                    }
                }
                else
                {
                    if (releaseBacklogUserStories.Contains(userStory.ID))
                    {
                        releaseBacklogToUpdate.UserStories.Remove(userStory);
                    }
                }
            }
        }
コード例 #2
0
        public ActionResult Edit(int id)
        {
            CarregaLista();
            //passando uma model A
            ReleaseBacklog A       = RBacklogList.Where(X => X.ID == id).First();
            List <Equipe>  Equipes = (List <Equipe>)Session["Equipes"];

            ProductList      = _ProductRep.Lista(new ProductBacklogMapper());
            ViewBag.Historia = new SelectList(ProductList, "ID", "Historia");

            UserList     = _UserRep.Lista(new UsersMapper());
            ViewBag.Nome = new SelectList(UserList, "ID", "Nome");

            ViewBag.Situacao = new List <SelectListItem>
            {
                new SelectListItem {
                    Text = "A Fazer", Value = "A Fazer"
                },
                new SelectListItem {
                    Text = "Em Execução", Value = "Em Execução"
                },
                new SelectListItem {
                    Text = "Em Teste", Value = "Em Teste"
                },
                new SelectListItem {
                    Text = "Done", Value = "Done"
                }
            };
            return(View(A));
        }
コード例 #3
0
 public ActionResult Create(ReleaseBacklog RB)
 {
     _RBacklogRep.ADD(RB);
     Session["Lista"] = RBacklogList;
     CarregaLista();
     return(RedirectToAction("Index"));
 }
コード例 #4
0
 public ActionResult Edit(ReleaseBacklog RB)
 {
     //carrega lista e traz um objeto da lista para ser editado
     CarregaLista();
     _RBacklogRep.Update(RB);
     Session["Lista"] = RBacklogList;
     return(RedirectToAction("Index"));
 }
コード例 #5
0
        public ActionResult DeleteConfirmed(int id)
        {
            ReleaseBacklog releaseBacklog = db.ReleaseBacklogs.Find(id);

            db.ReleaseBacklogs.Remove(releaseBacklog);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
コード例 #6
0
        public void AssignScrumMaster(int employeeID, ReleaseBacklog releaseBacklog, MUMScrumContext db)
        {
            var employee = db.Employees.Find(employeeID);

            employee.Role = Role.ScrumMaster;
            employee.ReleaseBacklogs.Add(releaseBacklog);

            db.Entry(employee).State = EntityState.Modified;
        }
コード例 #7
0
        //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));
        }
コード例 #8
0
        // GET: /ReleaseBacklog/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ReleaseBacklog releasebacklog = services.GetById(id.Value);

            if (releasebacklog == null)
            {
                return(HttpNotFound());
            }
            return(View(releasebacklog));
        }
コード例 #9
0
        // GET: ReleaseBacklog/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ReleaseBacklog releaseBacklog = db.ReleaseBacklogs.Find(id);

            if (releaseBacklog == null)
            {
                return(HttpNotFound());
            }
            return(View(releaseBacklog));
        }
コード例 #10
0
        public ActionResult Create([Bind(Include = "Id,ReleaseName,Description,ReleaseDate,ProductBacklogId,ScrumMasterId")] ReleaseBacklog releasebacklog)
        {
            if (ModelState.IsValid)
            {
                services.CreateRelease(releasebacklog);
                // db.SaveChanges();
                return(RedirectToAction("Details", new { Id = releasebacklog.Id }));
            }
            Employee User = Utility.GetEmployeeSession(Session);

            ViewBag.ProductBacklogId = new SelectList(productServices.GetAllProductBackLogsByOwner(User.Id), "Id", "Name", releasebacklog.ProductBacklogId);
            ViewBag.ScrumMasterId    = new SelectList(hr.GetScrumMaster(), "Id", "FirstName", releasebacklog.ScrumMasterId);
            return(View(releasebacklog));
        }
コード例 #11
0
        public void RemoveScrumMasterRole(ReleaseBacklog releaseBacklog, MUMScrumContext db)
        {
            var employee = db.Employees.Find(releaseBacklog.EmployeeID);

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

                db.Entry(employee).State = EntityState.Modified;
            }
        }
コード例 #12
0
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ReleaseBacklog releasebacklog = services.GetById(id.Value);

            if (releasebacklog == null)
            {
                return(HttpNotFound());
            }
            Employee User = Utility.GetEmployeeSession(Session);

            ViewBag.ScrumMasterId    = new SelectList(hr.GetScrumMaster(), "Id", "FirstName", releasebacklog.ScrumMasterId);
            ViewBag.ProductBacklogId = new SelectList(productServices.GetAllProductBackLogsByOwner(User.Id), "Id", "Name", releasebacklog.ProductBacklogId);
            return(View(releasebacklog));
        }
コード例 #13
0
        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));
        }
コード例 #14
0
        private void PopulateAssignedUserStories(ReleaseBacklog releaseBacklog)
        {
            var allUserStories = db.UserStories.Where(u => u.ReleaseBacklogID == null || u.ReleaseBacklogID == releaseBacklog.ID);

            var releaseBacklogUserStories = new HashSet <int>(releaseBacklog.UserStories.Select(u => u.ID));

            var viewModel = new List <AssignedUserStoryData>();

            foreach (var userStory in allUserStories)
            {
                viewModel.Add(new AssignedUserStoryData
                {
                    UserStoryID = userStory.ID,
                    Name        = userStory.Name,
                    Assigned    = releaseBacklogUserStories.Contains(userStory.ID)
                });
            }

            ViewBag.UserStories = viewModel;
        }
コード例 #15
0
        // 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());
        }
コード例 #16
0
        // 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));
        }
コード例 #17
0
        protected override void Seed(MUMScrumDbContext context)
        {
            context.Roles.Add(new Model.Role()
            {
                RoleName = "HR"
            });
            context.Roles.Add(new Model.Role()
            {
                RoleName = "ScrumMaster"
            });
            context.Roles.Add(new Model.Role()
            {
                RoleName = "ProductOwner"
            });
            context.Roles.Add(new Model.Role()
            {
                RoleName = "Developer"
            });
            context.Roles.Add(new Model.Role()
            {
                RoleName = "Tester"
            });
            context.SaveChanges();

            context.Employees.Add(new Model.Employee
            {
                FirstName     = "Super",
                LastName      = "Admin",
                UserName      = "******",
                Password      = "******",
                IsDeactivated = false,
                RoleId        = (int)RoleEnum.HR
            });

            var po = new Model.Employee
            {
                FirstName     = "John",
                LastName      = "Doe",
                UserName      = "******",
                Password      = "******",
                IsDeactivated = false,
                RoleId        = (int)RoleEnum.ProductOwner,
            };

            context.Employees.Add(po);

            var po1 = new Model.Employee
            {
                FirstName     = "Rabin",
                LastName      = "Doe",
                UserName      = "******",
                Password      = "******",
                IsDeactivated = false,
                RoleId        = (int)RoleEnum.ProductOwner,
            };

            context.Employees.Add(po1);


            context.SaveChanges();

            context.Employees.Add(new Model.Employee
            {
                FirstName     = "Grace",
                LastName      = "Monroe",
                UserName      = "******",
                Password      = "******",
                IsDeactivated = false,
                RoleId        = (int)RoleEnum.Developer,
            });

            context.Employees.Add(new Model.Employee
            {
                FirstName     = "David",
                LastName      = "Fake",
                UserName      = "******",
                Password      = "******",
                IsDeactivated = false,
                RoleId        = (int)RoleEnum.Tester,
            });

            context.Employees.Add(new Model.Employee
            {
                FirstName     = "Jane",
                LastName      = "Roe",
                UserName      = "******",
                Password      = "******",
                IsDeactivated = false,
                RoleId        = (int)RoleEnum.ScrumMaster,
            });

            context.Employees.Add(new Model.Employee
            {
                FirstName     = "Sanjeev",
                LastName      = "Rajbanshi",
                UserName      = "******",
                Password      = "******",
                IsDeactivated = false,
                RoleId        = (int)RoleEnum.ScrumMaster,
            });

            context.SaveChanges();


            for (int i = 1; i <= 1; i++)
            {
                var newProduct = new Model.ProductBacklog()
                {
                    Name        = "MUMScrum ",
                    Description = "Our MUMScrum - " + i + " Backlog",
                    OwnerId     = po.Id
                };
                context.ProductBacklogs.Add(newProduct);
            }
            context.SaveChanges();
            for (int i = 1; i <= 1; i++)
            {
                //var skip = (i - 1) % 5;
                var product    = context.ProductBacklogs.FirstOrDefault();
                var newRelease = new ReleaseBacklog()
                {
                    ReleaseDate = DateTime.Now.Date.AddDays(20),
                    Description = "this release is for the final project presentation of Software Engineering block. Hope it goes all well",
                    ReleaseName = "Release V" + i
                };
                //newRelease.ReleaseDate = DateTime.Now;
                newRelease.ProductBacklogId = product.Id;
                newRelease.ScrumMasterId    = 6;
                context.ReleaseBacklogs.Add(newRelease);
            }
            context.SaveChanges();

            for (int i = 1; i <= 2; i++)
            {
                var release = context.ReleaseBacklogs.FirstOrDefault();
                var sprint  = new Sprint();
                sprint.ReleaseBacklogId = release.Id;
                sprint.Description      = "This is new Sprint for this release - " + release.ReleaseName;
                sprint.SprintRunning    = false;
                if (i == 1)
                {
                    sprint.StartDate = DateTime.Now.AddDays(-5);
                    sprint.EndDate   = DateTime.Now;
                }
                else
                {
                    sprint.StartDate = DateTime.Now;
                    sprint.EndDate   = DateTime.Now.Date.AddDays(5);
                }

                sprint.SprintName = "Sprint - " + i;
                context.Sprints.Add(sprint);
            }
            context.SaveChanges();

            for (int i = 1; i <= 3; i++)
            {
                var product = context.ProductBacklogs.FirstOrDefault();
                //var pcount = (i - 1) % product.ReleaseBacklogs.Count();
                var release = product.ReleaseBacklogs.OrderBy(j => j.Id).FirstOrDefault();
                //var rcount = (i - 1) % context.Sprints.Where(j => j.ReleaseBacklogId == release.Id).Count();
                var sprint = context.Sprints.Where(j => j.ReleaseBacklogId == release.Id).OrderBy(j => j.Id).FirstOrDefault();
                var US     = new UserStory()
                {
                    Title            = "UStory - " + i,
                    Description      = "This is a " + i + " description",
                    SprintId         = sprint.Id,
                    ReleaseId        = release.Id,
                    DevelopedId      = context.Employees.First(d => d.RoleId == (int)RoleEnum.Developer).Id,
                    TesterId         = context.Employees.First(d => d.RoleId == (int)RoleEnum.Tester).Id,
                    ProductBackLogId = product.Id,
                    DevActual        = 0,
                    TestActual       = 0,
                    DevEstimate      = 30,
                    TestEstiamte     = 0
                };
                context.UserStories.Add(US);
            }
            context.SaveChanges();

            var sprint1 = context.Sprints.FirstOrDefault();

            foreach (var us in sprint1.UserStories.ToList())
            {
                var currentdevActual   = us.DevActual.Value;
                var currentdevEstimate = us.DevEstimate.Value;
                for (int i = 1; i < 5; i++)
                {
                    var usLog = new UserStoryLog()
                    {
                        ChangedByUserId = us.DevelopedId.Value,
                        Date            = sprint1.StartDate.AddDays(i),
                        LogType         = LogType.DevActual,
                        NewValue        = 5,
                        OldValue        = currentdevActual,
                        UserStoryId     = us.Id
                    };
                    us.DevActual += 5;
                    context.UserStoryLogs.Add(usLog);
                }
            }
            context.SaveChanges();
        }
コード例 #18
0
 public void UpdateRelease(ReleaseBacklog release)
 {
     work.ReleaseBacklogsRepository.Update(release);
     work.SaveChanges();
 }
コード例 #19
0
ファイル: HRFacade.cs プロジェクト: kashifshabih/MUMScrum
 public void RemoveScrumMasterRole(ReleaseBacklog releaseBacklog, MUMScrumContext db)
 {
     objEmployee.RemoveScrumMasterRole(releaseBacklog, db);
 }
コード例 #20
0
ファイル: HRFacade.cs プロジェクト: kashifshabih/MUMScrum
 public void AssignScrumMaster(int employeeID, ReleaseBacklog releaseBacklog, MUMScrumContext db)
 {
     objEmployee.AssignScrumMaster(employeeID, releaseBacklog, db);
 }
コード例 #21
0
 public ActionResult Delete(ReleaseBacklog RB)
 {
     CarregaLista();
     _RBacklogRep.Delete(RBacklogList.Where(X => X.ID == RB.ID).First());
     return(RedirectToAction("Index"));
 }