Ejemplo n.º 1
0
        public async Task <IActionResult> Create([FromBody] List <CreateImageDto> createImageDto)
        {
            foreach (var i in createImageDto)
            {
                var mapped = _mapper.Map <Images>(i);
                await _imageRepository.Create(mapped);

                await _imageRepository.Save();

                var tag = createImageDto.FirstOrDefault(a => a.ImageUrl.ToLower() == i.ImageUrl.ToLower());
                if (tag != null)
                {
                    foreach (var t in tag.Tag)
                    {
                        var findTag = await _tagRepository.Query().FirstOrDefaultAsync(a => a.Name.ToLower() == t.ToString().ToLower());

                        if (findTag == null)
                        {
                            var newTag = new Tag
                            {
                                Name = t
                            };
                            await _tagRepository.Create(newTag);

                            await _tagRepository.Save();

                            await _imagetagRepository.Create(new ImageTag()
                            {
                                TagId   = newTag.Id,
                                ImageId = mapped.Id
                            });

                            await _imagetagRepository.Save();
                        }
                        else
                        {
                            await _imagetagRepository.Create(new ImageTag()
                            {
                                TagId   = findTag.Id,
                                ImageId = mapped.Id
                            });

                            await _imagetagRepository.Save();
                        }
                    }
                }
                //find tag by name
                //create file info
                var fileInfo = _mapper.Map <FileInfo>(i.FileInfo);
                if (fileInfo != null)
                {
                    fileInfo.ImageId = mapped.Id;

                    await _fileInfoRepository.Create(fileInfo);

                    await _fileInfoRepository.Save();
                }


                //create color
                //find if color does not exist
                foreach (var color in i.Colors)
                {
                    var mappedColor = _mapper.Map <Color>(color);
                    var findcolor   = await _colorRepository.Query().FirstOrDefaultAsync(a => a.Code == mappedColor.Code);

                    var imageColor = new ImageColor()
                    {
                        ImageId = mapped.Id,
                        Level   = color.Level
                    };
                    if (findcolor == null)
                    {
                        //create that color
                        await _colorRepository.Create(mappedColor);

                        await _colorRepository.Save();

                        imageColor.ColorId = mappedColor.Id;
                    }
                    else
                    {
                        imageColor.ColorId = findcolor.Id;
                    }
                    //add color to ImageColorTable
                    await _imageColorRepository.Create(imageColor);

                    await _imageColorRepository.Save();
                }
            }
            return(StatusCode(201));
        }