public void SavePage(SaveContentPageRequestDto request) { var system = _context.Systems .Include(x => x.Pages) .ThenInclude(x => x.Editions) .Include(x => x.Categories) .First(x => x.ExternalId == request.SystemExternalId); Edition newEdition; var existingPage = system.Pages .FirstOrDefault(x => x.ExternalId == request.ExternalId); if (existingPage == null) { newEdition = new Edition(); newEdition.SetAwardedXp(request.AwardedXp); newEdition.SetEditionDescription(string.Empty); existingPage = new ContentPage(request.Title); existingPage.SetExternalId(request.ExternalId); system.Pages.Add(existingPage); } else { var latestEdition = existingPage.LatestEdition(); newEdition = new Edition(latestEdition.Version); newEdition.SetAwardedXp(latestEdition.CalculatedAwardedXp()); newEdition.SetEditionDescription(request.EditionDescription); newEdition.IncreaseVersion((Edition.VersionUpdate)request.Version); } newEdition.SetContents(request.Contents); existingPage.AddEdition(newEdition); if (request.Categories != null) { foreach (var category in request.Categories) { if (!existingPage.Categories.Any(x => x.Category.Name == category.Name)) { var newCategory = new Category(category.Name); if (category.Badge != null) { var badge = system.Badges .Where(x => x.SystemId == system.Id) .FirstOrDefault(x => x.Name == category.Badge.Name); newCategory.SetBadge(badge); } existingPage.AddCategory(newCategory); } } } _context.SaveChanges(); }
public override void SavePage(SaveContentPageRequestDto request) { try { base.SavePage(request); } catch (Exception ex) { _log.LogError(ex.Message, ex); throw; } }
public override void SavePage(SaveContentPageRequestDto request) { var system = _context.Systems .Include(x => x.Pages) .AsNoTracking() .FirstOrDefault(x => x.ExternalId == request.SystemExternalId); if (system == null) { throw new SystemNotFoundException(request.SystemExternalId, $"External Id '{request.SystemExternalId}' is not valid.", "CreateContentPageDto.SystemExternalId"); } base.SavePage(request); }
public override void SavePage(SaveContentPageRequestDto request) { base.SavePage(request); //Log event var system = _context.Systems .FirstOrDefault(x => x.ExternalId == request.SystemExternalId); var ev = new Event { System = system }; ev.SetName($"Edition '{request.Title}' was added!"); ev.SetTimestamp(DateTime.UtcNow); ev.SetType(EventType.EditionAdded); _logger.LogEvent($"Edition '{request.Title}' was added!", ev); }
public virtual void SavePage(SaveContentPageRequestDto request) { _inner.SavePage(request); }
public void SavePage([FromBody] SaveContentPageRequestDto request) { _pageBusiness.SavePage(request); }