public async Task TestSaveThisAttempt()
        {
            await using var context = GetAttemptContext("TestSaveThisAttempt");
            var repository      = new AttemptRepository(context);
            var taxFileNumber   = "12345678";
            var clientIpAddress = "192.168.1.1";
            var insertTime      = DateTime.Now;
            await repository.SaveThisAttempt(taxFileNumber, clientIpAddress);

            var attempts = await context.Attempts.ToListAsync();

            Assert.AreEqual(1, attempts.Count);
            Assert.AreEqual(taxFileNumber, attempts[0].TaxFileNumber);
            Assert.AreEqual(clientIpAddress, attempts[0].ClientIpAddress);
            Assert.That(attempts[0].AttemptTime, Is.EqualTo(insertTime).Within(1).Minutes);
        }
Пример #2
0
        private static TestDataViewModel GetTest(DataSource source)
        {
            if (TestViewModels.ContainsKey("average"))
            {
                return(TestViewModels["average"]);
            }
            TestViewModels.Add("average", new TestDataViewModel("average"));


            if (Tests.Count != AttemptRepository.GetTestCount(source))
            {
                Tests.Clear();
                foreach (var test in AttemptRepository.GetTests(source))
                {
                    Tests.Add(test.ID, test);
                }
            }

            var tests = Tests.Values.ToList();

            var averageHitPercentagePerGesture = GetAverageHitPercentagePerTurn(tests);
            var averageTimePerTargetPerGesture = GetAverageTimePerTarget(tests);


            foreach (var gesture in AllGestures)
            {
                GestureInfo info = new GestureInfo();
                info.HitData       = GetJSPercentageArray(averageHitPercentagePerGesture[gesture], gesture);
                info.TimeData      = GetJSTimeArray(averageTimePerTargetPerGesture[gesture], gesture);
                info.HitPercentage = averageHitPercentagePerGesture[gesture].Last() * 100f;

                List <Attempt> attempts = new List <Attempt>();
                foreach (var test in tests)
                {
                    attempts.AddRange(test.Attempts[gesture]);
                }

                TestViewModels["average"].GestureInformation[GetGestureTypeString(gesture)] = info;
            }

            return(TestViewModels["average"]);
        }
        public async Task TestGetAttempts()
        {
            await using var context = GetAttemptContext("TestGetAttempts");
            var repository      = new AttemptRepository(context);
            var taxFileNumber1  = "12345678";
            var clientIpAddress = "192.168.1.1";
            await repository.SaveThisAttempt(taxFileNumber1, clientIpAddress);

            var taxFileNumber2 = "123456789";
            await repository.SaveThisAttempt(taxFileNumber2, clientIpAddress);

            var taxFileOtherIp = "12341234";
            await repository.SaveThisAttempt(taxFileOtherIp, "192.168.2.2");

            var attempts = repository.GetAttemptsFor(clientIpAddress);

            Assert.AreEqual(2, attempts.Length);
            Assert.AreEqual(taxFileNumber1, attempts[0]);
            Assert.AreEqual(taxFileNumber2, attempts[1]);
        }
        public async Task TestClearOldAttempts()
        {
            await using var context = GetAttemptContext("TestClearOldAttempts");
            var repository      = new AttemptRepository(context);
            var taxFileNumber1  = "12345678";
            var clientIpAddress = "192.168.1.1";
            await repository.SaveThisAttempt(taxFileNumber1, clientIpAddress);

            var delayTimeMs = 500;
            await Task.Delay(delayTimeMs);

            var taxFileNumber2 = "123456789";
            await repository.SaveThisAttempt(taxFileNumber2, clientIpAddress);

            await repository.ClearOldAttempts(delayTimeMs);

            var attempts = repository.GetAttemptsFor(clientIpAddress);

            Assert.AreEqual(1, attempts.Length);
            Assert.AreEqual(taxFileNumber2, attempts[0]);
        }
Пример #5
0
        public ActionResult GetImage(string testId, GestureType type, DataSource source = DataSource.Old)
        {
            List <Attempt> attempts = new List <Attempt>();

            if (testId != "average")
            {
                attempts = AttemptRepository.GetTest(testId, source).Attempts[type];
            }
            else
            {
                var tests = AttemptRepository.GetTests(source);
                foreach (var test in tests)
                {
                    attempts.AddRange(test.Attempts[type]);
                }
            }
            MemoryStream ms;

            DataVisualizer.DrawHitBox(attempts, out ms);
            return(File(ms, "image/png"));
        }
Пример #6
0
        public ActionResult UserInfo(string testId, DataSource source = DataSource.Old)
        {
            if (testId == null)
            {
                testId = "average";
            }

            int totalCount = AttemptRepository.GetTestCount(source);

            if (testId == "average")
            {
                ViewBag.NextLink = 1;
                ViewBag.PrevLink = totalCount;
            }
            else
            {
                int curr = Int32.Parse(testId);
                if (curr + 1 > totalCount)
                {
                    ViewBag.NextLink = "average";
                }
                else
                {
                    ViewBag.NextLink = (curr + 1).ToString();
                }
                if (curr - 1 < 1)
                {
                    ViewBag.PrevLink = "average";
                }
                else
                {
                    ViewBag.PrevLink = (curr - 1).ToString();
                }
            }

            return(View(TestDataViewModelFactory.GetTest(testId, source)));
        }
Пример #7
0
 public LoginService()
 {
     _user     = new UserRepository();
     _attempts = new AttemptRepository();
 }