Ejemplo n.º 1
0
        /// <summary>
        /// Перегрузка для работы с SingleVisit Гостевым и диспетчером абонементов. Костыль по факту
        /// </summary>
        /// <param name="optionsWorkout"></param>
        /// <param name="abonement"></param>
        /// <param name="personName"></param>
        /// <returns></returns>
        public static DialogResult RunWorkoutOptionsSingleForm(ref WorkoutOptions optionsWorkout, AbonementBasic abonement, string personName)
        {
            if (abonement == null)
            {
                return(DialogResult.Cancel);
            }

            optionsWorkout.TypeWorkout = abonement.TypeWorkout; // Значение по умолчанию

            if (abonement is SingleVisit && abonement.TypeWorkout == TypeWorkout.Тренажерный_Зал)
            {
                return(DialogResult.OK);
            }

            // если не вышли , то запуск формы опций
            var workoutForm = new WorkoutForm(personName);

            var dlgReult = workoutForm.ShowDialog();

            if (dlgReult == DialogResult.OK)
            {
                optionsWorkout = workoutForm.SelectedOptions;
            }
            return(dlgReult);
        }
Ejemplo n.º 2
0
        /// <summary>
        ///  Возвращает  DialogResult.OK Если успешно всё выбрали
        /// </summary>
        public static DialogResult RunWorkoutOptionsForm(ref WorkoutOptions optionsWorkout, string personName)
        {
            // Если нет Персональных или Аэробных тренировок - не выводить окно выбора тренировок. По умолчанию отмечается Тренажерный зал
            var abon = PersonObject.GetLink(personName)?.AbonementCurent;

            if (abon == null)
            {
                return(DialogResult.Cancel);
            }

            optionsWorkout.TypeWorkout = abon.TypeWorkout; // Значение по умолчанию
                                                           // установка праметров и выход в свитче
            switch (abon)
            {
            case ClubCardA clubCardA:
            {
                if (clubCardA.NumPersonalTr == 0 && clubCardA.NumAerobicTr == 0 && clubCardA.NumMiniGroup == 0)
                {
                    optionsWorkout.TypeWorkout = TypeWorkout.Тренажерный_Зал;
                    return(DialogResult.OK);
                }
                break;
            }

            case AbonementByDays byDays:
            {
                if (byDays.TypeWorkout == TypeWorkout.Тренажерный_Зал)
                {
                    // Возвращаем текущий тип тренировки
                    //optionsWorkout.TypeWorkout = abon.TypeWorkout;
                    return(DialogResult.OK);
                }
                break;
            }

            case SingleVisit singleVisit:
            {
                if (singleVisit.TypeWorkout == TypeWorkout.Тренажерный_Зал)
                {
                    return(DialogResult.OK);
                }
                break;
            }
            }
            // если не вышли , то запуск формы опций
            var workoutForm = new WorkoutForm(personName);

            var dlgReult = workoutForm.ShowDialog();

            if (dlgReult == DialogResult.OK)
            {
                optionsWorkout = workoutForm.SelectedOptions;
            }
            return(dlgReult);
        }
Ejemplo n.º 3
0
        /// <summary>
        ///  Вызывать этот метод для задания абонемента пользователю.
        /// Тут сохраняется новый абонемент в историю абонементов
        /// </summary>
        public void ApplyChanges()
        {
            AbonementBasic abonementNew = null;

            switch (_selectedAbonementName)
            {
            case "Клубная Карта":
            {
                abonementNew = new ClubCardA(_pay, _timeTren, TypeWorkout.Тренажерный_Зал, _spa, _periodClubCard);
                break;
            }

            case "Абонемент":
            {
                abonementNew = new AbonementByDays(_pay, _timeTren, _typeWorkout, _spa, _daysInAbon);
                break;
            }

            case "Разовое Занятие":
            {
                abonementNew = new SingleVisit(_typeWorkout, _spa, Pay.Оплачено, _timeTren);
                break;
            }

            case "Гостевой визит":
            {
                // Создаем новый абонемент
                abonementNew = new SingleVisit(_typeWorkout, _spa, Pay.Оплачено, _timeTren);
                abonementNew.TryActivate(DateTime.Now.Date);
                // Выбираем опции абонемента
                var selectedOptions = new WorkoutOptions();
                _person.AbonementCurent = abonementNew;
                var dlgResult = FormsRunner.RunWorkoutOptionsSingleForm(ref selectedOptions, abonementNew, _person.Name);
                if (dlgResult == DialogResult.Cancel)
                {
                    return;
                }
                // Отмечаем тренировку
                bool isSuccess = abonementNew.CheckInWorkout(abonementNew.TypeWorkout);
                if (!isSuccess)
                {
                    return;
                }

                // Сохраняем текущее посещение в истории
                PersonObject.SaveCurentVisit(_person, abonementNew, selectedOptions);      // Сохраняет текущий визит
                DailyVisits.GetInstance().AddToLog(_person.Name, selectedOptions);         // Cобытие для добавления текущего посещения на главную форму
                _person.Status        = StatusPerson.Гостевой;
                _person.SpecialNotes +=
                    $"\n\r Гостевой визит был: {DateTime.Now.ToString(new DateTimeFormatInfo().LongDatePattern)} ";
                _person.AbonementCurent = null;
                AbonementController.GetInstance().AddAbonement(_person.Name, abonementNew);
                PersonObject.SaveAbonementToHistory(_person, abonementNew);
                return;
            }
            }

            if (_person.Status == StatusPerson.Гостевой)
            {
                _person.Status = StatusPerson.Активный;
            }

            ApplyCorrectedValues(ref abonementNew);//  Корректировка абонемента по дате, количеству оставшихся посещений
            AbonementController.GetInstance().AddAbonement(_person.Name, abonementNew);

            //тут добавить абонемент в список истории абонементов.
            PersonObject.SaveAbonementToHistory(_person, abonementNew);
        }
Ejemplo n.º 4
0
        public WorkoutForm(string personName)
        {
            InitializeComponent();
            SelectedOptions = new WorkoutOptions();// Обьект по умолчанию

            _person = PersonObject.GetLink(personName);
            var abonement     = _person.AbonementCurent;
            var manhattanInfo = DataBaseLevel.GetManhattanInfo();

            _treners  = manhattanInfo.Treners;
            _schedule = manhattanInfo.Schedule;

            // Скрываем Панели с Картинками
            panel_tren.Visible      = false;
            panel_aero.Visible      = false;
            panel_personal.Visible  = false;
            panel_miniGroup.Visible = false;

            // Скрываем радибатонны
            radioButton_tren.Visible     = false;
            radioButton_aerob.Visible    = false;
            radioButton_personal.Visible = false;
            radioButton_miniGr.Visible   = false;

            radioButton_tren.Enabled     = false;
            radioButton_aerob.Enabled    = false;
            radioButton_personal.Enabled = false;
            radioButton_miniGr.Enabled   = false;

            switch (abonement)
            {
            case ClubCardA clubCardA:
            {
                // Trenaj Zal
                SetRadioBtn(radioButton_tren, panel_tren, true);

                // Aerobn Zal
                var isAero = clubCardA.NumAerobicTr != 0;
                SetRadioBtn(radioButton_aerob, panel_aero, isAero);

                // Personal
                var isPers = clubCardA.NumPersonalTr != 0;
                SetRadioBtn(radioButton_personal, panel_personal, isPers);

                // MiniGroups
                var isMgR = clubCardA.NumMiniGroup > 0;
                SetRadioBtn(radioButton_miniGr, panel_miniGroup, isMgR);

                break;
            }

            case AbonementByDays byDays:
            {
                // Trenaj Zal
                var isTz = byDays.TypeWorkout == TypeWorkout.Тренажерный_Зал;
                SetRadioBtn(radioButton_tren, panel_tren, isTz);

                // Aerobn Zal
                var isAero = byDays.TypeWorkout == TypeWorkout.Аэробный_Зал;
                SetRadioBtn(radioButton_aerob, panel_aero, isAero);

                // Personal
                var isPers = byDays.TypeWorkout == TypeWorkout.Персональная;
                SetRadioBtn(radioButton_personal, panel_personal, isPers);

                // MiniGroups
                var isMgR = byDays.GetRemainderDays() > 0 && byDays.TypeWorkout == TypeWorkout.МиниГруппа;
                SetRadioBtn(radioButton_miniGr, panel_miniGroup, isMgR);

                break;
            }

            case SingleVisit singleVisit:
            {
                // Trenaj Zal
                SetRadioBtn(radioButton_tren, panel_tren, false);

                // Aerobn Zal
                var isAero = singleVisit.TypeWorkout == TypeWorkout.Аэробный_Зал;
                SetRadioBtn(radioButton_aerob, panel_aero, isAero);

                // Personal
                var isPers = singleVisit.TypeWorkout == TypeWorkout.Персональная;
                SetRadioBtn(radioButton_personal, panel_personal, isPers);

                // MiniGroups
                var isMgR = singleVisit.TypeWorkout == TypeWorkout.МиниГруппа;
                SetRadioBtn(radioButton_miniGr, panel_miniGroup, isMgR);
                break;
            }
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Отметить посещение. Запускается логика из текущего абонемента, а так же запускается событие для добавления
        /// в списки на главной форме
        /// </summary>
        /// <param name="personName"></param>
        /// <returns></returns>
        public bool CheckInWorkout(string personName)
        {
            var person = PersonObject.GetLink(personName);

            if (person.AbonementCurent == null)
            {
                return(false);
            }

            if (!IsAbonementValid(ref person))
            {
                return(false);
            }

            // Проверка на дубляж посещений. Если сегодня уже клиент ходил - задать вопрос
            var isAlreadyVisited = PersonObject.IsVisitToday(personName, out var infoMessage);

            if (isAlreadyVisited)
            {
                var dialogResult = MessageBox.Show($@"Повторно отметить посещение?

{infoMessage}", @"Сегодня клиент уже отмечался!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                if (dialogResult == DialogResult.No)
                {
                    return(false);
                }
            }


            var selectedOptions = new WorkoutOptions();

            bool isSuccess;

            switch (person.AbonementCurent)
            {
            case AbonementByDays byDays:
            {
                var dlgResult = FormsRunner.RunWorkoutOptionsForm(ref selectedOptions, person.Name);
                if (dlgResult == DialogResult.Cancel)
                {
                    return(false);
                }

                person.AbonementCurent.TryActivate(DateTime.Now.Date);   // Если не Активирован

                isSuccess = byDays.CheckInWorkout(selectedOptions.TypeWorkout);
                if (!isSuccess)
                {
                    return(false);
                }
                PersonObject.SaveCurentVisit(person, selectedOptions);   // Сохраняет текущий визит
                break;
            }

            case ClubCardA clubCardA:
            {
                var dlgResult = FormsRunner.RunWorkoutOptionsForm(ref selectedOptions, person.Name);
                if (dlgResult == DialogResult.Cancel)
                {
                    return(false);
                }

                person.AbonementCurent.TryActivate(DateTime.Now.Date);   // Если не Активирован

                isSuccess = clubCardA.CheckInWorkout(selectedOptions.TypeWorkout);
                if (!isSuccess)
                {
                    return(false);
                }
                PersonObject.SaveCurentVisit(person, selectedOptions);   // Сохраняет текущий визит
                break;
            }

            case SingleVisit singleVisit:
            {
                var dlgResult = FormsRunner.RunWorkoutOptionsForm(ref selectedOptions, person.Name);
                if (dlgResult == DialogResult.Cancel)
                {
                    return(false);
                }

                person.AbonementCurent.TryActivate(DateTime.Now.Date);   // Если не Активирован

                isSuccess = singleVisit.CheckInWorkout(person.AbonementCurent.TypeWorkout);

                if (!isSuccess)
                {
                    return(false);
                }
                PersonObject.SaveCurentVisit(person, selectedOptions);   // Сохраняет текущий визит
                break;
            }
            }

            _dailyVisits.AddToLog(personName, selectedOptions); // Cобытие для добавления текущего посещения на главную форму

            IsAbonementValid(ref person);
            MessageBox.Show(@"Тренировка Учтена!", "", MessageBoxButtons.OK, MessageBoxIcon.Information);

            //  AbonementController.GetInstance().Save();
            DailyVisits.GetInstance().Serialize();


            return(true);
        }