public void ShowDialog(ScrumFactory.Services.AuthProviders.IOAuthProvider provider) { if (provider == null) return; this.provider = provider; this.Title = provider.ProviderName; this.badLogin.Text = String.Format(Properties.Resources.bad_login, provider.ProviderName); this.badLogin.Visibility = Visibility.Collapsed; this.ShowDialog(); }
public void ShowDialog(ScrumFactory.Services.AuthProviders.IOAuthProvider provider) { if (provider == null) return; this.provider = provider; webView.Navigate(provider.LoginUrl); this.Owner = Application.Current.MainWindow; this.ShowDialog(); }
public void SaveProjectMember(ScrumFactory.ProjectMember member) { using (var context = new Sql.ScrumFactoryEntities(this.connectionString)) { var memberEntity = context.ProjectMembers.Where(m => m.ProjectId == member.ProjectId && m.MemberId == member.MemberId).SingleOrDefault(); if (memberEntity == null) { memberEntity = new ProjectMember { MemberId = member.MemberId, ProjectId = member.ProjectId, RoleId = member.RoleId }; context.AddToProjectMembers(memberEntity); } memberEntity.RoleId = member.RoleId; context.SaveChanges(); } }
/// <summary> /// Initializes a new instance of the <see cref="SprintViewModel"/> class. /// </summary> /// <param name="sprint">The sprint.</param> /// <param name="backlog">The backlog.</param> public SprintViewModel( IProjectsService projectsService, IBackgroundExecutor backgroundExecutor, IEventAggregator eventAggregator, Sprint sprint, ICollection<BacklogItemViewModel> backlog, ScrumFactory.Composition.Configuration sfConfig, ICalendarService calendar) { this.projectsService = projectsService; this.executor = backgroundExecutor; this.aggregator = eventAggregator; this.calendar = calendar; SFConfig = sfConfig; Sprint = sprint; backlogViewSource = new CollectionViewSource(); backlogViewSource.Source = backlog; backlogViewSource.SortDescriptions.Add(new SortDescription("Item.OccurrenceConstraint", ListSortDirection.Ascending)); backlogViewSource.SortDescriptions.Add(new SortDescription("Item.BusinessPriority", ListSortDirection.Ascending)); backlogViewSource.Filter += new FilterEventHandler(backlogViewSource_Filter); }
/// <summary> /// Moves the item to another item position or sprint according the drag and drop parameters. /// </summary> /// <param name="p">The drag and drop parameters.</param> private void MoveItemTo(ScrumFactory.Windows.Helpers.DragDrop.DropCommandParameter p) { BacklogItemViewModel item = p.Item as BacklogItemViewModel; BacklogItemViewModel targetItem = p.DropTargetItem as BacklogItemViewModel; // no item no move if (item == null) return; // if is a plan or delivery item, cant move it if (item.Item.OccurrenceConstraint != (short)ItemOccurrenceContraints.DEVELOPMENT_OCC) return; // if there is no target item, just move to the end of the backlog if (targetItem == null) { //item.ChangeSprint(Project.Sprints.Count, true); return; } // else move to the other position item item.MoveItemTo(targetItem.Item); }
private void ChangeTaskItem(ScrumFactory.Windows.Helpers.DragDrop.DropCommandParameter p) { // no task, no change TaskViewModel taskVM = p.Item as TaskViewModel; if (taskVM == null) return; // no item, no change BacklogItem item = p.DropTargetItem as BacklogItem; if (item == null) return; taskVM.ChangeTaskItemCommand.Execute(item.BacklogItemUId); }
private void MoveTask(ScrumFactory.Windows.Helpers.DragDrop.DropCommandParameter p) { // no group, no move if (p==null || p.Group == null) return; // no task, no move TaskViewModel taskVM = p.Item as TaskViewModel; if (taskVM == null) return; short newStatus = (short) p.Group.Name; taskVM.MoveTaskToCommand.Execute(newStatus); }
private void BurndownConfig(ReportHelper.ReportConfig config, ScrumFactory.Project project) { var leftHoursByDay = backlogService.GetBurndownHoursByDay(project.ProjectUId, project.CurrentPlanningNumber.ToString()); if (leftHoursByDay == null) return; var burndownVM = new BurnDownViewModel(); burndownVM.ActualHours = leftHoursByDay.Where(h => h.LeftHoursMetric == LeftHoursMetrics.LEFT_HOURS).ToArray(); burndownVM.ActualHoursAhead = leftHoursByDay.Where(h => h.LeftHoursMetric == LeftHoursMetrics.LEFT_HOURS_AHEAD).ToArray(); burndownVM.PlannedHours = leftHoursByDay.Where(h => h.LeftHoursMetric == LeftHoursMetrics.PLANNING).ToArray(); config.ReportViewModels.Add("burndown", burndownVM); }
public BacklogItemViewModel( IBacklogService backlogService, IBackgroundExecutor backgroundExecutor, IEventAggregator eventAggregator, IAuthorizationService authorizator, Project project, BacklogItem item, ScrumFactory.Composition.Configuration sfConfig) { Init(backlogService, backgroundExecutor, eventAggregator, authorizator, project, item); SFConfig = sfConfig; ShowRepositoryLogCommand = new DelegateCommand(ShowRepositoryLog); }
public void UpdateProject(ScrumFactory.Project project) { using (var context = new ScrumFactoryEntities(this.connectionString)) { var projectOld = GetProject(project.ProjectUId); context.AttachTo("Projects", projectOld); context.ApplyCurrentValues<Project>("Projects", project); if (projectOld.Memberships == null) projectOld.Memberships = new List<ProjectMembership>(); if (project.Memberships == null) project.Memberships = new List<ProjectMembership>(); var insertedMemberships = project.Memberships.Where(m => !projectOld.Memberships.Any(o => (o.MemberUId == m.MemberUId && o.RoleUId == m.RoleUId))).ToList(); var updatedMemberships = project.Memberships.Where(m => projectOld.Memberships.Any(o => (o.MemberUId == m.MemberUId && o.RoleUId == m.RoleUId))).ToList(); var deletedMemberships = projectOld.Memberships.Where(m => !project.Memberships.Any(o => (o.MemberUId == m.MemberUId && o.RoleUId == m.RoleUId))).ToList(); foreach (ProjectMembership m in insertedMemberships) context.AddObject("ProjectMemberships", m); foreach (ProjectMembership m in updatedMemberships) context.ApplyCurrentValues<ProjectMembership>("ProjectMemberships", m); foreach (ProjectMembership m in deletedMemberships) context.DeleteObject(m); context.SaveChanges(); } }
public void SaveProjectRole(ScrumFactory.Role role) { using (var context = new ScrumFactoryEntities(this.connectionString)) { Role oldRole = GetProjectRole(role.RoleUId); if (oldRole == null) { context.Roles.AddObject(role); } else { context.AttachTo("Roles", oldRole); context.ApplyCurrentValues<Role>("Roles", role); } context.SaveChanges(); } }
public int InsertProject(ScrumFactory.Project project) { using (var context = new ScrumFactoryEntities(this.connectionString)) { context.Projects.AddObject(project); if(project.Memberships!=null) foreach (ProjectMembership m in project.Memberships) context.AddObject("ProjectMemberships", m); context.SaveChanges(); } return project.ProjectNumber; }
private ReportHelper.ReportConfig CreateReportConfig(ScrumFactory.Project project, string group, string template, string name) { var config = new ReportHelper.ReportConfig(group, template, name); // add project config.ReportObjects.Add(project); // get project members var members = teamService.GetProjectMembers(project.ProjectUId); foreach (var mm in project.Memberships) mm.Member = members.SingleOrDefault(m => m.MemberUId == mm.MemberUId); // add risks ICollection<Risk> risks = projectService.GetProjectRisks(project.ProjectUId); config.ReportObjects.Add(risks); // add groups ICollection<BacklogItemGroup> groups = backlogService.GetBacklogItemGroups(project.ProjectUId); config.ReportObjects.Add(groups); // add itens ICollection<BacklogItem> items = backlogService.GetBacklog(project.ProjectUId, null, (short)ScrumFactory.Services.BacklogFiltersMode.ALL); foreach (BacklogItem item in items) { item.ValidPlannedHours = item.GetValidPlannedHours(); int? firstSprint = item.ValidPlannedHours.Min(h => h.SprintNumber); item.FirstSprintWorked = firstSprint.HasValue ? firstSprint.Value : project.LastSprint.SprintNumber; int? lastSprint = item.ValidPlannedHours.Max(h => h.SprintNumber); item.LastSprintWorked = lastSprint.HasValue ? lastSprint.Value : project.LastSprint.SprintNumber; if (item.FirstSprintWorked < project.CurrentValidSprint.SprintNumber) item.OrderSprintWorked = item.LastSprintWorked; else item.OrderSprintWorked = item.FirstSprintWorked; item.Group = groups.SingleOrDefault(g => g.GroupUId == item.GroupUId); } config.ReportObjects.Add(items); // add constraints ICollection<ProjectConstraint> constraints = constraintsService.GetProjectConstraints(project.ProjectUId); config.ReportObjects.Add(constraints); // add end date config.AddReportVar("ProjectEndDate", project.LastSprint.EndDate); if (project.CurrentSprint != null) { if (project.CurrentSprint.SprintNumber > 1) { config.ReportVars.Add("ProjectCurrentSprintNumber", project.CurrentSprint.SprintNumber.ToString()); config.ReportVars.Add("ProjectPreviousSprintNumber", (project.CurrentSprint.SprintNumber - 1).ToString()); } else { if (project.Sprints.Count > project.CurrentSprint.SprintNumber + 1) config.ReportVars.Add("ProjectCurrentSprintNumber", (project.CurrentSprint.SprintNumber + 1).ToString()); else config.ReportVars.Add("ProjectCurrentSprintNumber", project.CurrentSprint.SprintNumber.ToString()); config.ReportVars.Add("ProjectPreviousSprintNumber", project.CurrentSprint.SprintNumber.ToString()); } } return config; }
public void HandleScrumFactoryException(ScrumFactory.Exceptions.ScrumFactoryException ex) { if (ex is ScrumFactory.Exceptions.NotAuthorizedException) aggregator.Publish(ScrumFactoryEvent.NotAuthorizedServerExceptionThrowed); else ShowAlertMessage(ex); }
public IDialogViewModel NewDialog(string title, ScrumFactory.Composition.View.IView contentView) { MessageBoxViewModel vm = new MessageBoxViewModel(title, new MessageBox(), contentView); return vm; }
private void ShowAlertMessage(ScrumFactory.Exceptions.ScrumFactoryException ex) { if (!ex.IsLocalized) ex.LocalizeException(Properties.Resources.ResourceManager); string exceptionType = ex.GetType().ToString().Replace('.', '_'); string imageSource = Properties.Resources.ResourceManager.GetString(exceptionType + "_errorImageSource"); if (imageSource != null) AlertMessageViewModel.ImageSource = Properties.Resources.ResourceManager.GetString(exceptionType + "_errorImageSource"); else AlertMessageViewModel.ResetErrorImage(); AlertMessageViewModel.Title = ex.LocalizedMessageTitle; AlertMessageViewModel.Message = ex.LocalizedMessage; ShowTopMenu = true; AlertMessageViewModel.Show(); }
/// <summary> /// Moves the item to another item position or sprint according the drag and drop parameters. /// </summary> /// <param name="p">The drag and drop parameters.</param> private void MoveItemTo(ScrumFactory.Windows.Helpers.DragDrop.DropCommandParameter p) { BacklogItemViewModel item = p.Item as BacklogItemViewModel; BacklogItemViewModel targetItem = p.DropTargetItem as BacklogItemViewModel; int? sprintNumber = p.DropTargetListTag as int?; // move to the product backlog if (sprintNumber == null) sprintNumber = -1; // no item no move if (item==null) return; // if is a plan or delivery item, cant move it if (item.Item.OccurrenceConstraint != (short)ItemOccurrenceContraints.DEVELOPMENT_OCC) return; // if there is no target item, just move to the end of the sprint if (targetItem == null && sprintNumber != null) { item.ChangeSprint((int)sprintNumber, true); return; } // else move to the other position item item.MoveItemTo(targetItem.Item); }