Index: ActiviteitenOpvolging/ActiviteitenOpvolging/domain/classes/IActivity.vb =================================================================== diff -u -r1729 -r1733 --- ActiviteitenOpvolging/ActiviteitenOpvolging/domain/classes/IActivity.vb (.../IActivity.vb) (revision 1729) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/domain/classes/IActivity.vb (.../IActivity.vb) (revision 1733) @@ -1,10 +1,10 @@ Public Interface IActivity - inherits IActivityActions + Inherits IActivityActions Property Id As String Property QuantityToProduce As Integer Property Label As String - Property Status As ActivityStateEnum + ReadOnly Property Status As ActivityStateEnum Property EmployeeInitials As String Property IsReadOnly As Boolean Property StartBeforeTimestamp As DateTime @@ -15,4 +15,4 @@ Property State As ActivityState ReadOnly Property CurrentEmployee As IEmployee -End interface +End Interface Index: ActiviteitenOpvolging/ActiviteitenOpvolging/mappers/CacheMapper.vb =================================================================== diff -u -r1731 -r1733 --- ActiviteitenOpvolging/ActiviteitenOpvolging/mappers/CacheMapper.vb (.../CacheMapper.vb) (revision 1731) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/mappers/CacheMapper.vb (.../CacheMapper.vb) (revision 1733) @@ -1,4 +1,5 @@ Imports System.Data.Odbc +Imports System.Windows.Navigation Imports ActiviteitenOpvolging.configs Module CacheMapper @@ -179,8 +180,11 @@ .StartAlmostTimeStamp = If(.StartTimeStamp = DateTime.MinValue, DateTime.MinValue, .StartTimeStamp.Subtract(ConfigsLoader.StartAlmostTimeThreshold)) 'Set parent work item. .WorkItem = workItem + + 'Fetch the employee if defined. + Dim employee As IEmployee = employees.FirstOrDefault(Function(employeeToCheck) employeeToCheck.Initials.Equals(.EmployeeInitials)) 'Set the current state based on the enum value. If the quantity is 0, the status is automatically zero. - .State = ConvertEnumValueToActivityState(If(.QuantityToProduce = 0, ActivityStateEnum.Zero, ActivityStateEnumMapper.GetActivityStateFromLetter(ExtractItemFromDataReader(Of Char)(dr, $"Status_{i}"))), activity, employees) + .State = ConvertEnumValueToActivityState(If(.QuantityToProduce = 0, ActivityStateEnum.Zero, ActivityStateEnumMapper.GetActivityStateFromLetter(ExtractItemFromDataReader(Of Char)(dr, $"Status_{i}"))), activity, employee) End With 'Add to collection of activities. activities.Add(activity) @@ -212,13 +216,21 @@ ''' ''' ''' - Private Function ConvertEnumValueToActivityState(stateEnumValue As ActivityStateEnum, activity As IActivity, employees As List(Of IEmployee)) As ActivityState + Private Function ConvertEnumValueToActivityState(stateEnumValue As ActivityStateEnum, activity As IActivity, employee As IEmployee) As ActivityState 'Get employee if any. Select Case stateEnumValue - Case ActivityStateEnum.Defaulted - Return New ActivityDefaultedState(activity) Case ActivityStateEnum.Zero Return New ActivityZeroState(activity) + Case ActivityStateEnum.Defaulted + Return New ActivityDefaultedState(activity) + Case ActivityStateEnum.Stopped + Return New ActivityStoppedState(activity, employee) + Case ActivityStateEnum.Started + Return New ActivityStartedState(activity, employee) + Case ActivityStateEnum.Finished + Return New ActivityFinishedState(activity, employee) + Case Else + Throw New InternalException($"Activity state enum value '{stateEnumValue}' cannot be used to map to an activity state.") End Select End Function Index: ActiviteitenOpvolging/ActiviteitenOpvolging/domain/classes/implementations/Activity.vb =================================================================== diff -u -r1731 -r1733 --- ActiviteitenOpvolging/ActiviteitenOpvolging/domain/classes/implementations/Activity.vb (.../Activity.vb) (revision 1731) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/domain/classes/implementations/Activity.vb (.../Activity.vb) (revision 1733) @@ -4,8 +4,11 @@ Public Property Id As String Implements IActivity.Id Public Property QuantityToProduce As Integer Implements IActivity.QuantityToProduce Public Property Label As String Implements IActivity.Label - Public Property Status As ActivityStateEnum Implements IActivity.Status - 'todo get enum state from state + Public ReadOnly Property Status As ActivityStateEnum Implements IActivity.Status + Get + Return State.ActivityStateEnum() + End Get + End Property Public Property IsReadOnly As Boolean Implements IActivity.IsReadOnly Public Property StartBeforeTimestamp As DateTime Implements IActivity.StartBeforeTimestamp Public Property StartAlmostTimeStamp As DateTime Implements IActivity.StartAlmostTimeStamp Index: ActiviteitenOpvolging/ActiviteitenOpvolging/domain/controllers/DomainController.vb =================================================================== diff -u -r1731 -r1733 --- ActiviteitenOpvolging/ActiviteitenOpvolging/domain/controllers/DomainController.vb (.../DomainController.vb) (revision 1731) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/domain/controllers/DomainController.vb (.../DomainController.vb) (revision 1733) @@ -60,7 +60,7 @@ ''' Function GiveWorkItems(workPostIndex As Integer) As ICollection(Of IWorkItem) Implements IDomainController.GiveWorkItems - Return _workItemManager.GiveWorkItems(workPostIndex, _employeeManager.Employees) + Return _workItemManager.GiveWorkItems(workPostIndex, _employeeManager.Employees.ToList()) End Function #End Region