Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
 public ActionResult Add(AddPostInput input)
 {
     this.Service.Add(input);
     return(this.AddSuccessMsg());
 }
Exemplo n.º 3
0
 public void Add(AddPostInput input)
 {
     this.InsertFromDto(input);
 }
Exemplo n.º 4
0
        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));
        }