gust94

EventResponseActivity

Jan 19th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.84 KB | None | 0 0
  1. package com.dss.invitup.vc.occasionPage.event;
  2. import android.content.Context;
  3. import android.content.DialogInterface;
  4. import android.graphics.Color;
  5. import android.os.Build;
  6. import android.os.Bundle;
  7. import android.support.v7.app.AppCompatActivity;
  8. import android.util.Log;
  9. import android.view.LayoutInflater;
  10. import android.view.View;
  11. import android.view.Window;
  12. import android.view.WindowManager;
  13. import android.widget.Button;
  14. import android.widget.ExpandableListView;
  15. import android.widget.FrameLayout;
  16. import android.widget.ImageView;
  17. import android.widget.Toast;
  18. import com.bumptech.glide.Glide;
  19. import com.dss.invitup.R;
  20. import com.dss.invitup.adapters.EventResponseAdapter;
  21. import com.dss.invitup.events.GetAnswersForSubOccasionFinishedEvent;
  22. import com.dss.invitup.events.GetQuestionFromSubOccasionEvent;
  23. import com.dss.invitup.events.GetUpdateAnswerSubOccasionResponseEvent;
  24. import com.dss.invitup.events.ReturnToEventFragmentEvent;
  25. import com.dss.invitup.models.Answer;
  26. import com.dss.invitup.models.Occasion;
  27. import com.dss.invitup.models.SubOccasion;
  28. import com.dss.invitup.models.Theme;
  29. import com.dss.invitup.models.serverResponses.QuestionResponse;
  30. import com.dss.invitup.models.serverResponses.SubOccasionAnswerResponse;
  31. import com.dss.invitup.singleton.AppController;
  32. import com.dss.invitup.singleton.InterfaceManager;
  33. import com.dss.invitup.singleton.ServerManager;
  34. import com.dss.invitup.singleton.SettingsManager;
  35. import com.dss.invitup.view.MontserratLightTextView;
  36. import org.json.JSONObject;
  37. import java.util.HashMap;
  38. import java.util.Map;
  39. import java.util.Set;
  40. import de.greenrobot.event.EventBus;
  41. import io.realm.Realm;
  42. /**
  43. * Copyright © 2016 Dihardja Software Solutions. All rights reserved.
  44. */
  45. public class EventResponseActivity extends AppCompatActivity {
  46. EventResponseAdapter eventResponseAdapter;
  47. QuestionResponse questionResponse;
  48. SubOccasionAnswerResponse answerResponse;
  49. SubOccasion currentSubOccasion;
  50. Occasion currentOccasion;
  51. Realm realm;
  52. ExpandableListView eventResponseExpandableListView;
  53. FrameLayout rootFrameLayout;
  54. MontserratLightTextView submitButton;
  55. Theme currentTheme;
  56. ImageView backgroundImageView, backImageView;
  57. int height = 0;
  58. @Override
  59. protected void onCreate(Bundle savedInstanceState) {
  60. requestWindowFeature(Window.FEATURE_NO_TITLE);
  61. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
  62. WindowManager.LayoutParams.FLAG_FULLSCREEN);
  63.  
  64. super.onCreate(savedInstanceState);
  65. setContentView(R.layout.activity_event_response);
  66. if(!EventBus.getDefault().isRegistered(this)){
  67. EventBus.getDefault().register(this);
  68. }
  69. View buttonView = ((LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.item_submit_button, null, false);
  70. submitButton = (MontserratLightTextView) buttonView.findViewById(R.id.item_submit_button_submitButton);
  71. rootFrameLayout = (FrameLayout) findViewById(R.id.activity_event_response_rootFrameLayout);
  72. eventResponseExpandableListView = (ExpandableListView) findViewById(R.id.activity_event_response_expandableListView);
  73. backImageView = (ImageView) findViewById(R.id.activity_event_response_backImageView);
  74. backgroundImageView = (ImageView) findViewById(R.id.activity_event_response_backgroundImageView);
  75. realm = AppController.getInstance().getRealm();
  76. eventResponseAdapter = new EventResponseAdapter(this);
  77. eventResponseExpandableListView.setAdapter(eventResponseAdapter);
  78. currentTheme = SettingsManager.getInstance().getCurrentTheme();
  79. currentSubOccasion = SettingsManager.getInstance().getCurrentSubOccasion();
  80. currentOccasion = SettingsManager.getInstance().getCurrentOccasion();
  81. if(currentTheme!=null){
  82. if(currentTheme.getBackgroundImageURL()!=null){
  83. if(!currentTheme.getBackgroundImageURL().equalsIgnoreCase("")){
  84. Glide.with(this).load(currentTheme.getBackgroundImageURL()).into(backgroundImageView);
  85. }
  86. }
  87. if(currentTheme.getButtonColor()!=null){
  88. submitButton.setBackgroundColor(Color.parseColor(currentTheme.getButtonColor()));
  89. }else {
  90. submitButton.setBackgroundColor(Color.parseColor("#FC00FF"));
  91. }
  92. }
  93. eventResponseExpandableListView.addFooterView(buttonView);
  94. initQuestion();
  95. initAnswer();
  96. eventResponseExpandableListView.setScrollContainer(false);
  97. eventResponseExpandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
  98. @Override
  99. public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
  100. int itemType = eventResponseAdapter.getChildType(groupPosition,childPosition);
  101.  
  102. if(itemType == eventResponseAdapter.ITEMTYPE_MULTIPLECHOICE){
  103. Map<String, String> answerHashMap = eventResponseAdapter.getAnswerHashMap();
  104. String currentQuestionId = questionResponse.getQuestionRealmList().get(groupPosition).getId();
  105. Answer answer = new Answer();
  106. answer.setAnswerString(eventResponseAdapter.getMultipleChoicesQuestionHashMap().get(currentQuestionId).get(childPosition).getStringValue());
  107. answer.setQuestion(currentQuestionId);
  108. answerHashMap.put(currentQuestionId,answer.getAnswerString());
  109. eventResponseAdapter.setAnswerHashMap(answerHashMap);
  110. }
  111. return true;
  112. }
  113. });
  114. eventResponseExpandableListView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
  115. @Override
  116. public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
  117. InterfaceManager.sharedInstance().hideLoading();
  118. }
  119. });
  120. eventResponseExpandableListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
  121. @Override
  122. public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
  123. return true;
  124. }
  125. });
  126. submitButton.setOnClickListener(submitButtonListener);
  127. backImageView.setOnClickListener(backImageViewListener);
  128. }
  129. MontserratLightTextView.OnClickListener submitButtonListener = new View.OnClickListener() {
  130. @Override
  131. public void onClick(View v) {
  132. if(eventResponseAdapter.getAnswerHashMap().isEmpty()){
  133. Toast.makeText(EventResponseActivity.this, EventResponseActivity.this.getResources().getString(R.string.notification_no_answer), Toast.LENGTH_SHORT).show();
  134. }else {
  135. Map<String,String> answerHashMap = eventResponseAdapter.getAnswerHashMap();
  136. Map<String,String> tempHashMap = new HashMap<String, String>();
  137. Set<String> answerKeySet = answerHashMap.keySet();
  138. for(String answerKey : answerKeySet){
  139. if(!answerHashMap.get(answerKey).equals("")){
  140. tempHashMap.put(answerKey,answerHashMap.get(answerKey));
  141. }
  142. }
  143. JSONObject answersObject = new JSONObject(tempHashMap);
  144. InterfaceManager.sharedInstance().showLoading(rootFrameLayout, EventResponseActivity.this);
  145. ServerManager.getInstance().submitAnswers(answersObject,currentSubOccasion.getId());
  146. Log.v("Object answer", answersObject.toString());
  147. InterfaceManager.sharedInstance().showLoading(rootFrameLayout, EventResponseActivity.this);
  148. }
  149. }
  150. };
  151. ImageView.OnClickListener backImageViewListener = new View.OnClickListener() {
  152. @Override
  153. public void onClick(View v) {
  154. if(!eventResponseAdapter.getAnswerHashMap().isEmpty()){
  155. android.app.AlertDialog.Builder alrt;
  156. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
  157. alrt = new android.app.AlertDialog.Builder(EventResponseActivity.this, android.R.style.Theme_Material_Light_Dialog_Alert);
  158. } else {
  159. alrt = new android.app.AlertDialog.Builder(EventResponseActivity.this);
  160. }
  161. alrt.setTitle(getResources().getString(R.string.app_name)).setMessage(getResources().getString(R.string.builder_discard_answer));
  162. alrt.setPositiveButton(getResources().getString(R.string.builder_yes), new DialogInterface.OnClickListener() {
  163. @Override
  164. public void onClick(DialogInterface dialog, int which) {
  165. finish();
  166. EventBus.getDefault().post(new ReturnToEventFragmentEvent());
  167. }
  168. });
  169. alrt.setNegativeButton(getResources().getString(R.string.builder_no), new DialogInterface.OnClickListener() {
  170. @Override
  171. public void onClick(DialogInterface dialog, int which) {
  172. }
  173. });
  174. android.app.AlertDialog alertDialog = alrt.create();
  175. alertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
  176. @Override
  177. public void onShow(DialogInterface dialog) {
  178. Button positiveButton = ((android.app.AlertDialog) dialog).getButton(DialogInterface.BUTTON_POSITIVE);
  179. Button negativeButton = ((android.app.AlertDialog) dialog).getButton(DialogInterface.BUTTON_NEGATIVE);
  180. positiveButton.setTextColor(getResources().getColor(R.color.appPink));
  181. negativeButton.setTextColor(getResources().getColor(R.color.appPink));
  182. }
  183. });
  184. alertDialog.show();
  185. }else{
  186. finish();
  187. }
  188. }
  189. };
  190. public void initQuestion(){
  191. reloadLocalData();
  192. }
  193. public void initAnswer(){
  194. ServerManager.getInstance().getAnswersForSubOccasion(currentOccasion.getId(),currentSubOccasion.getId());
  195. }
  196. public void reloadLocalData(){
  197. questionResponse = realm.where(QuestionResponse.class)
  198. .equalTo("id",currentSubOccasion.getId()).findFirst();
  199. if(questionResponse!=null){
  200. InterfaceManager.sharedInstance().showLoading(rootFrameLayout, this);
  201. eventResponseAdapter.updateQuestion(questionResponse);
  202. for(int i=0; i<eventResponseAdapter.getGroupCount(); i++){
  203. eventResponseExpandableListView.expandGroup(i);
  204. }
  205. }
  206. InterfaceManager.sharedInstance().showLoading(rootFrameLayout, this);
  207. ServerManager.getInstance().getQuestionFromSubOccasionId(currentSubOccasion.getId());
  208. }
  209. public void onEvent(GetQuestionFromSubOccasionEvent event){
  210. InterfaceManager.sharedInstance().hideLoading();
  211. if(event.questionResponse!=null){
  212. questionResponse = event.questionResponse;
  213. InterfaceManager.sharedInstance().showLoading(rootFrameLayout, this);
  214. eventResponseAdapter.updateQuestion(questionResponse);
  215. for(int i=0; i<eventResponseAdapter.getGroupCount(); i++){
  216. eventResponseExpandableListView.expandGroup(i);
  217. }
  218. }else{
  219. InterfaceManager.sharedInstance().showErrorMessage(this, event.errorMessage);
  220. }
  221. }
  222. public void onEvent(GetAnswersForSubOccasionFinishedEvent event){
  223. InterfaceManager.sharedInstance().hideLoading();
  224. if(event.errorMessage.equals("")){
  225. answerResponse = event.subOccasionAnswerResponse;
  226. InterfaceManager.sharedInstance().showLoading(rootFrameLayout, this);
  227. eventResponseAdapter.updateAnswer(answerResponse);
  228. }
  229. }
  230. public void onEvent(GetUpdateAnswerSubOccasionResponseEvent event){
  231. InterfaceManager.sharedInstance().hideLoading();
  232. if(event.errorMessage.equalsIgnoreCase("")){
  233. Toast.makeText(EventResponseActivity.this,EventResponseActivity.this.getResources().getString(R.string.notification_succeed_submit_answer),Toast.LENGTH_SHORT).show();
  234. EventBus.getDefault().post(new ReturnToEventFragmentEvent());
  235. finish();
  236. }else{
  237. InterfaceManager.sharedInstance().showErrorMessage(EventResponseActivity.this,event.errorMessage);
  238. }
  239. }
  240. @Override
  241. public void onDestroy(){
  242. super.onDestroy();
  243. if(EventBus.getDefault().isRegistered(this)) {
  244. EventBus.getDefault().unregister(this);
  245. }
  246. }
  247. }
Add Comment
Please, Sign In to add comment