/// <summary> /// calculates and returns the rents for different hotels /// </summary> /// <param name="name">The name.</param> /// <param name="type">The type.</param> /// <param name="noOfDays">The no of days.</param> /// <returns></returns> /// <exception cref="HotelReservationException"> /// throws exception Hotel doesn't exist for invalid hotel name /// or /// throws exception Invalid Customer Type when wrong customer type is entered. /// </exception> public int HotelRentGenerator(HotelName name, CustomerType type, int regularDays, int weekendDays) { if (type.Equals(CustomerType.REGULAR)) { if (name.Equals(HotelName.Lakewood)) { regularRate = 110; weekendRate = 90; return(regularDays * regularRate + weekendDays * weekendRate); } if (name.Equals(HotelName.Bridgewood)) { regularRate = 150; weekendRate = 50; return(regularDays * regularRate + weekendDays * weekendRate); } if (name.Equals(HotelName.Ridgewood)) { regularRate = 220; weekendRate = 150; return(regularDays * regularRate + weekendDays * weekendRate); } else { throw new HotelReservationException(HotelReservationException.ExceptionType.NO_SUCH_HOTEL, "Hotel doesn't exist"); } } if (type.Equals(CustomerType.REWARD)) { if (name.Equals(HotelName.Lakewood)) { regularRate = 80; weekendRate = 80; return(regularDays * regularRate + weekendDays * weekendRate); } if (name.Equals(HotelName.Bridgewood)) { regularRate = 110; weekendRate = 50; return(regularDays * regularRate + weekendDays * weekendRate); } if (name.Equals(HotelName.Ridgewood)) { regularRate = 100; weekendRate = 40; return(regularDays * regularRate + weekendDays * weekendRate); } else { throw new HotelReservationException(HotelReservationException.ExceptionType.NO_SUCH_HOTEL, "Hotel doesn't exist"); } } else { throw new HotelReservationException(HotelReservationException.ExceptionType.NO_SUCH_CUSTOMER_TYPE, "Invalid Customer Type"); } }
public int ratingOfHotel; // rating of hotels public HotelData(HotelName nameOfHotel, CustomerType customerType) { /* parameterized constructor * try-catch block checks for exception thrown by invalid hotel name */ this.nameOfHotel = nameOfHotel; try { /* checking name of hotels * inner try-catch block to handle exceptions for invalid customer type * assigning weekday and weekend rates based on customer type */ if (nameOfHotel.Equals(HotelName.LAKEWOOD)) { this.ratingOfHotel = 3; try { if (customerType.Equals(CustomerType.REGULAR)) { this.weekDayRateOfHotel = 110; this.weekEndRateOfHotel = 90; } if (customerType.Equals(CustomerType.REWARD)) { this.weekDayRateOfHotel = 80; this.weekEndRateOfHotel = 80; } } catch (HotelReservationException) { throw new HotelReservationException(HotelReservationException.ExceptionType.INVALID_CUSTOMER_TYPE, "Invalid Customer Type"); } } if (nameOfHotel.Equals(HotelName.BRIDGEWOOD)) { this.ratingOfHotel = 4; try { if (customerType.Equals(CustomerType.REGULAR)) { this.weekDayRateOfHotel = 150; this.weekEndRateOfHotel = 50; } if (customerType.Equals(CustomerType.REWARD)) { this.weekDayRateOfHotel = 110; this.weekEndRateOfHotel = 50; } } catch (HotelReservationException) { throw new HotelReservationException(HotelReservationException.ExceptionType.INVALID_CUSTOMER_TYPE, "Invalid Customer Type"); } } if (nameOfHotel.Equals(HotelName.RIDGEWOOD)) { this.ratingOfHotel = 5; try { if (customerType.Equals(CustomerType.REGULAR)) { this.weekDayRateOfHotel = 220; this.weekEndRateOfHotel = 150; } if (customerType.Equals(CustomerType.REWARD)) { this.weekDayRateOfHotel = 100; this.weekEndRateOfHotel = 40; } } catch (HotelReservationException) { throw new HotelReservationException(HotelReservationException.ExceptionType.INVALID_CUSTOMER_TYPE, "Invalid Customer Type"); } } } catch (HotelReservationException) { throw new HotelReservationException(HotelReservationException.ExceptionType.INVALID_HOTEL_NAME, "Invalid Name of Hotel"); } }