private Training GetTraining(UserParameter userParams, TrainingTypes trainingType) { return(TennisSettings.TennisContext.Trainings.First(x => x.level == userParams.level && x.trainingTypeId == (int)trainingType)); }
private void btnReg_Click(object sender, EventArgs e) { var age = GetAge(dtpDateBirthday.Value); if (age < 16 || age > 23) { MetroMessageBox.Show(this, $"Допустимый возраст: от 16 до 23", "Сообщение"); return; } //TODO: check if user existed and fields is empty try { User user = CreateUser(); UserParameter userParams = CreateUserParameter(); user.UserParameters.Add(userParams); var gender = (rbMen.Checked) ? 0 : 1; var idealParams = TennisSettings.TennisContext.IdealParameters.FirstOrDefault(new Func <IdealParameter, bool>(param => { var interval = param.age.Split('-').Select(x => int.Parse(x)).ToArray(); var(lowerAge, upperAge) = (interval[0], interval[1]); return((InRange(lowerAge, upperAge, age) && param.gender == gender) ? true : false); })); if (idealParams != null) { var idealWeight = (rbMen.Checked) ? 0.9 * (userParams.height - 100) : 0.85 * (userParams.height - 100); var idealDyn = idealParams.dinamometry.Split('-').Select(x => double.Parse(x.Replace('.', ','))).ToArray(); var(lowerWeight, upperWeight) = (idealWeight - 5, idealWeight + 5); var(lowerDyn, upperDyn) = (idealDyn[0], idealDyn[1]); if (double.Parse(idealParams.excursion) < userParams.excursion || !InRange(lowerWeight, upperWeight, userParams.weight)) { userParams.Training = GetTraining(userParams, TrainingTypes.WeightAndExcursion); } else if (!InRange(lowerDyn, upperDyn, userParams.dynamometry) || !PowerIsNormal(userParams.dynamometry / userParams.weight, gender)) { userParams.Training = GetTraining(userParams, TrainingTypes.DynamometryAndForse); } else { userParams.Training = GetTraining(userParams, TrainingTypes.IdealParams); } TennisSettings.TennisContext.Users.Add(user); TennisSettings.TennisContext.SaveChanges(); MetroMessageBox.Show(this, $"Пользователь с ником {user.login} успешно зарегистрирован.", "Сообщение"); } else { MetroMessageBox.Show(this, "Не удалось определить \"уровень\" по заданным параметрам...", "Сообщение"); } } catch (Exception exc) { MetroMessageBox.Show(this, $"Не удалось зарегистрировать пользователя\nДополнительно:{exc}", "Сообщение", 300); } }