package com.iamthefij.otbeta.api; import android.location.Address; import org.json.JSONObject; import java.util.Locale; /** * Full profile of an Exerciser or user */ public class ExerciserProfile { private final String mAboutMe; private final Boolean mActive; private Address mAddress; private final String mBarcode; private final String mBirthday; private final String mClientLoginId; private final String mCreatedAt; private final String mEmail; private EmailPreference mEmailPreference; private final JSONObject mExternalServiceNames; private final Boolean mFacebookAutoShare; private final String mFirstName; private final String mLastName; private final String mGender; private final Double mHeight; private final String mHomeClubUuid; private final String mMeasurementUnit; private final String mNickname; private final String mPasscode; private final String mPhoneNumber; private final String mPicturePassword; private final String mPrivacy; private final String mProfilePicture; private final String mTimezone; private final String mUpdatedAt; private final String mUuid; private final Boolean mVerified; private final Double mWeight; public ExerciserProfile(JSONObject response) { mAboutMe = response.optString("aboutMe"); mActive = response.optBoolean("active"); mBarcode = response.optString("barcode"); mBirthday = response.optString("birthday"); mClientLoginId = response.optString("clientLoginId"); mCreatedAt = response.optString("createdAt"); mEmail = response.optString("email"); mExternalServiceNames = response.optJSONObject("externalServiceNames"); mFacebookAutoShare = response.optBoolean("facebookAutoShare"); mFirstName = response.optString("firstName"); mLastName = response.optString("lastName"); mGender = response.optString("gender"); mHomeClubUuid = response.optString("homeClubUuid"); mMeasurementUnit = response.optString("measurementUnit"); mNickname = response.optString("nickname"); mPasscode = response.optString("passcode"); mPhoneNumber = response.optString("phoneNumber"); mPicturePassword = response.optString("picturePassword"); mPrivacy = response.optString("privacy"); mProfilePicture = response.optString("profilePicture"); mTimezone = response.optString("timezone"); mUpdatedAt = response.optString("updatedAt"); mUuid = response.optString("uuid"); mVerified = response.optBoolean("verified"); mHeight = response.optDouble("height"); mWeight = response.optDouble("weight"); JSONObject address = response.optJSONObject("address"); if (address != null) { mAddress = new Address(Locale.US); mAddress.setAddressLine(1, address.optString("street1")); mAddress.setAddressLine(2, address.optString("street2")); mAddress.setLocality(address.optString("city")); mAddress.setCountryCode(address.optString("country")); mAddress.setPostalCode(address.optString("postalCode")); mAddress.setAdminArea(address.optString("stateOrProvince")); } JSONObject emailPreference = response.optJSONObject("emailPreference"); if (emailPreference != null) { mEmailPreference = new EmailPreference(emailPreference); } } /** * Email preferences for a user */ public class EmailPreference { private final Boolean mEmailApplause; private final Boolean mEmailChallengeNotice; private final Boolean mEmailComment; private final Boolean mEmailGoalNotice; private final Boolean mEmailMonthlyWorkout; private final Boolean mEmailSingleWorkout; private final Boolean mEmailSystemMessage; private final Boolean mEmailTrainerMessage; private final Boolean mEmailWeeklyWorkout; /** * Generates the preferences instance for a given user based on JSON response * @param preference {@link JSONObject} to build preferences from */ public EmailPreference(JSONObject preference) { mEmailApplause = preference.optBoolean("emailApplause"); mEmailChallengeNotice = preference.optBoolean("emailChallengeNotice"); mEmailComment = preference.optBoolean("emailComment"); mEmailGoalNotice = preference.optBoolean("emailGoalNotice"); mEmailMonthlyWorkout = preference.optBoolean("emailMonthlyWorkout"); mEmailSingleWorkout = preference.optBoolean("emailSingleWorkout"); mEmailSystemMessage = preference.optBoolean("emailSystemMessage"); mEmailTrainerMessage = preference.optBoolean("emailTrainerMessage"); mEmailWeeklyWorkout = preference.optBoolean("emailWeeklyWorkout"); } } }