public async Task <Guid> Create(Models.Race rac) { try { var context = CreateContext(); var created = new Data.Race { Id = rac.Id, UniversId = rac.UniversId, NomRace = rac.NomRace, }; var enr = await context ._Race .AddAsync(created); await context.SaveChangesAsync(); return(enr.Entity.Id); } catch (DbUpdateException e) { Console.WriteLine(e.Message); return(rac.Id); } }
public TriStats() { Swim = new SwimStats(); Bike = new BikeStats(); Run = new RunStats(); Finish = new FinishStats(); DivRank = new DivRankingStats(); GenderRank = new GenderRankingStats(); OverallRank = new OverallRankingStats(); Points = new PointsStats(); Race = new Models.Race(); Athletes = new List <Triathlete>(); AgeGroupId = 0; }
public async Task Delete(Models.Race rac) { try { var context = CreateContext(); var toDelete = await context._Race.FindAsync(rac.Id); if (toDelete != null) { context._Race.Remove(toDelete); await context.SaveChangesAsync(); } } catch (DbUpdateException e) { Console.WriteLine(e.Message); } }
public async Task Update(Models.Race rac) { try { var context = CreateContext(); var toUpdate = await context._Race.FindAsync(rac.Id); if (toUpdate != null) { toUpdate.Id = rac.Id; toUpdate.UniversId = rac.UniversId; toUpdate.NomRace = rac.NomRace; await context.SaveChangesAsync(); } } catch (DbUpdateException e) { Console.WriteLine(e.Message); } }
public void Execute(Message msg, IMessageSenderService sender, IBot bot) { if (Main.Api.Users.IsBanned(msg)) { return; } if (!Main.Api.Users.CheckUser(msg)) { var kb2 = new KeyboardBuilder(bot); kb2.AddButton("➕ Зарегистрироваться", "start"); sender.Text("❌ Вы не зарегистрированы, нажмите на кнопку ниже, чтобы начать", msg.ChatId, kb2.Build()); return; } Models.Race race = null; User userEnemy = null; User userCreator = null; Models.Garage garageEnemy = null; Models.Garage garageCreator = null; var kb = new KeyboardBuilder(bot); Car carCreator = null; Car carEnemy = null; bool sendMessageToEnemy = true; bool isBot = false; bool isFriendStart = false; if (msg.Payload.Arguments.Count == 0) { if (msg.Payload.Arguments[0] == "222") { isFriendStart = true; } userEnemy = Main.Api.Users.GetUser(msg); if (userEnemy.OnWork) { sender.Text("❌ Вы не можете идти в гонку, пока находитесь на работе, дождитесь завершения и возвращайтесь!", msg.ChatId); return; } //Пользователь принимает гонку. isBot = false; using (var db = new Database()) { try { race = db.Races.FirstOrDefault(r => r.Enemy == userEnemy.Id && r.IsRequest == true); }catch { kb.AddButton(ButtonsHelper.ToHomeButton()); sender.Text("❌ Ваш противник уже отменил гонку!", msg.ChatId, kb.Build()); var a = db.Users.Single(u => u.Id == userEnemy.Id); a.Race = 0; db.SaveChanges(); return; } if (race is null) { kb.AddButton(ButtonsHelper.ToHomeButton()); sender.Text("❌ Мы не смогли найти эту гонку в базе данных.", msg.ChatId, kb.Build()); var a = db.Users.Single(u => u.Id == userEnemy.Id); a.Race = 0; db.SaveChanges(); return; } userCreator = db.Users.Single(u => u.Id == race.Creator); garageCreator = db.Garages.Single(g => g.UserId == userCreator.Id); carCreator = db.Cars.Single(c => c.Id == garageCreator.SelectCar); race.IsRequest = false; garageEnemy = db.Garages.Single(g => g.UserId == userEnemy.Id); var usrE = db.Users.Single(u => u.Id == userEnemy.Id); carEnemy = db.Cars.Single(c => c.Id == garageEnemy.SelectCar); usrE.Race = race.Id; db.SaveChanges(); } } else { //если какой-то тип var typeRace = msg.Payload.Arguments[0].ToLong(); if (typeRace == 1) //если это быстрая гонка { var enemyId = msg.Payload.Arguments[1].ToLong(); race = new Models.Race(); userCreator = Main.Api.Users.GetUser(msg); garageCreator = Main.Api.Garages.GetGarage(userCreator.Id); race.Creator = userCreator.Id; race.Enemy = enemyId; race.IsRequest = false; using (var db = new Database()) { carCreator = db.Cars.Single(c => c.Id == garageCreator.SelectCar); race.Id = db.Races.Count() + 1; db.Races.Add(race); db.SaveChanges(); } if (enemyId == -2) //генерим бота { sendMessageToEnemy = false; isBot = true; userEnemy = new User(); userEnemy.Id = -2; userEnemy.Name = "Бот без имени"; garageEnemy = new Models.Garage(); carEnemy = new Car(); carEnemy.Id = -2; carEnemy.Manufacturer = "abc"; carEnemy.Model = "def"; var r = new Random(); int a = r.Next(1, 3); carEnemy.Power = a == 2 ? carCreator.Power + 1 : carCreator.Power - 1; int b = r.Next(1, 3); } else { using (var db = new Database()) { userEnemy = db.Users.Single(u => u.Id == enemyId); garageEnemy = db.Garages.Single(g => g.UserId == enemyId); carEnemy = db.Cars.Single(c => c.Id == garageEnemy.SelectCar); } } } } long enemyChatId = 0; long creatorChatId = 0; if (sender.Platform == Fooxboy.NucleusBot.Enums.MessengerPlatform.Vkontakte) { if (sendMessageToEnemy && !isBot) { enemyChatId = userEnemy.VkId; } creatorChatId = userCreator.VkId; } else { if (sendMessageToEnemy && !isBot) { enemyChatId = userEnemy.TgId; } creatorChatId = userCreator.TgId; } if (sendMessageToEnemy && !isBot) { Task.Run(() => sender.Text($"🏁 Гонка с игроком {userCreator.Name} на автомобиле {carCreator.Manufacturer} {carCreator.Model} ({carCreator.Number}) началась! Не переходите по разделам во время гонки", enemyChatId)); } Task.Run(() => sender.Text($"🏁 Гонка с игроком {userEnemy.Name} на автомобиле {carEnemy.Manufacturer} {carEnemy.Model} ({carEnemy.Number}) началась! Не переходите по разделам во время гонки", creatorChatId)); Task.Run(() => { Thread.Sleep(TimeSpan.FromSeconds(5)); long scoreCreator = 0; long scoreEnemy = 0; if (carEnemy.Power > carCreator.Power) { scoreEnemy += 5; } else { scoreCreator += 5; } if (carEnemy.Weight > carCreator.Weight) { scoreCreator += 3; } else { scoreEnemy += 3; } Skills skillsCretor = null; Skills skillsEnemy = null; using (var db = new Database()) { try { skillsCretor = db.Skillses.Single(s => s.UserId == userCreator.Id); } catch { skillsCretor = new Skills(); } try { if (isBot) { //генерируем рандомный скилл skillsEnemy = new Skills(); var r = new Random(); int i = r.Next(1, 3); skillsEnemy.Driving = i == 2? skillsCretor.Driving - 1 : skillsCretor.Driving + 1; } else { skillsEnemy = db.Skillses.Single(s => s.UserId == userEnemy.Id); } } catch { if (isBot) { //генерируем рандомный скилл skillsEnemy = new Skills(); skillsEnemy.Driving = 0; } else { skillsEnemy = new Skills(); } } } //тут считаем навыки scoreCreator += skillsCretor.Driving; scoreEnemy += skillsEnemy.Driving; var winner = scoreEnemy > scoreCreator ? userEnemy : userCreator; using (var db = new Database()) { var raceLocal = db.Races.Single(r => r.Id == race.Id); if (raceLocal.Winner != 0) { winner = db.Users.Single(u => u.Id == raceLocal.Winner); } raceLocal.Winner = winner.Id; if (winner.Id != -2) { if (!isFriendStart) { //Добавляем опыта и денег победителю. var winnerLocal = db.Users.Single(u => u.Id == winner.Id); int factor = 1; if (winnerLocal.Access >= 1) { factor = 2; } winnerLocal.Money += (winnerLocal.Level * factor * 50); winnerLocal.Score += (10 * factor); } } var usr1 = db.Users.Single(u => u.Id == raceLocal.Creator); var gar1 = db.Garages.Single(u => u.UserId == usr1.Id); var car1 = db.Cars.Single(c => c.Id == carCreator.Id); //gar1.Fuel = gar1.Fuel - 5; car1.Health = car1.Health - 5; if (!isBot) { var usr2 = db.Users.Single(u => u.Id == raceLocal.Enemy); var gar2 = db.Garages.Single(u => u.UserId == usr2.Id); var car2 = db.Cars.Single(c => c.Id == carEnemy.Id); // gar2.Fuel = gar2.Fuel - 5; car2.Health = car2.Health - 5; usr2.Race = 0; } usr1.Race = 0; db.SaveChanges(); } if (winner.Id != -2) { Task.Run(() => { var kb1 = new KeyboardBuilder(bot); kb1.AddButton("🏁 Назад в гонки", "race"); var t = isFriendStart ? "🎉 Поздравляю с победой над своим другом!" : $"🎉 Поздравляю с победой! Вы получили: 💵 {(winner.Access >=1? $"{winner.Level *50 *2}": $"{winner.Level * 50}")} рублей и ⭐ {(winner.Access >=1? $"{10 *2}": $"{10}")} опыта"; sender.Text( t, winner.Id == userEnemy.Id ? enemyChatId : creatorChatId, kb1.Build()); sender.Text($"🏁 Вы проиграли в этой гонке.", winner.Id == userEnemy.Id ? creatorChatId : enemyChatId, kb1.Build()); }); }
public static string RunFriendBattle(long creatorId, long enemyId, IMessageSenderService sender, IBot bot, Message msg) { if (creatorId == enemyId) { return("❌ Участвовать в гонке с самим собой невозможно."); } using (var db = new Database()) { var creator = db.Users.Single(u => u.Id == creatorId); var friends = FriendsHelper.GetFriends(creator.Friends); if (!friends.Any(f => f == enemyId)) { return("❌ Этот пользователь не в списке Ваших друзей."); } if (creator.Race != 0) { return("❌ Вы уже участвуете в гонке!"); } User enemy; try { enemy = db.Users.Single(u => u.Id == enemyId); if (enemy.Race != 0) { return("❌ Этот пользователь уже учавствует в гонке!"); } } catch { return("❌ Не найден пользователь с таким ID"); } var race = new Models.Race(); race.Creator = creatorId; race.Enemy = enemyId; race.Id = db.Races.Count() + 1; race.IsRequest = true; var helper = new UsersHelper(); if (sender.Platform == MessengerPlatform.Vkontakte) { if (enemy.VkId == 0) { return("❌ Этот пользователь зарегестрирован через telegram. Гонки между платформами пока что недоступны."); } sender.Text($"🏁 Пользователь {helper.GetLink(creator)} приглашает Вас на гонку!" + $"\n ❓ Чтобы принять или отклонить гонку, откройте меню телефона в разделе гонок.", enemy.VkId); } else { if (enemy.TgId == 0) { return("❌ Этот пользователь зарегистрирован через ВКонтакте. Гонки между платформами пока что недоступны."); } sender.Text($"🏁 Пользователь {helper.GetLink(creator)} приглашает Вас на гонку!" + $"\n ❓ Чтобы принять или отклонить гонку, откройте меню телефона в разделе гонок.", enemy.TgId); } creator.Race = race.Id; db.Races.Add(race); db.SaveChanges(); UsersCommandHelper.GetHelper().Add("", creatorId); Task.Run(() => { Thread.Sleep(TimeSpan.FromSeconds(3)); var kb = new KeyboardBuilder(bot); kb.AddButton("❌ Отменить гонку", "racestop"); sender.Text("❓ Вы можете отменить гонку, если Ваш противник не принимает гонку.", msg.ChatId, kb.Build()); }); return("🏁 Мы отправили пользователю запрос о гонке с Вами. "); } }