Esempio n. 1
0
        /// <summary>
        /// Execute example
        /// </summary>
        /// <param name="cancellationToken">The cancellation token</param>
        /// <returns>The task</returns>
        public async Task Execute(CancellationToken cancellationToken)
        {
            var integrationId    = Guid.Parse("28830026-3115-4C03-9A15-E634C0BDA2FD");
            var remoteImportGuid = Guid.Parse("F2562C6C-D7F7-4E72-9CBD-9B6153148571");

            var fileName = "example.xlsx";
            var fileSize = 3000L;
            var fileDate = DateTimeOffset.UtcNow;

            var request = new StartIntegrationImportV1Request
            {
                IntegrationId = integrationId,
                FileVersionId = remoteImportGuid,
                FileName      = fileName,
                FileSize      = fileSize,
                FileDate      = fileDate,
            };

            var response = await _client
                           .Execute(request, cancellationToken)
                           .ThrowIfFailed()
                           .ConfigureAwait(Await.Default);

            Require.NotNull(response, nameof(response));
        }
        /// <summary>
        /// Start an integration import upload
        /// </summary>
        /// <param name="command">The command</param>
        /// <param name="cancellationToken">The cancellation token</param>
        /// <returns>The response</returns>
        public async Task <UploadIntegrationImportCommandResult> Handle(
            UploadIntegrationImportCommand command,
            CancellationToken cancellationToken)
        {
            Argument.NotNull(command, nameof(command));

            UploadIntegrationImportCommandResult commandResult;

            var integrationImport = command.Item;

            Require.NotNull(integrationImport, nameof(integrationImport));

            var fileInfo = _fileInfoFactory.FromFileName(integrationImport.File);

            var remoteImportId = integrationImport.FileVersionId;

            var request = new StartIntegrationImportV1Request
            {
                IntegrationId = integrationImport.IntegrationId,
                FileName      = fileInfo.Name,
                FileDate      = integrationImport.FileDate,
                FileSize      = fileInfo.Length,
                FileVersionId = remoteImportId
            };

            var response = await _client
                           .Execute(request, cancellationToken)
                           .ConfigureAwait(Await.Default);

            if (response.IsSuccessful)
            {
                command.IntegrationImportId = response.Model.IntegrationImportId;

                commandResult = await _handler
                                .Handle(command, cancellationToken)
                                .ConfigureAwait(Await.Default);
            }
            else
            {
                commandResult = new UploadIntegrationImportCommandResult
                {
                    Success = false,
                    Message = "Error starting integration import",
                };
            }

            return(commandResult);
        }