private async Task EnqueueActions( FortnoxQueueAction action, IEnumerable <BaseFortnoxPayload> payloads) { foreach (var payload in payloads) { var queueMessage = new FortnoxQueueMessage(action, payload); await Fortnox.Enqueue(queueMessage); } }
public async Task HandleDequeuedMessage(FortnoxQueueMessage message) { switch (message.Action) { case FortnoxQueueAction.UpsertFortnoxDelivery: { var payload = JsonConvert.DeserializeObject <UpsertDeliveryFromFortnoxPayload>(message.SerializedPayload); var configuration = FortnoxConfigService.LoadFortnoxConfiguration(payload.WebcrmSystemId); var dataCopier = await FortnoxDataCopier.Create(Logger, WebcrmClientFactory, configuration); await dataCopier.CopyDeliveryToFortnox(payload.FortnoxCustomerNumber, payload.FortnoxCustomerNumber, configuration.OrganisationIdFieldName); } break; case FortnoxQueueAction.UpsertWebcrmOrganisation: { var payload = JsonConvert.DeserializeObject <UpsertOrganisationFromFortnoxPayload>(message.SerializedPayload); var configuration = FortnoxConfigService.LoadFortnoxConfiguration(payload.WebcrmSystemId); var dataCopier = await FortnoxDataCopier.Create(Logger, WebcrmClientFactory, configuration); await dataCopier.CopyOrganisationFromFortnox(payload.FortnoxCustomerNumber, configuration.OrganisationIdFieldName); } break; case FortnoxQueueAction.UpsertFortnoxOrganisation: { var payload = JsonConvert.DeserializeObject <UpsertOrganisationToFortnox>(message.SerializedPayload); // TODO 1358: Only update Fortnox if a custom checkbox list contains a checked item that says something like "Fortnox Customer". Otherwise we should not sync the organisation. var configuration = FortnoxConfigService.LoadFortnoxConfiguration(payload.WebcrmSystemId); var dataCopier = await FortnoxDataCopier.Create(Logger, WebcrmClientFactory, configuration); await dataCopier.CopyOrganisationToFortnox(payload.Organisation, configuration.OrganisationIdFieldName); } break; case FortnoxQueueAction.Unknown: default: throw new ApplicationException($"The action '{message.Action}' is not supported."); } }
internal async Task Enqueue(FortnoxQueueMessage message) { string serializedMessage = JsonConvert.SerializeObject(message); var queueMessage = new CloudQueueMessage(serializedMessage); await Queue.AddMessageAsync(queueMessage); }