public void GetListValidTest() { var inst = AbonementController.GetInstance(); inst.GetPersonsDictn().Clear(); var firstPerson = Guid.NewGuid().ToString(); var l1 = inst.GetListValid(firstPerson); Assert.AreEqual(l1.Count, 0); inst.AddAbonement(firstPerson, new AbonementByDays(Pay.Оплачено, TimeForTr.Утро, TypeWorkout.Аэробный_Зал, SpaService.Без_Спа, DaysInAbon.На_10_посещений)); var r = inst.GetPersonsDictn().First().Value.Count; Assert.AreEqual(r, 1); // Основная проверка var res = inst.GetListValid(firstPerson).Count(); Assert.AreEqual(res, 1); // Если имя персоны null var res2 = inst.GetListValid(null); Assert.IsNull(res2); }
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 GetInstanceTest() { Assert.IsFalse(false); AbonementController inst = null; Assert.IsNull(inst); inst = AbonementController.GetInstance(); Assert.IsNotNull(inst); }
private void AbonementForm_Load(object sender, EventArgs e) { SetInitialValues(); LoadDefaultValues(); // Не выключено ли в настройках разрешение на корректировку абонементов при создании их groupBox_Correctable.Enabled = Options.AbonIsCorrectable; // Гостевой визит Радиобатон показывается если не были посещения var lastVisits = PersonObject.GetVisitsList(_person.Name); var isAbonementsExists = (AbonementController.GetInstance()?.GetList(_person.Name)?.Count != 0); radioButton_guest.Visible = (lastVisits == null || lastVisits.Count == 0) && !isAbonementsExists; pictureBox_Guest.Visible = (lastVisits == null || lastVisits.Count == 0) && !isAbonementsExists; }
public void AddAbonementTest() { var inst = AbonementController.GetInstance(); inst.GetPersonsDictn().Clear(); var actual = inst.GetPersonsDictn().Count; Assert.AreEqual(0, actual); var name = Guid.NewGuid().ToString(); inst.AddAbonement(name, new AbonementByDays(Pay.Не_Оплачено, TimeForTr.Весь_День, TypeWorkout.Аэробный_Зал, SpaService.Без_Спа, DaysInAbon.На_10_посещений)); Assert.IsTrue(inst.GetPersonsDictn().ContainsKey(name)); Assert.AreEqual(1, inst.GetList(name).Count); }
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(); } }
public void GetPersonAbonementsTest() { var inst = AbonementController.GetInstance(); inst.GetPersonsDictn().Clear(); // Коллекция пустая Assert.AreEqual(inst.GetPersonsDictn().Count, 0); var firstPerson = Guid.NewGuid().ToString(); var secondPerson = Guid.NewGuid().ToString(); // Добавляем в коллекцию клиентов inst.GetPersonsDictn().Add(firstPerson, new List <AbonementBasic>() { new AbonementByDays(Pay.Оплачено, TimeForTr.Утро, TypeWorkout.Аэробный_Зал, SpaService.Без_Спа, DaysInAbon.На_10_посещений) }); Assert.AreEqual(1, inst.GetPersonsDictn().Count); // Проверяем основной метод var result = inst.GetList(firstPerson); Assert.AreSame(inst.GetPersonsDictn()[firstPerson], result); // Изменения в основной коллекции var testChanges1 = result.First().IsActivated; result.First().IsActivated = true; Assert.AreEqual(result.First().IsActivated, true); Assert.AreEqual(inst.GetPersonsDictn()[firstPerson].First().IsActivated, true); var expect = result.ToList().Count; Assert.AreEqual(1, expect); // Проверка доступа по индексу inst.GetPersonsDictn().Add(secondPerson, new List <AbonementBasic>() { new AbonementByDays(Pay.Не_Оплачено, TimeForTr.Весь_День, TypeWorkout.Аэробный_Зал, SpaService.Без_Спа, DaysInAbon.На_10_посещений) }); }
public void GetOldAbonementsTest() { var inst = AbonementController.GetInstance(); inst.GetPersonsDictn().Clear(); var firstPerson = Guid.NewGuid().ToString(); inst.GetPersonsDictn().Add(firstPerson, new List <AbonementBasic>() { new AbonementByDays(Pay.Оплачено, TimeForTr.Утро, TypeWorkout.Аэробный_Зал, SpaService.Без_Спа, DaysInAbon.На_10_посещений) }); var r = inst.GetPersonsDictn().First().Value.Count; Assert.AreEqual(r, 1); // Основная проверка var res = inst.GetListNotValid(firstPerson).Count(); Assert.AreEqual(res, 0); }
//FIXME Попробовать тут использовать не AbonementCurent, а _abonementCurent чтобы не вызывать лишний раз событие изменения абон public void StatusDirector() { if (Status == StatusPerson.Запрещён) { // AbonementCurent = null; return; } if (Status == StatusPerson.Гостевой) { _abonementCurent = AbonementController.GetInstance().GetFirstValid(Name); if (AbonementCurent == null) { return; } } // Нет Карты if (AbonementCurent == null) { Status = StatusPerson.Нет_Карты; } else // Активный { var isValid = AbonementCurent.IsValid(); if (isValid) { Status = AbonementCurent.Freeze != null && AbonementCurent.Freeze.IsFreezedNow() ? StatusPerson.Заморожен : StatusPerson.Активный; } else { Status = StatusPerson.Нет_Карты; AbonementCurent = null; } } }
/// <summary> /// Только тут создаются заголовки Выборочных полей и записываются их данные в структуру PersonField /// </summary> /// <param name="first"></param> /// <returns></returns> public static IEnumerable <PersonField> GetPersonFieldsShort(Person first) { var person = first; // Главные поля, всегда отображаются var personFields = new List <PersonField> { new PersonField { HeaderName = "Имя", Value = person.Name }, new PersonField { HeaderName = "Телефон", Value = person.Phone }, // new PersonField {HeaderName = "Статус", Value = person.Status.ToString()}, }; // Все что касается Абонемента var instAbonContr = AbonementController.GetInstance(); var lastAbonement = instAbonContr.GetFirstValid(person.Name) ?? instAbonContr.GetList(person.Name).LastOrDefault(); if (lastAbonement == null) { return(personFields); } personFields.Add(new PersonField { HeaderName = "Название", Value = lastAbonement.AbonementName }); personFields.Add(new PersonField { HeaderName = "Покупка", Value = $"{lastAbonement.BuyActivationDate:dd/MM/yyyy}" }); personFields.Add(new PersonField { HeaderName = "Конец", Value = $"{lastAbonement.EndDate:dd/MM/yyyy}" }); // Последнее посещение в журнале var journal = PersonObject.GetVisitsList(person.Name); if (journal?.Count > 0) { var lastVisit = journal.Last().DateTimeVisit.Date; //.ToString("MM/dd/yyyy"); var numDays = (DateTime.Now - lastVisit).Days; personFields.Add(new PersonField { HeaderName = "Посл.Визит", Value = lastVisit.ToString("MM/dd/yyyy") }); personFields.Add(numDays == 0 ? new PersonField { HeaderName = "Был (дн. назад)", Value = $"Сегодня" } : new PersonField { HeaderName = "Был (дн. назад)", Value = $" {numDays}" }); } else { personFields.Add(new PersonField { HeaderName = "Был(дн. назад)", Value = $"" }); } return(personFields); }
/// <summary> /// Только тут создаются заголовки всех полей и записываются основные данные /// </summary> /// <param name="first"></param> /// <returns></returns> public static IEnumerable <PersonField> GetPersonFieldsFull(Person first) { var person = first; var instAbonContr = AbonementController.GetInstance(); var abonHistoriesOld = PersonObject.GetAbonHistoryList(person.Name); var abonListAll = instAbonContr.GetList(person.Name); var abonValid = instAbonContr.GetFirstValid(person.Name); // Создается текстовый список всех абонементов. var abonHistString = new StringBuilder(); foreach (var item in abonListAll) { abonHistString.AppendLine(item?.AbonementName + $"({item?.BuyDate.Date}), "); } if (abonHistoriesOld != null) { foreach (var item in abonHistoriesOld) { abonHistString.Append(item?.AbonementName + $"({item?.BuyDate}), "); } } // Для выдергивания не форматированного текста в заметки. RichTextBox tempSpecialNotesRtb = new RichTextBox(); MyRichTextBox.Load(tempSpecialNotesRtb, person.SpecialNotes); var abon = abonValid ?? abonListAll?.LastOrDefault(); var isAbonExist = abon != null; var personFields = new List <PersonField> { new PersonField { HeaderName = "Имя", Value = person.Name }, new PersonField { HeaderName = "Телефон", Value = person.Phone }, new PersonField { HeaderName = "Дата Рождения", Value = $"{person.BirthDate.Date:MM/dd/yyyy}" }, new PersonField { HeaderName = "Пол", Value = person.GenderType.ToString() }, new PersonField { HeaderName = "Статус", Value = person.Status.ToString() }, new PersonField { HeaderName = "ID номер", Value = person.IdString }, new PersonField { HeaderName = "Паспорт", Value = person.Passport }, new PersonField { HeaderName = "Права", Value = person.DriverIdNum }, // Абонемент new PersonField { HeaderName = "Название", Value = (isAbonExist) ?abon.AbonementName: "" }, new PersonField { HeaderName = "Доступное время", Value = (isAbonExist) ?abon.TimeTraining.ToString():"" }, new PersonField { HeaderName = "Осталось дней", Value = (isAbonExist) ?abon.GetRemainderDays().ToString():"" }, new PersonField { HeaderName = "Аэробных", Value = (isAbonExist) ?abon.NumAerobicTr.ToString():"" }, new PersonField { HeaderName = "Персональных", Value = (isAbonExist) ?abon.NumPersonalTr.ToString():"" }, new PersonField { HeaderName = "Мини Групп", Value = (isAbonExist) ?abon.NumMiniGroup.ToString():"" }, new PersonField { HeaderName = "Спа услуги", Value = (isAbonExist) ?abon.Spa.ToString():"" }, new PersonField { HeaderName = "Доступный тип", Value = (isAbonExist) ?abon.TypeWorkout.ToString():"" }, new PersonField { HeaderName = "Оплата", Value = (isAbonExist) ?abon.PayStatus.ToString():"" }, new PersonField { HeaderName = "Абон. Покупка", Value = (isAbonExist) ? $"{abon.BuyDate:MM/dd/yyyy}" :"" }, new PersonField { HeaderName = "Абон. Активация", Value = (isAbonExist) ? $"{abon.BuyActivationDate:MM/dd/yyyy}" :"" }, new PersonField { HeaderName = "Абон. Конец", Value = (isAbonExist) ? $"{abon.EndDate:MM/dd/yyyy}":"" }, new PersonField { HeaderName = "Активация", Value = (isAbonExist) ?abon.IsActivated.ToString():"" }, new PersonField { HeaderName = "Заметки", Value = tempSpecialNotesRtb.Text }, new PersonField { HeaderName = "Заморозки", Value = GetFreezeString(person) }, new PersonField { HeaderName = "История Абон.", Value = abonHistString.ToString() } }; return(personFields); }
public bool IsAbonementExist() { bool result = AbonementController.GetInstance().GetListValid(Name).Count != 0; return(result); }
/// <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; }