Ejemplo n.º 1
0
        public async Task AssignCourierToDeliveryAsync(AssignCourierToDeliveryDtoSave assignCourierToDelivery)
        {
            var deliveryId = assignCourierToDelivery.DeliveryId;
            var courierId  = assignCourierToDelivery.CourierId;

            var delivery = await _deliveryRepository.GetDeliveryByIdAsync(deliveryId);

            if (delivery == null)
            {
                throw new KeyNotFoundException($"Delivery not found with specified Id: {deliveryId}");
            }

            var courier = await _courierRepository.GetCourierByIdAsync(courierId);

            if (courier == null)
            {
                throw new KeyNotFoundException($"Courier not found with specified Id: {courierId}");
            }

            await _deliveryRepository.AssignCourierToDeliveryAsync(deliveryId, courierId);

            await _deliveryRepository.SetDeliveryStatusAsync(deliveryId, DeliveryStatus.CourierAssigned);

            var deliveryStatusChangedEvent = new CourierAssignedToDeliveryIntegrationEvent(deliveryId, courierId);

            _integrationEventPublisher.Publish(deliveryStatusChangedEvent);
        }