Пример #1
0
        /// <summary>
        /// Create a study and store it in the repository
        /// </summary>
        /// <param name="studyDto"></param>
        /// <returns></returns>
        public int CreateStudy(StudyDto studyDto)
        {
            var study = ConvertStudy(studyDto);
            _studyExecutionController.ExecuteStudy(study);

            _studyStorageManager.Save(study);

            return study.ID;
        }
        public StudyDto CreaStudyDto()
        {
            var teamDto = new TeamDto
            {
                Id = 1
            };

            var criteria1 = new CriteriaDto
            {
                Name = "Name1",
                Rule = CriteriaDto.CriteriaRule.SmallerThan,
                DataMatch = new[] {"2000"},
                DataType = DataFieldDto.DataType.String,
                Description = "Check if the year is before 2000"
            };

            var criteria2 = new CriteriaDto
            {
                Name = "Is about...",
                DataType = DataFieldDto.DataType.Boolean,
                Rule = CriteriaDto.CriteriaRule.Equals,
                DataMatch = new[] {"true"},
                Description = "Check if the item is about snails."
            };

            var stage1 = new StageDto
            {
                Name = "stage1",
                Criteria = criteria1,
                DistributionRule = StageDto.Distribution.HundredPercentOverlap,
                ReviewerIDs = new[] {1, 2},
                ValidatorIDs = new[] {3},
                VisibleFields = new[] {StageDto.FieldType.Title, StageDto.FieldType.Author}
            };

            var stage2 = new StageDto
            {
                Name = "stage2",
                Criteria = criteria2,
                DistributionRule = StageDto.Distribution.HundredPercentOverlap,
                ReviewerIDs = new[] {3, 2},
                ValidatorIDs = new[] {4},
                VisibleFields = new[] {StageDto.FieldType.Title, StageDto.FieldType.Author}
            };

            var studyDto = new StudyDto
            {
                Name = "testStudy",
                Team = teamDto,
                Items = Resources.bibtex,
                Stages = new[] {stage1, stage2}
            };

            return studyDto;
        }
Пример #3
0
        /// <summary>
        /// Convert a studyDTO to a study object
        /// </summary>
        /// <param name="studyDto">DTO to be converted</param>
        /// <returns></returns>
        private Study ConvertStudy(StudyDto studyDto)
        {
            var study = new Study
            {
                IsFinished = false,
                Name = studyDto.Name,
                Team = _teamStorage.GetTeam(studyDto.Team.Id),
                Items = new List<Item>(),
                Stages = new List<Stage>()
            };
            //Parse items
            var parser = new BibTexParser(new ItemValidator());
            var fileString = Encoding.Default.GetString(studyDto.Items);
            study.Items = parser.Parse(fileString);

            var firstStage = true;

            foreach (var stageDto in studyDto.Stages)
            {
                var stage = CreateStage(stageDto);

                study.Stages.Add(stage);

                if (firstStage)
                {
                    stage.IsCurrentStage = true;
                }

                firstStage = false;
            }
            return study;
        }
Пример #4
0
        public bool UpdateStudy(int studyId, StudyDto studyDto)
        {
            var oldStudy = _studyStorageManager.Get(studyId);

            var updatedStudy = ConvertStudy(studyDto);
            oldStudy.Name = updatedStudy.Name;

            updatedStudy.Items.AddRange(oldStudy.Items);
            updatedStudy.ID = oldStudy.ID;
            List<Stage> tempList = new List<Stage>();
            if (oldStudy.Stages.Count != updatedStudy.Stages.Count)
            {
                tempList.AddRange(oldStudy.Stages.ToList().GetRange(0, oldStudy.Stages.Count - 1));
                tempList.AddRange(updatedStudy.Stages.ToList()
                    .GetRange(oldStudy.Stages.Count - 1, updatedStudy.Stages.Count - 1));
                oldStudy.Stages = tempList;
            }

            _studyStorageManager.Update(oldStudy);
            return true;
        }