PageRenderTime 51ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/app/src/main/java/com/fyp/atom/linc/Main/StudentFeed/OfferDetails/SessionSelection/SessionSelectionActivity.java

https://gitlab.com/jaadchacra/Linc
Java | 266 lines | 222 code | 33 blank | 11 comment | 20 complexity | f5a552fe6c2526e07f424fb5cc864d27 MD5 | raw file
  1. package com.fyp.atom.linc.Main.StudentFeed.OfferDetails.SessionSelection;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.graphics.Typeface;
  5. import android.support.v7.app.ActionBar;
  6. import android.support.v7.app.AppCompatActivity;
  7. import android.os.Bundle;
  8. import android.support.v7.widget.LinearLayoutManager;
  9. import android.support.v7.widget.RecyclerView;
  10. import android.support.v7.widget.Toolbar;
  11. import android.util.Log;
  12. import android.view.MenuItem;
  13. import android.view.View;
  14. import android.widget.Button;
  15. import android.widget.ProgressBar;
  16. import android.widget.TextView;
  17. import android.widget.Toast;
  18. import com.android.volley.AuthFailureError;
  19. import com.android.volley.NetworkError;
  20. import com.android.volley.NoConnectionError;
  21. import com.android.volley.Request;
  22. import com.android.volley.Response;
  23. import com.android.volley.TimeoutError;
  24. import com.android.volley.VolleyError;
  25. import com.android.volley.toolbox.StringRequest;
  26. import com.fyp.atom.linc.Main.MainActivity;
  27. import com.fyp.atom.linc.Main.StudentFeed.CreateOffer.CreateOfferActivity;
  28. import com.fyp.atom.linc.Models.Offer;
  29. import com.fyp.atom.linc.Models.Session;
  30. import com.fyp.atom.linc.R;
  31. import com.fyp.atom.linc.Utils.MySingleton;
  32. import com.fyp.atom.linc.Utils.SQLiteHandler;
  33. import org.json.JSONArray;
  34. import org.json.JSONException;
  35. import org.json.JSONObject;
  36. import java.util.ArrayList;
  37. import java.util.HashMap;
  38. import java.util.Hashtable;
  39. import java.util.List;
  40. import java.util.Map;
  41. public class SessionSelectionActivity extends AppCompatActivity {
  42. Bundle mSavedInstanceState;
  43. private SQLiteHandler db;
  44. String userID;
  45. Toolbar offerDetailsToolbar;
  46. TextView toolbarTextView;
  47. private RecyclerView recyclerView;
  48. private RecyclerView.Adapter sessionAdapter;
  49. private List<Session> sessionList;
  50. ProgressBar progressBarCenter;
  51. TextView errorMessage;
  52. Button retryButton;
  53. Offer offer;
  54. String offerID;
  55. @Override
  56. public boolean onOptionsItemSelected(MenuItem item) {
  57. switch (item.getItemId()) {
  58. case android.R.id.home:
  59. this.finish();
  60. //I REMOVED THIS AND PUT (0,0) !!!, there was one also in onCreate for when we enter the app
  61. // this.overridePendingTransition(R.anim.animation_leave2,R.anim.animation_enter2);
  62. overridePendingTransition(0, 0);
  63. return true;
  64. }
  65. return super.onOptionsItemSelected(item);
  66. }
  67. @Override
  68. protected void onCreate(Bundle savedInstanceState) {
  69. super.onCreate(savedInstanceState);
  70. setContentView(R.layout.activity_select_session);
  71. mSavedInstanceState = savedInstanceState;
  72. init();
  73. initSQLHandler();
  74. getSessions(mSavedInstanceState);
  75. }
  76. private void init() {
  77. Intent mIntent = getIntent();
  78. offer = (Offer) mIntent.getSerializableExtra("offer");
  79. offerID = ""+offer.getOfferID();
  80. progressBarCenter = (ProgressBar) findViewById(R.id.progressBarCenter);
  81. progressBarCenter.setVisibility(View.VISIBLE);
  82. errorMessage = (TextView) findViewById(R.id.errorMessageTextView);
  83. retryButton = (Button) findViewById(R.id.retryButton);
  84. errorMessage.setVisibility(View.GONE);
  85. retryButton.setVisibility(View.GONE);
  86. toolbarTextView = (TextView) findViewById(R.id.toolbarTextView);
  87. offerDetailsToolbar = (Toolbar) findViewById(R.id.offerDetailsToolbar);
  88. sessionList = new ArrayList<>();
  89. Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/montserrat_regular_0.ttf");
  90. toolbarTextView.setTypeface(tf);
  91. setSupportActionBar(offerDetailsToolbar);
  92. getSupportActionBar().setDisplayHomeAsUpEnabled(false);
  93. setSupportActionBar(offerDetailsToolbar);
  94. getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
  95. getSupportActionBar().setDisplayHomeAsUpEnabled(true);
  96. recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
  97. recyclerView.setHasFixedSize(true);
  98. LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
  99. linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
  100. recyclerView.setLayoutManager(linearLayoutManager);
  101. }
  102. private void getSessions(final Bundle savedInstanceState) {
  103. MySingleton.getInstance(this).addToRequestQueue(getSessionsFromServer(savedInstanceState));
  104. }
  105. private StringRequest getSessionsFromServer(final Bundle savedInstanceState) {
  106. //Displaying Progressbar
  107. progressBarCenter.setVisibility(View.VISIBLE);
  108. //JsonArrayRequest of volley
  109. StringRequest postRequest = new StringRequest(Request.Method.GET, "http://kcapplications.com/Linc/sessions.php?user_id="+userID,
  110. new Response.Listener<String>() {
  111. @Override
  112. public void onResponse(String response) {
  113. progressBarCenter.setVisibility(View.GONE);
  114. Log.d("sessions", response.toString());
  115. if (response != null) {
  116. parseData(response);
  117. } else {
  118. progressBarCenter.setVisibility(View.VISIBLE);
  119. getSessions(savedInstanceState);
  120. }
  121. }
  122. },
  123. new Response.ErrorListener() {
  124. @Override
  125. public void onErrorResponse(VolleyError error) {
  126. progressBarCenter.setVisibility(View.GONE);
  127. errorMessage.setVisibility(View.VISIBLE);
  128. retryButton.setVisibility(View.VISIBLE);
  129. Log.d("sessions", "in error");
  130. if (error instanceof NoConnectionError) {
  131. errorMessage.setText("Connection error\nPlease check your internet connection");
  132. } else if (error instanceof NetworkError) {
  133. errorMessage.setText("Connection error\nPlease check your internet connection");
  134. } else if (error instanceof TimeoutError) {
  135. errorMessage.setText("Connection error\nFailed to connect to server");
  136. } else {
  137. errorMessage.setText("404 Not Found");
  138. }
  139. retryButton.setOnClickListener(new View.OnClickListener() {
  140. @Override
  141. public void onClick(View v) {
  142. progressBarCenter.setVisibility(View.VISIBLE);
  143. errorMessage.setVisibility(View.GONE);
  144. retryButton.setVisibility(View.GONE);
  145. getSessions(savedInstanceState);
  146. }
  147. });
  148. }
  149. });
  150. return postRequest;
  151. }
  152. //This method will parse json data
  153. private void parseData(String response) {
  154. try {
  155. JSONArray jsonArray = new JSONArray(response);
  156. for (int i = 0; i < jsonArray.length(); i++) {
  157. Session session = new Session();
  158. JSONObject sessionJsonObject = null;
  159. String sessionStatus = "";
  160. try {
  161. //Getting json
  162. sessionJsonObject = jsonArray.getJSONObject(i);
  163. session.setSessionID(Integer.parseInt(sessionJsonObject.getString("sessionID")));
  164. session.setName(sessionJsonObject.getString("sessionName"));
  165. if (sessionJsonObject.getString("sessionHighestPrice") != "null")
  166. session.setSessionHighestPrice(Integer.parseInt(sessionJsonObject.getString("sessionHighestPrice")));
  167. sessionStatus = sessionJsonObject.getString("sessionStatus");
  168. } catch (JSONException e) {
  169. e.printStackTrace();
  170. }
  171. if(sessionStatus.equals("0"))
  172. sessionList.add(0, session);
  173. }
  174. // //Notifying the adapter that data has been added or changed
  175. sessionAdapter = new SessionsSelectionAdapter(sessionList, this);
  176. recyclerView.setAdapter(sessionAdapter);
  177. } catch (JSONException e) {
  178. e.printStackTrace();
  179. }
  180. }
  181. private void initSQLHandler() {
  182. // SQLite database handler
  183. db = new SQLiteHandler(this.getApplicationContext());
  184. HashMap<String, String> user = db.getUserDetails();
  185. userID = user.get("uid");
  186. // Log.d("userserserser", user.get("name")+" "+user.get("uid"));
  187. }
  188. public void addToSession(final String sessionID) {
  189. progressBarCenter.setVisibility(View.VISIBLE);
  190. //Displaying Progressbar
  191. StringRequest stringRequest = new StringRequest(Request.Method.POST, "http://kcapplications.com/Linc/session/offer.php",
  192. new Response.Listener<String>() {
  193. @Override
  194. public void onResponse(String s) {
  195. progressBarCenter.setVisibility(View.GONE);
  196. Log.d("responsingz", s);
  197. if(!s.equals("success"))
  198. Toast.makeText(SessionSelectionActivity.this, s, Toast.LENGTH_SHORT).show();
  199. else{
  200. Intent myIntent = new Intent(SessionSelectionActivity.this, MainActivity.class);
  201. SessionSelectionActivity.this.startActivity(myIntent);
  202. finish();
  203. }
  204. }
  205. },
  206. new Response.ErrorListener() {
  207. @Override
  208. public void onErrorResponse(VolleyError volleyError) {
  209. progressBarCenter.setVisibility(View.GONE);
  210. if (volleyError instanceof NoConnectionError) {
  211. Toast.makeText(getApplicationContext(), "Connection error", Toast.LENGTH_LONG).show();
  212. } else if (volleyError instanceof NetworkError) {
  213. Toast.makeText(getApplicationContext(), "Connection error", Toast.LENGTH_LONG).show();
  214. } else if (volleyError instanceof TimeoutError) {
  215. Toast.makeText(getApplicationContext(), "Connection error", Toast.LENGTH_LONG).show();
  216. } else{
  217. Toast.makeText(getApplicationContext(), volleyError.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
  218. }
  219. }
  220. }) {
  221. @Override
  222. protected Map<String, String> getParams() throws AuthFailureError {
  223. Map<String, String> params = new Hashtable<String, String>();
  224. //Adding parameters
  225. params.put("session_id", sessionID);
  226. params.put("offer_id", offerID);
  227. params.put("user_id", userID);
  228. return params;
  229. }
  230. };
  231. MySingleton.getInstance(this).addToRequestQueue(stringRequest);
  232. }
  233. }