public async Task <IActionResult> Index() { string myUserAgent = Request.Headers[HeaderNames.UserAgent]; var userAgent0 = myUserAgent.Replace("Mozilla/5.0 ", ""); var userAgent1 = userAgent0.Replace(" Safari/537.36", ""); var userAgent2 = userAgent1.Replace(" AppleWebKit/537.36 (KHTML, like Gecko) ", "|"); var userAgent = userAgent2.Split('|'); System.Net.IPAddress requstIP = Request.HttpContext.Connection.RemoteIpAddress; ATGVisitor visitor = new ATGVisitor { IPAddress = requstIP.ToString(), OS = userAgent[0], Browser = userAgent[1], }; List <ATGVisitor> visitorList = await this.atgRepo.GetAllVisitors(); int countM = visitorList.Where(_ => _.SexID == 1).Count(); int countF = visitorList.Where(_ => _.SexID == 2).Count(); visitor.malePercent = countM + countF == 0 ? 0 : (int)decimal.Round((decimal)countM * 100 / (countM + countF)); visitor.femalePercent = countM + countF == 0 ? 0 : 100 - visitor.malePercent; visitor.VisitorID = await this.atgRepo.CreateNewVisitor(visitor); return(Ok(visitor)); }
public async Task <bool> UpdateByID(ATGVisitor visitor) { using (var connection = Connection) { connection.Open(); string sQuery = "UPDATE dbo.ATGVisitor SET SexID = @sexid WHERE VisitorID = @visitorid"; var count = await connection.ExecuteAsync(sQuery, new { sexid = visitor.SexID, visitorid = visitor.VisitorID }); return(count > 0); }; }
public async Task <int> CreateNewVisitor(ATGVisitor visitor) { using (var connection = Connection) { connection.Open(); string sQuery = $"INSERT INTO dbo.ATGVisitor VALUES (@ip, @os, @browser, @sexID); SELECT CAST(SCOPE_IDENTITY() AS int)"; var result = await connection.QueryAsync <int>(sQuery, new { ip = visitor.IPAddress, os = visitor.OS, browser = visitor.Browser, sexID = visitor.SexID }); return(result.Single()); }; }
public async Task <IActionResult> Index([FromBody] ATGVisitor visitor) { var isUpdated = await atgRepo.UpdateByID(visitor); return(Json(visitor)); }