예제 #1
0
        protected void storyTable_DeleteRow(object sender, EventArgs e)
        {
            var control = sender as LinkButton;

            if (control == null)
            {
                return;
            }
            var abbreviation = control.CommandArgument;

            Story storyToDelete = null;
            var   active        = BacklogModel.GetActiveProject();

            foreach (var story in active.Stories)
            {
                if (story.Abbreviation == abbreviation)
                {
                    storyToDelete = story;
                    break;
                }
            }
            if (storyToDelete == null)
            {
                return;
            }

            BacklogModel.Delete(active.Abbreviation, storyToDelete);
            BacklogModel.SaveActiveProject();
            Presenter.Present();
        }
 public async Task <IActionResult> Edit(int id, [Bind("Id,CustomerProblem,ProblemDescription,ProductOwner,Status,BootcampAssigned,SolutionDescription,Links,AdoptionEmailAddress")] BacklogModel backLogModel)
 {
     if (ModelState.IsValid)
     {
         backLogModel.RaisedBy = User.Identity.Name;
         if (id != backLogModel.Id)
         {
             return(NotFound());
         }
         try
         {
             await _backlogUow.EditBackLogItemAsync(backLogModel);
         }
         catch (DbUpdateConcurrencyException)
         {
             if (!await _backlogUow.IsBackLogItemExistsAsync(backLogModel.Id))
             {
                 return(NotFound());
             }
             throw;
         }
         return(RedirectToAction(nameof(Index)));
     }
     return(View(backLogModel));
 }
예제 #3
0
        protected void storyTable_UpdateRow(object sender, GridViewUpdateEventArgs e)
        {
            var row = storyTable.Rows[e.RowIndex];

            Story storyToUpdate;
            var   project = FindTheEditingStory(e.RowIndex, out storyToUpdate);

            var newTitle      = row.FindControl("storyName_edit") as TextBox;
            var newImportance = row.FindControl("importance_edit") as TextBox;
            var newEstimate   = row.FindControl("estimate_edit") as TextBox;
            var newStatus     = row.FindControl("status_dropdown") as DropDownList;
            var newHowToDemo  = row.FindControl("howToDemo_edit") as TextBox;

            if (newTitle != null)
            {
                storyToUpdate.Name = newTitle.Text;
            }
            if (newImportance != null)
            {
                storyToUpdate.Importance = Convert.ToInt32(newImportance.Text);
            }
            if (newEstimate != null)
            {
                storyToUpdate.Estimate = Convert.ToInt32(newEstimate.Text);
            }
            if (newHowToDemo != null)
            {
                storyToUpdate.HowToDemo = newHowToDemo.Text;
            }

            if (newStatus != null)
            {
                var status = (StoryStatus)newStatus.SelectedIndex;
                switch (status)
                {
                case StoryStatus.NotStarted:
                    storyToUpdate.Reset();
                    break;

                case StoryStatus.Paused:
                    storyToUpdate.Pause();
                    break;

                case StoryStatus.Started:
                    storyToUpdate.Start(DateTime.Now);
                    break;

                case StoryStatus.Done:
                    storyToUpdate.MarkAsDone(DateTime.Now);
                    break;
                }
            }

            BacklogModel.Update(project.Abbreviation, storyToUpdate);

            BacklogModel.SaveActiveProject();
            StopEditing();
        }
예제 #4
0
        private void OpenBacklogDetail(object sender, EventArgs e)
        {
            BacklogModel thisBacklog = (BacklogModel)sender;

            if (thisBacklog != null)
            {
                BacklogItemDetailVisibility = Visibility.Visible;
            }
        }
예제 #5
0
        protected void projectChooserIndexChanged(object sender, EventArgs args)
        {
            var dropdown = sender as DropDownList;

            if (dropdown != null)
            {
                BacklogModel.SetActiveProject(dropdown.SelectedValue);
            }
            Presenter.Present();
        }
예제 #6
0
        private void EditBacklog(object sender, EventArgs e)
        {
            BacklogModel editBacklog = (BacklogModel)sender;

            if (editBacklog != null)
            {
                BacklogItemViewModel.CurrentBacklog = BacklogManager.GetInstance().GetBacklogById(editBacklog.Backlog.Id);
                ShowAddNewBacklogDialog();
            }
        }
예제 #7
0
        private void QuichCloseBacklog(object sender, EventArgs e)
        {
            BacklogModel thisBacklog = (BacklogModel)sender;

            if (thisBacklog != null)
            {
                if (thisBacklog.Backlog.Status == 0 || thisBacklog.Backlog.Status == 1)
                {
                    thisBacklog.Backlog.Status       = 2;
                    thisBacklog.Backlog.EstimateHour = 0;
                    BacklogManager.GetInstance().SaveBacklog(thisBacklog.Backlog);
                    RefreshPage();
                }
            }
        }
예제 #8
0
        public async Task EditBackLogItemAsync(BacklogModel backlogModel)
        {
            var backlogItem = await _context.BackLogs.FirstAsync(x => x.Id == backlogModel.Id);

            backlogItem.ProductOwner        = backlogModel.ProductOwner;
            backlogItem.Status              = backlogModel.Status;
            backlogItem.BootcampAssigned    = backlogModel.BootcampAssigned;
            backlogItem.SolutionDescription = backlogModel.SolutionDescription;
            backlogItem.Links = backlogModel.Links;
            backlogItem.AdoptionEmailAddress = backlogModel.AdoptionEmailAddress;


            if (!string.IsNullOrWhiteSpace(backlogModel.ProductOwner) && string.IsNullOrWhiteSpace(backlogModel.BootcampAssigned))
            {
                backlogItem.Status = IdeaStatuses.PoAssigned;
            }

            if (!string.IsNullOrWhiteSpace(backlogModel.BootcampAssigned) && string.IsNullOrWhiteSpace(backlogModel.ProductOwner))
            {
                backlogItem.Status = IdeaStatuses.BootcampAssigned;
            }

            if (!string.IsNullOrWhiteSpace(backlogModel.BootcampAssigned) && !string.IsNullOrWhiteSpace(backlogModel.ProductOwner))
            {
                backlogItem.Status = IdeaStatuses.BootcampReady;
            }


            if (!string.IsNullOrWhiteSpace(backlogModel.BootcampAssigned) &&
                !string.IsNullOrWhiteSpace(backlogModel.ProductOwner) &&
                !string.IsNullOrWhiteSpace(backlogModel.SolutionDescription) &&
                !string.IsNullOrWhiteSpace(backlogModel.Links))
            {
                backlogItem.Status = IdeaStatuses.ProjectAdoptable;
            }

            if (string.IsNullOrWhiteSpace(backlogModel.BootcampAssigned) &&
                string.IsNullOrWhiteSpace(backlogModel.ProductOwner) &&
                !backlogItem.Status.Equals(IdeaStatuses.IdeaPending))
            {
                backlogItem.Status = IdeaStatuses.IdeaAccepted;
            }

            _context.Update(backlogItem);
            await _context.SaveChangesAsync();
        }
예제 #9
0
        private Project FindTheEditingStory(int rowIndex, out Story editingStory)
        {
            var abbreviation = storyTable.Rows[rowIndex].Cells[1].Text;
            var project      = BacklogModel.GetActiveProject();

            editingStory = null;

            foreach (var story in project.Stories)
            {
                if (story.Abbreviation == abbreviation)
                {
                    editingStory = story;
                    break;
                }
            }
            return(project);
        }
예제 #10
0
        private void LoadAcceptBacklog(int userId, int sprint)
        {
            var acceptBacklogs = BacklogManager.GetInstance().GetAllAcceptBacklog(userId, sprint);
            var backlogModels  = new List <BacklogModel>();

            foreach (var backlog in acceptBacklogs)
            {
                var model = new BacklogModel()
                {
                    Backlog = backlog
                };
                model.EditBacklog += EditBacklog;
                model.QuickClose  += QuichCloseBacklog;
                backlogModels.Add(model);
            }

            AcceptBacklogs = backlogModels;
        }
예제 #11
0
        private void LoadFutureBacklog(int userId, int sprint)
        {
            var futureBacklogs = BacklogManager.GetInstance().GetAllFutureBacklog(userId, sprint);
            var backlogModels  = new List <BacklogModel>();

            foreach (var backlog in futureBacklogs)
            {
                var model = new BacklogModel()
                {
                    Backlog = backlog
                };
                model.EditBacklog += EditBacklog;
                model.QuickClose  += QuichCloseBacklog;
                model.OpenDetail  += OpenBacklogDetail;
                backlogModels.Add(model);
            }

            FutureBacklogs = backlogModels;
        }
예제 #12
0
        protected void storyTable_FilterStories(object sender, EventArgs args)
        {
            var filters = sender as CheckBoxList;
            var filter  = new StoryFilter();

            if (filters != null)
            {
                for (var i = 0; i < 4; ++i)
                {
                    if (filters.Items[i].Selected)
                    {
                        filter.AddStoryFilter(StoryStatuses[i].GetType());
                    }
                    else
                    {
                        filter.RemoveStoryFilter(StoryStatuses[i].GetType());
                    }
                }
            }
            BacklogModel.AddStoryFilter(filter);
            Presenter.Present();
        }
예제 #13
0
        //
        // GET: /Backlog/
        public ActionResult Index()
        {
            int backlogId = Int32.Parse(Session["BacklogId"].ToString()),
                productId = Int32.Parse(Session["ProductId"].ToString());

            var sprintRepo  = new SprintRepository();
            var backlogRepo = new BacklogRepository();
            var epicRepo    = new EpicRepository();

            bool isSprintActive;
            var  sprintTasks = sprintRepo.GetCurrentSprintTasks(productId, out isSprintActive);

            var model = new BacklogModel()
            {
                BacklogItems   = backlogRepo.GetBacklogTasks(backlogId),
                SprintItems    = sprintTasks,
                Epics          = epicRepo.GetEpicsForBacklog(backlogId),
                IsSprintActive = isSprintActive,
                SprintName     = sprintRepo.GetCurrentSprintName(productId)
            };

            return(View(model));
        }