package com.nexchanges.hailyo;
import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.SeekBar;
import android.widget.TableLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.hrules.horizontalnumberpicker.HorizontalNumberPicker;
import com.hrules.horizontalnumberpicker.HorizontalNumberPickerListener;
import com.nexchanges.hailyo.customSupportClass.ConfigSpecCode;
import com.nexchanges.hailyo.customSupportClass.ShowToastMessage;
import com.nexchanges.hailyo.model.SharedPrefs;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicHeader;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
/**
* Created by AbhishekWork on 17/06/15.
*/
public class EnterConfigActivity extends Activity implements HorizontalNumberPickerListener, SeekBar.OnSeekBarChangeListener{
//declare variables
SeekBar mSeekbar_Rent, mSeekbar_Sale;
Boolean success;
String URL = "http://ec2-52-27-37-225.us-west-2.compute.amazonaws.com:9000/1/lets/hail";
int bhkval, value;
Dialog alertD;
StringEntity se;
public static final String TAG = EnterConfigActivity.class.getSimpleName();
TextView result;
TextView pasloc;
final int step_size1 = 5000;
final int step_size2 = 50000;
final int step_size3 = 100000;
final int step_Sale1 = 2500000;
final int step_Sale2 = 5000000;
final int step_Sale3 = 10000000;
Button hailBtn;
private String message, role, user_id, lng,lat;
Button seeProp,showProp;
Boolean isOnePressed, isSecondPlace, rentSelected, saleSelected;
Context context;
int max=5, min=0,val_check;
String fetchloc, msg1,msg2,msg3,msg4,message1,str1="seeshow",str2="buyrent",str3="bhk",str4="price",mesFinal;
ConfigSpecCode spec_code;
private static LayoutInflater inflate =null;
TableLayout renttab, saletab;
Boolean is_see_show_pressed = false, is_buy_sell_pressed = false;
HorizontalNumberPicker horizontalNumberPicker3;
CheckBox rent,sale;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.enter_config_layout);
context = this;
spec_code = new ConfigSpecCode();
role = SharedPrefs.getString(context, SharedPrefs.MY_ROLE_KEY);
user_id = SharedPrefs.getString(context, SharedPrefs.MY_USER_ID);
lng = SharedPrefs.getString(context, SharedPrefs.MY_POINTER_LNG);
lat = SharedPrefs.getString(context, SharedPrefs.MY_POINTER_LAT);
horizontalNumberPicker3 = (HorizontalNumberPicker) findViewById(R.id.horizontal_number_picker3);
horizontalNumberPicker3.setBackgroundColor(getResources().getColor(android.R.color.white));
horizontalNumberPicker3.getTextValueView().setTextColor(getResources().getColor(android.R.color.black));
horizontalNumberPicker3.getTextValueView().setTextSize(22);
horizontalNumberPicker3.setMaxValue(max);
horizontalNumberPicker3.setMinValue(min);
horizontalNumberPicker3.setHorizontalNumberPickerListener(this);
result = (TextView) this.findViewById(R.id.tvResult);
rent = (CheckBox) this.findViewById(R.id.checkRENT);
sale= (CheckBox) this.findViewById(R.id.checkSALE);
pasloc = (TextView) this.findViewById(R.id.tvLoc);
fetchloc = SharedPrefs.getString(this, SharedPrefs.CURRENT_LOC_KEY, "Location Unavailable");
pasloc.setText(fetchloc);
mSeekbar_Rent = (SeekBar) findViewById(R.id.rentbar);
mSeekbar_Rent.setOnSeekBarChangeListener(this);
mSeekbar_Sale = (SeekBar) findViewById(R.id.salebar);
mSeekbar_Sale.setOnSeekBarChangeListener(this);
seeProp = (Button) findViewById(R.id.seeprop);
showProp = (Button) findViewById(R.id.showprop);
renttab = (TableLayout) findViewById(R.id.rentpricetext);
saletab = (TableLayout) findViewById(R.id.salepricetext);
hailBtn = (Button) findViewById(R.id.hail);
seeProp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
is_see_show_pressed = true;
msg1 = "Req";
updateSpecCode(str1,msg1);
SharedPrefs.save(context, SharedPrefs.CURRENT_CUST_TYPE, "req");
seeProp.setBackgroundColor(Color.parseColor("#FFA500"));
seeProp.setTextColor(Color.WHITE);
showProp.setBackgroundColor(Color.WHITE);
showProp.setTextColor(Color.BLACK);
}
});
showProp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showProp.setBackgroundColor(Color.parseColor("#FFA500"));
is_see_show_pressed = true;
showProp.setTextColor(Color.WHITE);
msg1 = "Avl";
updateSpecCode(str1, msg1);
SharedPrefs.save(context, SharedPrefs.CURRENT_CUST_TYPE, "avl");
seeProp.setBackgroundColor(Color.WHITE);
seeProp.setTextColor(Color.BLACK);
}
});
rent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
rentSelected=true;
saleSelected=false;
is_buy_sell_pressed = true;
sale.setChecked(false);
msg2 = "L/L";
updateSpecCode(str2, msg2);
result.setText("");
mSeekbar_Sale.setProgress(0);
SharedPrefs.save(context, SharedPrefs.CURRENT_INTENT, "rent");
mSeekbar_Rent.setVisibility(View.VISIBLE);
renttab.setVisibility(View.VISIBLE);
mSeekbar_Sale.setVisibility(View.GONE);
saletab.setVisibility(View.GONE);
}
});
sale.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
saleSelected=true;
rentSelected = false;
is_buy_sell_pressed = true;
rent.setChecked(false);
msg2 = "OUT";
updateSpecCode(str2, msg2);
result.setText("");
mSeekbar_Rent.setProgress(0);
SharedPrefs.save(context, SharedPrefs.CURRENT_INTENT, "out");
mSeekbar_Rent.setVisibility(View.GONE);
renttab.setVisibility(View.GONE);
mSeekbar_Sale.setVisibility(View.VISIBLE);
saletab.setVisibility(View.VISIBLE);
}
});
hailBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
mesFinal = updateSpecCode("he", "he");
int pass = validationCheck();
if (pass == 0) {
sendPostRequest(user_id, role, lng, lat, mesFinal);
// successfulHail();
}
else Toast.makeText(getApplicationContext(), "Please enter all fields before clicking Hail",
Toast.LENGTH_LONG).show();
}
});
}
@Override
public void onHorizontalNumberPickerChanged(HorizontalNumberPicker horizontalNumberPicker, int i) {
bhkval = i;
msg3 = (horizontalNumberPicker.getValue()+"BHK");
updateSpecCode(str3,msg3);
spec_code.BHK = i+"BHK";
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
switch (seekBar.getId()) {
case R.id.rentbar:
mSeekbar_Sale.setProgress(0);
if (progress < 300000) {
// x=progress;
// y1=Math.exp(Math.log(minxr)+(x-minxr)*(Math.log(maxxr) - Math.log(minxr))/(maxxr-minxr));
// y=(int)y1;
progress = ((int) Math.round(progress / step_size1)) * step_size1;
value = progress;
msg4 = Integer.toString(value);
updateSpecCode(str4, msg4);
result.setText(" Rent:" + value);
} else if (progress > 305000 && progress < 600000) {
progress = ((int) Math.round(progress / step_size2)) * step_size2;
value = progress;
msg4 = Integer.toString(value);
updateSpecCode(str4, msg4);
result.setText(" Rent:" + value);
} else{
progress = ((int) Math.round(progress / step_size3)) * step_size3;
value = progress;
msg4 = Integer.toString(value);
updateSpecCode(str4, msg4);
result.setText(" Rent:" + value);
}
break;
case R.id.salebar:
mSeekbar_Rent.setProgress(0);
result.setText("");
if (progress < 10000000) {
progress = ((int) Math.round(progress / step_Sale1)) * step_Sale1;
value = progress;
msg4 = Integer.toString(value);
updateSpecCode(str4,msg4);
result.setText(" Price:" + value);
} if (progress > 10000000 && progress < 100000000) {
progress = ((int) Math.round(progress / step_Sale2)) * step_Sale2;
value = progress;
msg4 = Integer.toString(value);
updateSpecCode(str4,msg4);
result.setText(" Price:" + value);
} else
progress = ((int) Math.round(progress / step_Sale3)) * step_Sale3;
value = progress;
msg4 = Integer.toString(value);
updateSpecCode(str4,msg4);
result.setText(" Price:" + value);
break;
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
private String updateSpecCode(String where, String value)
{
// message1 = msg1 + "-" + msg2 + "-" + msg3 + "-" + msg4;
//if (rentSelected == true) {
// int prog = mSeekbar_Rent.getProgress();
//msg4 = Integer.toString(prog);
//} else{
// int prog1 = mSeekbar_Sale.getProgress();
//msg4 = Integer.toString(prog1);
//}
if (where.equalsIgnoreCase("seeshow")) {
msg1 = value;
message1 = msg1 + "-" + msg2 + "-" + msg3 + "-" + msg4;
}
else if (where.equalsIgnoreCase("buyrent"))
{
msg2 = value;
message1 = msg1 + "-" + msg2 + "-" + msg3 + "-" + msg4;
}
else if (where.equalsIgnoreCase("bhk"))
{
msg3 = value;
message1 = msg1 + "-" + msg2 + "-" + msg3 + "-" + msg4;
}
else if (where.equalsIgnoreCase("price"))
{
msg4 = value;
message1 = msg1 + "-" + msg2 + "-" + msg3 + "-" + msg4;
}
else message1 = msg1 + "-" + msg2 + "-" + msg3 + "-" + msg4;
Log.i(TAG,"VALUE OF MSG1 IS: " + msg1);
Log.i(TAG,"VALUE OF MSG2 IS: " + msg2);
Log.i(TAG, "VALUE OF MSG3 IS: " + msg3);
Log.i(TAG,"VALUE OF MSG4 IS: " + msg4);
return message1;
}
@Override
protected void onPause()
{
super.onPause();
// SharedPrefs.save(context, SharedPrefs.LAST_ACTIVITY_KEY, getClass().getName());
}
private int validationCheck() {
val_check = 0;
if (is_see_show_pressed == false) {
Toast.makeText(getApplicationContext(), "Chose your profile \n Owner or Seeker?",
Toast.LENGTH_LONG).show();
val_check = 1;
}
else if (is_buy_sell_pressed == false) {
Toast.makeText(getApplicationContext(), "Please select your intent \n Do you want to Buy/Sell or Rent?",
Toast.LENGTH_LONG).show();
val_check = 1;
}
else if (horizontalNumberPicker3.getValue() == 0) {
Toast.makeText(getApplicationContext(), "Please select a valid configuration BHK",
Toast.LENGTH_LONG).show();
val_check = 1;
}
else if (mSeekbar_Rent.getProgress() == 0 && mSeekbar_Sale.getProgress() == 0) {
Toast.makeText(getApplicationContext(), "Please enter a valid price",
Toast.LENGTH_LONG).show();
val_check = 1;
}
return val_check;
}
private void sendPostRequest(final String U_id, final String U_role, final String U_Lat, final String U_Lng, final String spec)
{
class SendPostReqAsyncTask extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
//showSplashScreen();
}
@Override
protected String doInBackground(String... params) {
JSONObject jsonObject = new JSONObject();
try {
jsonObject.accumulate("user_id", U_id);
jsonObject.accumulate("user_role", U_role);
jsonObject.accumulate("spec_code", spec);
jsonObject.accumulate("long", U_Lng);
jsonObject.accumulate("lat", U_Lat);
} catch (JSONException e) {
e.printStackTrace();
}
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(URL);
try {
se = new StringEntity(jsonObject.toString());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
se.setContentType(new BasicHeader("Content-Type", "application/json"));
httpPost.setEntity(se);
httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-Type", "application/json");
try {
HttpResponse httpResponse = httpClient.execute(httpPost);
int response = httpResponse.getStatusLine().getStatusCode();
System.out.print("Value of response code is: " + response);
if (response == 200 || response == 201) {
success = true;
} else {
System.out.print("Hail Failed, Try again later");
success = false;
}
InputStream inputStream = httpResponse.getEntity().getContent();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
StringBuilder stringBuilder = new StringBuilder();
String bufferedStrChunk = null;
while ((bufferedStrChunk = bufferedReader.readLine()) != null) {
stringBuilder.append(bufferedStrChunk);
}
return stringBuilder.toString();
} catch (ClientProtocolException cpe) {
System.out.println("First Exception coz of HttpResponese :" + cpe);
cpe.printStackTrace();
} catch (IOException ioe) {
System.out.println("Second Exception coz of HttpResponse :" + ioe);
ioe.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
// removeSplashScreen();
if (success == false) {
Toast.makeText(
getApplicationContext(),
"NO RESPONSE FROM BROKER, HAIL TIMED OUT! \n PLEASE TRY AGAIN!",
Toast.LENGTH_LONG).show();
} else
{
ShowToastMessage showToastMessage = new ShowToastMessage();
showToastMessage.displayToast(context,"PLEASE SIT BACK & RELAX, \n WHILE WE FIND A SUITABLE BROKER TO MATCH ");
/*
try {
JSONObject jObject = new JSONObject(result);
String tim_val = jObject.getString("time_to_meet");
String yoed = jObject.getString("yo_resp");
String bname = jObject.getString("name");
String mobile = jObject.getString("mobile_no");
JSONArray rating = jObject.getJSONArray("rating");
String br_wow = rating.getString(0);
String br_not_wow = rating.getString(1);
String cl_wow = rating.getString(2);
String cl_not_wow = rating.getString(3);
if (yoed.equalsIgnoreCase("true"))
successfulHail(mobile, bname, tim_val, br_wow, br_not_wow);
else {
Toast.makeText(
getApplicationContext(),
"No Response for given Hail. \n Try changing requirement specs and Hailing again!",
Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
Log.e("JSONException", "Error: " + e.toString());
}*/
}
}
}
SendPostReqAsyncTask sendPostReqAsyncTask = new SendPostReqAsyncTask();
sendPostReqAsyncTask.execute(U_id, U_role, U_Lat, U_Lng, spec);
}
protected void showSplashScreen() {
LayoutInflater layoutInflater = LayoutInflater.from(context);
View View = layoutInflater.inflate(R.layout.splashscreen, null);
alertD = new Dialog(context);
alertD.getWindow().setBackgroundDrawable(new ColorDrawable(0));
alertD.setContentView(View);
alertD.setCancelable(false);
alertD.show();
alertD.getWindow().setLayout(500, 600);
}
protected void removeSplashScreen() {
if (alertD != null) {
alertD.dismiss();
alertD = null;
}
}
private void successfulHail(String mob, String nam, String valT,String wow, String not_wow)
{
SharedPrefs.save(context, SharedPrefs.CURRENT_SPEC, message);
if (role.equalsIgnoreCase("broker")) {
message = "Plus-" + mesFinal;
Intent PostYoActB = new Intent(context, PostYoActivity_Broker.class);
Bundle extrasB = new Bundle();
extrasB.putString("phone", mob);
extrasB.putString("broker_Name", nam);
extrasB.putString("timer", valT);
extrasB.putString("rating_wow",wow);
extrasB.putString("rating_not_wow",not_wow);
PostYoActB.putExtras(extrasB);
context.startActivity(PostYoActB);
finish();
}
else {
message = "Direct-" + mesFinal;
Intent PostYoAct = new Intent(context, PostYoActivity.class);
Bundle extrasB = new Bundle();
extrasB.putString("phone", mob);
extrasB.putString("broker_Name", nam);
extrasB.putString("timer", valT);
extrasB.putString("rating_wow",wow);
extrasB.putString("rating_not_wow",not_wow);
PostYoAct.putExtras(extrasB);
context.startActivity(PostYoAct);
finish();
}
}
}