package io.oasp.gastronomy.restaurant.tablemanagement.common.api;
import io.oasp.gastronomy.restaurant.general.common.api.ApplicationEntity;
import io.oasp.gastronomy.restaurant.tablemanagement.common.api.datatype.TableState;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
/**
* This is the interface for a table of the restaurant. It has a unique {@link #getNumber() number} can be
* {@link TableState#isReserved() reserved}, {@link TableState#isOccupied() occupied} and may have a
* {@link #getWaiterId() waiter} assigned.
*
*/
public interface Table extends ApplicationEntity {
/**
* @return the unique table number.
*/
@NotNull
@Min(0)
Long getNumber();
/**
* @param number is the new {@link #getNumber() number}.
*/
void setNumber(Long number);
/**
* @return the current {@link TableState state} of this {@link Table}.
*/
TableState getState();
/**
* @param state is the new {@link #getState() state}.
*/
void setState(TableState state);
/**
* @return the {@link io.oasp.gastronomy.restaurant.staffmanagement.common.api.StaffMember#getId() ID} of the waiter
* currently responsible for this table.
*/
Long getWaiterId();
/**
* Sets the field 'waiterId'.
*
* @param waiterId New value for waiterId
*/
void setWaiterId(Long waiterId);
}