All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.theagilemonkeys.meets.magento.models.MeetsMageAddress Maven / Gradle / Ivy

package com.theagilemonkeys.meets.magento.models;

import com.theagilemonkeys.meets.apimethod.ApiMethodModelHelper;
import com.theagilemonkeys.meets.magento.methods.CustomerAddressInfo;
import com.theagilemonkeys.meets.magento.methods.CustomerAddressUpdate;
import com.theagilemonkeys.meets.magento.models.base.MeetsMageModel;
import com.theagilemonkeys.meets.models.MeetsAddress;

import java.util.HashMap;
import java.util.Map;

import static com.theagilemonkeys.meets.utils.StringUtils.safeValueOf;

/**
 * Android Meets SDK
 * Original work Copyright (c) 2014 [TheAgileMonkeys]
 *
 * @author Álvaro López Espinosa
 */
@SuppressWarnings("unchecked")
public class MeetsMageAddress extends MeetsMageModel implements MeetsAddress {
    final static public String MODE_BILLING = "billing";
    final static public String MODE_SHIPPING = "shipping";

    private Integer customer_address_id;
    private String address_id; // The same as customer_address_id.
    private String mode;
    private String firstname;
    private String middlename;
    private String lastname;
    private String prefix;
    private String suffix;
    private String company;
    private Object street; //Something really weird happens when use String as type field. The server does not recognizes  it
    private String city;
    private int region_id;
    private String region;
    private String postcode;
    private String country_id;
    private String telephone;
    private String fax;
    private boolean is_default_billing;
    private boolean is_default_shipping;

    //This is specific of magento
    public MeetsAddress setMode(String mode) {
        this.mode = mode;
        return this;
    }

    @Override
    public MeetsAddress fetch() {
        ApiMethodModelHelper.DelayedParams params = new ApiMethodModelHelper.DelayedParams() {
            @Override
            public Map buildParams() {
                Map params = new HashMap();
                params.put("addressId", getId());
                return params;
            }
        };


        pushMethod(new CustomerAddressInfo(), params)
                .done(updateFromResult)
                .always(triggerListeners);
        return this;
    }

    @Override
    public MeetsAddress setId(int id) {
        customer_address_id = id;
        address_id = String.valueOf(id);
        return this;
    }

    @Override
    public int getId() {
        if(customer_address_id != null) {
            return customer_address_id;
        }
        if(address_id != null){
            return Integer.parseInt(address_id);
        }
        return 0;
    }

    @Override
    public MeetsAddress setFirstName(String firstname) {
        this.firstname = firstname;
        return this;
    }

    @Override
    public MeetsAddress setLastName(String lastname) {
        this.lastname = lastname;
        return this;
    }

    @Override
    public MeetsAddress setCompany(String company) {
        this.company = company;
        return this;
    }

    @Override
    public MeetsAddress setStreet(String street) {
        this.street = street;
        return this;
    }

    @Override
    public MeetsAddress setCity(String city) {
        this.city = city;
        return this;
    }

    @Override
    public MeetsAddress setRegionId(int regionId) {
        this.region_id = regionId;
        return this;
    }

    @Override
    public MeetsAddress setRegion(String region) {
        this.region = region;
        return this;
    }

    @Override
    public MeetsAddress setPostCode(String postcode) {
        this.postcode = postcode;
        return this;
    }

    @Override
    public MeetsAddress setCountryId(String countryId) {
        country_id = countryId;
        return this;
    }

    @Override
    public MeetsAddress setTelephone(String telephone) {
        this.telephone = telephone;
        return this;
    }

    @Override
    public MeetsAddress setFax(String fax) {
        this.fax = fax;
        return this;
    }

    @Override
    public MeetsAddress setDefaultBilling(boolean defaultBilling) {
        is_default_billing = defaultBilling;
        return this;
    }

    @Override
    public MeetsAddress setDefaultShipping(boolean defaultShipping) {
        is_default_shipping = defaultShipping;
        return this;
    }

    MeetsAddress save() {
        ApiMethodModelHelper.DelayedParams params = new ApiMethodModelHelper.DelayedParams() {
            @Override
            public Map buildParams() {
                Map params = new HashMap();
                params.put("addressId", getId());
                params.put("addressData", MeetsMageAddress.this);
                return params;
            }
        };

        forceNextCacheToBe(false);
        pushMethod(new CustomerAddressUpdate(), params).always(triggerListeners);
        return this;
    }

    @Override
    public String getFirstName() {
        return firstname;
    }

    @Override
    public String getLastName() {
        return lastname;
    }

    @Override
    public String getCompany() {
        return company;
    }

    @Override
    public String getStreet() {
        return (String) street;
    }

    @Override
    public String getCity() {
        return city;
    }

    @Override
    public int getRegionId() {
        return region_id;
    }

    @Override
    public String getRegion() {
        return region;
    }

    @Override
    public String getPostCode() {
        return postcode;
    }

    @Override
    public String getCountryId() {
        return country_id;
    }

    @Override
    public String getTelephone() {
        return telephone;
    }

    @Override
    public String getFax() {
        return fax;
    }

    @Override
    public boolean isDefaultBilling() {
        return is_default_billing;
    }

    @Override
    public boolean isDefaultShipping() {
        return is_default_shipping;
    }

    @Override
    public String toString() {
        String res = safeValueOf(getFirstName()) + ' ' + safeValueOf(getLastName()) + '\n' +
                     safeValueOf(getStreet()) + '\n' +
                     safeValueOf(getCity()) + ", " + safeValueOf(getRegion()) + ", " + safeValueOf(getPostCode()) + '\n' +
                     safeValueOf(getCountryId()) + '\n' +
                     safeValueOf(getTelephone());
        return res;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy