示例#1
0
        /// <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();
 }