package com.framework.site.data;
import com.framework.utils.string.ToLogStringStyle;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.math.NumberUtils;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.joda.time.Period;
import org.joda.time.PeriodType;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.List;
/**
* Created with IntelliJ IDEA ( LivePerson : www.liveperson.com )
*
* Package: com.framework.site.data
*
* Name : Guest
*
* User : solmarkn / Dani Vainstein
*
* Date : 2015-02-08
*
* Time : 02:00
*
*/
public class Guest
{
//region Guest - Variables Declaration and Initialization Section.
private final String firstName, lastName, emailAddress;
private String currentPassword;
private String middleName, title;
private DateTime dateOfBirth;
private String ageName;
private float age;
private char gender;
private Number vifpClub;
private boolean useEmailAsUserName, sendOffersToEmail, sendOffersToAddress;
private String country, address1, address2, city, state, zip, phoneType;
private long phoneNumber;
private String phoneAreaCode;
private List<Companion> companions;
private String preferenceDining;
private boolean prepaidGratuities, vacationProtection, cruiseTransferFromAirport, cruiseTransferToAirport;
//endregion
//region Guest - Constructor Methods Section
public Guest( final String firstName, final String lastName, final String emailAddress )
{
this.firstName = firstName;
this.lastName = lastName;
this.emailAddress = emailAddress;
}
//endregion
//region Guest - Public Methods Section
public String getFirstName()
{
return firstName;
}
public String getLastName()
{
return lastName;
}
public String getEmailAddress()
{
return emailAddress;
}
public String getCurrentPassword()
{
return currentPassword;
}
public void setCurrentPassword( final String currentPassword )
{
this.currentPassword = currentPassword;
}
public String getMiddleName()
{
return middleName;
}
public void setMiddleName( final String middleName )
{
this.middleName = middleName;
}
public String getTitle()
{
return title;
}
public void setTitle( final String title )
{
this.title = title;
}
@DateTimeFormat (pattern = "MM/dd/yyyy")
public void setDateOfBirth( final DateTime dateOfBirth )
{
this.dateOfBirth = dateOfBirth;
LocalDate birth = new LocalDate( dateOfBirth );
LocalDate date = new LocalDate( DateTime.now() );
Period period = new Period( birth, date, PeriodType.yearMonthDay() );
this.age = NumberUtils.createFloat( period.getYears() + "." + period.getMonths() );
this.ageName = period.getYears() + " years and " + period.getMonths() + " months";
}
public DateTime getDateOfBirth()
{
return dateOfBirth;
}
public String getAgeName()
{
return ageName;
}
public float getAge()
{
return age;
}
public char getGender()
{
return gender;
}
public void setGender( final char gender )
{
this.gender = gender;
}
public Number getVifpClub()
{
return vifpClub;
}
public void setVifpClub( final Number vifpClub )
{
this.vifpClub = vifpClub;
}
public boolean isUseEmailAsUserName()
{
return useEmailAsUserName;
}
public void setUseEmailAsUserName( final boolean useEmailAsUserName )
{
this.useEmailAsUserName = useEmailAsUserName;
}
public boolean isSendOffersToEmail()
{
return sendOffersToEmail;
}
public void setSendOffersToEmail( final boolean sendOffersToEmail )
{
this.sendOffersToEmail = sendOffersToEmail;
}
public boolean isSendOffersToAddress()
{
return sendOffersToAddress;
}
public void setSendOffersToAddress( final boolean sendOffersToAddress )
{
this.sendOffersToAddress = sendOffersToAddress;
}
public String getCountry()
{
return country;
}
public void setCountry( final String country )
{
this.country = country;
}
public String getAddress1()
{
return address1;
}
public void setAddress1( final String address1 )
{
this.address1 = address1;
}
public String getAddress2()
{
return address2;
}
public void setAddress2( final String address2 )
{
this.address2 = address2;
}
public String getCity()
{
return city;
}
public void setCity( final String city )
{
this.city = city;
}
public String getState()
{
return state;
}
public void setState( final String state )
{
this.state = state;
}
public String getZip()
{
return zip;
}
public void setZip( final String zip )
{
this.zip = zip;
}
public String getPhoneType()
{
return phoneType;
}
public void setPhoneType( final String phoneType )
{
this.phoneType = phoneType;
}
public long getPhoneNumber()
{
return phoneNumber;
}
public void setPhoneNumber( final long phoneNumber )
{
this.phoneNumber = phoneNumber;
}
public String getPhoneAreaCode()
{
return phoneAreaCode;
}
public void setPhoneAreaCode( final String phoneAreaCode )
{
this.phoneAreaCode = phoneAreaCode;
}
public List<Companion> getCompanions()
{
return companions;
}
public void setCompanions( final List<Companion> companions )
{
this.companions = companions;
}
public String getPreferenceDining()
{
return preferenceDining;
}
public void setPreferenceDining( final String preferenceDining )
{
this.preferenceDining = preferenceDining;
}
public boolean isPrepaidGratuities()
{
return prepaidGratuities;
}
public void setPrepaidGratuities( final boolean prepaidGratuities )
{
this.prepaidGratuities = prepaidGratuities;
}
public boolean isVacationProtection()
{
return vacationProtection;
}
public void setVacationProtection( final boolean vacationProtection )
{
this.vacationProtection = vacationProtection;
}
public boolean isCruiseTransferFromAirport()
{
return cruiseTransferFromAirport;
}
public void setCruiseTransferFromAirport( final boolean cruiseTransferFromAirport )
{
this.cruiseTransferFromAirport = cruiseTransferFromAirport;
}
public boolean isCruiseTransferToAirport()
{
return cruiseTransferToAirport;
}
public void setCruiseTransferToAirport( final boolean cruiseTransferToAirport )
{
this.cruiseTransferToAirport = cruiseTransferToAirport;
}
@Override
public String toString()
{
return new ToStringBuilder( this, ToLogStringStyle.LOG_LINE_STYLE )
.append( "firstName", firstName )
.append( "lastName", lastName )
.append( "email", emailAddress )
.append( "ageName", ageName )
.toString();
}
//endregion
}