Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.73 KB | None | 0 0
  1. package com.example.anonymous.cikgood_guru.ui.activities;
  2.  
  3. import android.app.DatePickerDialog;
  4. import android.app.Dialog;
  5. import android.app.ProgressDialog;
  6. import android.content.Intent;
  7. import android.graphics.Bitmap;
  8. import android.location.Address;
  9. import android.location.Geocoder;
  10. import android.net.Uri;
  11. import android.os.AsyncTask;
  12. import android.os.CountDownTimer;
  13. import android.os.Handler;
  14. import android.provider.MediaStore;
  15. import android.support.v4.widget.CircularProgressDrawable;
  16. import android.support.v7.app.AppCompatActivity;
  17. import android.os.Bundle;
  18. import android.support.v7.widget.AppCompatButton;
  19. import android.support.v7.widget.Toolbar;
  20. import android.util.Log;
  21. import android.view.View;
  22. import android.view.Window;
  23. import android.view.WindowManager;
  24. import android.widget.Button;
  25. import android.widget.DatePicker;
  26. import android.widget.EditText;
  27. import android.widget.ImageButton;
  28. import android.widget.ImageView;
  29. import android.widget.RadioButton;
  30. import android.widget.RadioGroup;
  31. import android.widget.TextView;
  32. import android.widget.Toast;
  33.  
  34. import com.bumptech.glide.Glide;
  35. import com.bumptech.glide.load.engine.DiskCacheStrategy;
  36. import com.bumptech.glide.request.RequestOptions;
  37. import com.example.anonymous.cikgood_guru.R;
  38. import com.example.anonymous.cikgood_guru.config.ServerConfig;
  39. import com.example.anonymous.cikgood_guru.models.GuruProfil;
  40. import com.example.anonymous.cikgood_guru.response.ResponGuruDetail;
  41. import com.example.anonymous.cikgood_guru.response.ResponseCreateGuru;
  42. import com.example.anonymous.cikgood_guru.rests.ApiClient;
  43. import com.example.anonymous.cikgood_guru.rests.ApiInterface;
  44. import com.example.anonymous.cikgood_guru.utils.SessionManager;
  45.  
  46. import java.io.BufferedReader;
  47. import java.io.BufferedWriter;
  48. import java.io.ByteArrayOutputStream;
  49. import java.io.IOException;
  50. import java.io.InputStreamReader;
  51. import java.io.OutputStream;
  52. import java.io.OutputStreamWriter;
  53. import java.io.UnsupportedEncodingException;
  54. import java.net.HttpURLConnection;
  55. import java.net.URL;
  56. import java.net.URLEncoder;
  57. import java.text.SimpleDateFormat;
  58. import java.util.ArrayList;
  59. import java.util.Calendar;
  60. import java.util.HashMap;
  61. import java.util.List;
  62. import java.util.Map;
  63.  
  64. import javax.net.ssl.HttpsURLConnection;
  65.  
  66. import retrofit2.Call;
  67. import retrofit2.Callback;
  68. import retrofit2.Response;
  69.  
  70. public class EditAkunActivity extends AppCompatActivity {
  71.  
  72. String GURU_ID = "id_guru";
  73. String NAMA = "nama_guru";
  74. String NO_HP = "no_hp";
  75. String EMAIL = "email";
  76. String JK = "jk";
  77. String TGL_LAHIR = "tgl_lahir";
  78. String PROVINSI_KTP = "provinsi_ktp";
  79. String KOTA_KTP = "kota_ktp";
  80. String KEC_KTP = "kecamatan_ktp";
  81. String ALAMAT_KTP = "alamat_ktp";
  82. String PROVINSI_DOM = "provinsi_domisili";
  83. String KOTA_DOM = "kota_domisili";
  84. String KEC_DOM = "kecamatan_domisili";
  85. String ALAMAT_DOM = "alamat_domisili";
  86. String BIO = "biodata";
  87. String PHOTO = "photo_profile";
  88. String LAT = "lat";
  89. String LNG = "lng";
  90.  
  91. /* Path PHP */
  92.  
  93. private CircularProgressDrawable circularProgressDrawable;
  94. private ByteArrayOutputStream byteArrayOutputStream;
  95. private Button btnPickImage, btnUpdateProfile;
  96. private HttpURLConnection httpURLConnection;
  97. private String errorMessage, photo_profile;
  98. private DatePickerDialog datePickerDialog;
  99. private BufferedWriter bufferedWriter;
  100. private SessionManager sessionManager;
  101. private BufferedReader bufferedReader;
  102. private ProgressDialog progressDialog;
  103. private ImageView ivProfile, ivUpload;
  104. private StringBuilder stringBuilder;
  105. private OutputStream outputStream;
  106. private ApiInterface apiService;
  107. private RequestOptions options;
  108. private RadioButton rbLk, rbPr;
  109. private boolean check = true;
  110. private byte[] byteArray;
  111. private Bitmap FixBitmap;
  112. private RadioGroup rgJk;
  113. private int RC, id_jk;
  114. private URL url;
  115.  
  116. String ServerUploadPath = ServerConfig.UPLOAD_FOTO_PROFILE_GURU_ENDPOINT;
  117.  
  118. private EditText etNamaLengkap, etNoHP, etEmail, etTglLahir, etProvinsiKtp, etKotaKtp, etKecKtp, etProvinsiDom, etKotaDom, etKecDom, etBio, etAlamatDom, etAlamatKtp;
  119. private String nama, no_hp, email, tgl_lahir, provinsi_ktp, kota_ktp, kec_ktp, provinsi_dom, kota_dom, kec_dom, photo, guru_id, bio, jk, alamat_ktp, alamat_dom;
  120. private String lat, lng;
  121.  
  122. @Override
  123. protected void onCreate(Bundle savedInstanceState) {
  124. super.onCreate(savedInstanceState);
  125. setContentView(R.layout.activity_edit_akun);
  126. initToolbar();
  127. initView();
  128. initAction();
  129. showDataGuruById();
  130. }
  131.  
  132. private void initToolbar() {
  133. Toolbar toolbar = findViewById(R.id.toolbar);
  134. toolbar.setNavigationIcon(R.drawable.ic_chevron);
  135. toolbar.setNavigationOnClickListener(new View.OnClickListener() {
  136. @Override
  137. public void onClick(View v) {
  138. Intent intentProfile = new Intent(EditAkunActivity.this, NavigationView.class);
  139. intentProfile.putExtra("FromEditAkun", "3");
  140. startActivity(intentProfile);
  141. finish();
  142. }
  143. });
  144. }
  145.  
  146. private void initAction() {
  147. btnUpdateProfile.setOnClickListener(new View.OnClickListener() {
  148. @Override
  149. public void onClick(View v) {
  150. // TODO Auto-generated method stub
  151. new Runnable() {
  152. int interfal = 500;
  153. @Override
  154. public void run() {
  155. new CountDownTimer(1500, 1500) {
  156. @Override
  157. public void onTick(long millisUntilFinished) {
  158. btnUpdateProfile.setText("MERUBAH...");
  159. }
  160. @Override
  161. public void onFinish() {
  162. btnUpdateProfile.setText("UBAH PROFILE");
  163. }
  164. }.start();
  165. }
  166. }.run();
  167. new Handler().postDelayed(new Runnable(){
  168. @Override
  169. public void run(){
  170. updateDataProfile();
  171. }
  172. },1500);
  173. }
  174. });
  175. btnPickImage.setOnClickListener(new View.OnClickListener() {
  176. @Override
  177. public void onClick(View view) {
  178. showDialogUpdateProfile();
  179. }
  180. });
  181. etTglLahir.setOnClickListener(new View.OnClickListener() {
  182. @Override
  183. public void onClick(View v) {
  184. showDialogTglLahir();
  185. }
  186. });
  187. }
  188.  
  189. private void showDialogTglLahir() {
  190. Calendar calendar = Calendar.getInstance();
  191. datePickerDialog = new DatePickerDialog(EditAkunActivity.this, new DatePickerDialog.OnDateSetListener() {
  192. @Override
  193. public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
  194. Calendar newDate = Calendar.getInstance();
  195. newDate.set(Calendar.YEAR, year);
  196. newDate.set(Calendar.MONTH, monthOfYear);
  197. newDate.set(Calendar.DAY_OF_MONTH, dayOfMonth);
  198. String formatTanggal = "yyyy-MM-dd";
  199. SimpleDateFormat sdf = new SimpleDateFormat(formatTanggal);
  200. etTglLahir.setText(sdf.format(newDate.getTime()));
  201. }
  202. },
  203. calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
  204. calendar.get(Calendar.DAY_OF_MONTH));
  205. datePickerDialog.show();;
  206. }
  207.  
  208. private void updateDataProfile() {
  209. initGetText();
  210. System.out.println("Hai "+nama+" "+no_hp+" "+tgl_lahir+" "+jk+" "+provinsi_ktp+" "+kota_ktp+" "+kec_ktp+" "+alamat_ktp+" "+provinsi_dom+""+kota_dom+" "+kec_dom+" "+alamat_dom+" "+bio);
  211. apiService.updateDataGuru(guru_id, nama, no_hp, tgl_lahir, jk, provinsi_ktp, kota_ktp, kec_ktp, alamat_ktp, provinsi_dom, kota_dom, kec_dom, alamat_dom, bio, lat, lng).enqueue(new Callback<ResponseCreateGuru>() {
  212. @Override
  213. public void onResponse(Call<ResponseCreateGuru> call, Response<ResponseCreateGuru> response) {
  214. if (response.isSuccessful()){
  215. if (response.body().getCode().equals(200)){
  216. Toast.makeText(EditAkunActivity.this, response.body().getMessage(), Toast.LENGTH_SHORT).show();
  217. Intent intentProfile = new Intent(EditAkunActivity.this, NavigationView.class);
  218. intentProfile.putExtra("FromEditAkun", "3");
  219. startActivity(intentProfile);
  220. finish();
  221. }else{
  222. Toast.makeText(EditAkunActivity.this, response.body().getMessage(), Toast.LENGTH_SHORT).show();
  223. }
  224. }else{
  225. Toast.makeText(EditAkunActivity.this, "ResponseSignUp Gagal", Toast.LENGTH_SHORT).show();
  226. }
  227.  
  228. }
  229. @Override
  230. public void onFailure(Call<ResponseCreateGuru> call, Throwable t) {
  231. Toast.makeText(EditAkunActivity.this, "Koneksi Internet Bermasalah", Toast.LENGTH_SHORT).show();
  232. }
  233. });
  234. }
  235.  
  236. private void initGetText() {
  237. id_jk = rgJk.getCheckedRadioButtonId();
  238. jk = ((RadioButton) findViewById(id_jk)).getText().toString();
  239. tgl_lahir = etTglLahir.getText().toString();
  240. no_hp = etNoHP.getText().toString();
  241. email = etEmail.getText().toString();
  242. provinsi_ktp = etProvinsiKtp.getText().toString();
  243. kota_ktp = etKotaKtp.getText().toString();
  244. kec_ktp = etKecKtp.getText().toString();
  245. alamat_ktp = etAlamatKtp.getText().toString();
  246. provinsi_dom = etProvinsiDom.getText().toString();
  247. kota_dom = etKotaDom.getText().toString();
  248. kec_dom = etKecDom.getText().toString();
  249. alamat_dom = etAlamatDom.getText().toString();
  250. bio = etBio.getText().toString();
  251. nama = etNamaLengkap.getText().toString();
  252.  
  253. Geocoder geocoder = new Geocoder(EditAkunActivity.this);
  254. List<Address> addresses = null;
  255. try {
  256. addresses = geocoder.getFromLocationName(alamat_dom, 1);
  257. } catch (IOException ioException) {
  258. // Menangkap apabila ada I/O atau jaringan error
  259. errorMessage = "Location Service is not available";
  260. ioException.printStackTrace();
  261. Log.e("LatLng", errorMessage, ioException);
  262. }
  263.  
  264. // Apabila tidak ada alamat yang bisa ditemukan
  265. if (addresses == null || addresses.size() == 0) {
  266. if (errorMessage.isEmpty()) {
  267. errorMessage = "Koordinat tidak ditemukan";
  268. Log.e("Error LatLng", errorMessage);
  269. }
  270. } else {
  271. // Mendapatkan hasil dari geocoding alamat, dan ambil lat long nya
  272. Address address = addresses.get(0);
  273. ArrayList<String> addressFragments = new ArrayList<>();
  274. addressFragments.add(String.valueOf(address.getLatitude()));
  275. addressFragments.add(String.valueOf(address.getLongitude()));
  276. lat = String.valueOf(address.getLatitude());
  277. lng = String.valueOf(address.getLongitude());
  278. } // end if
  279. }
  280.  
  281. private void showDialogUpdateProfile() {
  282. final Dialog dialog = new Dialog(this);
  283. dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); // before
  284. dialog.setContentView(R.layout.item_dialog_upload_photo);
  285. dialog.setCancelable(true);
  286.  
  287. WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
  288. lp.copyFrom(dialog.getWindow().getAttributes());
  289. lp.width = WindowManager.LayoutParams.WRAP_CONTENT;
  290. lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
  291.  
  292. ivUpload = dialog.findViewById(R.id.image);
  293. if (photo_profile != null){
  294. circularProgressDrawable = new CircularProgressDrawable(EditAkunActivity.this);
  295. circularProgressDrawable.setStrokeWidth(5f);
  296. circularProgressDrawable.setCenterRadius(30f);
  297. circularProgressDrawable.start();
  298.  
  299. options = new RequestOptions();
  300. options.placeholder(circularProgressDrawable);
  301. options.error(R.drawable.ic_image);
  302. options.skipMemoryCache(true);
  303. options.diskCacheStrategy(DiskCacheStrategy.NONE);
  304. options.fitCenter();
  305.  
  306. Glide.with(this)
  307. .load(ServerConfig.GURU_PATH+photo_profile)
  308. .apply(options)
  309. .into(ivUpload);
  310. }
  311.  
  312. ( (TextView) dialog.findViewById(R.id.tv_ambil_photo) ).setOnClickListener(new View.OnClickListener() {
  313. @Override
  314. public void onClick(View v) {
  315. Intent intent = new Intent();
  316. intent.setType("image/*");
  317. intent.setAction(Intent.ACTION_GET_CONTENT);
  318. startActivityForResult(Intent.createChooser(intent, "Select Image From Gallery"), 1);
  319. }
  320. });
  321.  
  322. ((ImageButton) dialog.findViewById(R.id.bt_close)).setOnClickListener(new View.OnClickListener() {
  323. @Override
  324. public void onClick(View v) {
  325. dialog.dismiss();
  326. }
  327. });
  328.  
  329. ((AppCompatButton) dialog.findViewById(R.id.bt_upload)).setOnClickListener(new View.OnClickListener() {
  330. @Override
  331. public void onClick(View v) {
  332. updatePhotoProfile(dialog);
  333. }
  334. });
  335.  
  336. dialog.show();
  337. dialog.getWindow().setAttributes(lp);
  338. }
  339.  
  340. private void updatePhotoProfile(Dialog dialog) {
  341. UploadImageToServer(dialog);
  342. }
  343.  
  344. @Override
  345. protected void onActivityResult(int RC, int RQC, Intent I) {
  346. super.onActivityResult(RC, RQC, I);
  347. if (RC == 1 && RQC == RESULT_OK && I != null && I.getData() != null) {
  348. Uri uri = I.getData();
  349. try {
  350. FixBitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
  351. ivUpload.setImageBitmap(FixBitmap);
  352. } catch (IOException e) {
  353. e.printStackTrace();
  354. }
  355. }
  356. }
  357.  
  358. public void UploadImageToServer(Dialog dialog){
  359. FixBitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
  360. byteArray = byteArrayOutputStream.toByteArray();
  361. photo = android.util.Base64.encodeToString(byteArray, android.util.Base64.DEFAULT);
  362. class AsyncTaskUploadClass extends AsyncTask<Void,Void,String> {
  363. @Override
  364. protected void onPreExecute() {
  365. super.onPreExecute();
  366. progressDialog = ProgressDialog.show(EditAkunActivity.this,"Data Profil","Loading..!",false,false);
  367. }
  368.  
  369. @Override
  370. protected void onPostExecute(String string1) {
  371. super.onPostExecute(string1);
  372. progressDialog.dismiss();
  373. dialog.dismiss();
  374. showDataGuruById();
  375. Toast.makeText(EditAkunActivity.this, string1,Toast.LENGTH_LONG).show();
  376. }
  377.  
  378. @Override
  379. protected String doInBackground(Void... params) {
  380. ImageProcessClass imageProcessClass = new ImageProcessClass();
  381. HashMap<String,String> HashMapParams = new HashMap<String,String>();
  382. HashMapParams.put(PHOTO, photo);
  383. HashMapParams.put(GURU_ID, guru_id);
  384. String FinalData = imageProcessClass.ImageHttpRequest(ServerUploadPath, HashMapParams);
  385. return FinalData;
  386. }
  387. }
  388. AsyncTaskUploadClass AsyncTaskUploadClassOBJ = new AsyncTaskUploadClass();
  389. AsyncTaskUploadClassOBJ.execute();
  390. }
  391.  
  392. public class ImageProcessClass{
  393. public String ImageHttpRequest(String requestURL,HashMap<String, String> PData) {
  394. StringBuilder stringBuilder = new StringBuilder();
  395. try {
  396. url = new URL(requestURL);
  397. httpURLConnection = (HttpURLConnection) url.openConnection();
  398. httpURLConnection.setReadTimeout(20000);
  399. httpURLConnection.setConnectTimeout(20000);
  400. httpURLConnection.setRequestMethod("POST");
  401. httpURLConnection.setDoInput(true);
  402. httpURLConnection.setDoOutput(true);
  403. outputStream = httpURLConnection.getOutputStream();
  404. bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
  405. bufferedWriter.write(bufferedWriterDataFN(PData));
  406. bufferedWriter.flush();
  407. bufferedWriter.close();
  408. outputStream.close();
  409. RC = httpURLConnection.getResponseCode();
  410. if (RC == HttpsURLConnection.HTTP_OK) {
  411. bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
  412. stringBuilder = new StringBuilder();
  413. String RC2;
  414. while ((RC2 = bufferedReader.readLine()) != null){
  415. stringBuilder.append(RC2);
  416. }
  417. }
  418. } catch (Exception e) {
  419. e.printStackTrace();
  420. }
  421. return stringBuilder.toString();
  422. }
  423.  
  424. private String bufferedWriterDataFN(HashMap<String, String> HashMapParams) throws UnsupportedEncodingException {
  425. stringBuilder = new StringBuilder();
  426. for (Map.Entry<String, String> KEY : HashMapParams.entrySet()) {
  427. if (check)
  428. check = false;
  429. else
  430. stringBuilder.append("&");
  431. stringBuilder.append(URLEncoder.encode(KEY.getKey(), "UTF-8"));
  432. stringBuilder.append("=");
  433. stringBuilder.append(URLEncoder.encode(KEY.getValue(), "UTF-8"));
  434. }
  435. return stringBuilder.toString();
  436. }
  437. }
  438.  
  439. private void initView() {
  440. apiService = ApiClient.getClient(ServerConfig.API_ENDPOINT).create(ApiInterface.class);
  441. byteArrayOutputStream = new ByteArrayOutputStream();
  442. sessionManager = new SessionManager(this);
  443. etNamaLengkap = (EditText) findViewById(R.id.et_nama_lengkap);
  444. etNoHP = (EditText) findViewById(R.id.et_no_hp);
  445. etEmail = (EditText) findViewById(R.id.et_email);
  446. etTglLahir = (EditText) findViewById(R.id.et_tgl_lahir);
  447. etProvinsiKtp = (EditText) findViewById(R.id.et_provinsi_ktp);
  448. etKotaKtp = (EditText) findViewById(R.id.et_kota_ktp);
  449. etKecKtp = (EditText) findViewById(R.id.et_kec_ktp);
  450. etAlamatKtp = (EditText) findViewById(R.id.et_alamat_ktp);
  451. etProvinsiDom = (EditText) findViewById(R.id.et_provinsi_domisili);
  452. etKotaDom = (EditText) findViewById(R.id.et_kota_domisili);
  453. etKecDom = (EditText) findViewById(R.id.et_kec_domisili);
  454. etAlamatDom = (EditText) findViewById(R.id.et_alamat_dom);
  455. etBio = (EditText) findViewById(R.id.et_biodata);
  456. ivProfile = (ImageView) findViewById(R.id.imageProfile);
  457. btnPickImage = (Button) findViewById(R.id.buttonChangePhoto);
  458. btnUpdateProfile= (Button) findViewById(R.id.btn_update_profile);
  459.  
  460. rbLk = findViewById(R.id.radioMale);
  461. rbPr = findViewById(R.id.radioFemale);
  462. rgJk = findViewById(R.id.radioGroupSex);
  463.  
  464. guru_id = sessionManager.getGuruProfile().get(SessionManager.ID_GURU);
  465. }
  466.  
  467. private void showDataGuruById() {
  468. apiService.guruFindById(Integer.parseInt(sessionManager.getGuruProfile().get(SessionManager.ID_GURU))).enqueue(new Callback<ResponGuruDetail>() {
  469. @Override
  470. public void onResponse(Call<ResponGuruDetail> call, Response<ResponGuruDetail> response) {
  471. if (response.isSuccessful()){
  472. System.out.println(response.body().toString());
  473. ArrayList<GuruProfil> guruses = new ArrayList<>();
  474. guruses.add(response.body().getMaster());
  475. GuruProfil guruProfil = guruses.get(0);
  476. etNamaLengkap.setText(guruProfil.getNama());
  477. etEmail.setText(guruProfil.getEmail());
  478. etNoHP.setText(guruProfil.getNoHp());
  479. etTglLahir.setText(guruProfil.getTglLahir());
  480. etProvinsiKtp.setText(guruProfil.getProvinsiKtp());
  481. etKotaKtp.setText(guruProfil.getKotaKtp());
  482. etKecKtp.setText(guruProfil.getKecamatanKtp());
  483. etAlamatKtp.setText(guruProfil.getAlamatKtp());
  484. etProvinsiDom.setText(guruProfil.getProvinsiDomisili());
  485. etKotaDom.setText(guruProfil.getProvinsiDomisili());
  486. etKecDom.setText(guruProfil.getKecamatanDomisili());
  487. etAlamatDom.setText(guruProfil.getAlamatDomisili());
  488. etBio.setText(guruProfil.getBiodata());
  489.  
  490. circularProgressDrawable = new CircularProgressDrawable(EditAkunActivity.this);
  491. circularProgressDrawable.setStrokeWidth(5f);
  492. circularProgressDrawable.setCenterRadius(30f);
  493. circularProgressDrawable.start();
  494.  
  495. options = new RequestOptions();
  496. options.placeholder(circularProgressDrawable);
  497. options.error(R.drawable.ic_image);
  498. options.skipMemoryCache(true);
  499. options.diskCacheStrategy(DiskCacheStrategy.NONE);
  500. options.fitCenter();
  501.  
  502. Glide.with(EditAkunActivity.this)
  503. .load(ServerConfig.GURU_PATH+guruProfil.getPhotoProfile())
  504. .apply(new RequestOptions().override(200, 300))
  505. .apply(options)
  506. .into(ivProfile);
  507. photo_profile = guruProfil.getPhotoProfile();
  508. String selected_jk = guruProfil.getJk();
  509. if (selected_jk == null) {
  510. rbPr.setChecked(false);
  511. rbLk.setChecked(true);
  512. }else if(selected_jk.equals("Perempuan")){
  513. rbPr.setChecked(true);
  514. }else if(selected_jk.equals("Laki-Laki")){
  515. rbLk.setChecked(true);
  516. }else{
  517. rbPr.setChecked(false);
  518. rbLk.setChecked(false);
  519. }
  520. }
  521. }
  522.  
  523. @Override
  524. public void onFailure(Call<ResponGuruDetail> call, Throwable t) {
  525. t.printStackTrace();
  526. }
  527. });
  528. }
  529.  
  530. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement