/// <summary> /// Вспомогательный метод для освобождение номеров /// </summary> /// <param name="number">Номер который освободить</param> /// <returns>Освобожденный номер</returns> public static HotelNumber ReleaseNumber(HotelNumber number) { try { if (IsContains(number)) { HotelNumber existingModel = EntityConnection.HotelNumbers.Where(x => x.HotelID == number.HotelID && x.RoomIndex == number.RoomIndex && x.FloorIndex == number.FloorIndex).First(); if (existingModel != null) { EntityConnection.Child_Guest.RemoveRange(existingModel.Guest.Child_Guest); EntityConnection.Guests.Remove(existingModel.Guest); existingModel.Guest = null; existingModel.GuestID = null; existingModel.IsEmpty = true; return(existingModel); } else { throw new MyException("HotelWorker.HotelCreator.AddOrUpdateHotelNumber()"); } } return(null); } finally { EntityConnection.SaveChanges(); } }
public static HotelNumber AddOrUpdate(HotelNumber value) { if (value == null) { throw new NullReferenceException("HotelFurniture value is null"); } try { if (IsContains(value)) //UPDATE { HotelNumber existingModel = EntityConnection.HotelNumbers.Where(x => x.RoomIndex == value.RoomIndex && x.FloorIndex == value.FloorIndex && x.HotelID == value.HotelID).First(); if (existingModel == null) { throw new NullReferenceException("existingModel value is null"); } else { return(existingModel = value); } } else // ADD { return(EntityConnection.HotelNumbers.Add(value)); } } finally { EntityConnection.SaveChanges(); } }
/// <summary> /// Конструктор /// </summary> /// <param name="number"></param> public Options_HotelNumber(HotelNumber number) { InitializeComponent(); this.HotelNumber = number; // Обновление UpdateCollectionOfRoomTypes(); if (number == null) { this.HotelNumber = new HotelNumber { RoomType = new RoomType() }; } else { this.Label_FloorRoom.Text = $"{number.FloorIndex}/{number.RoomIndex}"; this.TextBox_Price.Text = number.Price.ToString(); this.NumericUpDown_BedCount.Value = number.BedCount; this.ComboBox_RoomTypes.Text = number.Comfortable; this.ComboBox_RoomTypes.SelectedIndex = GetIndex(number.Comfortable); this.TextBox_Furniture.Text = number.Furniture; this.NumericUpDown_BedCount.Value = number.BedCount; UpdateDataGridView(); } }
/// <summary> /// Проверка на существование /// </summary> /// <param name="value">Номер отеля</param> /// <returns>true-существует, false-нет</returns> public static bool IsContains(HotelNumber value) { if (EntityConnection.HotelNumbers.AsEnumerable().Contains(value)) { return(true); } return(false); }
/// <summary> /// Обновить значение в словаре /// </summary> /// <param name="floor">Этаж который надо обновить</param> /// <param name="roomIndex">Комната которую надо обновить</param> /// <param name="newValue">Комната</param> private void UpdateDictionaryValue(short floor, short roomIndex, HotelNumber newValue) { for (int i = 0; i < this.dictFloors[floor].Count; i++) { if (dictFloors[floor][i].RoomIndex == roomIndex) { dictFloors[floor][i] = newValue; break; } } }
/// <summary> /// Проверка на существование элемента в коллекции /// </summary> /// <param name="number">Номер</param> /// <param name="collection">Список номеров</param> /// <returns>Есть ли номер в коллекции номеров</returns> private static bool IsExists(HotelNumber number, ICollection <HotelNumber> collection) { foreach (var item in collection) { if (item.HotelID == number.HotelID && item.RoomIndex == number.RoomIndex && item.FloorIndex == number.FloorIndex) { return(true); } } return(false); }
/// <summary> /// Добавить гостя в отель по определенному номеру /// </summary> /// <param name="hotel"></param> /// <param name="number"></param> /// <param name="guest"></param> public static void AddGuestToHotel(HotelInfo hotel, HotelNumber number, Guest guest) { if (hotel == null || guest == null) { throw new NullReferenceException("hotel or guest is null"); } number.IsEmpty = false; number.Guest = guest; if (!IsContains(guest)) { hotel.Guests.Add(guest); } EntityConnection.SaveChanges(); }
/// <summary> /// Освободить номер /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void NumberFreeToolStripMenuItem_Click(object sender, EventArgs e) { if (ListViewHotel.SelectedIndices.Count > 0) { var item = this.ListViewHotel.SelectedItems[0]; if (item != null) { //Получаем номер HotelNumber number = HotelCreator.GetHotelNumber(this.hotelInfo.Id, GetIndex(item.Group.Header), GetIndex(item.Text)); if (number != null && !number.IsEmpty) { //Обновляем UpdateDictionaryValue(number.FloorIndex, number.RoomIndex, HotelCreator.ReleaseNumber(number)); ListViewHotel.Items[this.ListViewHotel.SelectedIndices[0]].ImageIndex = 0; } } } }
/// <summary> /// Комната по умолчанию /// </summary> /// <param name="floor">Этаж</param> /// <param name="bed">Номер комнат</param> /// <returns></returns> public static HotelNumber CreateDefaultNumber(short floor, byte bed = 1) { HotelNumber number = new HotelNumber { RoomIndex = 1, FloorIndex = floor, BedCount = bed, IsEmpty = true, Price = 100 }; // Если есть ур. комфорта по умолчанию, то присваиваем значение, нет создаем if (EntityConnection.RoomTypes.Count() > 0) { number.RoomType = EntityConnection.RoomTypes.First(); number.Comfortable = number.RoomType.Level; } else { number.RoomType = CreateDefaultRoomType(); number.Comfortable = number.RoomType.Level; } return(number); }