package com.jtaxi.services;
import android.content.Context;
import android.location.Address;
import com.google.android.gms.maps.model.LatLng;
import com.jtaxi.ProjectConfig;
import com.jtaxi.helper.CardEncryption;
import com.jtaxi.helper.MapHelper;
import com.jtaxi.helper.SessionManager;
import com.jtaxi.models.AirportModel;
import com.jtaxi.runtime.CarFilters;
import com.jtaxi.services.http.RequestAction;
import org.json.JSONArray;
import org.json.JSONObject;
import static com.jtaxi.services.JsonResponseHandler.RequestCallback;
public class JsonClientUsage {
private static final String TAG = "Transportation JSON Client Usage";
private static final String EMAIL = "email";
private static final String PASSWORD = "password";
private static final String FIRST_NAME = "first_name";
private static final String LAST_NAME = "last_name";
private static final String PHONE_NUMBER = "phone_number";
private static final String USER_ID = "user_id";
private static final String NUMBER = "number";
private static final String TYPE = "type";
private static final String HOLDER = "holder";
private static final String ZIP_CODE = "zip_code";
private static final String SECURITY_CODE = "security_code";
private static final String EXP_DATE = "exp_date";
private static final String ID = "id";
private static final String START_INDEX = "start_index";
private static final String LIMIT = "limit";
private static final String LATITUDE = "latitude";
private static final String LONGITUDE = "longitude";
private static final String FROM_LATITUDE = "from_latitude";
private static final String FROM_LONGITUDE = "from_longitude";
private static final String TO_LATITUDE = "to_latitude";
private static final String TO_LONGITUDE = "to_longitude";
private static final String RATING = "rating";
private static final String COMMENT = "comment";
private static final String CONFIRMATION_NUMBER = "confirmation_number";
private static final String FILTERS = "filters";
private static final String PICKUP_TIME = "pickup_time";
private static final String PICKUP_LOCATION = "pickup_location";
private static final String DESTINATION_LOCATION = "destination_location";
private static final String NAME = "name";
private static final String AIRPORT_INFORMATION = "airport_information";
private static final String CC_ID = "cc_id";
private static final String PROMO_CODE_ID = "promo_code_id";
public static RequestAction authentication(Context context, String email, String password, RequestCallback callback) {
JSONObject data = new JSONObject();
try {
data.put(EMAIL, email);
data.put(PASSWORD, password);
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "authentication", data, callback);
}
public static RequestAction getProfile(Context context, RequestCallback callback) {
SessionManager manager = new SessionManager(context);
int userID = manager.getUserID();
JSONObject data = new JSONObject();
try {
data.put(USER_ID, userID);
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "get_profile", data, callback);
}
public static RequestAction updateProfile(Context context, String firstName, String lastName, String phoneNumber,
String email, RequestCallback callback) {
SessionManager manager = new SessionManager(context);
int userID = manager.getUserID();
JSONObject data = new JSONObject();
try {
data.put(USER_ID, userID);
data.put(FIRST_NAME, firstName);
data.put(LAST_NAME, lastName);
data.put(PHONE_NUMBER, phoneNumber);
data.put(EMAIL, email);
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "update_profile", data, callback);
}
public static RequestAction getCreditCards(Context context, int userID, RequestCallback callback) {
JSONObject data = new JSONObject();
try {
data.put(USER_ID, userID);
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "get_credit_cards", data, callback);
}
public static RequestAction createCreditCard(Context context, String number, long expDate, String zipCode,
String type, String securityCode, RequestCallback callback) {
JSONObject data = new JSONObject();
try {
SessionManager manager = new SessionManager(context);
String firstName = manager.getFirstName();
String lastName = manager.getLastName();
int userID = manager.getUserID();
number = CardEncryption.encryptCardNumber(number, String.valueOf(userID));
String holder = firstName + " " + lastName;
data.put(USER_ID, userID);
data.put(HOLDER, holder);
data.put(NUMBER, number);
data.put(TYPE, type);
data.put(SECURITY_CODE, securityCode);
data.put(EXP_DATE, expDate);
data.put(ZIP_CODE, zipCode);
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "create_credit_card", data, callback);
}
public static RequestAction updateCreditCard(Context context, String id, String securityCode, long expDate,
String zipCode, RequestCallback callback) {
JSONObject data = new JSONObject();
SessionManager manager = new SessionManager(context);
int userID = manager.getUserID();
try {
data.put(USER_ID, userID);
data.put(ID, id);
data.put(EXP_DATE, expDate);
data.put(ZIP_CODE, zipCode);
data.put(SECURITY_CODE, securityCode);
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "update_credit_card", data, callback);
}
public static RequestAction removeCreditCard(Context context, String id, RequestCallback callback) {
JSONObject data = new JSONObject();
SessionManager manager = new SessionManager(context);
int userID = manager.getUserID();
try {
data.put(USER_ID, userID);
data.put(ID, id);
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "remove_credit_card", data, callback);
}
public static RequestAction getFrequentAddress(Context context, int limit, RequestCallback callback) {
JSONObject data = new JSONObject();
SessionManager manager = new SessionManager(context);
int userID = manager.getUserID();
try {
data.put(USER_ID, userID);
data.put(LIMIT, limit);
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "get_frequent_address", data, callback);
}
public static RequestAction getActiveJob(Context context, RequestCallback callback) {
SessionManager manager = new SessionManager(context);
int userID = manager.getUserID();
JSONObject data = new JSONObject();
try {
data.put(USER_ID, userID);
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "get_active_job", data, callback);
}
public static RequestAction getPastRides(Context context, int startIndex, int limit, RequestCallback callback) {
JSONObject data = new JSONObject();
SessionManager manager = new SessionManager(context);
int userID = manager.getUserID();
try {
data.put(USER_ID, userID);
data.put(START_INDEX, startIndex);
data.put(LIMIT, limit);
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "get_past_rides", data, callback);
}
public static RequestAction checkAvailability(Context context, LatLng latLng, RequestCallback callback) {
JSONObject data = new JSONObject();
try {
data.put(LATITUDE, latLng.latitude);
data.put(LONGITUDE, latLng.longitude);
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "check_availability", data, callback);
}
public static RequestAction getNearbyCars(Context context, double latitude, double longitude,
RequestCallback callback) {
JSONObject data = new JSONObject();
try {
data.put(LATITUDE, latitude);
data.put(LONGITUDE, longitude);
JSONArray filters = CarFilters.getFiltersPayload();
data.put(FILTERS, filters);
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "get_nearby_cars", data, callback);
}
public static RequestAction getHours(Context context, LatLng fromLocation, LatLng toLocation,
RequestCallback callback) {
JSONObject data = new JSONObject();
try {
data.put(FROM_LATITUDE, fromLocation.latitude);
data.put(FROM_LONGITUDE, fromLocation.longitude);
data.put(TO_LATITUDE, toLocation.latitude);
data.put(TO_LONGITUDE, toLocation.longitude);
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "get_hours", data, callback);
}
public static RequestAction postPriceBreakdown(Context context, Address from, Address to, long pickupTime,
RequestCallback callback) {
JSONObject data = new JSONObject();
try {
data.put(PICKUP_TIME, pickupTime);
{
JSONObject pickupAddress = new JSONObject();
pickupAddress.put(LATITUDE, from.getLatitude());
pickupAddress.put(LONGITUDE, from.getLongitude());
data.put(PICKUP_LOCATION, pickupAddress);
}
{
JSONObject destinationAddress = new JSONObject();
destinationAddress.put(LATITUDE, to.getLatitude());
destinationAddress.put(LONGITUDE, to.getLongitude());
data.put(DESTINATION_LOCATION, destinationAddress);
}
JSONArray filters = CarFilters.getFiltersPayload();
data.put(FILTERS, filters);
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "post_price_breakdown", data, callback);
}
public static RequestAction validatePromoCode(Context context, String code, String date, RequestCallback callback) {
return null;/*JsonClient.get(context, URLs.VALIDATE_PROMO_CODE + "/" + code, callback);*/
}
public static RequestAction createReservation(Context context, Address from, Address to, long requestedTime,
String ccID, String promoCodeID, AirportModel airportModel,
RequestCallback callback) {
JSONObject data = new JSONObject();
SessionManager manager = new SessionManager(context);
int userID = manager.getUserID();
try {
data.put(USER_ID, userID);
data.put(PICKUP_TIME, requestedTime);
{
JSONObject pickupAddress = new JSONObject();
pickupAddress.put(LATITUDE, from.getLatitude());
pickupAddress.put(LONGITUDE, from.getLongitude());
pickupAddress.put(NAME, MapHelper.formatAddress(from));
data.put(PICKUP_LOCATION, pickupAddress);
}
{
JSONObject destinationAddress = new JSONObject();
destinationAddress.put(LATITUDE, to.getLatitude());
destinationAddress.put(LONGITUDE, to.getLongitude());
destinationAddress.put(NAME, MapHelper.formatAddress(to));
data.put(DESTINATION_LOCATION, destinationAddress);
}
{
if (airportModel != null) {
JSONObject airlineInformation = airportModel.toJson();
data.put(AIRPORT_INFORMATION, airlineInformation);
}
}
{
data.put(CC_ID, ccID);
data.put(PROMO_CODE_ID, promoCodeID);
}
{
JSONArray filters = CarFilters.getFiltersPayload();
data.put(FILTERS, filters);
}
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "create_reservation", data, callback);
}
public static RequestAction cancelReservation(Context context, String confirmationNumber, RequestCallback callback) {
JSONObject data = new JSONObject();
try {
data.put(CONFIRMATION_NUMBER, confirmationNumber);
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "cancel_reservation", data, callback);
}
//without airport
public static RequestAction updateReservation(Context context, String confirmationNumber, long pickupTime,
RequestCallback callback) {
JSONObject data = new JSONObject();
try {
data.put(CONFIRMATION_NUMBER, confirmationNumber);
data.put(PICKUP_TIME, pickupTime);
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "update_reservation", data, callback);
}
//with airport
public static RequestAction updateReservation(Context context, String confirmationNumber, long pickupTime,
AirportModel airportModel, RequestCallback callback) {
JSONObject data = new JSONObject();
try {
data.put(CONFIRMATION_NUMBER, confirmationNumber);
data.put(PICKUP_TIME, pickupTime);
{
JSONObject airportInformation = airportModel.toJson();
data.put(AIRPORT_INFORMATION, airportInformation);
}
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "update_reservation", data, callback);
}
public static RequestAction getUpcomingRides(Context context, int startIndex, int limit, RequestCallback callback) {
JSONObject data = new JSONObject();
SessionManager manager = new SessionManager(context);
int userID = manager.getUserID();
try {
data.put(USER_ID, userID);
data.put(START_INDEX, startIndex);
data.put(LIMIT, limit);
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "get_upcoming_rides", data, callback);
}
public static RequestAction checkJobStatus(Context context, String confirmationNumber, RequestCallback callback) {
JSONObject data = new JSONObject();
try {
data.put(CONFIRMATION_NUMBER, confirmationNumber);
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "check_job_status", data, callback);
}
public static RequestAction updatePassword(Context context, String password, RequestCallback callback) {
SessionManager manager = new SessionManager(context);
int userID = manager.getUserID();
JSONObject data = new JSONObject();
try {
data.put(USER_ID, userID);
data.put(PASSWORD, password);
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "update_password", data, callback);
}
public static RequestAction submitRating(Context context, int rating, String comment, String confirmationNumber,
RequestCallback callback) {
JSONObject data = new JSONObject();
SessionManager manager = new SessionManager(context);
int userID = manager.getUserID();
try {
data.put(USER_ID, userID);
data.put(RATING, rating);
data.put(COMMENT, comment);
data.put(CONFIRMATION_NUMBER, confirmationNumber);
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "submit_rating", data, callback);
}
public static RequestAction registration(Context context, String firstName, String lastName, String phoneNumber,
String email, String password, RequestCallback callback) {
JSONObject data = new JSONObject();
try {
data.put(FIRST_NAME, firstName);
data.put(LAST_NAME, lastName);
data.put(PHONE_NUMBER, phoneNumber);
data.put(EMAIL, email);
data.put(PASSWORD, password);
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "registration", data, callback);
}
public static RequestAction resetPassword(Context context, String email, RequestCallback callback) {
JSONObject data = new JSONObject();
try {
data.put(EMAIL, email);
} catch (Exception e) {
if (ProjectConfig.DEBUG) {
e.printStackTrace();
}
}
return JsonClient.sendRequest(context, "reset_password", data, callback);
}
}