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()); }