Пример #1
0
        public static async Task CopyToPoweroffice(
            // Trigger every six minutes, offset by three.
            [TimerTrigger("30 3-59/6 * * * *")] TimerInfo timer,
            ILogger logger)
        {
            try
            {
                var webcrmClientFactory     = new WebcrmClientFactory(logger, TypedEnvironment.WebcrmApiBaseUrl);
                var powerofficeQueueFactory = new PowerofficeQueueFactory(logger, TypedEnvironment.AzureWebJobsStorage);
                var webcrmChangeTracker     = await WebcrmToPowerofficeChangeTracker.Create(logger, webcrmClientFactory, powerofficeQueueFactory);

                var configService = await PowerofficeConfigService.Create(TypedEnvironment.DatabaseCredentials);

                var configurations = configService.LoadEnabledPowerofficeConfigurations();
                foreach (var configuration in configurations)
                {
                    var dateTimeBeforeSync = DateTime.UtcNow;
                    await webcrmChangeTracker.EnqueueUpsertedItemsToPoweroffice(configuration.LastSuccessfulCopyToErpHeartbeat, configuration);

                    await configService.UpdateLastSuccessfulCopyToErpHeartbeat(configuration.WebcrmSystemId, dateTimeBeforeSync);
                }
            }
            catch (SwaggerException ex)
            {
                SwaggerExceptionLogger.Log(ex);
            }
        }
Пример #2
0
 protected BaseTester(ITestOutputHelper output)
 {
     OutputLogger = new XunitLogger(output);
     TestPowerofficeClientFactory = new PowerofficeClientFactory(TestTypedEnvironment.PowerofficeApiSettings);
     TestPowerofficeQueueFactory  = new PowerofficeQueueFactory(OutputLogger, TestTypedEnvironment.AzureWebJobsStorage);
     TestWebcrmClientFactory      = new WebcrmClientFactory(OutputLogger, TestTypedEnvironment.WebcrmApiBaseUrl);
 }
        public static WebcrmToFortnoxChangeTracker Create(
            ILogger logger,
            WebcrmClientFactory webcrmClientFactory,
            FortnoxQueue fortnoxQueue)
        {
            var webcrmChangeTracker = new WebcrmToFortnoxChangeTracker(logger, webcrmClientFactory, fortnoxQueue);

            return(webcrmChangeTracker);
        }
 private WebcrmToFortnoxChangeTracker(
     ILogger logger,
     WebcrmClientFactory webcrmClientFactory,
     FortnoxQueue fortnoxQueue)
 {
     Logger = logger;
     WebcrmClientFactory = webcrmClientFactory;
     Fortnox             = fortnoxQueue;
 }
Пример #5
0
 private WebcrmChangeTracker(
     ILogger logger,
     WebcrmClientFactory webcrmClientFactory,
     PowerofficeQueue powerofficeQueue)
 {
     Logger = logger;
     WebcrmClientFactory = webcrmClientFactory;
     PowerofficeQueue    = powerofficeQueue;
 }
 private FortnoxMessageDispatcher(
     ILogger logger,
     WebcrmClientFactory webcrmClientFactory,
     FortnoxConfigService fortnoxConfigService)
 {
     Logger = logger;
     WebcrmClientFactory  = webcrmClientFactory;
     FortnoxConfigService = fortnoxConfigService;
 }
        public static async Task <FortnoxMessageDispatcher> Create(
            ILogger logger,
            WebcrmClientFactory webcrmClientFactory,
            DatabaseCredentials databaseCredentials)
        {
            var fortnoxConfigService = await FortnoxConfigService.Create(databaseCredentials);

            return(new FortnoxMessageDispatcher(logger, webcrmClientFactory, fortnoxConfigService));
        }
Пример #8
0
        public static async Task <PowerofficeMessageDispatcher> Create(
            ILogger logger,
            WebcrmClientFactory webcrmClientFactory,
            DatabaseCredentials databaseCredentials,
            PowerofficeClientFactory powerofficeClientFactory)
        {
            var powerofficeConfigService = await PowerofficeConfigService.Create(databaseCredentials);

            return(new PowerofficeMessageDispatcher(logger, webcrmClientFactory, powerofficeClientFactory, powerofficeConfigService));
        }
Пример #9
0
        public static async Task <FortnoxChangeTracker> Create(
            ILogger logger,
            WebcrmClientFactory webcrmClientFactory,
            string storageAccountConnectionString,
            DatabaseCredentials databaseCredentials)
        {
            var fortnoxConfigService = await FortnoxConfigService.Create(databaseCredentials);

            return(new FortnoxChangeTracker(logger, webcrmClientFactory, storageAccountConnectionString, fortnoxConfigService));
        }
Пример #10
0
        internal static async Task <FortnoxDataCopier> Create(
            ILogger logger,
            WebcrmClientFactory webcrmClientFactory,
            FortnoxConfiguration configuration)
        {
            var webcrmClient = await webcrmClientFactory.Create(configuration.WebcrmApiKey);

            var fortnoxApiKeys = new FortnoxApiKeys(configuration.FortnoxAccessToken, configuration.FortnoxClientSecret);

            return(new FortnoxDataCopier(logger, fortnoxApiKeys, webcrmClient));
        }
Пример #11
0
 private PowerofficeMessageDispatcher(
     ILogger logger,
     WebcrmClientFactory webcrmClientFactory,
     PowerofficeClientFactory powerofficeClientFactory,
     PowerofficeConfigService powerofficeConfigService)
 {
     Logger = logger;
     WebcrmClientFactory      = webcrmClientFactory;
     PowerofficeClientFactory = powerofficeClientFactory;
     PowerofficeConfigService = powerofficeConfigService;
 }
Пример #12
0
 private FortnoxChangeTracker(
     ILogger logger,
     WebcrmClientFactory webcrmClientFactory,
     string storageAccountConnectionString,
     FortnoxConfigService fortnoxConfigService)
 {
     Logger = logger;
     WebcrmClientFactory            = webcrmClientFactory;
     StorageAccountConnectionString = storageAccountConnectionString;
     FortnoxConfigService           = fortnoxConfigService;
 }
        public static async Task <WebcrmToPowerofficeChangeTracker> Create(
            ILogger logger,
            WebcrmClientFactory webcrmClientFactory,
            PowerofficeQueueFactory powerofficeQueueFactory)
        {
            var powerofficeQueue = await powerofficeQueueFactory.Create();

            var webcrmChangeTracker = new WebcrmToPowerofficeChangeTracker(logger, webcrmClientFactory, powerofficeQueue);

            return(webcrmChangeTracker);
        }
Пример #14
0
        public static async Task <WebcrmChangeTracker> Create(
            ILogger logger,
            WebcrmClientFactory webcrmClientFactory,
            string storageAccountConnectionString)
        {
            var powerofficeQueue = await PowerofficeQueue.Create(logger, storageAccountConnectionString);

            var webcrmChangeTracker = new WebcrmChangeTracker(logger, webcrmClientFactory, powerofficeQueue);

            return(webcrmChangeTracker);
        }
Пример #15
0
        public static async Task <PowerofficeDataCopier> Create(
            ILogger logger,
            WebcrmClientFactory webcrmClientFactory,
            PowerofficeClientFactory powerofficeClientFactory,
            PowerofficeConfiguration configuration)
        {
            var powerofficeClient = await powerofficeClientFactory.Create(configuration.PowerofficeClientKey);

            var webcrmClient = await webcrmClientFactory.Create(configuration.WebcrmApiKey);

            return(new PowerofficeDataCopier(logger, configuration, powerofficeClient, webcrmClient));
        }
Пример #16
0
        public static async Task Run(
            [QueueTrigger(Constants.FortnoxQueueName)] string queueItem,
            ILogger logger)
        {
            try
            {
                var webcrmClientFactory      = new WebcrmClientFactory(logger, TypedEnvironment.WebcrmApiBaseUrl);
                var fortnoxMessageDispatcher = await FortnoxMessageDispatcher.Create(logger, webcrmClientFactory, TypedEnvironment.DatabaseCredentials);

                var message = JsonConvert.DeserializeObject <FortnoxQueueMessage>(queueItem);
                await fortnoxMessageDispatcher.HandleDequeuedMessage(message);
            }
            catch (SwaggerException ex)
            {
                SwaggerExceptionLogger.Log(ex);
            }
        }
        public static async Task Run(
            [QueueTrigger(Constants.PowerofficeQueueName)] string queueItem,
            ILogger logger)
        {
            logger.LogTrace($"Dequeuing message from the '{Constants.PowerofficeQueueName}' queue.");

            try
            {
                var webcrmClientFactory      = new WebcrmClientFactory(logger, TypedEnvironment.WebcrmApiBaseUrl);
                var powerofficeClientFactory = new PowerofficeClientFactory(TypedEnvironment.PowerofficeApiSettings);
                var dispatcher = await PowerofficeMessageDispatcher.Create(logger, webcrmClientFactory, TypedEnvironment.DatabaseCredentials, powerofficeClientFactory);

                var message = JsonConvert.DeserializeObject <PowerofficeQueueMessage>(queueItem);
                await dispatcher.HandleDequeuedMessage(message);
            }
            catch (SwaggerException ex)
            {
                SwaggerExceptionLogger.Log(ex);
            }
        }