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