示例#1
0
        /// <summary>
        /// Создает дочерние документы и прикрепляет их к родительскому документу.
        /// <para></para>
        /// Дочерние документы добавляются в материлы заявок родительского документа.
        /// </summary>
        /// <param name="attachDto">Модель для прикрепления дочерних документов к родительскому документов.</param>
        /// <returns>Асинхронная операция.</returns>
        public async Task CreateMaterialsAndAttachThemToParent(AttachMaterialDto attachDto)
        {
            await AddAttachmentsToMaterials(new[] { attachDto.Parent });

            IEnumerable <MaterialDetailDto> childMaterials = attachDto.Children;

            foreach (MaterialDetailDto childMaterial in childMaterials)
            {
                childMaterial.Id = await CreateDocumentAndGetId(childMaterial);
            }

            await AddAttachmentsToMaterials(childMaterials);

            List <int> childMaterialIds = childMaterials
                                          .Select(material => material.Id.Value)
                                          .ToList();

            await _executor
            .GetHandler <LinkDocumentWithParentRequestsHandler>()
            .Process(handler => handler.ExecuteAsync(attachDto.Parent.Id ?? 0, childMaterialIds));
        }
示例#2
0
        public async Task <IActionResult> AttachToParent([FromBody] AttachMaterialDto attachDto)
        {
            await _uploadService.CreateMaterialsAndAttachThemToParent(attachDto);

            return(Ok());
        }