Exemple #1
0
        /// <inheritdoc/>
        public async Task ProcessMessage(ContractApprovedMessage message)
        {
            if (message is null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            _logger.LogInformation($"Sending approved contract notification for {message.ContractNumber}.");

            await Post(_configuration.ApiContractApproverEndpoint, message);

            try
            {
                await _audit.AuditAsync(new Audit.Api.Client.Models.Audit()
                {
                    Action   = ActionType.ContractApprovedMessageSentToFCS,
                    Severity = 0,
                    User     = ContractApproverUser,
                    Ukprn    = message.Ukprn,
                    Message  = $"Notified FCS of approved contract [{message.ContractNumber}] Version [{message.ContractVersionNumber}]."
                });
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Error when attempting to create an audit entry.");
            }
        }
Exemple #2
0
        /// <inheritdoc/>
        public async Task NotifyContractApprovedAsync(Contract contract)
        {
            _logger.LogInformation($"Queuing contract approval email for contract [{contract.ContractNumber}].");
            var message = new ContractApprovedMessage {
                ContractId = contract.Id
            };

            await NotifyAsync(message, contract, nameof(NotifyContractApprovedAsync));
        }
        private ContractApprovedMessage CreateTestContractApprovedMessage()
        {
            ContractApprovedMessage data = new ContractApprovedMessage()
            {
                ContractNumber        = "123",
                MasterContractNumber  = "123",
                ContractVersionNumber = 12
            };

            return(data);
        }
        public async Task Run([ServiceBusTrigger(topicName: "%Pds.Contracts.Notifications.Topic%", subscriptionName: "%Pds.Contracts.Approval.Subscription%", Connection = "sb-connection-string")] ContractApprovedMessage message, ILogger log)
        {
            log?.LogInformation($"Servicebus received message with contract no {message.ContractNumber}: Servicebus topic trigger received message.");

            try
            {
                await _service.ProcessMessage(message);
            }
            catch (Exception ex)
            {
                // Message serialisation or processing error
                // Log the error and exit with error code
                log?.LogError(ex, $"Failed to process contract approval for contract {message.ContractNumber}: {ex.Message}");
                throw;
            }
        }