/// <summary> /// Метод восстановления содержимого модели из сервера /// </summary> /// <param name="root">Ссылка на корневой объект модели</param> /// <param name="connection">Строка подключения</param> /// <returns></returns> public static bool RestoreTables(Root root, string connection) { var server = new Database.SqlServer { Connection = connection }; // предметы var dataSet = server.GetRows("Matters"); if (dataSet.Tables.Count > 0) { root.Matters.Clear(); foreach (var row in dataSet.Tables[0].Rows.Cast <DataRow>()) { if (row.ItemArray.Length != 2) { continue; } root.Matters.Add(new Matter { IdMatter = Guid.Parse(row.ItemArray[0].ToString()), Name = row.ItemArray[1].ToString() }); } } OperationResult = server.LastError; if (!string.IsNullOrWhiteSpace(OperationResult)) { return(false); } // специальности dataSet = server.GetRows("Specialities"); if (dataSet.Tables.Count > 0) { root.Specialities.Clear(); foreach (var row in dataSet.Tables[0].Rows.Cast <DataRow>()) { if (row.ItemArray.Length != 2) { continue; } root.Specialities.Add(new Speciality { IdSpeciality = Guid.Parse(row.ItemArray[0].ToString()), Name = row.ItemArray[1].ToString() }); } } OperationResult = server.LastError; if (!string.IsNullOrWhiteSpace(OperationResult)) { return(false); } // сдаваемые предметы dataSet = server.GetRows("PassMatters"); if (dataSet.Tables.Count > 0) { root.PassMatters.Clear(); foreach (var row in dataSet.Tables[0].Rows.Cast <DataRow>()) { if (row.ItemArray.Length != 4) { continue; } root.PassMatters.Add(new PassMatter { IdPassMatter = Guid.Parse(row.ItemArray[0].ToString()), IdSpeciality = Guid.Parse(row.ItemArray[1].ToString()), IdMatter = Guid.Parse(row.ItemArray[2].ToString()), PassForm = (PassKind)Enum.Parse(typeof(PassKind), row.ItemArray[3].ToString()) }); } } OperationResult = server.LastError; if (!string.IsNullOrWhiteSpace(OperationResult)) { return(false); } // абитуриенты dataSet = server.GetRows("Enrollees"); if (dataSet.Tables.Count > 0) { root.Enrollees.Clear(); foreach (var row in dataSet.Tables[0].Rows.Cast <DataRow>()) { if (row.ItemArray.Length != 16) { continue; } root.Enrollees.Add(new Enrollee { IdEnrollee = Guid.Parse(row.ItemArray[0].ToString()), RegistrationNumber = row.ItemArray[1].ToString(), Surname = row.ItemArray[2].ToString(), FirstName = row.ItemArray[3].ToString(), LastName = row.ItemArray[4].ToString(), BirthDay = DateTime.Parse(row.ItemArray[5].ToString()), SecodarySchoolName = row.ItemArray[6].ToString(), SecodarySchoolNumber = row.ItemArray[7].ToString(), SecodarySchoolTown = row.ItemArray[8].ToString(), GraduationDate = DateTime.Parse(row.ItemArray[9].ToString()), GoldMedal = bool.Parse(row.ItemArray[10].ToString()), Town = row.ItemArray[11].ToString(), Street = row.ItemArray[12].ToString(), HouseNumber = row.ItemArray[13].ToString(), PhoneNumber = row.ItemArray[14].ToString(), IdSpeciality = Guid.Parse(row.ItemArray[15].ToString()) }); } } OperationResult = server.LastError; if (!string.IsNullOrWhiteSpace(OperationResult)) { return(false); } return(true); }
/// <summary> /// Метод загрузки сохранённой ранее конфигурации из базы данных /// </summary> /// <param name="connection"></param> /// <returns></returns> public static Hotel LoadFromBase(string connection) { var hotel = new Hotel(); var server = new Database.SqlServer { Connection = connection }; // категории var dataSet = server.GetRows("Categories"); if (dataSet.Tables.Count > 0) { foreach (var row in dataSet.Tables[0].Rows.Cast <DataRow>()) { if (row.ItemArray.Length != 2) { continue; } hotel.Categories.Add(Guid.Parse(row.ItemArray[0].ToString()), row.ItemArray[1].ToString()); } } OperationResult = server.LastError; // услуги dataSet = server.GetRows("Services"); if (dataSet.Tables.Count > 0) { foreach (var row in dataSet.Tables[0].Rows.Cast <DataRow>()) { if (row.ItemArray.Length != 3) { continue; } hotel.Services.Add(Guid.Parse(row.ItemArray[0].ToString()), row.ItemArray[1].ToString(), decimal.Parse(row.ItemArray[2].ToString())); } } OperationResult = server.LastError; // комнаты dataSet = server.GetRows("Rooms"); if (dataSet.Tables.Count > 0) { foreach (var row in dataSet.Tables[0].Rows.Cast <DataRow>()) { if (row.ItemArray.Length != 6) { continue; } var room = hotel.Rooms.Add(Guid.Parse(row.ItemArray[0].ToString()), Guid.Parse(row.ItemArray[1].ToString()), int.Parse(row.ItemArray[2].ToString()), int.Parse(row.ItemArray[3].ToString()), decimal.Parse(row.ItemArray[4].ToString()), row.ItemArray[5].ToString()); var ds = server.GetRows("RoomServices"); if (ds.Tables.Count > 0) { foreach (var item in ds.Tables[0].Rows.Cast <DataRow>()) { if (item.ItemArray.Length != 2) { continue; } var roomId = Guid.Parse(item.ItemArray[0].ToString()); var serviceId = Guid.Parse(item.ItemArray[1].ToString()); if (room.IdRoom == roomId) { var service = hotel.Services.FirstOrDefault(s => s.IdService == serviceId); if (service != null) { room.Services.Add(service); } } } } } } OperationResult = server.LastError; // должности dataSet = server.GetRows("EmployeeRoles"); if (dataSet.Tables.Count > 0) { foreach (var row in dataSet.Tables[0].Rows.Cast <DataRow>()) { if (row.ItemArray.Length != 4) { continue; } hotel.EmployeeRoles.Add(Guid.Parse(row.ItemArray[0].ToString()), row.ItemArray[1].ToString(), decimal.Parse(row.ItemArray[2].ToString()), (AllowedOperations)uint.Parse(row.ItemArray[3].ToString())); } } OperationResult = server.LastError; // штат сотрудников dataSet = server.GetRows("RegistryStaff"); if (dataSet.Tables.Count > 0) { foreach (var row in dataSet.Tables[0].Rows.Cast <DataRow>()) { if (row.ItemArray.Length != 7) { continue; } hotel.RegistryStaff.Add(Guid.Parse(row.ItemArray[0].ToString()), row.ItemArray[1].ToString(), row.ItemArray[2].ToString(), row.ItemArray[3].ToString(), row.ItemArray[4].ToString(), Guid.Parse(row.ItemArray[5].ToString()), row.ItemArray[6].ToString()); } } OperationResult = server.LastError; // клиенты dataSet = server.GetRows("Clients"); if (dataSet.Tables.Count > 0) { foreach (var row in dataSet.Tables[0].Rows.Cast <DataRow>()) { if (row.ItemArray.Length != 9) { continue; } hotel.Clients.Add(Guid.Parse(row.ItemArray[0].ToString()), row.ItemArray[1].ToString(), row.ItemArray[2].ToString(), row.ItemArray[3].ToString(), DateTime.Parse(row.ItemArray[4].ToString()), row.ItemArray[5].ToString(), row.ItemArray[6].ToString(), row.ItemArray[7].ToString(), int.Parse(row.ItemArray[8].ToString())); } } OperationResult = server.LastError; // бронирование dataSet = server.GetRows("Reservations"); if (dataSet.Tables.Count > 0) { foreach (var row in dataSet.Tables[0].Rows.Cast <DataRow>()) { if (row.ItemArray.Length != 6) { continue; } hotel.Reservations.Add(Guid.Parse(row.ItemArray[0].ToString()), Guid.Parse(row.ItemArray[1].ToString()), Guid.Parse(row.ItemArray[2].ToString()), DateTime.Parse(row.ItemArray[3].ToString()), DateTime.Parse(row.ItemArray[4].ToString()), Guid.Parse(row.ItemArray[5].ToString())); } } OperationResult = server.LastError; // доставка до гостиницы dataSet = server.GetRows("Transfers"); if (dataSet.Tables.Count > 0) { foreach (var row in dataSet.Tables[0].Rows.Cast <DataRow>()) { if (row.ItemArray.Length != 5) { continue; } hotel.Transfers.Add(Guid.Parse(row.ItemArray[0].ToString()), Guid.Parse(row.ItemArray[1].ToString()), row.ItemArray[2].ToString(), DateTime.Parse(row.ItemArray[3].ToString()), int.Parse(row.ItemArray[4].ToString())); } } OperationResult = server.LastError; // перечень каналов dataSet = server.GetRows("PayChannels"); if (dataSet.Tables.Count > 0) { foreach (var row in dataSet.Tables[0].Rows.Cast <DataRow>()) { if (row.ItemArray.Length != 3) { continue; } hotel.PayChannels.Add(Guid.Parse(row.ItemArray[0].ToString()), row.ItemArray[1].ToString(), decimal.Parse(row.ItemArray[2].ToString())); } } OperationResult = server.LastError; // перечень подписок dataSet = server.GetRows("AccordancePayChannels"); if (dataSet.Tables.Count > 0) { foreach (var row in dataSet.Tables[0].Rows.Cast <DataRow>()) { if (row.ItemArray.Length != 2) { continue; } var accordance = hotel.AccordancePayChannels.Add(Guid.Parse(row.ItemArray[0].ToString()), Guid.Parse(row.ItemArray[1].ToString())); var ds = server.GetRows("RoomPayChannels"); if (ds.Tables.Count > 0) { foreach (var item in ds.Tables[0].Rows.Cast <DataRow>()) { if (item.ItemArray.Length != 2) { continue; } var accordanceId = Guid.Parse(item.ItemArray[0].ToString()); var channelId = Guid.Parse(item.ItemArray[1].ToString()); if (accordance.IdAccordancePayChannel == accordanceId) { var channel = hotel.PayChannels.FirstOrDefault(c => c.IdPayChannel == channelId); if (channel != null) { accordance.PayChannels.Add(channel); } } } } } } OperationResult = server.LastError; return(hotel); }