Пример #1
0
        async Task <List <int> > getTagIdFromNames(PostsDto postDto)
        {
            var tagNames = postDto.tagNames;

            // get tag already
            string sqlGetTag   = $"Name IN ('{string.Join("','", tagNames)}')";
            var    alreadyTags = await _tagRepository.GetList(sqlGetTag);

            var alreadyTagNames = alreadyTags.Select(t => t.Name).ToList();

            // get new tag
            var newTagsNames = tagNames.Except(alreadyTagNames).ToList();

            var newTagIds = new List <int>();

            if (newTagsNames.Count > 0)
            {
                var tagDtos = new List <TagsDto>();
                foreach (var nt in newTagsNames)
                {
                    tagDtos.Add(new TagsDto()
                    {
                        Name = nt
                    });
                }
                var inputTags = _mapper.Map <List <Tags> >(tagDtos);
                var tagAdds   = await _tagRepository.AddBulk(inputTags);

                newTagIds = tagAdds.Split(",").Select(t => Convert.ToInt32(t)).ToList();
            }

            // join 2 list id tag
            var alreadyTagIds = alreadyTags.Select(t => t.Id).ToList();
            var result        = alreadyTagIds.Concat(newTagIds).ToList();

            return(result);
        }