public async Task <Either <ActionResult, MethodologySummaryViewModel> > UpdateMethodologyAsync(Guid id,
                                                                                                       UpdateMethodologyRequest request)
        {
            return(await _persistenceHelper.CheckEntityExists <Methodology>(id)
                   .OnSuccess(methodology => CheckCanUpdateMethodologyStatus(methodology, request.Status))
                   .OnSuccess(_userService.CheckCanUpdateMethodology)
                   .OnSuccess(async methodology =>
            {
                if (methodology.Live)
                {
                    // Leave slug
                    return methodology;
                }
                var slug = SlugFromTitle(request.Title);
                return (await ValidateMethodologySlugUniqueForUpdate(methodology.Id, slug)).Map(_ =>
                {
                    methodology.Slug = slug;
                    return methodology;
                });
            })
                   .OnSuccess(async methodology =>
            {
                methodology.InternalReleaseNote = request.InternalReleaseNote ?? methodology.InternalReleaseNote;
                methodology.Status = request.Status;
                methodology.Title = request.Title;
                methodology.Updated = DateTime.UtcNow;

                _context.Methodologies.Update(methodology);
                await _context.SaveChangesAsync();

                if (methodology.Status == MethodologyStatus.Approved && methodology.Live)
                {
                    await _publishingService.MethodologyChanged(methodology.Id);
                }

                return await GetSummaryAsync(id);
            }));
        }