/// <summary>
 /// Отправить файлы для конвертации
 /// </summary>
 private async Task <IResultError> SendFilesToConverting(PackageDataRequestClient packageDataRequest) =>
 await _wcfClientServiceFactory.ConvertingClientServiceFactory.UsingService(service => service.Operations.SendFiles(packageDataRequest)).
 WhereContinueAsyncBind(packageResult => packageResult.OkStatus,
                        okFunc: packageResult => Task.FromResult(SendFilesToConvertingConnect(packageDataRequest, packageResult.Value)),
                        badFunc: packageResult => packageResult.
                        ResultVoidAsyncBind(_ => AbortPropertiesCommunication()).
                        MapAsync(package => package.ToResult()));
 /// <summary>
 /// Отправить файлы для конвертации после подтверждения сервера
 /// </summary>
 private IResultError SendFilesToConvertingConnect(PackageDataRequestClient packageDataRequest, PackageDataShortResponseClient packageDataResponse) =>
 packageDataResponse.
 Void(_ => _loggerService.LogByObjects(LoggerLevel.Info, LoggerAction.Upload, ReflectionInfo.GetMethodBase(this),
                                       packageDataRequest.FilesData, packageDataRequest.Id.ToString())).
 Map(_ => _fileDataProcessingStatusMark.GetPackageStatusAfterSend(packageDataRequest, packageDataResponse)).
 Void(filesStatusAfterSending => _packageData.ChangeFilesStatus(filesStatusAfterSending)).
 Map(_ => new ResultError());
        /// <summary>
        /// Пометить неотправленные файлы ошибкой и изменить статус отправленных файлов
        /// </summary>
        public PackageStatus GetPackageStatusAfterSend(PackageDataRequestClient packageDataRequest, PackageDataShortResponseClient packageDataShortResponse)
        {
            var filesNotFound      = GetFilesNotFound(packageDataRequest?.FilesData);
            var filesChangedStatus = GetPackageStatusIntermediateResponse(packageDataShortResponse);

            var filesDataUnion = filesNotFound.FileStatus.UnionNotNull(filesChangedStatus.FileStatus);

            return(new PackageStatus(filesDataUnion,
                                     packageDataShortResponse?.StatusProcessingProject ?? StatusProcessingProject.Sending,
                                     filesChangedStatus.QueueStatus));
        }
        /// <summary>
        /// Добавить пакет в очередь на конвертирование в базу
        /// </summary>
        public async Task <Unit> QueueFilesData(PackageDataRequestClient packageDataRequest, string identityName)
        {
            using var unitOfWork = _container.Resolve <IUnitOfWork>();
            await _accessService.UpdateLastClientAccess(identityName);

            var packageDataEntity = ConverterFilesDataEntitiesFromDtoClient.ToPackageData(packageDataRequest, identityName);
            await unitOfWork.Session.SaveAsync(packageDataEntity);

            await unitOfWork.CommitAsync();

            return(Unit.Value);
        }
Ejemplo n.º 5
0
 /// <summary>
 /// Конвертер пакета информации из трансферной модели в модель базы данных
 /// </summary>
 public static PackageDataEntity ToPackageData(PackageDataRequestClient packageData, string identityName) =>
 new PackageDataEntity(packageData.Id.ToString(), StatusProcessingProject.InQueue,
                       DateTimeService.GetDateTimeNow(), identityName, String.Empty, 0,
                       packageData.FilesData.Select(ToFileData).ToList(),
                       ConvertingSettingsToRequest(packageData.ConvertingSettings)).
 Void(package =>
 {
     foreach (var fileData in package.FileDataEntities)
     {
         fileData.PackageDataEntity = package;
     }
 });
 /// <summary>
 /// Проверить подпись
 /// </summary>
 public static IResultError ValidateSignature(PackageDataRequestClient packageDataRequestClient) =>
 !String.IsNullOrWhiteSpace(packageDataRequestClient.ConvertingSettings.PersonId)
     ? new ResultError()
     : new ResultError(new ErrorCommon(ErrorConvertingType.SignatureNotFound, "Необходимо выбрать подпись в параметрах"));
 /// <summary>
 /// Проверить файлы перед отправкой на корректность
 /// </summary>
 public static IResultError ValidatePackageData(PackageDataRequestClient packageDataRequestClient) =>
 ValidateSignature(packageDataRequestClient);
 /// <summary>
 /// Поставить файлы в очередь для обработки
 /// </summary>
 private async Task <Unit> QueueFilesData(PackageDataRequestClient packageDataRequest, string identityName) =>
 await _filesDataClientService.QueueFilesData(packageDataRequest, identityName);
 /// <summary>
 /// Сохранить файлы для конвертации в системе и отправить отчет
 /// </summary>
 public async Task <PackageDataShortResponseClient> SendFiles(PackageDataRequestClient packageDataRequest) =>
 await QueueFilesData(packageDataRequest, Authentication.GetIdentityName()).
 MapBindAsync(_ => CheckFilesStatusProcessing(packageDataRequest.Id));