package io.github.aerhakim.lombamobile.activity;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import io.github.aerhakim.lombamobile.R;
import io.github.aerhakim.lombamobile.api.bayar.ApiClient;
import io.github.aerhakim.lombamobile.api.bayar.ApiInterface;
import io.github.aerhakim.lombamobile.api.bayar.Config;
import io.github.aerhakim.lombamobile.model.PostPutDelHeros;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class InsertActivity extends AppCompatActivity {
EditText edtName, edtDescription;
Button btSubmit;
ImageView imgHolder, btnGalery;
private String mediaPath;
private String postPath;
ApiInterface mApiInterface;
private static final int REQUEST_PICK_PHOTO = Config.REQUEST_PICK_PHOTO;
private static final int REQUEST_WRITE_PERMISSION = Config.REQUEST_WRITE_PERMISSION;
private static final String INSERT_FLAG = Config.INSERT_FLAG;
// Akses Izin Ambil Gambar dari Storage
@SuppressLint("MissingSuperCall")
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == REQUEST_WRITE_PERMISSION && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
saveImageUpload();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_insert);
// Identifikasi Komponen Form
edtName = (EditText) findViewById(R.id.edt_name);
edtDescription = (EditText) findViewById(R.id.edt_description);
imgHolder = (ImageView) findViewById(R.id.imgHolder);
btnGalery = (ImageView) findViewById(R.id.tambah);
btSubmit = (Button) findViewById(R.id.btn_submit);
// Definisi API
mApiInterface = ApiClient.getClient().create(ApiInterface.class);
ImageView back = findViewById(R.id.ivBack);
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent mIntent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(mIntent);
finish();
finishAffinity();
}
});
// Fungsi Tombol Pilih Galery
btnGalery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent galleryIntent = new Intent(Intent.ACTION_PICK,
MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(galleryIntent, REQUEST_PICK_PHOTO);
}
});
// Fungsi Tombol Simpan
btSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
requestPermission();
}
});
}
// Akses Izin Ambil Gambar dari Storage
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == REQUEST_PICK_PHOTO) {
if (data != null) {
// Ambil Image Dari Galeri dan Foto
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
assert cursor != null;
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
mediaPath = cursor.getString(columnIndex);
imgHolder.setImageURI(data.getData());
cursor.close();
postPath = mediaPath;
}
}
}
}
// Simpan Gambar
private void saveImageUpload(){
final String date = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(new Date());
if (mediaPath== null)
{
Toast.makeText(getApplicationContext(), "Bukti Transaksi Wajib dilampirkan!", Toast.LENGTH_LONG).show();
}
else {
File imagefile = new File(mediaPath);
RequestBody reqBody = RequestBody.create(MediaType.parse("multipart/form-file"), imagefile);
MultipartBody.Part partImage = MultipartBody.Part.createFormData("image", imagefile.getName(), reqBody);
Call<PostPutDelHeros> postHerosCall = mApiInterface.postHeros(partImage, RequestBody.create(MediaType.parse("text/plain"), "" + edtName.getText().toString()), RequestBody.create(MediaType.parse("text/plain"), edtDescription.getText().toString()), RequestBody.create(MediaType.parse("text/plain"), date), RequestBody.create(MediaType.parse("text/plain"), INSERT_FLAG));
postHerosCall.enqueue(new Callback<PostPutDelHeros>() {
@Override
public void onResponse(Call<PostPutDelHeros> call, Response<PostPutDelHeros> response) {
Intent mIntent = new Intent(InsertActivity.this, MainActivity.class);
startActivity(mIntent);
finish();
finishAffinity();
}
@Override
public void onFailure(Call<PostPutDelHeros> call, Throwable t) {
Log.d("RETRO", "ON FAILURE : " + t.getMessage());
//Log.d("RETRO", "ON FAILURE : " + t.getCause());
Toast.makeText(getApplicationContext(), "Error, image", Toast.LENGTH_LONG).show();
}
});
}
}
// Cek Versi Android Tuk Minta Izin
private void requestPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_WRITE_PERMISSION);
} else {
saveImageUpload();
}
}
// Menu Kembali Ke Home
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// API 5+ solution
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onBackPressed() {
Intent mIntent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(mIntent);
finish();
finishAffinity();
}
}