コード例 #1
0
        public async Task CreateUsersWithAllAchievementsAsync()
        {
            var user = new User()
            {
                FirstName = "Vadim", LastName = "Prokopchuk"
            };
            var newUser = new User()
            {
                FirstName = "New", LastName = "User"
            };

            usersRepository.Add(user);
            usersRepository.Add(newUser);

            await dataContext.SaveChangesAsync();

            var achievements = await achievementRepository.GetQuery().ToListAsync();

            foreach (var achievement in achievements)
            {
                var userAchievement = new UserAchievement()
                {
                    CreatedAt     = DateTime.Now,
                    UserId        = user.Id,
                    AchievementId = achievement.Id
                };
                userAchievementRepository.Add(userAchievement);
            }

            await dataContext.SaveChangesAsync();
        }
コード例 #2
0
        public async Task CreateAchievementsAsync()
        {
            var data = new List <Achievement>()
            {
                new Achievement()
                {
                    Name = "C# - Bronze"
                },
                new Achievement()
                {
                    Name = "C# - Silver"
                },
                new Achievement()
                {
                    Name = "C# - Gold"
                },
            };

            foreach (var achievement in data)
            {
                achievementRepository.Add(achievement);
            }

            await dataContext.SaveChangesAsync();
        }
コード例 #3
0
        public async Task <TestTemplateModel> Create(TestTemplateModel model)
        {
            var testTemplate = new TestTemplate
            {
                ExecuteTime      = new TimeSpan(0, 10, 0),
                Name             = model.Name,
                CountOfQuestions = model.CountOfQuestions,
                Description      = model.Description,
                CreatedAt        = model.CreatedAt,
                IsActive         = true,
                Questions        = model.Questions
                                   .Select(x => new QuestionTemplate
                {
                    Name        = x.Name,
                    ControlType = x.ControlType,
                    Answers     = x.Answers.Select(f => new AnswerTemplate
                    {
                        Answer    = f.Answer,
                        IsCorrect = f.IsCorrect
                    }).ToList()
                }).ToList()
            };

            testTemplateRepository.Add(testTemplate);

            await dataContext.SaveChangesAsync();

            return(TestTemplateMap.Map(testTemplate));
        }
コード例 #4
0
        public async Task Update(string content)
        {
            var literature = await literatureRepository.GetQuery().FirstOrDefaultAsync();

            if (literature == null)
            {
                literature = new Literature();
                literatureRepository.Add(literature);
            }

            literature.Content = content;
            await dataContext.SaveChangesAsync();
        }
コード例 #5
0
        public async Task <UserViewModel> CreateAsync(CreateUserViewModel createUserViewModel)
        {
            var user = new User()
            {
                FirstName = createUserViewModel.FirstName,
                LastName  = createUserViewModel.LastName
            };

            usersRepository.Add(user);

            await dataContext.SaveChangesAsync();

            return(MapUser(user));
        }
コード例 #6
0
ファイル: GroupService.cs プロジェクト: VadimProkopchuk/VPX
        public async Task <GroupModel> Create(string name)
        {
            var group = new StudyGroup {
                Name = name
            };

            groupsRepository.Add(group);
            await dataContext.SaveChangesAsync();

            return(new GroupModel
            {
                Id = group.Id,
                Name = group.Name,
                CreatedAt = group.CreatedAt,
                ModifiedAt = group.ModifiedAt,
                Users = Enumerable.Empty <UserModel>().ToList()
            });
        }
コード例 #7
0
        public async Task <LectureModel> CreateAsync(LectureModel model)
        {
            var lecture = new Lecture
            {
                Name    = model.Name,
                Url     = model.Url,
                Content = model.Content,
                Preview = model.Preview,
                Section = model.Section,
            };

            lectureRepository.Add(lecture);

            await dataContext.SaveChangesAsync();

            lecture = await lectureTagBinder.BindTags(lecture, model.Tags);

            return(LectureMap.Map(lecture));
        }
コード例 #8
0
        public async Task <KnowledgeTestModel> Execute(ExecuteTestModel model)
        {
            var template = await testTemplateRepository.GetQuery().FirstOrDefaultAsync(x => x.Id == model.Id);

            if (!template.IsActive)
            {
                throw new ApplicationException();
            }

            var user = await currentUser.GetCurrentUserAsync();

            var knowledgeTest = new KnowledgeTest
            {
                UserId         = user.Id,
                TestTemplateId = template.Id,
                ExpiredAt      = DateTime.UtcNow.AddMinutes(10),
                Questions      = template.Questions.Select(x => new KnowledgeTestQuestion
                {
                    QuestionTemplateId = x.Id,
                }).ToList(),
            };

            knowledgeTestRepository.Add(knowledgeTest);
            await dataContext.SaveChangesAsync();

            return(new KnowledgeTestModel
            {
                Id = knowledgeTest.Id,
                Name = knowledgeTest.TestTemplate.Name,
                Questions = knowledgeTest.Questions.Select(x => new KnowledgeQuestionModel
                {
                    Id = x.Id,
                    Name = x.QuestionTemplate.Name,
                    ControlType = x.QuestionTemplate.ControlType,
                    Answers = x.QuestionTemplate.Answers.Select(f => new KnowledgeAnswerModel
                    {
                        Id = f.Id,
                        Answer = x.QuestionTemplate.ControlType == ControlType.Text ? null : f.Answer
                    }).ToList()
                }).ToList()
            });
        }
コード例 #9
0
        private async Task <Lecture> BindTags(Lecture lecture, List <Tag> tags)
        {
            lecture = ResetTags(lecture);

            foreach (var tag in tags)
            {
                var lectureTag = new LectureTag
                {
                    LectureId = lecture.Id,
                    TagId     = tag.Id
                };

                lecture.LectureTags.Add(lectureTag);
                lectureTagRepository.Add(lectureTag);
            }

            await dataContext.SaveChangesAsync();

            return(lecture);
        }
コード例 #10
0
        private async Task <List <Tag> > CreateTagsAsync(List <TagModel> tagList)
        {
            tagList ??= new List <TagModel>();
            var tags = tagList
                       .Where(x => x.Value.HasValue)
                       .Select(TagMap.Map)
                       .ToList();

            foreach (var tag in tagList.Where(x => !x.Value.HasValue))
            {
                var entityTag = new Tag()
                {
                    Name = tag.Display
                };

                tagRepository.Add(entityTag);
                tags.Add(entityTag);
            }

            await dataContext.SaveChangesAsync();

            return(tags);
        }
コード例 #11
0
        public async Task <UserModel> RegisterAsync(RegisterUserModel registerUser)
        {
            var user = await usersService.GetByEmailAsync(registerUser.Email);

            if (user != null)
            {
                throw new ApplicationException("Пользователь с таким email уже существует.");
            }

            var verificationCode = GetVerificationCode(registerUser.Email);

            if (registerUser.VerificationCode?.Trim() != verificationCode.Trim())
            {
                throw new ApplicationException("Неверный код подтверждения.");
            }

            var encryptedPassword = passwordEncrypter.Encrypt(registerUser.Password);

            user = new User
            {
                FirstName = registerUser.FirstName,
                LastName  = registerUser.LastName,
                Email     = registerUser.Email,
                Password  = encryptedPassword,
                UserRoles = new List <UserRole> {
                    new UserRole {
                        Role = Role.Student
                    }
                }
            };

            usersRepository.Add(user);

            await dataContext.SaveChangesAsync();

            return(UserMap.Map(user));
        }