jvbf

error

May 18th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.94 KB | None | 0 0
  1. package br.org.citi.braapgo.views.Fragment;
  2.  
  3. import android.content.DialogInterface;
  4. import android.os.Bundle;
  5. import android.support.annotation.NonNull;
  6. import android.support.annotation.Nullable;
  7. import android.support.design.widget.Snackbar;
  8. import android.support.v4.app.Fragment;
  9. import android.support.v7.app.AlertDialog;
  10. import android.support.v7.widget.LinearLayoutManager;
  11. import android.support.v7.widget.RecyclerView;
  12. import android.util.Log;
  13. import android.view.LayoutInflater;
  14. import android.view.View;
  15. import android.view.ViewGroup;
  16. import android.widget.Button;
  17. import android.widget.EditText;
  18. import android.widget.RadioButton;
  19. import android.widget.TextView;
  20.  
  21. import com.satsuware.usefulviews.LabelledSpinner;
  22.  
  23. import java.util.ArrayList;
  24. import java.util.List;
  25.  
  26. import br.org.citi.braapgo.R;
  27. import br.org.citi.braapgo.controller.Facade;
  28. import br.org.citi.braapgo.controller.Interfaces.OnGetDataListener;
  29. import br.org.citi.braapgo.model.Compra;
  30. import br.org.citi.braapgo.model.User;
  31. import br.org.citi.braapgo.model.pagarme.Address;
  32. import br.org.citi.braapgo.model.pagarme.Billing;
  33. import br.org.citi.braapgo.model.pagarme.Pagamento;
  34. import br.org.citi.braapgo.model.pagarme.Transacao;
  35. import br.org.citi.braapgo.util.APIUtils;
  36. import br.org.citi.braapgo.util.CardDateInputMask;
  37. import br.org.citi.braapgo.util.Util;
  38. import br.org.citi.braapgo.views.Adapter.CompraAdapter;
  39. import br.org.citi.braapgo.views.BraapApp;
  40. import retrofit2.Call;
  41. import retrofit2.Callback;
  42. import retrofit2.Response;
  43.  
  44.  
  45. /**
  46. * Created by eduardo on 26/02/18.
  47. */
  48.  
  49. public class PagarmeFragment extends Fragment {
  50.  
  51.  
  52. private Button pagar;
  53. private Compra compra;
  54.  
  55. private RecyclerView mRecyclerView;
  56. private LinearLayoutManager mLayoutManager;
  57. private String final_cpf;
  58. private String endereco_country;
  59. private String endereco_state;
  60. private String endereco_neighborhood;
  61. private String endereco_city;
  62. private String endereco_street;
  63. private String endereco_number;
  64. private String endereco_zip_code;
  65. //private List<String> telefones;
  66. private String telefone_number;
  67.  
  68. TextView telefone;
  69. TextView telefone_info;
  70. TextView telefone_btn;
  71.  
  72. private TextView metodo_pagamento;
  73. private TextView metodo_pagamento_info;
  74. private TextView metodo_pagamento_btn;
  75.  
  76. private TextView CPF_nota;
  77. private TextView CPF_nota_info;
  78. private TextView CPF_nota_btn;
  79.  
  80. private TextView Endereco;
  81. private TextView Endereco_info;
  82. private TextView Endereco_btn;
  83. private Address address = new Address();
  84.  
  85.  
  86. private Pagamento pagamento;
  87.  
  88. @Override
  89. public void onActivityCreated(@Nullable final Bundle savedInstanceState) {
  90. super.onActivityCreated(savedInstanceState);
  91.  
  92. pagar.setOnClickListener(new View.OnClickListener() {
  93. @Override
  94. public void onClick(final View v) {
  95. Facade.getInstance().getCurrentUser(new OnGetDataListener() {
  96. @Override
  97. public void onSuccess(Object o) {
  98. User user = (User) o;
  99. Pagamento pagamento = new Pagamento();
  100. pagamento.setApiKey("ak_test_KHdKO63nvi6Kng7ZOCA3ZGwknAWF1q");
  101. //testei com meus dados e pegou
  102.  
  103. // pagamento.setPayment_method();
  104. //todo:ajustar telefone
  105. // if (telefone == null || telefones.size() == 0) {
  106. // telefones = new ArrayList<>();
  107. // telefones.add("+5581981334808");
  108. // }
  109. ArrayList<String>telefones = new ArrayList<>();
  110. telefones.add(telefone_number);
  111. pagamento.setCustomer(user.toCustumer(final_cpf, telefones));
  112.  
  113.  
  114. //todo: endereço
  115. Billing billing = new Billing();
  116. billing.setName(user.getNome());
  117. Address address = new Address();
  118. address.setCity(endereco_city);
  119. address.setCountry(endereco_country);
  120. address.setState(endereco_state);
  121. address.setNeighborhood(endereco_neighborhood);
  122. address.setStreet(endereco_street);
  123. address.setStreetNumber(endereco_number);
  124. address.setZipcode(endereco_zip_code);
  125. billing.setAddress(address);
  126. pagamento.setBilling(billing);
  127.  
  128.  
  129. pagamento.setItems(compra.getItens());
  130. APIUtils.getAPIPagarme().postPagamento(pagamento).enqueue(new Callback<Transacao>() {
  131. @Override
  132. public void onResponse(Call<Transacao> call, Response<Transacao> response) {
  133. try {
  134. if (response.isSuccessful()) {
  135. //todo:salvar transacoes no banco de dados
  136. //todo:gerar QRCode a paartir do id da transacao
  137. Snackbar.make(v, "sucess", Snackbar.LENGTH_LONG).show();
  138. } else {
  139. Snackbar.make(v, response.errorBody().string(), Snackbar.LENGTH_LONG).show();
  140. Log.e("pagamento", response.errorBody().string());
  141. }
  142. } catch (Exception e) {
  143. Snackbar.make(v, e.getMessage(), Snackbar.LENGTH_LONG).show();
  144. Log.e("pagamento", e.getMessage());
  145. }
  146. }
  147.  
  148. @Override
  149. public void onFailure(Call<Transacao> call, Throwable t) {
  150. Snackbar.make(v, t.getMessage(), Snackbar.LENGTH_LONG).show();
  151. Log.e("pagamento", t.getMessage());
  152. }
  153. });
  154. }
  155.  
  156. @Override
  157. public void onFailure(String message) {
  158.  
  159. }
  160. });
  161. Log.d("pagamento", pagamento.toString());
  162. }
  163. });
  164. }
  165.  
  166. @Nullable
  167. @Override
  168. public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  169. View rootView = inflater.inflate(R.layout.fragment_pagarme, container, false);
  170. Bundle bundle = this.getArguments();
  171. compra = (Compra) bundle.getSerializable("compra");
  172.  
  173. mRecyclerView = rootView.findViewById(R.id.item_ingresso_recycler);
  174. mLayoutManager = new LinearLayoutManager(getActivity());
  175. mRecyclerView.setLayoutManager(mLayoutManager);
  176. CompraAdapter compraAdapter = new CompraAdapter(compra);
  177. mRecyclerView.setAdapter(compraAdapter);
  178.  
  179. pagamento = new Pagamento();
  180. pagamento.setAmount(compra.getTotalInt());//+imposto?
  181. //todo:imposto? Como faz?
  182. TextView imposto = rootView.findViewById(R.id.imposto);
  183.  
  184.  
  185. TextView total = rootView.findViewById(R.id.preco_total);
  186. total.setText(String.valueOf(compra.getTotalPrice()));
  187.  
  188. metodo_pagamento = rootView.findViewById(R.id.metodo_pagamento);
  189. metodo_pagamento_info = rootView.findViewById(R.id.metodo_pagamento_info);
  190. metodo_pagamento_btn = rootView.findViewById(R.id.metodo_pagamento_btn);
  191. //final AlertDialog metodo_pagamento_dialog = dialogCartao();
  192. metodo_pagamento_btn.setOnClickListener(new View.OnClickListener() {
  193. @Override
  194. public void onClick(View v) {
  195. //metodo_pagamento_dialog.show();
  196. dialogMetodoPagamento();
  197. }
  198. });
  199.  
  200. //todo:pagamento, cpf e telefones nao podem se perder quando o app for minimizado
  201.  
  202.  
  203. CPF_nota = rootView.findViewById(R.id.CPF_nota);
  204. CPF_nota_info = rootView.findViewById(R.id.CPF_nota_info);
  205. CPF_nota_btn = rootView.findViewById(R.id.CPF_nota_btn);
  206. final AlertDialog CPF_nota_dialog = dialogCPF();
  207. CPF_nota_btn.setOnClickListener(new View.OnClickListener() {
  208. @Override
  209. public void onClick(View v) {
  210. CPF_nota_dialog.show();
  211. }
  212. });
  213.  
  214. telefone = rootView.findViewById(R.id.telefone);
  215. telefone_info = rootView.findViewById(R.id.telefone_info);
  216. telefone_btn = rootView.findViewById(R.id.telefone_btn);
  217. telefone_btn.setOnClickListener(new View.OnClickListener() {
  218. @Override
  219. public void onClick(View v) {
  220. dialogTelefone();
  221. }
  222. });
  223.  
  224. //todo:alertDialog para telefone
  225.  
  226. Endereco = rootView.findViewById(R.id.endereco);
  227. Endereco_info = rootView.findViewById(R.id.endereco_info);
  228. Endereco_btn = rootView.findViewById(R.id.endereco_btn);
  229.  
  230. final AlertDialog Endereco_dialog = dialogEndereco();
  231. Endereco_btn.setOnClickListener(new View.OnClickListener() {
  232. @Override
  233. public void onClick(View v) {
  234. Endereco_dialog.show();
  235. }
  236. });
  237.  
  238. pagar = rootView.findViewById(R.id.pagamento_btn);
  239.  
  240. Log.d("compra", compra.toString());
  241. return rootView;
  242.  
  243.  
  244. }
  245. private void dialogMetodoPagamento(){
  246. AlertDialog.Builder dialog = new AlertDialog.Builder(BraapApp.getContext());
  247. LayoutInflater li = getLayoutInflater();
  248. final View view = li.inflate(R.layout.dialog_metodo_pagamento, null);
  249. final RadioButton boleto = view.findViewById(R.id.boleto_radio);
  250. final RadioButton cartao = view.findViewById(R.id.cartao_radio);
  251.  
  252. dialog.setTitle("Selecione o método de pagamento");
  253. dialog.setView(view)
  254. .setPositiveButton("Selecionar", new DialogInterface.OnClickListener() {
  255. @Override
  256. public void onClick(DialogInterface dialog, int id) {
  257. if(cartao.isChecked()){
  258. dialogCartao();
  259. }else if(boleto.isChecked()){
  260. //todo: não sei como tratar o boleto
  261. }
  262. dialog.cancel();
  263. }
  264. })
  265. .setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
  266. public void onClick(DialogInterface dialog, int id) {
  267.  
  268. dialog.cancel();
  269. }
  270. }).show();
  271. }
  272.  
  273. private void dialogCartao() {
  274. AlertDialog.Builder dialog = new AlertDialog.Builder(BraapApp.getContext());
  275. LayoutInflater li = getLayoutInflater();
  276. final View view = li.inflate(R.layout.dialog_cartao, null);
  277. final EditText nome = view.findViewById(R.id.card_nome);
  278. final EditText numero = view.findViewById(R.id.card_number);
  279. final EditText cvv = view.findViewById(R.id.card_cvv);
  280. final EditText data = view.findViewById(R.id.card_expiration_date);
  281. new CardDateInputMask(data);
  282.  
  283. dialog.setTitle("Adicionar informações do cartão");
  284. dialog.setView(view)
  285. .setPositiveButton("Modificar", new DialogInterface.OnClickListener() {
  286. @Override
  287. public void onClick(DialogInterface dialog, int id) {
  288. try {
  289. String cardNumber = (numero != null) ? numero.getText().toString() : null;
  290. String cvvNumber = (cvv != null) ? cvv.getText().toString() : null;
  291. String dataNumber = (data != null) ? data.getText().toString() : null;
  292. String Nome = (nome != null) ? nome.getText().toString() : null;
  293. pagamento.setCardHolderName(Nome);
  294. pagamento.setCardNumber(cardNumber);
  295. pagamento.setCardCvv(cvvNumber);
  296. pagamento.setCardExpirationDate(dataNumber);
  297. metodo_pagamento_info.setText(Util.hideCardNumber(cardNumber));
  298. } catch (Exception e) {
  299. Snackbar.make(view, "Informações digitadas incorretamente: " + e.getMessage(), Snackbar.LENGTH_LONG).show();
  300. } finally {
  301. dialog.cancel();
  302. }
  303. }
  304. })
  305. .setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
  306. public void onClick(DialogInterface dialog, int id) {
  307. dialog.cancel();
  308. }
  309. });
  310. }
  311.  
  312. private AlertDialog dialogCPF() {
  313. AlertDialog.Builder dialog = new AlertDialog.Builder(BraapApp.getContext());
  314. LayoutInflater li = getLayoutInflater();
  315. View view = li.inflate(R.layout.dialog_cpf, null);
  316. final EditText cpf = view.findViewById(R.id.cpf_in);
  317.  
  318. dialog.setTitle("Adicionar CPF do contratante");
  319. dialog.setView(view)
  320. .setPositiveButton("Modificar", new DialogInterface.OnClickListener() {
  321. @Override
  322. public void onClick(DialogInterface dialog, int id) {
  323. final_cpf = (cpf != null) ? cpf.getText().toString() : null;
  324. CPF_nota_info.setText(final_cpf);
  325. dialog.cancel();
  326. }
  327. })
  328. .setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
  329. public void onClick(DialogInterface dialog, int id) {
  330. dialog.cancel();
  331. }
  332. });
  333. return dialog.create();
  334. }
  335.  
  336. private AlertDialog dialogEndereco() {
  337. AlertDialog.Builder dialog = new AlertDialog.Builder(BraapApp.getContext());
  338. LayoutInflater li = getLayoutInflater();
  339. View view = li.inflate(R.layout.dialog_endereco, null);
  340. final LabelledSpinner endereco_country_tv = view.findViewById(R.id.endereco_pais);
  341. final LabelledSpinner endereco_state_tv = view.findViewById(R.id.endereco_estado);
  342. final EditText endereco_city_tv = view.findViewById(R.id.endereco_cidade);
  343. final EditText endereco_neighborhood_tv = view.findViewById(R.id.endereco_bairro);
  344. final EditText endereco_street_tv = view.findViewById(R.id.endereco_rua);
  345. final EditText endereco_number_tv = view.findViewById(R.id.endereco_numero);
  346. final EditText endereco_zip_code_tv = view.findViewById(R.id.endereco_postal);
  347. dialog.setTitle("Adicionar Endereço de cobrança");
  348. dialog.setView(view)
  349. .setPositiveButton("Modificar", new DialogInterface.OnClickListener() {
  350. @Override
  351. public void onClick(DialogInterface dialog, int id) {
  352. endereco_country = (endereco_country_tv != null) ? endereco_country_tv.getLabel().getText().toString() : null;
  353. endereco_state = (endereco_state_tv != null) ? endereco_state_tv.getLabel().getText().toString() : null;
  354. endereco_city = (endereco_city_tv != null) ? endereco_city_tv.getText().toString() : null;
  355. endereco_neighborhood = (endereco_neighborhood_tv != null) ? endereco_neighborhood_tv.getText().toString() : null;
  356. endereco_city = (endereco_city_tv != null) ? endereco_city_tv.getText().toString() : null;
  357. endereco_street = (endereco_street_tv != null) ? endereco_street_tv.getText().toString() : null;
  358. endereco_number = (endereco_number_tv != null) ? endereco_number_tv.getText().toString() : null;
  359. endereco_zip_code = (endereco_zip_code_tv != null) ? endereco_zip_code_tv.getText().toString() : null;
  360. address.setCity(endereco_city);
  361. dialog.cancel();
  362. }
  363. })
  364. .setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
  365. public void onClick(DialogInterface dialog, int id) {
  366. dialog.cancel();
  367. }
  368. });
  369. return dialog.create();
  370. }
  371. private void dialogTelefone(){
  372. AlertDialog.Builder dialog = new AlertDialog.Builder(getContext());
  373. LayoutInflater li = getLayoutInflater();
  374. View view = li.inflate(R.layout.dialog_telefone, null);
  375. final EditText telefone_tv = view.findViewById(R.id.telefone_in);
  376. dialog.setTitle("Adiciona Telefone(s)");
  377. dialog.setView(view)
  378. .setPositiveButton("Modificar", new DialogInterface.OnClickListener() {
  379. @Override
  380. public void onClick(DialogInterface dialog, int id) {
  381. // todo: atribuir informacoes ao pagamento
  382. telefone_number = (telefone_tv != null) ? telefone_tv.getText().toString() : null;
  383. telefone_info.setText(telefone_number);
  384. Util.InputMethod(telefone_tv, false);
  385. dialog.cancel();
  386.  
  387. }
  388. })
  389. .setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
  390. public void onClick(DialogInterface dialog, int id) {
  391. Util.InputMethod(telefone_tv, false);
  392. dialog.cancel();
  393. }
  394. });
  395. dialog.create().show();
  396. }
  397. }
Add Comment
Please, Sign In to add comment