Ejemplo n.º 1
0
        public async Task <SqzLinkDto> Handle(CreateCommand request, CancellationToken cancellationToken)
        {
            var sqzLinkEntity = _mapper.Map <SqzLink>(request);

            sqzLinkEntity.Key = _urlShorteningService.ShortenUrl(request.DestinationUrl);

            _context.Set <SqzLink>().Add(sqzLinkEntity);
            await _context.SaveChangesAsync(cancellationToken);

            return(new SqzLinkDto {
                SqzLink = sqzLinkEntity.Link
            });
        }
Ejemplo n.º 2
0
        public async Task <Unit> Handle(EditCommand request, CancellationToken cancellationToken)
        {
            var sqzLinkToFind = request.SqzLink.Replace("%2F", "/");

            var sqzLink = await _context.Set <SqzLink>()
                          .FirstOrDefaultAsync(entity => entity.Link == sqzLinkToFind);

            if (sqzLink is null)
            {
                throw new NotFoundException($"SqzLink \"{sqzLinkToFind}\" was not found.");
            }

            _mapper.Map(request, sqzLink);

            _context.Set <SqzLink>().Update(sqzLink);
            var savingResult = await _context.SaveChangesAsync(cancellationToken);

            return(new Unit());
        }
Ejemplo n.º 3
0
        public async Task <NavigateDto> Handle(NavigateCommand request, CancellationToken cancellationToken)
        {
            var sqzLinkToFind = request.SqzLink.Replace("%2F", "/");

            var sqzLinkEntity = await _context.Set <SqzLink>().FirstOrDefaultAsync(entity => entity.Link == sqzLinkToFind);

            if (sqzLinkEntity == null)
            {
                throw new NotFoundException($"SqzLink \"{sqzLinkToFind}\" was not found.");
            }

            sqzLinkEntity.Clicks++;

            _context.Set <Domain.Entities.SqzLink>().Update((Domain.Entities.SqzLink)sqzLinkEntity);
            var savingResult = await _context.SaveChangesAsync(cancellationToken);

            return(new NavigateDto {
                DestinationUrl = sqzLinkEntity.DestinationUrl
            });
        }