public GetAttachedFileMetadataResult GetAttachedFileMetadata(GetAttachedFileMetadataArgument argument)
        {
            var result = new GetAttachedFileMetadataResult();
            var query  = new GetAttachedFileMetadata.Query {
                Result = result, Argument = argument
            };

            _mediator.Send(query).Wait();
            return(result);
        }
        public void Handle(GetAttachedFileMetadataArgument argument,
                           GetAttachedFileMetadataResult result)
        {
            var dicProtectionDocTypeCode =
                _dictionaryHelper.GetDictionaryCodeByExternalId(nameof(DicProtectionDocType), argument.MainDocumentType.UID);
            var list = new List <AttachedFileMetadata>();

            var fileTypes = GetFromDbAttachmentFileTypeUid(dicProtectionDocTypeCode);

            foreach (var fileType in fileTypes)
            {
                var required = Required(argument, fileType);
                list.Add(GetMetadata(fileType, required));
            }

            list.Sort((data1, data2) => data1.AttachedFileType.UID - data2.AttachedFileType.UID);
            result.Data = list.ToArray();
        }
        private string[] GetArgumentErrorRequisitionSendAttachedFiles(RequisitionSendArgument argument,
                                                                      SystemInfoMessage infoMessage)
        {
            var errors = new List <string>();

            var arg    = new GetAttachedFileMetadataArgument();
            var result = new GetAttachedFileMetadataResult();

            arg.MainDocumentType   = argument.PatentType;
            arg.JurApplicantExists = ExistsInApplicants(DicCustomerTypeCodes.Juridical, argument);
            arg.IpApplicantExists  = ExistsInApplicants(DicCustomerTypeCodes.SoloEntrepreneur, argument);
            //todo Поменялся механизм по которому определяется яввляется ли контрагент резидентом или нет. Не понятно как разруливать с интеграцией
            arg.NonResidentApplicantExists = ExistsInApplicants(DicCustomerTypeCodes.Nonresident, argument);
            _attachedFileMetadata.Handle(arg, result);
            var addedFileTypes = new List <int>();

            if (argument.BlockFile != null)
            {
                foreach (var attachedFile in argument.BlockFile)
                {
                    if (attachedFile == null)
                    {
                        errors.Add("BlockFile AttachedFile == null");
                        continue;
                    }

                    if (attachedFile.Type == null || attachedFile.Type.UID == 0)
                    {
                        errors.Add("Не указан тип документа BlockFile: AttachedFile.Type");
                        continue;
                    }

                    //var metaData = GetMetaData(attachedFile.Type, result.Data);

                    //if (metaData == null)
                    //{
                    //    errors.Add("BlockFile AttachedFile.Type.UID = " + attachedFile.Type.UID +
                    //               ". Данный документ не относится к этому типу патента.");
                    //    continue;
                    //}

                    if (_validationHelper.FileIsEmpty(attachedFile.File, infoMessage))
                    {
                        errors.Add("Не добавлен файл для документа BlockFile: AttachedFile.Type.UID = " +
                                   attachedFile.Type.UID);
                        continue;
                    }

                    if (!_validationHelper.FileNameIsCorrect(attachedFile.File, infoMessage))
                    {
                        errors.Add(
                            "Не указано имя файла или некорректное имя файла BlockFile: AttachedFile.File, Type.UID = " +
                            attachedFile.Type.UID);
                        continue;
                    }

                    //if (!_validationHelper.CheckFileExtension(metaData.Extensions, attachedFile.File, infoMessage))
                    //{
                    //    errors.Add(
                    //        "Неправильный формат файла для данного типа документа BlockFile: AttachedFile.Type.UID = "
                    //        + attachedFile.Type.UID + ", файл должен быть в формате\"" +
                    //        string.Join(", ", metaData.Extensions) + "\"");
                    //    continue;
                    //}

                    addedFileTypes.Add(attachedFile.Type.UID);
                }
            }

            //foreach (var metadata in result.Data)
            //{
            //    if (metadata.Required && !addedFileTypes.Contains(metadata.AttachedFileType.UID))
            //    {
            //        errors.Add("Не добавлен обязательный документ BlockFile: AttachedFile.Type.UID = " +
            //                   metadata.AttachedFileType.UID);
            //    }
            //}

            return(errors.ToArray());
        }