Public Class DomainController
Implements IDomainController
Private ReadOnly _employeeManager As IEmployeeManager
Private ReadOnly _workItemManager As IWorkItemManager
#Region "Singleton pattern"
Private Shared _instance As DomainController
Private Sub New()
'Initialise managers.
_employeeManager = New EmployeeManager
_workItemManager = New WorkItemManager
End Sub
'''
''' Gets an instance of the domain controller. Only one instance exists.
'''
''' The instance of the domain controller
Public Shared Function GetInstance() As IDomainController
'If no instance is present, initialise.
If _instance Is Nothing Then
_instance = New DomainController()
End If
'Return instance.
Return _instance
End Function
#End Region
#Region "Employees"
'''
Public Function GetAvailableEmployees() As ICollection(Of IEmployee) Implements IDomainController.GetAvailableEmployees
Return _employeeManager.AvailableEmployees
End Function
'''
Public Function GetSelectedEmployee(employeeNumber As Integer) As IEmployee Implements IDomainController.GetSelectedEmployee
Return _employeeManager.GetSelectedEmployee(employeeNumber)
End Function
'''
Public Function GetSelectedEmployees() As ICollection(Of IEmployee) Implements IDomainController.GetSelectedEmployees
Return _employeeManager.SelectedEmployees
End Function
'''
Public Sub SelectEmployee(employeeNumber As Integer, employee As IEmployee) Implements IDomainController.SelectEmployee
_employeeManager.SelectEmployee(employeeNumber, employee)
End Sub
'''
Public Sub DeselectEmployee(employeeNumber As Integer) Implements IDomainController.DeselectEmployee
_employeeManager.RemoveEmployeeSelection(employeeNumber)
End Sub
#End Region
#Region "Work items"
'''
Function GiveWorkItems(workPostIndex As Integer) As ICollection(Of IWorkItem) Implements IDomainController.GiveWorkItems
Return _workItemManager.GiveWorkItems(workPostIndex, _employeeManager.Employees.ToList())
End Function
Public Sub StartActivity(activity As IActivity, employeeNumber As Integer) Implements IDomainController.StartActivity
Dim employee = _employeeManager.GetSelectedEmployee(employeeNumber)
'Employee can't be nothing.
If IsNothing(employee) Then Throw New Exception($"No employee found for employee number: {employeeNumber}.")
'Finish the activity.
_workItemManager.StartActivity(activity, employee)
End Sub
Public Sub FinishActivity(employeeNumber As Integer) Implements IDomainController.FinishActivity
Dim employee = _employeeManager.GetSelectedEmployee(employeeNumber)
'Employee can't be nothing.
If IsNothing(employee) Then Throw New Exception($"No employee found for employee number: {employeeNumber}.")
'Finish the activity.
_workItemManager.FinishActivity(employee.CurrentActivity)
End Sub
Public Sub StopActivity(employeeNumber As Integer) Implements IDomainController.StopActivity
Dim employee = _employeeManager.GetSelectedEmployee(employeeNumber)
'Employee can't be nothing.
If IsNothing(employee) Then Throw New Exception($"No employee found for employee number: {employeeNumber}.")
'Stop the activity.
_workItemManager.StopActivity(employee.CurrentActivity)
End Sub
Public Sub PauseActivitiesFromApp() Implements IDomainController.PauseActivitiesFromApp
_workItemManager.PauseActivities()
End Sub
#End Region
End Class