public async Task <VisitorResponseDto> RegisterVisitor(VisitorRequestDto visitorRequest) { Domain.Entities.ShortUrl shortUrl = _shortUrlRepository.GetByFilter(x => x.ShortURL == visitorRequest.ShortUrl).Result.FirstOrDefault(); var newVisitor = new Domain.Entities.Visitor { Date = DateTime.Now, IsDeleted = false, Ip = visitorRequest.Ip, UserAgent = visitorRequest.UserAgent, ShortUrl = shortUrl }; await _visitorRepository.Create(newVisitor); try { _visitorRepository.Commit(); return(new VisitorResponseDto { Message = "Visitor registered", Success = true }); } catch (Exception ex) { _visitorRepository.Rollback(); throw ex; } }
public async Task <IActionResult> Get(string shorturl, [FromQuery(Name = "ipAdress")] string ipAdress = null, [FromQuery(Name = "redirect")] bool redirect = true) { try { ShortUrlDto shortUrl = _shortUrlService.GetItemFromDataStore(shorturl); if (shortUrl != null) { var userAgent = HttpContext.Request.Headers["User-Agent"]; string parsedUserAgent = Convert.ToString(userAgent[0]); var ip = ipAdress ?? GetIpAddress(); VisitorRequestDto visitorRequest = new VisitorRequestDto { Ip = ip, ShortUrl = shorturl, UserAgent = parsedUserAgent }; VisitorResponseDto visitorResponse = await _visitorService.RegisterVisitor(visitorRequest); if (visitorResponse.Success) { if (redirect) { return(Redirect(shortUrl.LongURL)); } return(Ok(shortUrl)); } return(BadRequest("Can't register visitor")); } return(NotFound()); } catch (Exception ex) { return(BadRequest(ex.Message)); } }