/// <summary> /// Initialize the to pass the model /// </summary> /// <param name="model"></param> public void Initialize(DocumentWorkflowConfiguration model) { this.workflowOrganizationUnitService = CommonServiceLocator.ServiceLocator.Current.GetInstance <IWorkflowOrganizationUnitService>(); if (model == null) { model = new DocumentWorkflowConfiguration(); } Model = model; var stateProviderList = CommonServiceLocator.ServiceLocator.Current.GetAllInstances <IDocumentWorkflowStateProvider>(); var accessProviderList = CommonServiceLocator.ServiceLocator.Current.GetAllInstances <IDocumentWorkflowAccessProvider>(); userService = CommonServiceLocator.ServiceLocator.Current.GetInstance <IUserService>(); foreach (var provider in stateProviderList) { stateProviders.Add(provider.Name); } RaisePropertyChanged(nameof(StateProviders)); foreach (var provider in accessProviderList) { accessProviders.Add(provider.Name); } RaisePropertyChanged(nameof(AccessProviders)); workflowOrganizationUnits = new ObservableCollection <SelectWorkflowOrganizationUnitViewModel>(workflowOrganizationUnitService.GetAll().Select(x => new SelectWorkflowOrganizationUnitViewModel(x) { Parent = this }).ToList()); assignments = new ObservableCollection <WorkflowOrganizationUnitAssignmentViewModel>(Model.OrganizationUnits.GetAsObservableCollection().Select(y => new WorkflowOrganizationUnitAssignmentViewModel(y, this) { })); CollectionNotifyPropertyChanged(assignments, model.OrganizationUnits, x => x.Model); addTab = new RelayCommand(o => Add()); if (assignments.Any()) { selectedAssignment = assignments.FirstOrDefault(); } }
/// <summary> /// Constructor to get all user and initialize the services /// </summary> public WorkflowOrganizationUnitAssignmentViewModel(WorkflowOrganizationUnitAssignment workflowOrganizationUnit, IViewModelBase parent) { Parent = parent; Model = workflowOrganizationUnit; userService = CommonServiceLocator.ServiceLocator.Current.GetInstance <IUserService>(); workflowOrganizationUnitService = CommonServiceLocator.ServiceLocator.Current.GetInstance <IWorkflowOrganizationUnitService>(); if (Parent is DocumentWorkflowConfigurationViewModel viewModel) { Header = workflowOrganizationUnitService.Get(workflowOrganizationUnit.WorkflowOrganisationUnitId).DisplayName; remove = new RelayCommand(o => viewModel.RemoveItem(this)); } //Todo:Expect the user that are already loaded in allUsers = new ObservableCollection <UserViewModel>((Parent as DocumentWorkflowConfigurationViewModel).Users.Select(x => new UserViewModel(x, new WorkflowOrganizationUnitUserAssignment(), this) { })); assignedUsers = new ObservableCollection <UserViewModel>(Model.Users.GetAsObservableCollection().Select(x => new UserViewModel(userService.GetById(x.UserId), x, this))); var list = workflowOrganizationUnit.Users.GetItems(); //TODO: Improve because of performance issues, maybe? allUsers = new ObservableCollection <UserViewModel>(allUsers.Where(allUser => !assignedUsers.Any(assignedUser => assignedUser.Model.UserId == allUser.Model.UserId))); userSource = new CollectionViewSource(); userAssignedSource = new CollectionViewSource(); userSource.Source = AllUsers; userAssignedSource.Source = AssignedUsers; userSource.Filter += UserSource_Filter; userAssignedSource.Filter += UserAssignedSource_Filter; userSource.SortDescriptions.Add(new System.ComponentModel.SortDescription { Direction = System.ComponentModel.ListSortDirection.Ascending, PropertyName = "Name" }); userAssignedSource.SortDescriptions.Add(new System.ComponentModel.SortDescription { Direction = System.ComponentModel.ListSortDirection.Ascending, PropertyName = "Name" }); CollectionNotifyPropertyChanged(assignedUsers, workflowOrganizationUnit.Users, (x) => x.Model); RaisePropertyChanged(nameof(AllUsers)); RaisePropertyChanged(nameof(AssignedUsers)); }
public WorkflowOrganizationUnitWindow(IWorkflowOrganizationUnitService service) : base(service) { InitializeComponent(); }