async Task GivenGroupsInDatabase() { using (var dbContext = new WordkiDbContext(ConnectionStringProvider)) { var user = Builder <Api.Domain.User> .CreateNew() .With(u => u.Id = 1) .With(u => u.Name = "user") .With(u => u.Password = Host.EncrypterMock.Object.Md5Hash("pass")) .With(u => u.LastLoginDate = new DateTime(2020, 1, 1)) .With(u => u.CreationDate = new DateTime(2020, 1, 1)) .Build(); dbContext.Users.Add(user); var sequence = new SequentialGenerator <long> { Direction = GeneratorDirection.Ascending, Increment = 1 }; sequence.StartingWith(1); var builder = Builder <Api.Domain.Group> .CreateNew() .With(g => g.Id = sequence.Generate()) .With(g => g.GroupLanguage1 = 1) .With(g => g.GroupLanguage2 = 2) .With(g => g.Name = "name"); var groups = new Api.Domain.Group[] { builder.Build(), builder.Build() }; dbContext.Groups.AddRange(groups); await dbContext.SaveChangesAsync(); } }
public async Task <long> Handle(AddGroupCommand request, CancellationToken cancellationToken) { var userId = contextProvider.GetUserId(); var user = await dbContext.Users.Include(u => u.Groups).SingleOrDefaultAsync(u => u.Id == userId); var newGroup = new Domain.Group { Name = request.Name, GroupLanguage1 = request.LanguageFront, GroupLanguage2 = request.LanguageBack, User = user, GroupCreationDate = dateTimeProvider.GetTime() }; foreach (var card in request.Cards) { newGroup.Words.Add( new Domain.Card { Heads = Domain.Side.New(card.Front.Value, card.Front.Example), Tails = Domain.Side.New(card.Back.Value, card.Back.Example), Comment = string.Empty, Group = newGroup, IsVisible = true, WordCreationDate = dateTimeProvider.GetTime(), }); } await dbContext.Groups.AddAsync(newGroup); await dbContext.SaveChangesAsync(); return(newGroup.Id); }
public async Task <long> Handle(AddCardCommand request, CancellationToken cancellationToken) { var group = await dbContext.Groups.SingleOrDefaultAsync(g => g.Id == request.GroupId); if (group == null) { throw new Exception(); } var heads = Domain.Side.New(request.Front.Value, request.Front.Example); var tails = Domain.Side.New(request.Back.Value, request.Back.Example); var newCard = new Domain.Card { Group = group, Heads = heads, Tails = tails, IsVisible = request.IsVisible, WordCreationDate = dateTimeProvider.GetDate(), }; await dbContext.Words.AddAsync(newCard); await dbContext.SaveChangesAsync(); return(newCard.Id); }
async Task GivenUserInDatabase() { using (var dbContext = new WordkiDbContext(ConnectionStringProvider)) { dbContext.Users.Add(Utils.GetUser()); await dbContext.SaveChangesAsync(); } }
public async Task <Unit> Handle(FinishCommand request, CancellationToken cancellationToken) { var userId = contextProvider.GetUserId(); var lesson = await dbContext.Lessons.SingleOrDefaultAsync(l => l.Id == request.LessonId && l.User.Id == userId); lesson.FinishDate = timeProvider.GetTime(); dbContext.Lessons.Update(lesson); await dbContext.SaveChangesAsync(); return(Unit.Value); }
public async Task <Unit> Handle(DeleteGroupCommand request, CancellationToken cancellationToken) { ValidateRequest(request); var group = await dbContext.Groups.SingleOrDefaultAsync(g => g.Id == request.GroupId); if (group == null) { throw new Exception(); } dbContext.Groups.Remove(group); await dbContext.SaveChangesAsync(); return(Unit.Value); }
public async Task <Unit> Handle(UpdateGroupCommand request, CancellationToken cancellationToken) { ValidateRequest(request); var group = await dbContext.Groups.SingleOrDefaultAsync(g => g.Id == request.Id); group.Name = request.Name; group.GroupLanguage1 = request.LanguageFront; group.GroupLanguage2 = request.LanguageBack; dbContext.Groups.Update(group); await dbContext.SaveChangesAsync(); return(Unit.Value); }
public async Task <Unit> Handle(DeleteCardComamnd request, CancellationToken cancellationToken) { ValidateReqest(request); var card = await dbContext.Words.SingleOrDefaultAsync(c => c.Id == request.Id); if (card == null) { throw new Exception(); } dbContext.Words.Remove(card); await dbContext.SaveChangesAsync(); return(Unit.Value); }
async Task GivenGroupInDatabase() { using (var dbContext = new WordkiDbContext(ConnectionStringProvider)) { var user = Utils.GetUser(); dbContext.Users.Add(user); var group = Utils.GetGroup(); group.User = user; dbContext.Groups.Add(group); await dbContext.SaveChangesAsync(); } }
public async Task <Unit> Handle(RegisterCommand request, CancellationToken cancellationToken) { var hashedPassword = encrypter.Md5Hash(request.Password); if (await dbContext.Users.AnyAsync(u => u.Name.Equals(request.UserName) && u.Password.Equals(hashedPassword))) { throw new ApiException("User already exists", ErrorCode.RegisterUserAlreadyExists); } var newUser = userCreator.Create(request.UserName, hashedPassword); await dbContext.Users.AddAsync(newUser); await dbContext.SaveChangesAsync(); return(Unit.Value); }
async Task GivenUserInDatabase() { using (var dbContext = new WordkiDbContext(ConnectionStringProvider)) { var user = Utils.GetUser(); dbContext.Users.Add(user); var lesson = Utils.GetLesson(); lesson.FinishDate = null; lesson.User = user; await dbContext.Lessons.AddAsync(lesson); await dbContext.SaveChangesAsync(); } }
public async Task <Unit> Handle(UpdateCardCommand request, CancellationToken cancellationToken) { ValidateRequest(request); var card = await dbContext.Words.SingleOrDefaultAsync(c => c.Id == request.Id); card.Heads.Value = request.Front.Value; card.Heads.Example = request.Front.Example; card.Tails.Value = request.Back.Value; card.Tails.Example = request.Back.Example; card.IsVisible = request.IsVisible; dbContext.Words.Update(card); await dbContext.SaveChangesAsync(); return(Unit.Value); }
async Task GivenUserInDatabase() { using (var dbContext = new WordkiDbContext(ConnectionStringProvider)) { var user = Builder <Api.Domain.User> .CreateNew() .With(u => u.Id = 1) .With(u => u.Name = "user") .With(u => u.Password = Host.EncrypterMock.Object.Md5Hash(GivenPassword)) .With(u => u.LastLoginDate = new DateTime(2020, 1, 1)) .With(u => u.CreationDate = new DateTime(2020, 1, 1)) .Build(); dbContext.Users.Add(user); await dbContext.SaveChangesAsync(); } }
public async Task <string> Handle(LoginCommnad request, CancellationToken cancellationToken) { var hashedPassword = encrypter.Md5Hash(request.Password); var user = await dbContext.Users.SingleOrDefaultAsync(u => u.Name.Equals(request.UserName) && u.Password.Equals(hashedPassword)); if (user == null) { throw new ApiException("User is not found", ErrorCode.LoginUserNotFound); } user.LastLoginDate = dateTimeProvider.GetTime(); dbContext.Users.Update(user); await dbContext.SaveChangesAsync(); return(authenticationService.Authenticate(user.Id, new string[0])); }
async Task GivenDatabaseContainData() { using (var dbContext = new WordkiDbContext(ConnectionStringProvider)) { var user = Utils.GetUser(); dbContext.Users.Add(user); var group = Utils.GetGroup(); group.User = user; dbContext.Groups.Add(group); var card = Utils.GetCard(); card.Group = group; await dbContext.Words.AddAsync(card); await dbContext.SaveChangesAsync(); } }
public async Task <long> Handle(StartCommand request, CancellationToken cancellationToken) { var userId = contextProvider.GetUserId(); var user = await dbContext.Users.SingleOrDefaultAsync(u => u.Id == userId); if (user == null) { throw new Exception("user == null"); } var now = timeProvider.GetTime(); var newLesson = new Domain.Lesson { User = user, StartDate = now }; dbContext.Lessons.Add(newLesson); await dbContext.SaveChangesAsync(); return(newLesson.Id); }
async Task GivenGroupInDatabase() { using (var dbContext = new WordkiDbContext(ConnectionStringProvider)) { var user = new Api.Domain.User { Id = 1, Name = "user", Password = Host.EncrypterMock.Object.GetSalt(string.Empty), CreationDate = Host.Time2ProviderMock.Object.GetTime(), LastLoginDate = Host.Time2ProviderMock.Object.GetTime() }; dbContext.Users.Add(user); var group = new Api.Domain.Group { Id = 1, GroupLanguage1 = 1, GroupLanguage2 = 2, Name = "group", GroupCreationDate = Host.Time2ProviderMock.Object.GetTime() }; dbContext.Groups.Add(group); var word = new Api.Domain.Card { Heads = new Side { Value = "word1" }, Tails = new Side { Value = "word2" }, IsVisible = true, WordCreationDate = new DateTime(2020, 01, 01), }; dbContext.Words.Add(word); await dbContext.SaveChangesAsync(); } }
async Task GivenDatabaseContainData() { using (var dbContext = new WordkiDbContext(ConnectionStringProvider)) { var user = Utils.GetUser(); dbContext.Users.Add(user); var group = Utils.GetGroup(); group.User = user; dbContext.Groups.Add(group); for (int i = 1; i < 4; i++) { var word = Utils.GetCard(); word.Group = group; word.Id = i; word.WordCreationDate = word.WordCreationDate.AddDays(i); dbContext.Words.Add(word); } await dbContext.SaveChangesAsync(); } }