public async Task <AddPostPayload> AddPostAsync(AddPostInput input, [ScopedService] ApiContext context) { Post post = new() { Title = input.Title, Content = input.Content, Created = DateTimeOffset.UtcNow }; if (await context.Posts.FirstOrDefaultAsync(p => p.Title == input.Title) .ConfigureAwait(false) != null) { return(new AddPostPayload(new ApiError("POST_WITH_TITLE_EXISTS", "A post with that title already exists."))); } post = context.Posts.Add(post).Entity; await context.SaveChangesAsync() .ConfigureAwait(false); List <int> tagIds = input.Tags.ConvertAll(t => t.Id); post.Tags = await context.Tags.AsNoTracking() .Where(t => tagIds.Contains(t.Id)) .ToListAsync() .ConfigureAwait(false); await context.SaveChangesAsync() .ConfigureAwait(false); return(new AddPostPayload(post)); }
public ActionResult Add(AddPostInput input) { this.Service.Add(input); return(this.AddSuccessMsg()); }
public void Add(AddPostInput input) { this.InsertFromDto(input); }
public async Task <AddPostPayload> AddPostAsync( AddPostInput input, [ScopedService] LeagueDbContext context) { Post post = new Post { UserId = input.UserId, Champion = input.Champion, Role = input.Role }; foreach (var inputBuild in input.Build) { Build build = new Build { Post = post, Type = inputBuild.Type }; foreach (var inputItem in inputBuild.Items) { Item item = new Item { Name = inputItem }; BuildItem buildItem = new BuildItem { Build = build, Item = item }; context.BuildItems.Add(buildItem); // context.Items.Add(item); } post.Builds.Add(build); } foreach (var inputRune in input.Rune) { Page primary = new Page(); Page secondary = new Page(); Rune rune = new Rune { Post = post, PrimaryPage = primary, SecondaryPage = secondary }; foreach (var inputSkill in inputRune.Primary) { Skill skill = new Skill { Name = inputSkill }; PageSkill pageSkill = new PageSkill { Page = primary, Skill = skill }; context.PageSkills.Add(pageSkill); } foreach (var inputSkill in inputRune.Secondary) { Skill skill = new Skill { Name = inputSkill }; PageSkill pageSkill = new PageSkill { Page = secondary, Skill = skill }; context.PageSkills.Add(pageSkill); } context.Runes.Add(rune); } context.Add(post); await context.SaveChangesAsync(); return(new AddPostPayload(post)); }