public async Task QuantityExceedsRemaining_Throws() { await Assert.ThrowsAsync <InvalidOperationException>(() => factory.Create(movement, new ShipmentQuantity(100, ShipmentQuantityUnits.Kilograms), new[] { new TestablePackagingInfo() })); }
private async Task SaveMovementDetails(Movement movement, DraftMovement draftMovement, NotificationApplication notification) { var shipmentQuantity = new ShipmentQuantity(draftMovement.Quantity, draftMovement.Units); var packagingInfos = GetPackagingInfoFromDraft(draftMovement.PackagingInfos, notification); var movementDetails = await movementDetailsFactory.Create( movement, shipmentQuantity, packagingInfos); context.MovementDetails.Add(movementDetails); await context.SaveChangesAsync(); }
public async Task <Guid[]> HandleAsync(CreateMovements message) { var newIds = new List <Guid>(); using (var transaction = context.Database.BeginTransaction()) { try { for (int i = 0; i < message.NumberToCreate; i++) { var movement = await movementFactory.Create(message.NotificationId, message.ActualMovementDate); context.Movements.Add(movement); await context.SaveChangesAsync(); var shipmentQuantity = new ShipmentQuantity(message.Quantity, message.Units); var packagingInfos = await GetPackagingInfos(message.NotificationId, message.PackagingTypes); var movementDetails = await movementDetailsFactory.Create( movement, shipmentQuantity, packagingInfos); context.MovementDetails.Add(movementDetails); await context.SaveChangesAsync(); newIds.Add(movement.Id); await movementAuditRepository.Add(new MovementAudit(movement.NotificationId, movement.Number, userContext.UserId.ToString(), (int)MovementAuditType.Incomplete, SystemTime.Now)); await context.SaveChangesAsync(); } } catch { transaction.Rollback(); throw; } transaction.Commit(); } return(newIds.ToArray()); }