public Task SendWorkOrderUpdatedAsync(WorkOrderUpdatedEventArgs args)
        {
            if (args == null)
            {
                throw new ArgumentNullException("args");
            }
            if (string.IsNullOrWhiteSpace(args.WorkOrderId))
            {
                throw new ArgumentException("WorkOrderId cannot be null");
            }
            if (string.IsNullOrWhiteSpace(args.UpdatedStatus))
            {
                throw new ArgumentException("UpdatedStatus cannot be null");
            }

            if (args.UpdatedDateUtc > DateTime.UtcNow)
            {
                throw new ArgumentOutOfRangeException($"UpdatedDateUtc cannot be in the future ({ args.UpdatedDateUtc.ToLocalTime() })");
            }

            _logger.Information("Posting WorkOrderUpdated event to service bus for Work Order {WorkOrderId}, updated by {AssigneeEmail}", args.WorkOrderId, args.AssigneeEmail);

            var userProperties = new Dictionary <string, object>();

            SetWorkOrder(args.WorkOrderId, args.EtaUtc, userProperties);
            SetWorkOrder(args.RemedyStatus,
                         args.UpdatedStatus,
                         args.UpdatedDateUtc,
                         args.AssigneeEmail,
                         args.AssigneeDisplayName,

                         userProperties);

            return(_messageSender.SendMessageAsync(WORK_ORDER_UPDATED, userProperties));
        }
Exemple #2
0
        public Task SendWorkOrderUpdatedAsync(WorkOrderUpdatedEventArgs args)
        {
            var tasks             = new List <Task>();
            var cancellationToken = new System.Threading.CancellationToken();

            foreach (var h in _messageReceiver.WorkOrderUpdatedHandlers)
            {
                tasks.Add(h(args, cancellationToken));
            }
            return(Task.WhenAll(tasks));
        }