/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.arrebol.taxiservicios.model.core;

import com.arrebol.taxiservicios.model.enums.AddressType;
import java.io.Serializable;
import java.util.Date;

/**
 *
 * @author Picasso
 */
public class Address implements Serializable {

    private static final long serialVersionUID = 8055209598017046383L;

    private String id;
    private String street;
    private String street2;
    private String extendedAddress;
    private String locality;
    private String region;
    private String zipCode;
    private AddressType addressType;
    private Boolean preferenced;
    private String addressGoogleMap;
    private String latitud;
    private String longitud;
    private Person person;
    private User createdBy;
    private Date createdOn;
    private User lastUpdatedBy;
    private Date lastUpdatedOn;

    public Address() {
    }

    /**
     *
     * @param id
     * @param street Calle y número
     * @param extendedAddress Colonia
     * @param locality Municipio
     * @param region Estado
     * @param zipCode Código postal
     */
    public Address(String id, String street, String extendedAddress, String locality, String region, String zipCode) {
        this.id = id;
        this.street = street;
        this.extendedAddress = extendedAddress;
        this.locality = locality;
        this.region = region;
        this.zipCode = zipCode;
    }

    
    public Address(String id, String street,String locality, String region, String zipCode) {
        this.id = id;
        this.street = street;
        this.locality = locality;
        this.region = region;
        this.zipCode = zipCode;
    }
    /**
     *
     * @param id
     * @param street Calle y número
     * @param extendedAddress Colonia
     * @param locality Municipio
     * @param region Estado
     * @param zipCode Código postal
     * @param addressGoogleMap Dirección que utiliza google maps
     */
    public Address(String id, String street, String extendedAddress, String locality, String region, String zipCode, String addressGoogleMap) {
        this.id = id;
        this.street = street;
        this.extendedAddress = extendedAddress;
        this.locality = locality;
        this.region = region;
        this.zipCode = zipCode;
        this.addressGoogleMap = addressGoogleMap;
    }

    /**
     *
     * @param addressType
     */
    public Address(AddressType addressType) {
        this.addressType = addressType;
    }

    /**
     *
     * @param id
     * @param addressType
     */
    public Address(String id, AddressType addressType) {
        this.id = id;
        this.addressType = addressType;
    }

    /**
     * Used as criteria wrapper.
     *
     * @param id
     * @param street
     * @param street2
     * @param extendedAddress
     * @param locality
     * @param region
     * @param zipCode
     * @param addressType
     * @param addressGoogleMap
     * @param latitud
     * @param longitud
     */
    public Address(String id, String street, String street2,
            String extendedAddress, String locality, String region,
            String zipCode, AddressType addressType, String addressGoogleMap,
            String latitud, String longitud) {
        this.id = id;
        this.street = street;
        this.street2 = street2;
        this.extendedAddress = extendedAddress;
        this.locality = locality;
        this.region = region;
        this.zipCode = zipCode;
        this.addressType = addressType;
        this.addressGoogleMap = addressGoogleMap;
        this.latitud = latitud;
        this.longitud = longitud;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }

    public String getStreet2() {
        return street2;
    }

    public void setStreet2(String street2) {
        this.street2 = street2;
    }

    public String getExtendedAddress() {
        return extendedAddress;
    }

    public void setExtendedAddress(String extendedAddress) {
        this.extendedAddress = extendedAddress;
    }

    public String getLocality() {
        return locality;
    }

    public void setLocality(String locality) {
        this.locality = locality;
    }

    public String getRegion() {
        return region;
    }

    public void setRegion(String region) {
        this.region = region;
    }

    public String getZipCode() {
        return zipCode;
    }

    public void setZipCode(String zipCode) {
        this.zipCode = zipCode;
    }

    public AddressType getAddressType() {
        return addressType;
    }

    public void setAddressType(AddressType addressType) {
        this.addressType = addressType;
    }

    public Boolean getPreferenced() {
        return preferenced;
    }

    public void setPreferenced(Boolean preferenced) {
        this.preferenced = preferenced;
    }

    public String getAddressGoogleMap() {
        return addressGoogleMap;
    }

    public void setAddressGoogleMap(String addressGoogleMap) {
        this.addressGoogleMap = addressGoogleMap;
    }

    public String getLatitud() {
        return latitud;
    }

    public void setLatitud(String latitud) {
        this.latitud = latitud;
    }

    public String getLongitud() {
        return longitud;
    }

    public void setLongitud(String longitud) {
        this.longitud = longitud;
    }

    public Person getPerson() {
        return person;
    }

    public void setPerson(Person person) {
        this.person = person;
    }

    public User getCreatedBy() {
        return createdBy;
    }

    public void setCreatedBy(User createdBy) {
        this.createdBy = createdBy;
    }

    public Date getCreatedOn() {
        return createdOn;
    }

    public void setCreatedOn(Date createdOn) {
        this.createdOn = createdOn;
    }

    public User getLastUpdatedBy() {
        return lastUpdatedBy;
    }

    public void setLastUpdatedBy(User lastUpdatedBy) {
        this.lastUpdatedBy = lastUpdatedBy;
    }

    public Date getLastUpdatedOn() {
        return lastUpdatedOn;
    }

    public void setLastUpdatedOn(Date lastUpdatedOn) {
        this.lastUpdatedOn = lastUpdatedOn;
    }

    @Override
    public String toString() {
        return "Address{" + "id=" + id + ", street=" + street + ", street2=" + street2 + ", extendedAddress=" + extendedAddress + ", locality=" + locality + ", region=" + region + ", zipCode=" + zipCode + ", addressType=" + addressType + ", preferenced=" + preferenced + ", addressGoogleMap=" + addressGoogleMap + ", latitud=" + latitud + ", longitud=" + longitud + ", person=" + person + "}";
    }

}
