/// <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."); } }
/// <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; } }