Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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);
            };
        }
Esempio n. 3
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());
            };
        }
Esempio n. 4
0
        public async Task <IActionResult> Index([FromBody] ATGVisitor visitor)
        {
            var isUpdated = await atgRepo.UpdateByID(visitor);

            return(Json(visitor));
        }