Guest User

Untitled

a guest
Jun 21st, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.72 KB | None | 0 0
  1. package com.evin.androiteatit;
  2.  
  3. import android.content.DialogInterface;
  4. import android.content.Intent;
  5. import android.support.annotation.NonNull;
  6. import android.support.v7.app.AlertDialog;
  7. import android.support.v7.app.AppCompatActivity;
  8. import android.os.Bundle;
  9. import android.support.v7.widget.LinearLayoutManager;
  10. import android.support.v7.widget.RecyclerView;
  11. import android.util.Log;
  12. import android.view.LayoutInflater;
  13. import android.view.MenuItem;
  14. import android.view.View;
  15. import android.view.ViewGroup;
  16. import android.widget.Toast;
  17.  
  18. import com.evin.androiteatit.Common.Common;
  19. import com.evin.androiteatit.Interface.ItemClickListener;
  20. import com.evin.androiteatit.Model.MyResponse;
  21. import com.evin.androiteatit.Model.Notification;
  22. import com.evin.androiteatit.Model.Request;
  23. import com.evin.androiteatit.Model.RequestClient;
  24. import com.evin.androiteatit.Model.Sender;
  25. import com.evin.androiteatit.Model.Token;
  26. import com.evin.androiteatit.Remote.APIService;
  27. import com.evin.androiteatit.ViewHolder.FoodViewHolder;
  28. import com.evin.androiteatit.ViewHolder.OverViewHolder;
  29. import com.firebase.ui.database.FirebaseRecyclerAdapter;
  30. import com.firebase.ui.database.FirebaseRecyclerOptions;
  31. import com.google.firebase.database.DataSnapshot;
  32. import com.google.firebase.database.DatabaseError;
  33. import com.google.firebase.database.DatabaseReference;
  34. import com.google.firebase.database.FirebaseDatabase;
  35. import com.google.firebase.database.Query;
  36. import com.google.firebase.database.ValueEventListener;
  37. import com.jaredrummler.materialspinner.MaterialSpinner;
  38.  
  39. import retrofit2.Call;
  40. import retrofit2.Callback;
  41. import retrofit2.Response;
  42.  
  43. public class OrderStatus extends AppCompatActivity {
  44.  
  45. public RecyclerView recyclerView;
  46. public RecyclerView.LayoutManager layoutManager;
  47.  
  48. FirebaseRecyclerAdapter<Request, OverViewHolder> adapter;
  49.  
  50. FirebaseDatabase database;
  51. DatabaseReference requests;
  52.  
  53. MaterialSpinner spinner;
  54.  
  55. APIService mService;
  56.  
  57. @Override
  58. protected void onCreate(Bundle savedInstanceState) {
  59. super.onCreate(savedInstanceState);
  60. setContentView(R.layout.activity_order_status);
  61.  
  62. //Firebase
  63. database = FirebaseDatabase.getInstance();
  64. requests = database.getReference("Requests");
  65.  
  66. //Init Service
  67. mService = Common.getFCMService();
  68.  
  69. recyclerView = (RecyclerView)findViewById(R.id.listOrders);
  70. recyclerView.setHasFixedSize(true);
  71. layoutManager = new LinearLayoutManager(this);
  72. recyclerView.setLayoutManager(layoutManager);
  73.  
  74.  
  75. Query getOrderbyUser = requests.orderByChild("phone")
  76. .equalTo(phone);
  77.  
  78. FirebaseRecyclerOptions<Request> orderOptions = new FirebaseRecyclerOptions.Builder<Request>()
  79. .setQuery(getOrderbyUser, Request.class)
  80. .build();
  81.  
  82.  
  83. adapter = new FirebaseRecyclerAdapter<Request, OverViewHolder>(orderOptions) {
  84. @Override
  85. protected void onBindViewHolder(@NonNull OverViewHolder viewHolder, int position, @NonNull final Request model) {
  86. Log.d("@Modelf => ", model.getStatus());
  87. viewHolder.txtOrderId.setText(adapter.getRef(position).getKey());
  88. viewHolder.txtOrderStatus.setText(Common.convertCodeToStatus(model.getStatus()));
  89. viewHolder.txtOrderAddress.setText(model.getAddress());
  90. viewHolder.txtOrderPhone.setText(model.getPhone());
  91. }
  92.  
  93. @Override
  94. public OverViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  95. View itemView = LayoutInflater.from(parent.getContext())
  96. .inflate(R.layout.food_item, parent, false);
  97. return new OverViewHolder(itemView);
  98. }
  99. };
  100. adapter.startListening();
  101. Log.d("@NOTStaff Details => ", adapter.toString());
  102. recyclerView.setAdapter(adapter);
  103.  
  104.  
  105. }
  106.  
  107. private void deleteOrder(String key) {
  108. requests.child(key).removeValue();
  109. adapter.notifyDataSetChanged();
  110. }
  111.  
  112. private void showUpdateDialog(String key, final Request item) {
  113. final AlertDialog.Builder alertDialog = new AlertDialog.Builder(OrderStatus.this);
  114. alertDialog.setTitle("Update Order");
  115. alertDialog.setMessage("Please Choose Status");
  116.  
  117. LayoutInflater inflater = this.getLayoutInflater();
  118. final View view = inflater.inflate(R.layout.update_order_layout, null);
  119.  
  120. spinner = (MaterialSpinner)view.findViewById(R.id.statusSpinner);
  121. spinner.setItems(Common.PLACED,Common.INTRANSIT,Common.DELIVERED);
  122.  
  123. alertDialog.setView(view);
  124.  
  125. final String localKey = key;
  126. alertDialog.setPositiveButton("YES", new DialogInterface.OnClickListener() {
  127. @Override
  128. public void onClick(DialogInterface dialogInterface, int i) {
  129. dialogInterface.dismiss();
  130. item.setStatus(String.valueOf(spinner.getSelectedIndex()));
  131.  
  132. requests.child(localKey).setValue(item);
  133. adapter.notifyDataSetChanged(); //Add to update item size
  134.  
  135. sendOrderStatusToUser(localKey ,item);
  136. }
  137. });
  138.  
  139. alertDialog.setNegativeButton("NO", new DialogInterface.OnClickListener() {
  140. @Override
  141. public void onClick(DialogInterface dialogInterface, int i) {
  142. dialogInterface.dismiss();
  143. }
  144. });
  145. alertDialog.show();
  146. }
  147.  
  148. private void sendOrderStatusToUser(final String key, final Request item) {
  149. DatabaseReference tokens = database.getReference("Tokens");
  150. tokens.orderByKey().equalTo(item.getPhone())
  151. .addValueEventListener(new ValueEventListener() {
  152. @Override
  153. public void onDataChange(DataSnapshot dataSnapshot) {
  154. for(DataSnapshot postSnapShot:dataSnapshot.getChildren())
  155. {
  156. Token token = postSnapShot.getValue(Token.class);
  157.  
  158. //Make Raw Payload
  159. Notification notification = new Notification("EvinFest","Your order "+ key + "was updated.");
  160. Sender content = new Sender(token.getToken(), notification);
  161.  
  162. mService.sendNotification(content)
  163. .enqueue(new Callback<MyResponse>() {
  164. @Override
  165. public void onResponse(Call<MyResponse> call, Response<MyResponse> response) {
  166. if(response.body().success == 1 ){
  167. Toast.makeText(OrderStatus.this, "Order was updated ! ", Toast.LENGTH_SHORT).show();
  168. }else
  169. {
  170. Toast.makeText(OrderStatus.this, "Order was updated but failed to send notification !", Toast.LENGTH_SHORT).show();
  171. }
  172. }
  173.  
  174. @Override
  175. public void onFailure(Call<MyResponse> call, Throwable t) {
  176. Log.e("ERROR",t.getMessage());
  177. }
  178. });
  179. }
  180. }
  181.  
  182. @Override
  183. public void onCancelled(DatabaseError databaseError) {
  184.  
  185. }
  186. });
  187. }
  188.  
  189. @Override
  190. protected void onStop() {
  191. super.onStop();
  192. adapter.stopListening();
  193. }
  194. }
Add Comment
Please, Sign In to add comment