package com.ratemarkt.models;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Currency;
import java.util.List;

import javax.annotation.Nullable;

import org.immutables.gson.Gson;
import org.immutables.value.Value;

@Gson.TypeAdapters
@Value.Immutable
public interface Booking {

	BookingStatus getStatus();

	String getBookingRef();

	String getClientRef();

	Hotel getHotel();

	LocalDate getCheckin();

	LocalDate getCheckout();

	String getNationality();

	Holder getHolder();

	List<Occupancy> getOccupancy();

	OffsetDateTime getCreationDate();

	@Nullable
	String getRateKey();

	RateType getRateType();

	String getBoardName();

	@Nullable
	Boolean getNonrefundable();

	List<CancellationPolicy> getCancellationPolicies();

	BigDecimal getTotal();

	Currency getCurrency();

	BigDecimal getBalance();

	@Nullable
	BigDecimal getCancellationCost();

	@Nullable
	BigDecimal getCommission();

	@Nullable
	BigDecimal getHotelRate();

	@Nullable
	Currency getHotelCurrency();

	@Nullable
	String getSpecialRequest();

	@Nullable
	String getRemarks();
}

@@ -416,15 +416,17 @@
 ();%0A
+%09
 %0A%09
-Hotel
+String
  get
@@ -430,16 +430,20 @@
 getHotel
+Code
 ();%0A%0A%09Lo
@@ -496,35 +496,8 @@
 );%0A%0A
-%09String getNationality();%0A%0A
 %09Hol
@@ -542,17 +542,19 @@
 Occupanc
-y
+ies
 ();%0A%0A%09Of
@@ -590,42 +590,8 @@
 );%0A%0A
-%09@Nullable%0A%09String getRateKey();%0A%0A
 %09Rat
@@ -641,49 +641,8 @@
 );%0A%0A
-%09@Nullable%0A%09Boolean getNonrefundable();%0A%0A
 %09Lis
@@ -765,24 +765,262 @@
 Balance();%0A%0A
+%09@Nullable%0A%09String getRateKey();%0A%09%0A%09@Nullable%0A%09String getHotelName();%0A%09%0A%09@Nullable%0A%09String getDestinationCode();%0A%09%0A%09@Nullable%0A%09String getDestinationName();%0A%09%0A%09@Nullable%0A%09String getCountryCode();%0A%09%0A%09@Nullable%0A%09Boolean getNonrefundable();%0A%0A
 %09@Nullable%0A%09

tweak booking obj