Index: ActiviteitenOpvolging/ActiviteitenOpvolging/domain/managers/implementations/EmployeeManager.vb
===================================================================
diff -u -r1712 -r1714
--- ActiviteitenOpvolging/ActiviteitenOpvolging/domain/managers/implementations/EmployeeManager.vb (.../EmployeeManager.vb) (revision 1712)
+++ ActiviteitenOpvolging/ActiviteitenOpvolging/domain/managers/implementations/EmployeeManager.vb (.../EmployeeManager.vb) (revision 1714)
@@ -2,20 +2,57 @@
Implements IEmployeeManager
Private ReadOnly _employees As ICollection(Of IEmployee)
+ '''
Public ReadOnly Property Employees As ICollection(Of IEmployee) Implements IEmployeeManager.Employees
Get
Return New HashSet(Of IEmployee)(_employees)
End Get
End Property
+ '''
+ Public ReadOnly Property AvailableEmployees As ICollection(Of IEmployee) Implements IEmployeeManager.AvailableEmployees
+ Get
+ 'Select the employees from the collection of all employees, which are not selected yet.
+ 'The employees are compared on their initials in lowercase.
+ Return New HashSet(Of IEmployee)(_employees.Where(Function(employee) _
+ Not _selectedEmployees.Any(Function(selectedEmployee) _
+ employee.Equals(selectedEmployee))))
+ End Get
+ End Property
+
+ Private ReadOnly _selectedEmployees As New List(Of IEmployee)
+ '''
+ Public ReadOnly Property SelectedEmployees As ICollection(Of IEmployee) Implements IEmployeeManager.SelectedEmployees
+ Get
+ Return New HashSet(Of IEmployee)(_selectedEmployees)
+ End Get
+ End Property
+
Sub New()
'Initial fetching of employees, then stored.
_employees = EmployeesDatabaseMapper.FetchEmployees()
End Sub
'''
Public Sub SelectEmployee(employee As IEmployee) Implements IEmployeeManager.SelectEmployee
-
+ 'Check whether or not that employee is already picked.
+ If _selectedEmployees.Any(Function(selectedEmployee) selectedEmployee.Equals(employee)) Then
+ 'Employee was picked already.
+ Throw New Exception("Employee was already chosen.")
+ End If
+ 'Add employee to list of selected employees.
+ _selectedEmployees.Add(employee)
End Sub
+ '''
+ Public Sub RemoveEmployeeSelection(employee As IEmployee) Implements IEmployeeManager.RemoveEmployeeSelection
+ 'Find the employee to remove.
+ Dim employeeToRemove = _selectedEmployees.Find(Function(selectedEmployee) selectedEmployee.Equals(employee))
+ If employeeToRemove Is Nothing Then
+ 'The employee was not selected, thus can't be deselected.
+ Throw New Exception("Cannot remove the selection of a non-selected employee.")
+ End If
+ 'Remove the employee.
+ _selectedEmployees.Remove(employeeToRemove)
+ End Sub
End Class