public Product GetById(int id, string userName, string ipAddress) { UserHostAddress userHostAddress = _userHostAddressesRepository.GetByUserHostAddress(ipAddress); if (userHostAddress == null) { userHostAddress = new UserHostAddress { IpAddress = ipAddress }; userHostAddress = _userHostAddressesRepository.Add(userHostAddress); } ApplicationUser applicationUser = !string.IsNullOrEmpty(userName) ? _usersStore.FindByNameAsync(userName).Result : null; ProductViewingInfo productViewingInfo = _productViewingInfosRepository.Get(id, userHostAddress.Id); if (productViewingInfo != null) { productViewingInfo.Count++; productViewingInfo.User = applicationUser; _productViewingInfosRepository.Update(productViewingInfo); } else { productViewingInfo = new ProductViewingInfo { UserHostAddress = userHostAddress, ProductId = id, Count = 1, User = applicationUser }; _productViewingInfosRepository.Add(productViewingInfo); } return(_productsRepository.GetById(id)); }
async private Task AddUserHostAddressTask(string hostAddress) { await Task.Run(() => { using (var dataBase = new ApplicationDbContext()) { var host = dataBase.UserHostsAddress.SingleOrDefault(userHostsAddress => userHostsAddress.HostAddress.Equals(hostAddress)); if (host == null) { var userHostsAddress = new UserHostAddress(); userHostsAddress.HostAddress = hostAddress; userHostsAddress.LastVisit = DateTime.Now; dataBase.UserHostsAddress.Add(userHostsAddress); dataBase.SaveChanges(); } else { host.LastVisit = DateTime.Now; dataBase.SaveChanges(); } } }); }