/// <summary> /// Получаем заголовки из Обьекта класса Пользователя. Нужно для экспорта в эксель /// На вход подается функция создающая поля поля и заголовки /// </summary> /// <returns></returns> private static DataColumn[] GetHeaders(Func <Person, IEnumerable <PersonField> > getFieldsFunc) { // Создаем массив с полями и заголовками будущей таблицы по текущему посещению var persons = DataBaseLevel.GetPersonsList(); var p = persons.Select(x => x).FirstOrDefault(x => (x.Value.AbonementCurent != null)); IEnumerable <PersonField> personFields; // Это условие нужно на тот случай если в списке нет клиентов с абонементами if (p.Key == null || p.Value == null) { var tempPerson = new Person("temp") { AbonementCurent = new SingleVisit(TypeWorkout.Аэробный_Зал, SpaService.Без_Спа, Pay.Не_Оплачено, TimeForTr.Утро) }; personFields = getFieldsFunc(tempPerson); } else { personFields = getFieldsFunc(p.Value); } var headerNames = personFields.Select(x => x.HeaderName).ToArray(); var dcol = new DataColumn[headerNames.Length]; for (var i = 0; i < headerNames.Length; i++) { dcol[i] = new DataColumn(headerNames[i]); } return(dcol); }
/// <summary> /// Возвращает DataTable со Всеми клиентами в Базе. Нужна для экспорта в Excel,а так же для создания отчетов /// </summary> /// <returns></returns> public static DataTable CreatePersonsTable() { var persons = DataBaseLevel.GetPersonsList().Select(x => x.Value); var dt = CreatePersonsTable(persons, GetPersonFieldsFull); return(dt); }
public static void SaveAbonementToHistory(Person person, AbonementBasic abon) { if (abon == null) { return; } var currentAdmin = (DataBaseLevel.GetManhattanInfo()?.CurrentAdmin) ?? new Administrator(); var lengAbonOrClCa = string.Empty; if (abon is AbonementByDays byDays) { lengAbonOrClCa = byDays.GetTypeAbonementByDays().ToString().Replace("На_", "").Replace("_", " "); } else if (abon is ClubCardA clubCardA) { lengAbonOrClCa = clubCardA.PeriodAbonem.ToString().Replace("На_", ""); } else if (abon is SingleVisit singleVisit) { lengAbonOrClCa = ""; } var abonHistory = new AbonHistory() { AbonementName = abon.AbonementName, AdminName = currentAdmin.Name, TypeWorkout = abon.TypeWorkout.ToString(), Time = abon.TimeTraining.ToString(), SpaStatus = abon.Spa.ToString(), EndDate = abon.EndDate.ToShortDateString(), ActivationDate = abon.BuyActivationDate.ToShortDateString(), LengthAbonOrClubCard = lengAbonOrClCa, NumAerobn = (abon is AbonementByDays days && days.TypeWorkout == TypeWorkout.Аэробный_Зал) ? days.GetRemainderDays().ToString() : abon.NumAerobicTr.ToString(), NumMini = (abon is AbonementByDays daysM && daysM.TypeWorkout == TypeWorkout.МиниГруппа) ? daysM.GetRemainderDays().ToString() : abon.NumMiniGroup.ToString(), NumPerson = (abon is AbonementByDays daysP && daysP.TypeWorkout == TypeWorkout.Персональная) ? daysP.GetRemainderDays().ToString() : abon.NumPersonalTr.ToString(), BuyDate = abon.BuyDate.ToShortDateString() }; // Список всех абонементов для всех клиентов var personsAbonHistDict = DataBaseLevel.GetPersonsAbonHistDict(); if (personsAbonHistDict.ContainsKey(person.Name)) { personsAbonHistDict[person.Name].Add(abonHistory); } else { personsAbonHistDict.Add(person.Name, new List <AbonHistory> { abonHistory }); } } #endregion }
// Path To Photo public static void EditPathToPhoto(string personName, string newFileNameNoExtens) { var oldPathToPhoto = PersonObject.GetLink(personName)?.PathToPhoto; if (oldPathToPhoto == null) { return; } var fileInfo = new FileInfo(oldPathToPhoto); var newFilePath = fileInfo.DirectoryName + "\\" + newFileNameNoExtens + fileInfo.Extension; if (personName != null && DataBaseLevel.ContainsNameKey(personName)) { PersonObject.GetLink(personName).PathToPhoto = newFilePath; } }
/// <summary> /// Сохраняет текущий визит. Перегрузка для работы с Диспетчером абонементов /// Добавляет в Журнал посещений параметры выбранной Тренировки, Текущего администратора, время тренировки. /// Статический метод, на вход нужно подать Персону. /// </summary> /// <param name="person"></param> /// <param name="abonement">Абонемент для сохранения</param> /// <param name="selectedOptions"></param> public static void SaveCurentVisit(Person person, AbonementBasic abonement, WorkoutOptions selectedOptions) { var currentAdmin = (DataBaseLevel.GetManhattanInfo()?.CurrentAdmin) ?? new Administrator(); var visit = new Visit(abonement, selectedOptions, currentAdmin.Name); var personsVisitDict = DataBaseLevel.GetPersonsVisitDict(); if (personsVisitDict.ContainsKey(person.Name)) { personsVisitDict[person.Name].Add(visit); } else { personsVisitDict.Add(person.Name, new List <Visit> { visit }); } }
public static bool EditPersonalNumber(string namePerson, string newNumber) { var isExist = FindByPersonalNumber(DataBaseLevel.GetPersonsList(), newNumber, out _); if (isExist) { MessageBox.Show($@"Такой номер уже назначен клиенту: {namePerson}", @"Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Information); return(false); } else if (string.IsNullOrEmpty(newNumber)) { // MessageBox.Show($@"Личный номер удалён", @"Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Information); PersonObject.GetLink(namePerson).IdString = string.Empty; return(false); } PersonObject.GetLink(namePerson).IdString = newNumber; return(true); }
public static List <Visit> GetVisitsList(string name) { var dictVisits = DataBaseLevel.GetPersonsVisitDict(); return(!dictVisits.ContainsKey(name) ? null : dictVisits[name]); }
// private static readonly DataBaseLevel DataBase = DataBaseLevel.GetInstance(); public static Person GetLink(string name) { var isOk = DataBaseLevel.GetPersonsList().TryGetValue(name, out _person); return(isOk ? _person : null); }
/// <summary> /// Возвращает коллекцию с старыми абонементами клиента. Если их нет - вернет нулл. /// </summary> /// <param name="name"></param> /// <returns></returns> public static List <AbonHistory> GetAbonHistoryList(string name) { var dictHistory = DataBaseLevel.GetPersonsAbonHistDict(); return(!dictHistory.ContainsKey(name) ? null : dictHistory[name]); }
public static DataBaseLevel GetInstance() { return(_dbInstance ?? (_dbInstance = new DataBaseLevel())); }