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();
        }
Beispiel #2
0
 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);
 }
Beispiel #6
0
 public void SavePage([FromBody] SaveContentPageRequestDto request)
 {
     _pageBusiness.SavePage(request);
 }