Esempio n. 1
0
 private Training GetTraining(UserParameter userParams, TrainingTypes trainingType)
 {
     return(TennisSettings.TennisContext.Trainings.First(x => x.level == userParams.level && x.trainingTypeId == (int)trainingType));
 }
Esempio n. 2
0
        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);
            }
        }