public ClientForm(string keyName, IPresenterProperty presenter) { InitializeComponent(); _person = PersonObject.GetLink(keyName) ?? new Person(); _logic = Logic.GetInstance(); _presenter = presenter; }
/// <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); }
private void checkedListBox_Tren_Name_SelectedIndexChanged(object sender, EventArgs e) { var checkedIndexes = checkedListBox_Tren_Name.CheckedIndices; var pList = new List <Person>(); _reqTrenName = _personsAll.Values; if (checkedIndexes.Count != 0) { foreach (var item in checkedIndexes) { var checkedItemString = checkedListBox_Tren_Name.Items[(int)item].ToString(); var indexOfBrace = checkedItemString.IndexOf('('); string trimmedCheckedItemString; if (indexOfBrace > 0) { trimmedCheckedItemString = checkedItemString.Substring(0, checkedItemString.IndexOf('(')).Trim(); } else { trimmedCheckedItemString = checkedItemString; } var r2 = _aerobVisits.Where(x => { string groupTrName = x.GroupTimeName; if (groupTrName.Contains("(")) { groupTrName = groupTrName.Substring(0, x.GroupTimeName.IndexOf('(')).Trim(); } return(groupTrName == trimmedCheckedItemString); }).Select(y => y.NamePerson).Distinct().ToList(); foreach (var name in r2) { pList.Add(PersonObject.GetLink(name)); } _reqTrenName = _reqTrenName.Intersect(pList).Distinct(); } } else { _reqTrenName = _personsAll.Values; // Если не нужна выборка по этому признаку } MyCheckedListBox.ClearSelection(checkedListBox_Tren_Name); var result = GetUpdatedRequestsAsync(); ShowPersons(result.Result); }
public static DialogResult RunFreezeForm(string personName) {// Cохраняет напрямую в Абонемент Person person = PersonObject.GetLink(personName); if (!(person.AbonementCurent is ClubCardA)) { return(DialogResult.Cancel); } ClubCardA clubCard = ((ClubCardA)person.AbonementCurent); var freezeForm = new FreezeForm(clubCard); return(freezeForm.ShowDialog()); }
/// <summary> /// Открывает карточку клиента namePerson /// </summary> /// <param name="namePerson"></param> public static void OpenPersonCard(string namePerson) { if (string.IsNullOrEmpty(namePerson)) { return; } if (!DataBaseLevel.ContainsNameKey(namePerson)) { MessageBox.Show(@"Ошибка. Неправильное имя клиента"); return; } var presenterClientForm = new ClientFormPresenter(PersonObject.GetLink(namePerson)); presenterClientForm.Run(); }
/// <summary> /// Метод пытается изменить Имя Клиента. Если Успешно, переименовывает файл с фотографией и перезаписывает Путь до фотки /// </summary> /// <param name="curentName"></param> /// <param name="newName"></param> /// <returns></returns> public static bool ChangePersonName(string curentName, string newName) { if (String.IsNullOrEmpty(curentName) || String.IsNullOrEmpty(newName)) { return(false); } var oldName = String.Copy(curentName); // Получаем обьекты для работы var person = PersonObject.GetLink(oldName); // Если текущее имя совпадает с новым if (person.Name == newName) { return(false); } // Пытаемся переименовать старое имя в новое var isSuccess = DataBaseLevel.PersonEditName(person.Name, newName); // Переименование коллекции с Посещениями if (isSuccess) { DataBaseLevel.GetPersonsVisitDict().RenameKey(oldName, PrepareName(newName)); DataBaseLevel.GetPersonsAbonHistDict().RenameKey(oldName, PrepareName(newName)); } // Переименование файлов и Пути к фотке if (isSuccess) { var isRenamedOk = MyFile.TryRenameFile(person.PathToPhoto, newName); if (isRenamedOk) { DataBaseM.EditPathToPhoto(newName, newName); } } // Переименование в контроллере абонементов if (isSuccess) { AbonementController.GetInstance().GetPersonsDictn().RenameKey(oldName, PrepareName(newName)); } // return(isSuccess); }
public static bool AddAbonement(string personName) { // Для справки. В архив абонементов новый добавляемый абонемент добавляется в форме абонементов AbonementForm // именно там он создается. Поэтому сразу и добавляем там var person = PersonObject.GetLink(personName); if (person == null) { return(false); } var dialogResult = FormsRunner.CreateAbonementForm(person.Name); //if (dialogResult == DialogResult.OK) //{ // AbonementController.GetInstance().Save(); // return true; //} return(false); }
/// <summary> /// Обновляет все элементы на форме при любом выборе нового Клиента. /// </summary> private void UpdatePersonalControls() { // Получили Персону var person = PersonObject.GetLink(SelectedName); // Телефон maskedTextBox_PhoneNumber.Text = person.Phone; // Пол MyComboBox.SetSelectedValue(comboBox_Gender, person.GenderType.ToString()); // ДР try { dateTimePicker_birthDate.Value = person.BirthDate.Date; } catch (Exception) { dateTimePicker_birthDate.Value = DateTime.Now; } // Пасспорт maskedTextBox_Passport.Text = person.Passport ?? ""; // Права maskedTextBox_DriverID.Text = person.DriverIdNum ?? ""; // ID maskedTextBox_number.Text = person.IdString; // Фото var isSuccess = Logic.TryLoadPhoto(pictureBox_Client, person.PathToPhoto, person.GenderType); if (!isSuccess && !string.IsNullOrEmpty(person.PathToPhoto)) { person.PathToPhoto = ""; } // Краткая инфа об абонементе Logic.LoadShortInfo(groupBox_AbonInfo, person.Status, person.AbonementCurent); }
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; } } }
///////////////// КОНСТРУКТОР. МЕТОДЫ //////////////////////////////// public AbonementForm(string nameKey) { InitializeComponent(); _person = PersonObject.GetLink(nameKey); // Получаем ссылку на обьект персоны _isReadOnlyForm = false; }
/// <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); }