/// <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); }
/// <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); }
/// <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); }
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; } } }
/// <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); }