コード例 #1
0
 private async Task EnqueueActions(
     FortnoxQueueAction action,
     IEnumerable <BaseFortnoxPayload> payloads)
 {
     foreach (var payload in payloads)
     {
         var queueMessage = new FortnoxQueueMessage(action, payload);
         await Fortnox.Enqueue(queueMessage);
     }
 }
コード例 #2
0
        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.");
            }
        }
コード例 #3
0
 internal async Task Enqueue(FortnoxQueueMessage message)
 {
     string serializedMessage = JsonConvert.SerializeObject(message);
     var    queueMessage      = new CloudQueueMessage(serializedMessage);
     await Queue.AddMessageAsync(queueMessage);
 }