Ejemplo n.º 1
0
        public async Task <Either <ActionResult, DataBlockViewModel> > Update(
            Guid id,
            DataBlockUpdateViewModel dataBlockUpdate)
        {
            return(await
                   GetReleaseContentBlock(id)
                   .OnSuccessDo(rcb => _userService.CheckCanUpdateRelease(rcb.Release))
                   .OnSuccess(rcb => CheckIsDataBlock(rcb)
                              .OnSuccessDo(async dataBlock =>
            {
                // TODO EES-753 Alter this when multiple charts are supported
                var infographicChart = dataBlock.Charts.OfType <InfographicChart>().FirstOrDefault();
                var updatedInfographicChart =
                    dataBlockUpdate.Charts.OfType <InfographicChart>().FirstOrDefault();

                if (infographicChart != null &&
                    infographicChart.FileId != updatedInfographicChart?.FileId)
                {
                    await _releaseFileService.Delete(rcb.ReleaseId, new Guid(infographicChart.FileId));
                }

                _mapper.Map(dataBlockUpdate, dataBlock);

                _context.DataBlocks.Update(dataBlock);
                await _context.SaveChangesAsync();
            })
                              .OnSuccessDo(() => InvalidateDataBlockCache(rcb.ReleaseId, rcb.ContentBlockId)))
                   .OnSuccess(() => Get(id)));
        }
 public async Task <ActionResult <DataBlockViewModel> > UpdateDataBlock(Guid id,
                                                                        DataBlockUpdateViewModel dataBlock)
 {
     return(await _dataBlockService
            .Update(id, dataBlock)
            .HandleFailuresOrOk());
 }