public IActionResult Create(ReleaseCreateViewModel model) { var dto = _mapper.Map <Dtos.ReleaseDto>(model); var result = Dtos.ReleaseDtoModule.toDomain(dto); if (result.IsError) { foreach (var domainMessage in result.ErrorValue) { var key = string.Concat(nameof(SharedResources.Error), ".", domainMessage.ToString()); ModelState.AddModelError(string.Empty, _localizer[key]); } } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } else { var release = Dtos.ReleaseDtoModule.fromDomain(result.ResultValue); _changelogData.Create(release); return(Ok(release)); } }
public async Task <ActionResult <ReleaseViewModel> > CreateRelease(ReleaseCreateViewModel release, Guid publicationId) { release.PublicationId = publicationId; return(await _releaseService .CreateRelease(release) .HandleFailuresOrOk()); }
public async Task <Either <ActionResult, ReleaseViewModel> > CreateRelease(ReleaseCreateViewModel releaseCreate) { return(await _persistenceHelper .CheckEntityExists <Publication>(releaseCreate.PublicationId) .OnSuccess(_userService.CheckCanCreateReleaseForPublication) .OnSuccess(async _ => await ValidateReleaseSlugUniqueToPublication(releaseCreate.Slug, releaseCreate.PublicationId)) .OnSuccess(async() => { var release = _mapper.Map <Release>(releaseCreate); release.Id = _guidGenerator.NewGuid(); if (releaseCreate.TemplateReleaseId.HasValue) { CreateGenericContentFromTemplate(releaseCreate.TemplateReleaseId.Value, release); } else { release.GenericContent = new List <ContentSection>(); } release.SummarySection = new ContentSection { Type = ContentSectionType.ReleaseSummary }; release.KeyStatisticsSection = new ContentSection { Type = ContentSectionType.KeyStatistics }; release.KeyStatisticsSecondarySection = new ContentSection { Type = ContentSectionType.KeyStatisticsSecondary }; release.HeadlinesSection = new ContentSection { Type = ContentSectionType.Headlines }; release.Created = DateTime.UtcNow; release.CreatedById = _userService.GetUserId(); await _context.Releases.AddAsync(release); await _context.SaveChangesAsync(); return await GetRelease(release.Id); })); }