public async Task <ActionResult <IContentBlockViewModel> > AttachDataBlock(
     Guid releaseId, Guid contentSectionId, ContentBlockAttachRequest request)
 {
     return(await _contentService
            .AttachDataBlock(releaseId, contentSectionId, request)
            .HandleFailuresOrOk());
 }
        public Task <Either <ActionResult, IContentBlockViewModel> > AttachDataBlock(Guid releaseId, Guid contentSectionId,
                                                                                     ContentBlockAttachRequest request)
        {
            return(CheckContentSectionExists(releaseId, contentSectionId)
                   .OnSuccess(CheckCanUpdateRelease)
                   .OnSuccess(async tuple =>
            {
                var(_, section) = tuple;

                var blockToAttach =
                    _context.ContentBlocks.FirstOrDefault(block => block.Id == request.ContentBlockId);

                if (blockToAttach == null)
                {
                    return NotFound <IContentBlockViewModel>();
                }

                if (!(blockToAttach is DataBlock dataBlock))
                {
                    return ValidationActionResult(IncorrectContentBlockTypeForAttach);
                }

                if (dataBlock.ContentSectionId.HasValue)
                {
                    return ValidationActionResult(ContentBlockAlreadyAttachedToContentSection);
                }

                return await AddContentBlockToContentSectionAndSave(request.Order, section, dataBlock);
            }));
        }