Пример #1
0
        public async Task <IActionResult> TeacherAddCriterion(AddCriterion model)
        {
            if (model.IsValid())
            {
                _criteria = await _context.GetCriteria();

                ResultCriterion criterion = _criteria.FirstOrDefault(u => u.Name == model.Name);
                if (criterion == null)
                {
                    criterion = new ResultCriterion()
                    {
                        Name                        = model.Name,
                        TeacherLogin                = User.Identity.Name,
                        ErrorCost                   = model.ErrorCost,
                        ZipfFactor                  = model.ZipfFactor,
                        ZipfFactorLowerBound        = model.ZipfFactorLowerBound,
                        ZipfFactorUpperBound        = model.ZipfFactorUpperBound,
                        WaterCriterionFactor        = model.WaterCriterionFactor,
                        WaterCriterionLowerBound    = model.WaterCriterionLowerBound,
                        WaterCriterionUpperBound    = model.WaterCriterionUpperBound,
                        KeyWordsCriterionFactor     = model.KeyWordsCriterionFactor,
                        KeyWordsCriterionLowerBound = model.KeyWordsCriterionLowerBound,
                        KeyWordsCriterionUpperBound = model.KeyWordsCriterionUpperBound
                    };
                    await _context.AddCriterion(criterion);
                }
            }

            return(RedirectToAction("TeacherAddCriterion", "StudentTeacher", new { mine = false }));
        }
Пример #2
0
        public async Task <IActionResult> EditCriterion(ResultCriterion editCriterion)
        {
            if (editCriterion.IsValid())
            {
                await _context.EditCriterion(editCriterion);

                return(RedirectToAction("EditDeleteCriterion", "StudentTeacher",
                                        new { name = editCriterion.Name }));
            }
            else
            {
                return(RedirectToAction("EditDeleteCriterion", "StudentTeacher",
                                        new { name = _context.GetCriteriaById(editCriterion.Id).Name }));
            }
        }
Пример #3
0
        public async Task <IActionResult> UploadFile(IFormFile file, string titles, string paperName, string refsName,
                                                     string criterionName = null)
        {
            if (file == null)
            {
                return(new PartialViewResult());
            }

            var uploadFile = new UploadFile
            {
                FileName   = file.FileName,
                Length     = file.Length,
                DataStream = new MemoryStream()
            };

            await file.CopyToAsync(uploadFile.DataStream);

            ResultCriterion criterion = null;

            try
            {
                var criteria = await _context.GetCriteria();

                criterion = criteria.First(c => c.Name == criterionName);
            }
            catch (Exception)
            {
                //Возможно только во время выполнения теста
            }

            ResultScoreSettings settings = null;

            if (criterion != null)
            {
                settings = new ResultScoreSettings
                {
                    ErrorCost = criterion.ErrorCost,
                    KeyWordsCriterionFactor     = criterion.KeyWordsCriterionFactor,
                    KeyWordsCriterionLowerBound = criterion.KeyWordsCriterionLowerBound,
                    KeyWordsCriterionUpperBound = criterion.KeyWordsCriterionUpperBound,
                    WaterCriterionFactor        = criterion.WaterCriterionFactor,
                    WaterCriterionLowerBound    = criterion.WaterCriterionLowerBound,
                    WaterCriterionUpperBound    = criterion.WaterCriterionUpperBound,
                    ZipfFactor           = criterion.ZipfFactor,
                    ZipfFactorLowerBound = criterion.ZipfFactorLowerBound,
                    ZipfFactorUpperBound = criterion.ZipfFactorUpperBound
                };
            }
            else
            {
                //Возможно только во время выполнения теста
                settings = new ResultScoreSettings()
                {
                    ErrorCost = 2,
                    KeyWordsCriterionFactor     = 35,
                    KeyWordsCriterionUpperBound = 6,
                    KeyWordsCriterionLowerBound = 14,
                    WaterCriterionFactor        = 35,
                    WaterCriterionLowerBound    = 14,
                    WaterCriterionUpperBound    = 20,
                    ZipfFactor           = 30,
                    ZipfFactorLowerBound = 5.5,
                    ZipfFactorUpperBound = 9.5
                };
            }

            PaperAnalysisResult result;

            try
            {
                result = _analyzeService.GetAnalyze(uploadFile, titles, paperName, refsName, settings);
            }
            catch (Exception ex)
            {
                result = new PaperAnalysisResult(new List <Section>(), new List <Criterion>(),
                                                 new List <AnalyzeResults.Errors.Error>())
                {
                    Error = ex.Message
                };

                return(Error(ex.Message));
            }

            AnalysisResult analysisResult = null;

            if (criterion != null)
            {
                analysisResult = new AnalysisResult
                {
                    Id           = Guid.NewGuid().ToString(),
                    Result       = result,
                    StudentLogin = User.Identity.Name,
                    TeacherLogin = criterion.TeacherLogin,
                    Criterion    = criterion.Name
                };
            }
            else
            {
                analysisResult = new AnalysisResult
                {
                    Id           = Guid.NewGuid().ToString(),
                    Result       = result,
                    StudentLogin = null,
                    TeacherLogin = null,
                    Criterion    = null
                };
            }

            Repository.AddResult(analysisResult);
            return(Ok(analysisResult.Id));
        }