Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.evin.androiteatit;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.support.annotation.NonNull;
- import android.support.v7.app.AlertDialog;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.support.v7.widget.LinearLayoutManager;
- import android.support.v7.widget.RecyclerView;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.MenuItem;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.Toast;
- import com.evin.androiteatit.Common.Common;
- import com.evin.androiteatit.Interface.ItemClickListener;
- import com.evin.androiteatit.Model.MyResponse;
- import com.evin.androiteatit.Model.Notification;
- import com.evin.androiteatit.Model.Request;
- import com.evin.androiteatit.Model.RequestClient;
- import com.evin.androiteatit.Model.Sender;
- import com.evin.androiteatit.Model.Token;
- import com.evin.androiteatit.Remote.APIService;
- import com.evin.androiteatit.ViewHolder.FoodViewHolder;
- import com.evin.androiteatit.ViewHolder.OverViewHolder;
- import com.firebase.ui.database.FirebaseRecyclerAdapter;
- import com.firebase.ui.database.FirebaseRecyclerOptions;
- import com.google.firebase.database.DataSnapshot;
- import com.google.firebase.database.DatabaseError;
- import com.google.firebase.database.DatabaseReference;
- import com.google.firebase.database.FirebaseDatabase;
- import com.google.firebase.database.Query;
- import com.google.firebase.database.ValueEventListener;
- import com.jaredrummler.materialspinner.MaterialSpinner;
- import retrofit2.Call;
- import retrofit2.Callback;
- import retrofit2.Response;
- public class OrderStatus extends AppCompatActivity {
- public RecyclerView recyclerView;
- public RecyclerView.LayoutManager layoutManager;
- FirebaseRecyclerAdapter<Request, OverViewHolder> adapter;
- FirebaseDatabase database;
- DatabaseReference requests;
- MaterialSpinner spinner;
- APIService mService;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_order_status);
- //Firebase
- database = FirebaseDatabase.getInstance();
- requests = database.getReference("Requests");
- //Init Service
- mService = Common.getFCMService();
- recyclerView = (RecyclerView)findViewById(R.id.listOrders);
- recyclerView.setHasFixedSize(true);
- layoutManager = new LinearLayoutManager(this);
- recyclerView.setLayoutManager(layoutManager);
- Query getOrderbyUser = requests.orderByChild("phone")
- .equalTo(phone);
- FirebaseRecyclerOptions<Request> orderOptions = new FirebaseRecyclerOptions.Builder<Request>()
- .setQuery(getOrderbyUser, Request.class)
- .build();
- adapter = new FirebaseRecyclerAdapter<Request, OverViewHolder>(orderOptions) {
- @Override
- protected void onBindViewHolder(@NonNull OverViewHolder viewHolder, int position, @NonNull final Request model) {
- Log.d("@Modelf => ", model.getStatus());
- viewHolder.txtOrderId.setText(adapter.getRef(position).getKey());
- viewHolder.txtOrderStatus.setText(Common.convertCodeToStatus(model.getStatus()));
- viewHolder.txtOrderAddress.setText(model.getAddress());
- viewHolder.txtOrderPhone.setText(model.getPhone());
- }
- @Override
- public OverViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- View itemView = LayoutInflater.from(parent.getContext())
- .inflate(R.layout.food_item, parent, false);
- return new OverViewHolder(itemView);
- }
- };
- adapter.startListening();
- Log.d("@NOTStaff Details => ", adapter.toString());
- recyclerView.setAdapter(adapter);
- }
- private void deleteOrder(String key) {
- requests.child(key).removeValue();
- adapter.notifyDataSetChanged();
- }
- private void showUpdateDialog(String key, final Request item) {
- final AlertDialog.Builder alertDialog = new AlertDialog.Builder(OrderStatus.this);
- alertDialog.setTitle("Update Order");
- alertDialog.setMessage("Please Choose Status");
- LayoutInflater inflater = this.getLayoutInflater();
- final View view = inflater.inflate(R.layout.update_order_layout, null);
- spinner = (MaterialSpinner)view.findViewById(R.id.statusSpinner);
- spinner.setItems(Common.PLACED,Common.INTRANSIT,Common.DELIVERED);
- alertDialog.setView(view);
- final String localKey = key;
- alertDialog.setPositiveButton("YES", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialogInterface, int i) {
- dialogInterface.dismiss();
- item.setStatus(String.valueOf(spinner.getSelectedIndex()));
- requests.child(localKey).setValue(item);
- adapter.notifyDataSetChanged(); //Add to update item size
- sendOrderStatusToUser(localKey ,item);
- }
- });
- alertDialog.setNegativeButton("NO", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialogInterface, int i) {
- dialogInterface.dismiss();
- }
- });
- alertDialog.show();
- }
- private void sendOrderStatusToUser(final String key, final Request item) {
- DatabaseReference tokens = database.getReference("Tokens");
- tokens.orderByKey().equalTo(item.getPhone())
- .addValueEventListener(new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot dataSnapshot) {
- for(DataSnapshot postSnapShot:dataSnapshot.getChildren())
- {
- Token token = postSnapShot.getValue(Token.class);
- //Make Raw Payload
- Notification notification = new Notification("EvinFest","Your order "+ key + "was updated.");
- Sender content = new Sender(token.getToken(), notification);
- mService.sendNotification(content)
- .enqueue(new Callback<MyResponse>() {
- @Override
- public void onResponse(Call<MyResponse> call, Response<MyResponse> response) {
- if(response.body().success == 1 ){
- Toast.makeText(OrderStatus.this, "Order was updated ! ", Toast.LENGTH_SHORT).show();
- }else
- {
- Toast.makeText(OrderStatus.this, "Order was updated but failed to send notification !", Toast.LENGTH_SHORT).show();
- }
- }
- @Override
- public void onFailure(Call<MyResponse> call, Throwable t) {
- Log.e("ERROR",t.getMessage());
- }
- });
- }
- }
- @Override
- public void onCancelled(DatabaseError databaseError) {
- }
- });
- }
- @Override
- protected void onStop() {
- super.onStop();
- adapter.stopListening();
- }
- }
Add Comment
Please, Sign In to add comment