package com.biznow.ordernow;
import java.util.ArrayList;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.NotificationManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.biznow.ordernow.R;
import com.biznow.ordernow.adapter.MyParentOrderAdapter;
import com.biznow.ordernow.model.MyOrderItem;
import com.biznow.ordernow.model.OrderNowConstants;
import com.biznow.ordernow.model.OrderStatus;
import com.data.menu.CustomerOrderWrapper;
import com.util.AsyncNetwork;
import com.util.AsyncURLHandler;
import com.util.OrderNowUtilities;
import com.util.URLBuilder;
import com.util.Utilities;
public class MyParentOrderActivity extends Activity implements AsyncURLHandler {
private MyParentOrderAdapter myParentOrderAdapter;
private IntentFilter filter;
ArrayList<CustomerOrderWrapper> subOrderList = null;
private AsyncURLHandler urlHandler;
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = this;
urlHandler = this;
filter = new IntentFilter();
filter.addAction(OrderNowConstants.ORDER_STATUS_RESET);
Float totalOrderAmount = (float) 0.00;
ApplicationState applicationContext = (ApplicationState)getApplicationContext();
subOrderList = OrderNowUtilities.getObjectFromSharedPreferences(getApplicationContext(), OrderNowConstants.KEY_ACTIVE_SUB_ORDER_LIST);
if(subOrderList==null){
subOrderList = new ArrayList<CustomerOrderWrapper>();
}
OrderStatus orderStatus = OrderStatus.NULL;
CustomerOrderWrapper customerOrderWrapper = ApplicationState.getCustomerOrderWrapper((ApplicationState)getApplicationContext());
Utilities.info("Utilities + " + orderStatus.toString());
if(customerOrderWrapper !=null) {
subOrderList.add(customerOrderWrapper);
}
setContentView(R.layout.my_parent_order_summary);
TextView totalAmount = (TextView) findViewById(R.id.parentTotalAmount);
Button requestBillButton = (Button) findViewById(R.id.requestBillButton);
setTitle("Confirmed Order");
getActionBar().setDisplayHomeAsUpEnabled(true);
for (CustomerOrderWrapper subOrder:subOrderList) {
for (MyOrderItem myOrderItem: subOrder.getMyOrderItemList()) {
totalOrderAmount = totalOrderAmount + (myOrderItem.getQuantity() * myOrderItem.getFoodMenuItem().getItemPrice());
}
}
totalAmount.setText(OrderNowConstants.INDIAN_RUPEE_UNICODE + " " + Float.toString(totalOrderAmount));
ListView subOrderListView = (ListView) findViewById(R.id.subOrderList);
myParentOrderAdapter = new MyParentOrderAdapter(this, subOrderList);
subOrderListView.setAdapter(myParentOrderAdapter);
myParentOrderAdapter.notifyDataSetChanged();
requestBillButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(MyParentOrderActivity.this);
builder.setTitle("Request Bill");
boolean orderAcknowledgement = true;
if (!OrderNowConstants.IS_PRODUCTION_SAMPLE_MODE) {
for (CustomerOrderWrapper customerOrderWrapper : subOrderList) {
orderAcknowledgement = customerOrderWrapper.hasResturantacknowledged() && orderAcknowledgement;
}
}
if (orderAcknowledgement == false) {
Toast.makeText(getApplicationContext(), "Please wait for resturant acknowledgment before requesting bill. ", Toast.LENGTH_LONG).show();
return;
}
final ApplicationState applicationContext = (ApplicationState) getApplicationContext();
if (ApplicationState.getFoodMenuItemQuantityMap(applicationContext) != null && ApplicationState.getFoodMenuItemQuantityMap(applicationContext).size() > 0) {
builder.setMessage("You have items waiting to be ordered in the cart. Would you still like to request for the bill?");
} else {
builder.setMessage("Would you like to request for the bill?");
}
builder.setPositiveButton(R.string.yes, new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String orderId = ApplicationState.getActiveOrderId(applicationContext);
String url = new URLBuilder().addPath(URLBuilder.Path.serveTable).addAction(URLBuilder.URLAction.requestBill).addParam(URLBuilder.URLParam.orderId, orderId).build();
try {
OrderNowUtilities.sessionClean(getApplicationContext());
new AsyncNetwork(urlHandler, context).execute(url);
} catch (Exception e) {
e.printStackTrace();
}
}
});
builder.setNegativeButton(R.string.no, null);
AlertDialog alert = builder.create();
alert.show();
}
});
}
@Override
protected void onResume() {
if (statusResetreceiver != null) {
registerReceiver(statusResetreceiver, filter);
Utilities.info("On resume reciever");
} else {
Utilities.info("On resume null reciever");
}
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.cancel(OrderNowConstants.STATUS_CHANGE_NOTIFICATION_ID);
ApplicationState applicationContext = (ApplicationState) getApplicationContext();
//if application context is null that means its safe to refresh view from the prefernece storage
if (ApplicationState.getCustomerOrderWrapper(applicationContext) == null) {
refreshConfirmedOrderView();
}
super.onResume();
}
@Override
protected void onStart() {
if (statusResetreceiver != null) {
registerReceiver(statusResetreceiver, filter);
Utilities.info("On start reciever");
} else {
Utilities.info("On start null reciever");
}
super.onStart();
}
@Override
protected void onRestart() {
if (statusResetreceiver != null) {
registerReceiver(statusResetreceiver, filter);
Utilities.info("On onRestart reciever");
} else {
Utilities.info("On onRestart null reciever");
}
super.onRestart();
}
@Override
protected void onPause() {
if (statusResetreceiver != null) {
unregisterReceiver(statusResetreceiver);
Utilities.info("On pause reciever");
} else {
Utilities.info("On pause null reciever");
}
super.onPause();
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Utilities.info("on new intent "+intent.getAction());
refreshConfirmedOrderView();
}
private void refreshConfirmedOrderView() {
ArrayList<CustomerOrderWrapper> subOrderList = OrderNowUtilities.getObjectFromSharedPreferences(getApplicationContext(), OrderNowConstants.KEY_ACTIVE_SUB_ORDER_LIST);
myParentOrderAdapter.clear();
myParentOrderAdapter.addAll(subOrderList);
myParentOrderAdapter.notifyDataSetChanged();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
case R.id.waiter:
FoodMenuActivity.callWaiterFunction(MyParentOrderActivity.this);
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.confirmed_page_menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public void onBackPressed() {
ApplicationState.setOpenCategoryDrawer((ApplicationState) getApplicationContext(), true); //FIXME: Persist the myOrderItem List Data on FoodMenuActivity Page
Intent intent = new Intent(getApplicationContext(), FoodMenuActivity.class);
startActivity(intent);
finish();
}
public BroadcastReceiver statusResetreceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
onNewIntent(intent);
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.cancel(OrderNowConstants.STATUS_CHANGE_NOTIFICATION_ID);
this.setResultCode(Activity.RESULT_OK);
}
};
@Override
public void handleException(Exception e) {
// TODO Auto-generated method stub
}
@Override
public void handleSuccess(String result) {
Toast.makeText(getApplicationContext(), "You will be receiving the bill very shortly!", Toast.LENGTH_LONG).show();
Intent intent = new Intent(getApplicationContext(), RestFeedbackActivity.class);
startActivity(intent);
finish();
}
}