Ejemplo n.º 1
0
        public async Task CancelMovementsHandler_GetsMovementsByIds()
        {
            var request = GetRequest(CancelMovementCount);

            await handler.HandleAsync(request);

            A.CallTo(
                () =>
                repository.GetMovementsByIds(notificationId,
                                             A <IEnumerable <Guid> > .That.IsSameSequenceAs(request.CancelledMovements.Select(m => m.Id))))
            .MustHaveHappened(Repeated.Exactly.Once);
        }
Ejemplo n.º 2
0
        public async Task <bool> HandleAsync(CancelMovements message)
        {
            var movementIds = message.CancelledMovements.Select(m => m.Id).ToList();

            movementIds.AddRange((await CaptureAddedMovements(message)).Select(m => m.Id));

            var movements = (await repository.GetMovementsByIds(message.NotificationId, movementIds)).ToList();

            foreach (var movement in movements)
            {
                movement.Cancel();
            }

            await context.SaveChangesAsync();

            foreach (var movement in movements)
            {
                await movementAuditRepository.Add(new MovementAudit(movement.NotificationId, movement.Number,
                                                                    userContext.UserId.ToString(), (int)MovementAuditType.Cancelled,
                                                                    SystemTime.Now.AddSeconds(AuditTimeOffSet)));
            }

            await context.SaveChangesAsync();

            return(true);
        }
Ejemplo n.º 3
0
        public async Task <MovementInfo[]> HandleAsync(GetMovementsByIds message)
        {
            var result = new List <MovementInfo>();

            var movements = await movementRepository.GetMovementsByIds(message.NotificationId, message.MovementIds);

            foreach (var movement in movements)
            {
                var details = await movementDetailsRepository.GetByMovementId(movement.Id);

                result.Add(new MovementInfo
                {
                    Id             = movement.Id,
                    ActualQuantity = details.ActualQuantity.Quantity,
                    Unit           = details.ActualQuantity.Units,
                    PackagingTypes = details.PackagingInfos.Select(p => p.PackagingType),
                    ShipmentNumber = movement.Number
                });
            }

            return(result.ToArray());
        }