コード例 #1
0
 public ClientForm(string keyName, IPresenterProperty presenter)
 {
     InitializeComponent();
     _person    = PersonObject.GetLink(keyName) ?? new Person();
     _logic     = Logic.GetInstance();
     _presenter = presenter;
 }
コード例 #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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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());
        }
コード例 #5
0
        /// <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();
        }
コード例 #6
0
        /// <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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        /// <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);
        }
コード例 #9
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;
            }
            }
        }
コード例 #10
0
 ///////////////// КОНСТРУКТОР. МЕТОДЫ ////////////////////////////////
 public AbonementForm(string nameKey)
 {
     InitializeComponent();
     _person         = PersonObject.GetLink(nameKey); // Получаем ссылку на обьект персоны
     _isReadOnlyForm = false;
 }
コード例 #11
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);
        }