private void ConfirmChallenge_Click(object sender, RoutedEventArgs e) { bool flag = true, flagIsOwner = true, flagIsReady = true; using (AppDbContext db = new AppDbContext()) { UserChallenge userChallenge = db.UserChallenges.Find(uch.Id); if (userChallenge.IsCompleted) { flag = false; } User user = db.Users.Find(App.CurrentUser.Id); if (user.Id == userChallenge.UserId) { flagIsOwner = false; } flagIsReady = userChallenge.IsUserReady; } if (!flag) { MaterialMessageBox.Show("Этот вызов уже подтвержден. Обновите список вызовов", "Упс.."); } else if (!flagIsOwner) { MaterialMessageBox.Show("Вы не можете подтвердить свой же вызов", "Упс.."); } else if (!flagIsReady) { MaterialMessageBox.Show("Пользователь еще выполняет этот вызов"); } else { using (AppDbContext db = new AppDbContext()) { UserChallenge userChallenge = db.UserChallenges.Find(uch.Id); userChallenge.IsCompleted = true; db.Entry(userChallenge).State = EntityState.Modified; Challenge currentChallenge = db.Challenges.Find(userChallenge.Challenge.Id); currentChallenge.CountOfComplete++; db.Entry(currentChallenge).State = EntityState.Modified; User thiUser = db.Users.Find(App.CurrentUser.Id); Log log = new Log() { Time = DateTime.Now, Action = "Пользователь " + thiUser.Username + " подтвердил выполнение вызова игроком " + userChallenge.User.Username }; db.Logs.Add(log); db.SaveChanges(); } MaterialMessageBox.Show("Вы подтвердили вызов, спасибо!", "Отлично"); activeChallenges.ShowActiveChallenges(); } }
public async Task RejectChallenge(User user, UserChallenge userChallenge) { if (userChallenge == null) { throw new NotFoundException("Desafio não existente."); } if (userChallenge.Accept) { throw new BadRequestException("Esse desafio foi aceito anteriormente."); } var challengesOfDay = await _context.UserChallenges .Include(x => x.User) .Include(x => x.Challenge) .Where(x => x.DayChallenge.Date == DateTime.Now.Date && user.Id == x.User.Id) .ToListAsync(); if (userChallenge.Id != challengesOfDay.LastOrDefault().Id) { throw new BadRequestException("Esse desafio não é o atual."); } var countChallenges = await _context.UserChallenges .Include(x => x.User) .Include(x => x.Challenge) .CountAsync(x => x.DayChallenge.Date == DateTime.Now.Date); if (countChallenges < CHALLENGES_FOR_DAY) { var challenge = await GetNextChallenge(); await _context.UserChallenges.AddAsync(new UserChallenge { User = user, Challenge = challenge, DayChallenge = DateTime.Now }); await _context.SaveChangesAsync(); } }
public IHttpActionResult PutUserChallenge(int id, UserChallenge userChallenge) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != userChallenge.id) { return(BadRequest()); } db.Entry(userChallenge).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!UserChallengeExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }
private void UserReadyWithChallenge_Click(object sender, RoutedEventArgs e) { bool flag = true; using (AppDbContext db = new AppDbContext()) { User user = db.Users.Find(App.CurrentUser.Id); UserChallenge uch = user.UserChallenge.Where(p => p.IsCompleted == false).First(); if (uch.IsUserReady == true) { flag = false; } } if (flag) { if (proofLinkTextBox.Text == String.Empty) { MaterialMessageBox.Show("Заполните поле!", "Ошибка"); proofLinkTextBox.BorderBrush = new SolidColorBrush(Colors.Red); } else { proofLinkTextBox.BorderBrush = (Brush) new BrushConverter().ConvertFrom("#89000000"); using (AppDbContext db = new AppDbContext()) { User user = db.Users.Find(App.CurrentUser.Id); UserChallenge uch = user.UserChallenge.Where(p => p.IsCompleted == false).First(); try { Hyperlink hyperlink = new Hyperlink(); hyperlink.NavigateUri = new Uri(proofLinkTextBox.Text); uch.ConfirmTime = DateTime.Now; uch.ProofLink = proofLinkTextBox.Text; uch.IsUserReady = true; db.Entry(uch).State = EntityState.Modified; User thiUser = db.Users.Find(App.CurrentUser.Id); Log log = new Log() { Time = DateTime.Now, Action = "Пользователь " + thiUser.Username + " отправил подтверждение вызова: " + uch.Challenge.Text }; db.Logs.Add(log); db.SaveChanges(); MaterialMessageBox.Show("Вы отправили подтверждение на рассмотрение!", "Отлично"); } catch (UriFormatException) { MaterialMessageBox.Show("Ссылка некоректна", "Ошибка"); } } } } else { MaterialMessageBox.Show("Вы уже подтверждали", "Ошибка"); } }
public ActionResult JoinChallengeConfirmed(int id) { UserChallenge challenge = new UserChallenge(); HttpCookie cookie = Request.Cookies["UserID"]; challenge.challengeID = id; challenge.userID = int.Parse(cookie["ID"]); User newUser = db.Users.Find(challenge.userID); bool isEntered = false; db.UserChallenges.OrderBy(item => item.position); List <UserChallenge> userChallenges = db.UserChallenges.ToList(); challenge.position = 1; /*if (userChallenges.Count == 0) * challenge.position = 1; * else * {*/ foreach (UserChallenge current in userChallenges) { if (current.challengeID == id) { User curUser = db.Users.Find(current.userID); if (isEntered) { current.position += 1; continue; } if (curUser.totDistanceTravelled <= newUser.totDistanceTravelled) { challenge.position = current.position; current.position += 1; isEntered = true; continue; } if (curUser.totDistanceTravelled > newUser.totDistanceTravelled) { challenge.position++; continue; } } } //} if (ModelState.IsValid) { db.UserChallenges.Add(challenge); db.SaveChanges(); } return(RedirectToAction("JoinChallenge")); }
public IHttpActionResult GetUserChallenge(int id) { UserChallenge userChallenge = db.UserChallenges.Include(uc => uc.days.Select(d => d.tasksCompleted)).Include(uc => uc.challenge).FirstOrDefault(d => d.id == id); if (userChallenge == null) { return(NotFound()); } return(Ok(userChallenge)); }
public ConfirmChallengeWindow(ActiveChallenges ac, UserChallenge userChallenge) { activeChallenges = ac; uch = userChallenge; InitializeComponent(); string Title = "", Text = ""; string DateOfAccept = ""; string DateOfConfirm = ""; string ProofLink = ""; bool flag = true; using (AppDbContext db = new AppDbContext()) { UserChallenge uch2 = db.UserChallenges.Find(uch.Id); Challenge ch = db.Challenges.Find(uch2.Challenge.Id); Game game = db.Games.Find(ch.Game.Id); ProofLink = uch2.ProofLink; Title = ch.Title; Text = ch.Text; if (uch2.AcceptTime != null) { DateOfAccept = uch.AcceptTime.ToString(); } else { DateOfAccept = "--"; } if (uch2.ConfirmTime != null) { DateOfConfirm = uch2.ConfirmTime.ToString(); } else { DateOfConfirm = "--"; } if (uch2.ProofLink == null) { var x = activeChallengeProofLink.Inlines.FirstInline.TextDecorations = TextDecorations.Strikethrough; activeChallengeProofLink.Inlines.FirstInline.ToolTip = "Скриншот еще не загружен"; flag = false; } } activeChallengeTitle.Content = Title; activeChallengeText.Text = Text; activeChallengeDate.Text = DateOfAccept; activeChallengeConfirmDate.Text = DateOfConfirm; if (flag) { activeChallengeProofLink.NavigateUri = new Uri(ProofLink); } }
public IHttpActionResult PostUserChallenge(UserChallenge userChallenge) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } db.UserChallenges.Add(userChallenge); db.SaveChanges(); return(CreatedAtRoute("DefaultApi", new { id = userChallenge.id }, userChallenge)); }
public static SimpleUserChallengeModel ConvertToSimpleUserChallengeModel(UserChallenge userChallenge) { return(new SimpleUserChallengeModel { Id = userChallenge.Id, Accept = userChallenge.Accept, DayChallenge = userChallenge.DayChallenge, Completed = userChallenge.Completed, Finished = userChallenge.Finished, Feedback = userChallenge.Feedback, Challenge = userChallenge.Challenge }); }
private void DeclineChallenge(object sender, RoutedEventArgs e) { using (AppDbContext db = new AppDbContext()) { User user = db.Users.Find(App.CurrentUser.Id); UserChallenge uch = user.UserChallenge.Where(p => p.IsCompleted == false).First(); db.UserChallenges.Remove(uch); db.SaveChanges(); MaterialMessageBox.Show("Вы успешно отменили вызов! Просмотрите активные вызовы и выберите новый :)", "Успех"); homeWindow.hideAllRectangle.Opacity = 0; homeWindow.DataGridUserGames.Opacity = 1; Close(); } }
public IHttpActionResult DeleteUserChallenge(int id) { UserChallenge userChallenge = db.UserChallenges.Find(id); if (userChallenge == null) { return(NotFound()); } db.UserChallenges.Remove(userChallenge); db.SaveChanges(); return(Ok(userChallenge)); }
public async Task <int> TakeChallenge(int challengeId) { var userId = _userManager.GetUserId(User); var userChallenge = new UserChallenge() { ChallengeId = challengeId, Status = ChallengeStatus.InProgress, TakenDateTime = DateTime.Now, UserId = userId }; await _userChallengeRepository.Create(userChallenge); return(userChallenge.Id); }
public AcceptedChallengeWindow(Home home) { homeWindow = home; InitializeComponent(); string Title = "", Text = "", Game = ""; string Path = "pack://application:,,,"; string DateOfAccept = ""; string DateOfConfirm = ""; using (AppDbContext db = new AppDbContext()) { User user = db.Users.Find(App.CurrentUser.Id); UserChallenge uch = user.UserChallenge.Where(p => p.IsCompleted == false).First(); if (uch.IsUserReady == true) { UserReadyButton.IsEnabled = false; } Challenge ch = db.Challenges.Find(uch.Challenge.Id); Game game = db.Games.Find(ch.Game.Id); Title = ch.Title; Text = ch.Text; Path = Path + game.Image; Game = game.Name; if (uch.AcceptTime != null) { DateOfAccept = uch.AcceptTime.ToString(); } else { DateOfAccept = "None"; } if (uch.ConfirmTime != null) { DateOfConfirm = uch.ConfirmTime.ToString(); } } var uri = new Uri(Path); var bitmap = new BitmapImage(uri); activeChallengeTitle.Content = Title; activeChallengeText.Text = Text; activeChallengeGameImage.Source = bitmap; activeChallengeGame.Text = Game; activeChallengeDate.Text = DateOfAccept; }
public void Seed(TeexyContext context) { context.Database.EnsureDeleted(); context.Database.EnsureCreated(); //context.Database.Migrate(); var user = new User() { Id = Guid.NewGuid().ToString(), Name = "Vasya", PasswordHash = "afweioj" }; var userChallenge = new UserChallenge() { Id = 1, User = user, Status = ChallengeStatus.InProgress, Challenge = new Challenge() { Id = 0, Title = "Посадити дерево", Description = "Підвищуємо екологію!!!", Score = 15 } }; var fixture = new Fixture(); var userChList = fixture.Build <UserChallenge>() .With(uch => uch.User, () => { return(user); }) .With(uch => uch.Challenge, () => { return(fixture.Create <Challenge>()); }) .CreateMany(20).ToList(); context.UserChallenges.Add(userChallenge); context.UserChallenges.AddRange(userChList); context.SaveChanges(); }
public async Task AcceptChallenge(User user, UserChallenge userChallenge) { if (userChallenge == null) { throw new NotFoundException("Desafio não existente."); } var challengesOfDay = await _context.UserChallenges .Include(x => x.User) .Include(x => x.Challenge) .Where(x => x.DayChallenge.Date == DateTime.Now.Date && user.Id == x.User.Id) .ToListAsync(); if (userChallenge.Id != challengesOfDay.LastOrDefault().Id) { throw new BadRequestException("Esse desafio não é o atual."); } userChallenge.Accept = true; await _context.SaveChangesAsync(); }
public async Task <UserChallenge> SetUserChallengeStatus(string email, long challengeId, ChallengeStatus status) { if (!_context.UserChallenges.Any(uc => uc.UserEmail == email && uc.ChallengeId == challengeId)) { var newUserChallenge = new UserChallenge() { UserEmail = email, ChallengeId = challengeId, Status = ChallengeStatus.None, CompletedTimes = 0 }; await _context.UserChallenges.AddAsync(newUserChallenge); _context.SaveChanges(); } var userChallenge = await _context.UserChallenges .Where(uc => uc.UserEmail == email && uc.ChallengeId == challengeId) .Include(uc => uc.Challenge) .FirstOrDefaultAsync(); if (status == ChallengeStatus.Completed && userChallenge.CompletedTimes < userChallenge.Challenge.MaxCompletionCount) { userChallenge.CompletedTimes++; userChallenge.Status = userChallenge.CompletedTimes == userChallenge.Challenge.MaxCompletionCount ? ChallengeStatus.Completed : ChallengeStatus.Assigned; } else { userChallenge.Status = status; } var result = _context.UserChallenges.Update(userChallenge); _context.SaveChanges(); return(result.Entity); }
private void TakeChallengeClick(object sender, RoutedEventArgs e) { if (DataGridChallenges.SelectedItem != null) { Challenge selectedChallenge = (Challenge)DataGridChallenges.SelectedItem; using (AppDbContext db = new AppDbContext()) { db.Challenges.Load(); Challenge challenge = db.Challenges.Find(selectedChallenge.Id); User user = db.Users.Find(App.CurrentUser.Id); int countOfActiveChallengesOnUser = user.UserChallenge.Where(p => p.IsCompleted == false).Count(); bool isCreatedByUser = false; bool isUserHaveAnyActive = countOfActiveChallengesOnUser > 0; bool isEverComplete = false; if (db.Challenges.Find(selectedChallenge.Id).Creator == user) { isCreatedByUser = true; } foreach (var ch in user.UserChallenge) { if (challenge.Id == ch.ChallengeId) { isEverComplete = true; } } if (isUserHaveAnyActive) { MaterialMessageBox.Show("У Вас уже есть активный вызов", "Ошибка"); DataGridChallenges.SelectedItem = null; } else if (isEverComplete) { MaterialMessageBox.Show("Вы уже выполняли данный вызов!", "Упс.."); DataGridChallenges.SelectedItem = null; } else if (isCreatedByUser) { MaterialMessageBox.Show("Вы не можете принять созданый Вами вызов", "Ошибка"); DataGridChallenges.SelectedItem = null; } else { UserChallenge userChallenge = new UserChallenge() { User = user, Challenge = challenge, AcceptTime = DateTime.Now }; db.UserChallenges.Add(userChallenge); db.SaveChanges(); MaterialMessageBox.Show("Отлично! Вызов добавлен", "Успех"); DataGridChallenges.SelectedItem = null; } } } else { MaterialMessageBox.Show("Сначала нужно выбрать вызов", "Ошибка"); } }
public async Task CompleteChallenge(CompleteChallengeModel completeChallengeModel, User user, UserChallenge userChallenge) { completeChallengeModel.Validate(); if (userChallenge == null) { throw new NotFoundException("Desafio não existente."); } if (userChallenge.Finished) { throw new BadRequestException("Esse desafio já foi finalizado."); } var challengesOfDay = await _context.UserChallenges .Include(x => x.User) .Include(x => x.Challenge) .Where(x => x.DayChallenge.Date == DateTime.Now.Date && user.Id == x.User.Id) .ToListAsync(); if (userChallenge.Id != challengesOfDay.LastOrDefault().Id) { throw new BadRequestException("Esse desafio não é o atual."); } userChallenge.Completed = completeChallengeModel.Completed; userChallenge.Feedback = completeChallengeModel.Feedback; userChallenge.Finished = true; var countChallenges = await _context.UserChallenges .Include(x => x.User) .Include(x => x.Challenge) .CountAsync(x => x.DayChallenge.Date == DateTime.Now.Date && user.Id == x.User.Id); if (countChallenges < CHALLENGES_FOR_DAY) { var challenge = await GetNextChallenge(); await _context.UserChallenges.AddAsync(new UserChallenge { User = user, Challenge = challenge, DayChallenge = DateTime.Now }); } await _context.SaveChangesAsync(); }