Esempio n. 1
0
        public void GetIndexGlobalTest()
        {
            var inst = AbonementController.GetInstance();

            inst.GetPersonsDictn().Clear();
            var actual = inst.GetPersonsDictn().Count;

            Assert.AreEqual(0, actual);

            var abonValid1 = new AbonementByDays(Pay.Не_Оплачено, TimeForTr.Утро, TypeWorkout.МиниГруппа, SpaService.Спа, DaysInAbon.На_5_посещений);
            var abonValid2 = new SingleVisit(TypeWorkout.Аэробный_Зал, SpaService.Без_Спа, Pay.Не_Оплачено, TimeForTr.Весь_День)
            {
                IsActivated = true
            };
            var abonValid3   = new AbonementByDays(Pay.Оплачено, TimeForTr.Утро, TypeWorkout.МиниГруппа, SpaService.Спа, DaysInAbon.На_5_посещений);
            var abonNotValid = new ClubCardA(Pay.Не_Оплачено, TimeForTr.Весь_День, TypeWorkout.Аэробный_Зал, SpaService.Без_Спа, PeriodClubCard.На_1_Месяц)
            ;

            abonNotValid.SetActivationDate(DateTime.Today.AddDays(-200));
            // Если нет пользователя
            var result = inst.GetGlobalIndex("nameDummy", abonValid1);

            Assert.AreEqual(-1, result);

            // Если абонемент есть
            string personName = "MyName";

            inst.AddAbonement(personName, abonValid1);
            inst.AddAbonement(personName, abonValid2);
            inst.AddAbonement(personName, abonValid3);
            Assert.AreEqual(3, inst.GetList(personName).Count);

            var index = inst.GetGlobalIndex(personName, abonValid2);

            Assert.AreEqual(1, index);

            // Если абонемента нет
            index = inst.GetGlobalIndex(personName, abonNotValid);
            Assert.AreEqual(-1, index);

            // Получить невалидный и найти его индекс в основной коллекции
            inst.AddAbonement(personName, abonNotValid);
            var notValidList = inst.GetListNotValid(personName);
            //.. Получить абонемент по индексу
            var curentAbon = inst.GetByIndex(notValidList, 0);

            Assert.AreSame(curentAbon, abonNotValid);

            var globalIndex = inst.GetGlobalIndex(personName, curentAbon);

            Assert.AreEqual(3, globalIndex);

            var globalIndex2 = inst.GetGlobalIndex(null, curentAbon);

            Assert.AreEqual(-1, globalIndex2);
        }
Esempio n. 2
0
        public void RemoveAbonementTest()
        {
            var inst = AbonementController.GetInstance();

            inst.GetPersonsDictn().Clear();
            var actual = inst.GetPersonsDictn().Count;

            Assert.AreEqual(0, actual);

            var personName = Guid.NewGuid().ToString();

            //Добавляем пользователя и абонементы
            var abonValid1 = new AbonementByDays(Pay.Не_Оплачено, TimeForTr.Утро, TypeWorkout.МиниГруппа, SpaService.Спа, DaysInAbon.На_5_посещений);
            var abonValid2 = new SingleVisit(TypeWorkout.Аэробный_Зал, SpaService.Без_Спа, Pay.Не_Оплачено, TimeForTr.Весь_День)
            {
                IsActivated = true
            };
            var abonValid3   = new AbonementByDays(Pay.Оплачено, TimeForTr.Утро, TypeWorkout.МиниГруппа, SpaService.Спа, DaysInAbon.На_5_посещений);
            var abonNotValid = new ClubCardA(Pay.Не_Оплачено, TimeForTr.Весь_День, TypeWorkout.Аэробный_Зал, SpaService.Без_Спа, PeriodClubCard.На_1_Месяц)
            {
                BuyActivationDate = DateTime.Today.AddDays(-200)
            };

            inst.GetPersonsDictn().Add(personName, new List <AbonementBasic>());
            inst.GetPersonsDictn()[personName].Add(abonNotValid);
            inst.GetPersonsDictn()[personName].Add(abonValid1);
            inst.GetPersonsDictn()[personName].Add(abonValid2);
            inst.GetPersonsDictn()[personName].Add(abonValid3);
            Assert.AreEqual(4, inst.GetPersonsDictn()[personName].Count);

            // Проверяем удаление
            inst.RemoveAbonement(personName, abonValid3);
            Assert.AreEqual(3, inst.GetPersonsDictn()[personName].Count);

            try
            {
                inst.RemoveAbonement("2as", abonValid3);
            }
            catch (Exception e)
            {
                throw new NullReferenceException();
            }
        }
        /// <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);
        }
Esempio n. 4
0
        public void CheckAccessByIndexTest()
        {
            var inst = AbonementController.GetInstance();

            inst.GetPersonsDictn().Clear();
            // Коллекция пустая
            Assert.AreEqual(inst.GetPersonsDictn().Count, 0);
            var firstPerson = Guid.NewGuid().ToString();

            // Добавляем в коллекцию клиентов
            inst.GetPersonsDictn().Add(firstPerson, new List <AbonementBasic>());
            // Проверяем что клиент есть, но у него нет абонементов
            Assert.AreEqual(inst.GetListValid(firstPerson).Count(), 0);
            Assert.AreEqual(inst.GetListNotValid(firstPerson).Count(), 0);

            var abonValid1 = new AbonementByDays(Pay.Не_Оплачено, TimeForTr.Утро, TypeWorkout.МиниГруппа, SpaService.Спа, DaysInAbon.На_5_посещений);

            var abonValid2 = new SingleVisit(TypeWorkout.Аэробный_Зал, SpaService.Без_Спа, Pay.Не_Оплачено,
                                             TimeForTr.Весь_День)
            {
                BuyActivationDate = DateTime.Today.AddDays(-20), NumAerobicTr = 0, NumMiniGroup = 0, NumPersonalTr = 0, IsActivated = true, TypeWorkout = TypeWorkout.Аэробный_Зал
            };

            var abonValid3 = new AbonementByDays(Pay.Оплачено, TimeForTr.Утро, TypeWorkout.МиниГруппа, SpaService.Спа, DaysInAbon.На_5_посещений);

            var abonNotValid = new ClubCardA(Pay.Не_Оплачено, TimeForTr.Весь_День, TypeWorkout.Аэробный_Зал,
                                             SpaService.Без_Спа, PeriodClubCard.На_1_Месяц)
            {
                IsActivated = true
            };

            abonNotValid.SetActivationDate(DateTime.Today.AddDays(-200));

            string name = "myPerson";

            inst.AddAbonement(name, abonNotValid);
            inst.AddAbonement(name, abonValid1);
            inst.AddAbonement(name, abonValid2);
            inst.AddAbonement(name, abonValid3);

            Assert.AreEqual(inst.GetPersonsDictn().Count, 2);
            Assert.AreEqual(inst.GetPersonsDictn()[name].Count, 4);

            // Поиск по значению работает
            var t = inst.GetListValid("myPerson");

            Assert.AreEqual(t.Count(), 3);

            var i = t.ToList().IndexOf(abonValid1);

            Assert.AreEqual(i, 0); // 0 потому что первый элемент ориг массива отбрасывается.Он не валиден

            //1 Проверка как в рабочей программе
            var validAbons = inst.GetListValid(name);
            //2 Отобразили в листбоксе
            //3 Выбрали нужную строчку в листбоксе,получили индекс
            //4 Нашли по индексу нужный элемент в оригинальной коллекции
            int index        = 2;
            var selectedAbon = validAbons.ToArray()[index]; // abon_valid_3

            selectedAbon.NumAerobicTr = 123;
            var originalIndex = inst.GetPersonsDictn()["myPerson"].IndexOf(selectedAbon);
            var curentAbon    = inst.GetPersonsDictn()["myPerson"][originalIndex];

            curentAbon.NumAerobicTr = 9;
        }