private static ReceptionAction GetReceptionAction(ProductivityImportModel productivityImportModel) { var reception = new ReceptionAction { Id = productivityImportModel.DocumentNumber.Trim(), DocumentName = productivityImportModel.DocumentName, StartTime = productivityImportModel.StartTime, Duration = TimeSpan.FromSeconds(productivityImportModel.OperationDuration), Operation = new Operation { Name = productivityImportModel.Operation.Trim() }, Employee = GetEmployee(productivityImportModel), ReceptionActionDetails = new List <ReceptionActionDetail> { new ReceptionActionDetail { ProductId = productivityImportModel.ProductId ?? 0, Product = GetProduct(productivityImportModel), Address = GetAddress(productivityImportModel.ReceiverAddress), ScanQuantity = (short)(productivityImportModel.ScanQuantity ?? 0), ProductQuantity = productivityImportModel.ProductQuantity ?? 0, IsClientScanning = productivityImportModel.IsClientScanning ?? false } } }; return(reception); }
public void CheckPause__BothNotPacking_PauseGreaterThresholdOr20__AddsPause() { // Arrange: var builder = GetBuilder(); var momento = builder.BuildNew(); var operation = new Operation { Name = "Test Operation", Group = OperationGroups.Gathering }; var currentAction = new ReceptionAction() { StartTime = DateTime.Parse("22.02.2019 8:00:00"), Duration = TimeSpan.FromSeconds(30), Operation = operation, }; var nextAction = new ReceptionAction() { StartTime = DateTime.Parse("22.02.2019 8:10:45"), Duration = TimeSpan.FromSeconds(15), Operation = operation, }; var next = builder.CheckDuration(nextAction, momento); var current = builder.CheckDuration(currentAction, momento); // Action: builder.CheckPause(current, next, momento); // Assert: var res = momento.DowntimePeriods.FirstOrDefault(); Assert.That(res, Is.Not.EqualTo(Period.Zero)); }
public void CheckPause__BothNotPacking_CurrentEndGreaterNextStart__ReduseCurrentDuration() { // Arrange: var builder = GetBuilder(); var momento = builder.BuildNew(); var operation = new Operation { Name = "Test Operation", Group = OperationGroups.Gathering }; var originalCurrentDuration = 1000; // ~16 min. var currentAction = new ReceptionAction() { StartTime = DateTime.Parse("22.02.2019 8:00:00"), Duration = TimeSpan.FromSeconds(originalCurrentDuration), Operation = operation, }; var nextAction = new ReceptionAction() { StartTime = DateTime.Parse("22.02.2019 8:10:45"), Duration = TimeSpan.FromSeconds(15), Operation = operation, }; var next = builder.CheckDuration(nextAction, momento); var current = builder.CheckDuration(currentAction, momento); // Action: builder.CheckPause(current, next, momento); // Assert: var res = momento.ProductivityMap[operation][currentAction]; Assert.That(res.Duration.TotalSeconds, Is.LessThan(originalCurrentDuration)); }
public void CheckDuration__DoubleAddressAction_ReseptionGroup__AddsPeriodGreaterBy10Sec() { // Arrange: var builder = GetBuilder(); var momento = builder.BuildNew(); var operation = new Operation { Name = "Test Operation", Group = OperationGroups.Reception }; var duration = 1; var action = new ReceptionAction() { StartTime = DateTime.Parse("22.02.2019 8:00:45"), Duration = TimeSpan.FromSeconds(duration), Operation = operation, ReceptionActionDetails = new List <ReceptionActionDetail>(new [] { new ReceptionActionDetail { ProductQuantity = 1, Product = new Product { ItemVolume = 11 } }, new ReceptionActionDetail { ProductQuantity = 1, Product = new Product { ItemVolume = 3 } }, }) }; // Action: builder.CheckDuration(action, momento); // Assert: var res = momento.ProductivityMap[operation].GetTime().TotalSeconds; Assert.That(res, Is.EqualTo(duration + 10)); }