public IActionResult Show(int?id) { if (!IsUser()) { return(Forbid()); } if (!id.HasValue) { return(NotFound()); } var url = service.GetById(id.Value); if (url == null) { return(NotFound()); } string hostName = _hostName ?? Request.Host.ToString(); string path = AlphaNumberId.ToAlphaNumberId(url.Id); string shortUrlPath = $"https://{hostName}/{path}"; //ViewData["HostName"] = hostName; //ViewData["Path"] = path; var activity = database .ShortUrlActivity .Where(a => a.ShortUrlId == url.Id) .OrderBy(a => a.TimeStamp); int hitCount = activity.Count(); var lastHit = hitCount > 0 ? activity.Max(h => h.TimeStamp) : (DateTime?)null; var model = new ShortUrlShow { Id = url.Id, HostName = hostName, Path = url.Path, OriginalUrl = url.OriginalUrl, ShortUrl = shortUrlPath, HitCount = hitCount, LastHit = lastHit, Subject = url.Subject, LetterLink = url.LetterLink, Note = url.Note }; return(View(model)); }
public List <QRCodeHit> QRCodeHitsForUser(string userName) { var urls = context .ShortUrls .Where(url => string.Equals( url.UserName, userName, StringComparison.OrdinalIgnoreCase)) .ToList(); var hits = new List <QRCodeHit>(); foreach (var url in urls) { var activity = context .ShortUrlActivity .Where(a => a.ShortUrlId == url.Id) .OrderBy(a => a.TimeStamp); string lastIPAddress = activity.LastOrDefault()?.IPAddress; DateTime?lastHit = null; if (activity.Count() > 0) { lastHit = activity.Max(a => a.TimeStamp); } hits.Add( new QRCodeHit { Id = url.Id, ShortUrl = AlphaNumberId.ToAlphaNumberId(url.Id), OriginalUrl = url.OriginalUrl, Created = url.Created, HitCount = context.ShortUrlActivity.Count(a => a.ShortUrlId == url.Id), LastIPAddress = lastIPAddress, LastTimeStamp = lastHit, UserName = url.UserName, Subject = url.Subject, Note = url.Note }); } return(hits); }