Index: ActiviteitenOpvolging/ActiviteitenOpvolging/domain/classes/implementations/Activity.vb =================================================================== diff -u -r1729 -r1731 --- ActiviteitenOpvolging/ActiviteitenOpvolging/domain/classes/implementations/Activity.vb (.../Activity.vb) (revision 1729) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/domain/classes/implementations/Activity.vb (.../Activity.vb) (revision 1731) @@ -1,5 +1,6 @@ Public Class Activity Implements IActivity + Public Property Id As String Implements IActivity.Id Public Property QuantityToProduce As Integer Implements IActivity.QuantityToProduce Public Property Label As String Implements IActivity.Label Index: ActiviteitenOpvolging/ActiviteitenOpvolging/mappers/CacheMapper.vb =================================================================== diff -u -r1728 -r1731 --- ActiviteitenOpvolging/ActiviteitenOpvolging/mappers/CacheMapper.vb (.../CacheMapper.vb) (revision 1728) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/mappers/CacheMapper.vb (.../CacheMapper.vb) (revision 1731) @@ -100,13 +100,66 @@ Return sqlQueries.Item(workPostIndex) End Function + ''' + ''' Fetch all the work items for a workpost. + ''' The corresponding query will get fetched in here. + ''' + ''' The index of the workpost, 0 based + ''' A list of all the work items with their activities + Public Function GetData(workPostIndex As Integer, employees As List(Of IEmployee)) As List(Of IWorkItem) + 'Fetch the query. + Dim query As String = FetchQuery(workPostIndex) + + 'Initialise the list with work items. + Dim workItems As New List(Of IWorkItem) + + 'Declare datareader. + Dim dr As OdbcDataReader = Nothing + Try + 'Execute query and store datareader. + dr = ExecuteIntoDataReader(query) + + 'Fetch amount of activities. + Dim activityAmount = FetchNumberOfActivities(workPostIndex) + + 'Loop through every (result) record. + While dr.Read() + 'Values of one result (line/record). + + Dim workItem As New WorkItem + 'Fill with values. + With workItem + .BatchVisual = ExtractItemFromDataReader(dr, "BatchVisual", 0) + .DeliverToResource = ExtractItemFromDataReader(dr, "Naar", String.Empty) + .ProductGroup = ExtractItemFromDataReader(dr, "Productgroep", String.Empty) + .Remark = ExtractItemFromDataReader(dr, "Opmerking", String.Empty) + .EndTimeStamp = ExtractItemFromDataReader(dr, "EindTijdstip", DateTime.MinValue) + .Activities = ExtractActivities(dr, activityAmount, workItem, employees) + End With + + 'Add to the result list. + workItems.Add(workItem) + End While + + 'Return the list. + Return workItems + Catch ex As Exception + Throw New Exception($"An error occured while fetching the work items from Caché.{vbNewLine}{ex.Message}") + Finally + 'Close connection if datareader is not nothing. + If Not IsNothing(dr) Then + dr.Close() + End If + End Try + End Function + #Region "Activities" ''' ''' Extract all activities for one work item from the data reader. ''' ''' ''' - Private Function ExtractActivities(dr As OdbcDataReader, numberOfActivities As Integer, workItem As IWorkItem) As List(Of IActivity) + Private Function ExtractActivities(dr As OdbcDataReader, numberOfActivities As Integer, workItem As IWorkItem, employees As List(Of IEmployee)) As List(Of IActivity) 'Declare result list. Dim activities As New List(Of IActivity) @@ -118,8 +171,6 @@ .Id = ExtractItemFromDataReader(dr, $"ActiviteitID_{i}", String.Empty) .QuantityToProduce = ExtractItemFromDataReader(dr, $"Aantal_{i}", 0) .Label = ExtractItemFromDataReader(dr, $"Label_{i}", String.Empty) - 'If the quentity is 0, the status is automatically zero. - .Status = If(.QuantityToProduce = 0, ActivityStateEnum.Zero, ActivityStateEnumMapper.GetActivityStateFromLetter(ExtractItemFromDataReader(Of Char)(dr, $"Status_{i}"))) .EmployeeInitials = ExtractItemFromDataReader(dr, $"Gebruiker_{i}", String.Empty) .IsReadOnly = ExtractItemFromDataReader(dr, $"ReadOnly_{i}", False) .StartTimeStamp = ExtractItemFromDataReader(dr, $"StartTijdstip_{i}", DateTime.MinValue) @@ -128,6 +179,8 @@ .StartAlmostTimeStamp = If(.StartTimeStamp = DateTime.MinValue, DateTime.MinValue, .StartTimeStamp.Subtract(ConfigsLoader.StartAlmostTimeThreshold)) 'Set parent work item. .WorkItem = workItem + '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) End With 'Add to collection of activities. activities.Add(activity) @@ -153,59 +206,22 @@ Return activityAmounts.Item(workPostIndex) End Function -#End Region - ''' - ''' Fetch all the work items for a workpost. - ''' The corresponding query will get fetched in here. + ''' Produces an activity state based on the state enum value. The activity becomes part of the state. ''' - ''' The index of the workpost, 0 based - ''' A list of all the work items with their activities - Public Function GetData(workPostIndex As Integer) As List(Of IWorkItem) - 'Fetch the query. - Dim query As String = FetchQuery(workPostIndex) - - 'Initialise the list with work items. - Dim workItems As New List(Of IWorkItem) - - 'Declare datareader. - Dim dr As OdbcDataReader = Nothing - Try - 'Execute query and store datareader. - dr = ExecuteIntoDataReader(query) - - 'Fetch amount of activities. - Dim activityAmount = FetchNumberOfActivities(workPostIndex) - - 'Loop through every (result) record. - While dr.Read() - 'Values of one result (line/record). - - Dim workItem As New WorkItem - 'Fill with values. - With workItem - .BatchVisual = ExtractItemFromDataReader(dr, "BatchVisual", 0) - .DeliverToResource = ExtractItemFromDataReader(dr, "Naar", String.Empty) - .ProductGroup = ExtractItemFromDataReader(dr, "Productgroep", String.Empty) - .Remark = ExtractItemFromDataReader(dr, "Opmerking", String.Empty) - .EndTimeStamp = ExtractItemFromDataReader(dr, "EindTijdstip", DateTime.MinValue) - .Activities = ExtractActivities(dr, activityAmount, workItem) - End With - - 'Add to the result list. - workItems.Add(workItem) - End While - - 'Return the list. - Return workItems - Catch ex As Exception - Throw New Exception($"An error occured while fetching the work items from Caché.{vbNewLine}{ex.Message}") - Finally - 'Close connection if datareader is not nothing. - If Not IsNothing(dr) Then - dr.Close() - End If - End Try + ''' + ''' + ''' + Private Function ConvertEnumValueToActivityState(stateEnumValue As ActivityStateEnum, activity As IActivity, employees As List(Of IEmployee)) As ActivityState + 'Get employee if any. + Select Case stateEnumValue + Case ActivityStateEnum.Defaulted + Return New ActivityDefaultedState(activity) + Case ActivityStateEnum.Zero + Return New ActivityZeroState(activity) + End Select End Function +#End Region + End Module Index: ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolging.vbproj =================================================================== diff -u -r1726 -r1731 --- ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolging.vbproj (.../ActiviteitenOpvolging.vbproj) (revision 1726) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolging.vbproj (.../ActiviteitenOpvolging.vbproj) (revision 1731) @@ -79,7 +79,14 @@ + + + + + + + Index: ActiviteitenOpvolging/ActiviteitenOpvolging/domain/managers/implementations/WorkItemManager.vb =================================================================== diff -u -r1712 -r1731 --- ActiviteitenOpvolging/ActiviteitenOpvolging/domain/managers/implementations/WorkItemManager.vb (.../WorkItemManager.vb) (revision 1712) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/domain/managers/implementations/WorkItemManager.vb (.../WorkItemManager.vb) (revision 1731) @@ -2,7 +2,7 @@ Implements IWorkItemManager ''' - Public Function GiveWorkItems(workPostIndex As Integer) As ICollection(Of IWorkItem) Implements IWorkItemManager.GiveWorkItems - Return CacheMapper.GetData(workPostIndex) + Public Function GiveWorkItems(workPostIndex As Integer, employees As List(Of IEmployee)) As ICollection(Of IWorkItem) Implements IWorkItemManager.GiveWorkItems + Return CacheMapper.GetData(workPostIndex, employees) End Function End Class Index: ActiviteitenOpvolging/ActiviteitenOpvolging/domain/controllers/DomainController.vb =================================================================== diff -u -r1718 -r1731 --- ActiviteitenOpvolging/ActiviteitenOpvolging/domain/controllers/DomainController.vb (.../DomainController.vb) (revision 1718) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/domain/controllers/DomainController.vb (.../DomainController.vb) (revision 1731) @@ -60,7 +60,7 @@ ''' Function GiveWorkItems(workPostIndex As Integer) As ICollection(Of IWorkItem) Implements IDomainController.GiveWorkItems - Return _workItemManager.GiveWorkItems(workPostIndex) + Return _workItemManager.GiveWorkItems(workPostIndex, _employeeManager.Employees) End Function #End Region Index: ActiviteitenOpvolging/ActiviteitenOpvolging/domain/managers/IworkItemManager.vb =================================================================== diff -u -r1712 -r1731 --- ActiviteitenOpvolging/ActiviteitenOpvolging/domain/managers/IworkItemManager.vb (.../IworkItemManager.vb) (revision 1712) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/domain/managers/IworkItemManager.vb (.../IworkItemManager.vb) (revision 1731) @@ -4,5 +4,5 @@ ''' ''' The index of the work post, 0 based ''' Collection of the work items - Function GiveWorkItems(workPostIndex As Integer) As ICollection(Of IWorkItem) + Function GiveWorkItems(workPostIndex As Integer, employees As List(Of IEmployee)) As ICollection(Of IWorkItem) End Interface