/// <summary> /// Рассчитать результат участника гонки /// </summary> static UserRaceResult GetRaceResult(GroupRaceParticipant raceParticipant) { var user = raceParticipant.User; UserCar userCar = raceParticipant.UserCar; return(new UserRaceResult() { User = user, Speed = GetSpeed(user, userCar) }); }
/// <summary> /// Добавление участника в гону /// </summary> public static void JoinToRace(OnMessageReceivedArgs e, Bot bot) { using (var context = new AppDbContext()) { var user = context.Users.Get(e.ChatMessage.UserId); if (user == null) { return; } var userCar = context.Cars.GetUserCar(user); if (userCar == null) { return; } var groupRace = context.GroupRaces.GetNotFinished(); if (groupRace == null) { return; } if (context.GroupRaceParticipant.Any(x => x.GroupRace.Id == groupRace.Id && x.User.Id == user.Id)) { return; } if (!groupRace.RaceDivision.CanJoin(user)) { return; } user.Login = e.ChatMessage.Username; user.Money -= groupRace.RaceDivision.GetJoinCost(); var s = new GroupRaceParticipant() { GroupRace = groupRace, User = user, UserCar = userCar }; context.GroupRaceParticipant.Add(s); context.SaveChanges(); } }