public async Task <IActionResult> Add(IFormFileCollection files, [FromForm] SocialInfo socialInfo)
        {
            if (files?.Count > 0)
            {
                var imagePaths = new List <string>();

                foreach (var file in files)
                {
                    if (file.Length == 0)
                    {
                        continue;
                    }

                    var imagePath = $"{Path.GetTempFileName()}.{file.FileName}";

                    using (var fileStream = new FileStream(imagePath, FileMode.Append))
                    {
                        await file.CopyToAsync(fileStream);
                    }

                    var faces = await _imageService.DetectFaceAsync(imagePath);

                    var biggestFace = faces.OrderByDescending(x => x.Width * x.Height).FirstOrDefault();

                    if (biggestFace == null)
                    {
                        continue;
                    }

                    imagePaths.Add(biggestFace.Path);
                }

                if (imagePaths.Count > 0)
                {
                    var id = await _idService.GetAsync();

                    await _imageService.AddAsync(id, imagePaths);

                    if (socialInfo != null)
                    {
                        await _tagService.AddOrUpdateAsync(id, socialInfo);
                    }

                    return(Ok(id));
                }
            }

            return(BadRequest());
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Create(Tag tag)
        {
            if (ModelState.IsValid)
            {
                await _tagService.AddOrUpdateAsync(tag);

                await _tagService.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(tag));
        }
        public async Task HandleAsync(TagsCreated @event)
        {
            var tags = @event.Tags.Select(x => new Tag
            {
                Id           = x.Id,
                Name         = x.Name,
                Translations = x.Translations.Select(t => new TranslatedTag
                {
                    Id      = t.Id,
                    Name    = t.Name,
                    Culture = t.Culture
                }).ToList()
            }).ToList();

            await _handler
            .Run(async() => await _tagService.AddOrUpdateAsync(tags))
            .OnError((ex, logger) =>
            {
                logger.Error(ex, $"Error occured while handling {@event.GetType().Name} event");
            })
            .ExecuteAsync();
        }