Пример #1
0
        public IActionResult GetAnswerRecord(int id)
        {
            var answerRecord = _arDbContext.AnswserRecords.Where(a => a.ID == id).SingleOrDefault();

            if (answerRecord == null)
            {
                return(NotFound());
            }

            var movements           = _arDbContext.Movements.Where(m => m.AnswerRecordID == id).ToList();
            var deviceAccelerations = _arDbContext.DeviceAccelerations.Where(d => d.AnswerRecordID == id).ToList();

            // supervise process
            var movementSupervisor           = new MovementSupervisor(movements, deviceAccelerations);
            var movementSupervisedCollection = movementSupervisor.SuperviseByAcceleration();

            var vm = new AnswerReplayGetAnswerViewModel
            {
                ID = answerRecord.ID,
                AssignmentRecordID = answerRecord.AssignmentRecordID,

                SentenceEN             = answerRecord.SentenceEN,
                SentenceJP             = answerRecord.SentenceJP,
                Division               = answerRecord.Division,
                StandardAnswerDivision = answerRecord.StandardAnswerDivision,

                Resolution = answerRecord.Resolution,

                AnswerDivision = answerRecord.AnswerDivision,
                IsCorrect      = answerRecord.IsCorrect,

                ConfusionDegree  = answerRecord.ConfusionDegree,
                ConfusionElement = answerRecord.ConfusionElement,

                StartDate = answerRecord.StartDate,
                EndDate   = answerRecord.EndDate,

                MovementCollection           = movements.OrderBy(m => m.Index).ToList(),
                MovementSupervisedCollection = movementSupervisedCollection.OrderBy(m => m.Index).ToList(),
                DeviceAccelerationCollection = deviceAccelerations.OrderBy(da => da.Index).ToList(),
            };

            //Request.HttpContext.Response.Headers.Add("Access-Control-Allow-Origin", "*");
            //Request.HttpContext.Response.Headers.Add("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");

            return(Ok(vm));
        }
Пример #2
0
        public async Task <IActionResult> GetMovementSupervisedCollection(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var movementCollection = await _arDbContext.Movements.Where(da => da.AnswerRecordID == id).ToListAsync();

            var deviceAccelerationCollection = await _arDbContext.DeviceAccelerations.Where(da => da.AnswerRecordID == id).ToListAsync();

            // supervise process
            var movementSupervisor           = new MovementSupervisor(movementCollection, deviceAccelerationCollection);
            var movementSupervisedCollection = movementSupervisor.SuperviseByAcceleration();

            return(Ok(movementSupervisedCollection));
        }
        public async Task <IActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var answerRecord = await _arDbContext.AnswserRecords.SingleOrDefaultAsync(q => q.ID == id);

            if (answerRecord == null)
            {
                return(NotFound());
            }

            var vm = Mapper.Map <AnswerRecord, AnswerRecordManageDetailsViewModel>(answerRecord);

            var splitConfusionElement = answerRecord.ConfusionElement.Split('#');
            var splitDivision         = answerRecord.Division.Split('|');
            var sortedWordCollection  = new List <string>();

            foreach (var confusionElement in splitConfusionElement)
            {
                if (confusionElement != "")
                {
                    sortedWordCollection.Add(splitDivision[Convert.ToInt32(confusionElement)]);
                }
            }
            vm.ConfusionWordString = StringConverter.ConvertToSingleString(sortedWordCollection, ",");

            var movementCollection = await _arDbContext.Movements.Where(m => m.AnswerRecordID == answerRecord.ID).ToListAsync();

            var deviceAccelerationCollection = await _arDbContext.DeviceAccelerations.Where(da => da.AnswerRecordID == answerRecord.ID).ToListAsync();

            // supervise process
            var movementSupervisor           = new MovementSupervisor(movementCollection, deviceAccelerationCollection);
            var movementSupervisedCollection = movementSupervisor.SuperviseByAcceleration();

            vm.MovementCollection           = movementCollection;
            vm.DeviceAccelerationCollection = deviceAccelerationCollection;

            // Parameter Analyze
            vm.DDIntervalAVG        = ParameterAnalyzer.CalculateDDIntervalAVG(movementCollection);
            vm.DDIntervalMAX        = ParameterAnalyzer.CalculateDDIntervalMAX(movementCollection);
            vm.DDIntervalMIN        = ParameterAnalyzer.CalculateDDIntervalMIN(movementCollection);
            vm.DDProcessAVG         = ParameterAnalyzer.CalculateDDProcessAVG(movementCollection);
            vm.DDProcessMAX         = ParameterAnalyzer.CalculateDDProcessMAX(movementCollection);
            vm.DDProcessMIN         = ParameterAnalyzer.CalculateDDProcessMIN(movementCollection);
            vm.TotalDistance        = ParameterAnalyzer.CalculateTotalDistance(movementCollection);
            vm.DDSpeedAVG           = ParameterAnalyzer.CalculateDDSpeedAVG(movementCollection);
            vm.DDSpeedMAX           = ParameterAnalyzer.CalculateDDSpeedMAX(movementCollection);
            vm.DDSpeedMIN           = ParameterAnalyzer.CalculateDDSpeedMIN(movementCollection);
            vm.DDFirstTime          = ParameterAnalyzer.CalculateDDFirstTime(movementCollection);
            vm.DDCount              = ParameterAnalyzer.CalculateDDCount(movementCollection);
            vm.UTurnHorizontalCount = ParameterAnalyzer.CalculateUTurnHorizontalCount(movementCollection);
            vm.UTurnVerticalCount   = ParameterAnalyzer.CalculateUTurnVerticalCount(movementCollection);

            // ParameterFixed Analyze
            vm.DDProcessAVGFixed         = ParameterAnalyzerForMovementSupervised.CalculateDDProcessAVG(movementSupervisedCollection);
            vm.DDProcessMAXFixed         = ParameterAnalyzerForMovementSupervised.CalculateDDProcessMAX(movementSupervisedCollection);
            vm.DDProcessMINFixed         = ParameterAnalyzerForMovementSupervised.CalculateDDProcessMIN(movementSupervisedCollection);
            vm.TotalDistanceFixed        = ParameterAnalyzerForMovementSupervised.CalculateTotalDistance(movementSupervisedCollection);
            vm.DDSpeedAVGFixed           = ParameterAnalyzerForMovementSupervised.CalculateDDSpeedAVG(movementSupervisedCollection);
            vm.DDSpeedMAXFixed           = ParameterAnalyzerForMovementSupervised.CalculateDDSpeedMAX(movementSupervisedCollection);
            vm.DDSpeedMINFixed           = ParameterAnalyzerForMovementSupervised.CalculateDDSpeedMIN(movementSupervisedCollection);
            vm.UTurnHorizontalCountFixed = ParameterAnalyzerForMovementSupervised.CalculateUTurnHorizontalCount(movementSupervisedCollection);
            vm.UTurnVerticalCountFixed   = ParameterAnalyzerForMovementSupervised.CalculateUTurnVerticalCount(movementSupervisedCollection);

            //
            var experimentStatistician = new ExperimentStatistician();

            vm.Precision = experimentStatistician.CalculatePrecision(movementSupervisedCollection);
            vm.Recall    = experimentStatistician.CalculateRecall(movementSupervisedCollection);
            vm.FMeasure  = experimentStatistician.CalculateFMeasure(movementSupervisedCollection);

            return(View(vm));
        }