package dev.malikkurosaki.probuspresto;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.ViewAnimator;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.OnProgressListener;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import java.io.ByteArrayOutputStream;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import es.dmoral.toasty.Toasty;
import in.mayanknagwanshi.imagepicker.ImageSelectActivity;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class Main2Activity extends AppCompatActivity {
private FirebaseAuth auth;
private FirebaseUser user;
private String nomerHp;
private String TAG = "-->";
private ViewAnimator container2;
private EditText verEmail;
private Button btnVerEmail;
private Button iptSignup;
private TextView uploadProgres;
private ProgressBar profLoading;
private ImageView edtProfileFoto;
private ImageButton edtProfBtnFoto;
private EditText edtProfUserName,edtProfEmail,edtProfPass,edtProfBrith,edtProfPhone;
private Button edtProfBtnSave;
private ProgressBar loading;
private DatePicker edtAmbilTanggal;
private Button edtDateFinis;
private boolean sudahUpload = false;
// <include layout="@layout/layout_include_edit_profile"/>
// <include layout="@layout/layout_include_input_email"/>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Intent intent = getIntent();
Map<String,Object> terima = (HashMap<String,Object>)intent.getSerializableExtra("paket");
container2 = findViewById(R.id.container2);
container2.setDisplayedChild(0);
verEmail = findViewById(R.id.ver_email);
btnVerEmail = findViewById(R.id.btnVerEmail);
//definisi edit profile
edtProfileFoto = findViewById(R.id.edt_prof_foto);
edtProfBtnFoto = findViewById(R.id.edt_prof_btn_foto);
edtProfUserName = findViewById(R.id.edt_prof_user_name);
edtProfEmail = findViewById(R.id.edt_prof_email);
edtProfPass = findViewById(R.id.edt_prof_pass);
edtProfBrith = findViewById(R.id.edt_prof_birth);
edtProfPhone = findViewById(R.id.edt_prof_phone);
edtProfBtnSave = findViewById(R.id.edt_prof_btn_save);
loading = findViewById(R.id.edt_prof_loading_foto);
iptSignup = findViewById(R.id.ipt_signup);
uploadProgres = findViewById(R.id.edt_prof_up_prog);
edtAmbilTanggal = findViewById(R.id.edt_ambil_tanggal);
edtDateFinis = findViewById(R.id.edt_date_finis);
profLoading = findViewById(R.id.prof_loading);
loading.setVisibility(View.GONE);
profLoading.setVisibility(View.GONE);
//define firebase
auth = FirebaseAuth.getInstance();
user = auth.getCurrentUser();
if (user!= null){
nomerHp = user.getPhoneNumber();
edtProfPhone.setText(nomerHp);
}
int layout = Integer.parseInt(String.valueOf(terima.get("layout")));
container2.setDisplayedChild(layout);
updateProfile();
edtProfBtnFoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loading.setVisibility(View.VISIBLE);
Intent intent = new Intent(Main2Activity.this, ImageSelectActivity.class);
intent.putExtra(ImageSelectActivity.FLAG_CAMERA,true);
startActivityForResult(intent,123);
}
});
}
//todo : update profile
public void updateProfile(){
edtProfBrith.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
container2.setDisplayedChild(2);
}
});
edtDateFinis.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
container2.setDisplayedChild(1);
String tanggal = edtAmbilTanggal.getDayOfMonth()+" "+edtAmbilTanggal.getMonth()+" "+edtAmbilTanggal.getYear();
edtProfBrith.setText(tanggal);
}
});
edtProfBtnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!sudahUpload){
Toasty.warning(getApplicationContext(),"upload your foto profile olso",Toasty.LENGTH_LONG).show();
return;
}
profLoading.setVisibility(View.VISIBLE);
String userName = edtProfUserName.getText().toString().trim();
String email = edtProfEmail.getText().toString().trim();
String password = edtProfPass.getText().toString().trim();
String birth = edtProfBrith.getText().toString().trim();
String phon = edtProfPhone.getText().toString().trim();
if (TextUtils.isEmpty(userName) || TextUtils.isEmpty(email) || TextUtils.isEmpty(password) || TextUtils.isEmpty(birth) || TextUtils.isEmpty(phon)){
Toasty.warning(getApplicationContext(),"all field is not be empty , OK! ",Toasty.LENGTH_LONG).show();
return;
}
Map<String,String> pendaftaran = new HashMap<>();
pendaftaran.put("nm_cus",userName);
pendaftaran.put("telpon",phon);
pendaftaran.put("email",email);
pendaftaran.put("pin_cus",password);
Retrofit retrofitPen = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl("https://mypizz.herokuapp.com/")
.build();
ConnectDataUser dataUserPen = retrofitPen.create(ConnectDataUser.class);
Call<List<JsonObject>> kirim = dataUserPen.daftar(pendaftaran);
kirim.enqueue(new Callback<List<JsonObject>>() {
@Override
public void onResponse(Call<List<JsonObject>> call, Response<List<JsonObject>> response) {
List<JsonObject> wadah = response.body();
for (JsonObject terim : wadah){
Log.i(TAG, "onResponse: "+terim.get("response").getAsString());
profLoading.setVisibility(View.GONE);
}
}
@Override
public void onFailure(Call<List<JsonObject>> call, Throwable t) {
Log.i(TAG, "onFailure: "+t);
profLoading.setVisibility(View.GONE);
}
});
/*Call<Map<String,String>> kirim = dataUserPen.daftar(pendaftaran);
kirim.enqueue(new Callback<Map<String, String>>() {
@Override
public void onResponse(Call<Map<String, String>> call, Response<Map<String, String>> response) {
Log.i(TAG, "onResponse: berhasil"+response.body());
Toasty.normal(getApplicationContext(),"berhasil",Toasty.LENGTH_LONG).show();
profLoading.setVisibility(View.GONE);
}
@Override
public void onFailure(Call<Map<String, String>> call, Throwable t) {
Log.i(TAG, "onFailure: gagal"+t);
profLoading.setVisibility(View.GONE);
}
});*/
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 123){
if (resultCode == RESULT_OK){
//todo : proses upload gambar
String filePath = data.getStringExtra(ImageSelectActivity.RESULT_FILE_PATH);
Bitmap selectedImage = BitmapFactory.decodeFile(filePath);
edtProfileFoto.setImageBitmap(selectedImage);
edtProfBtnFoto.setVisibility(View.GONE);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
selectedImage.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] bytes = baos.toByteArray();
FirebaseStorage storage = FirebaseStorage.getInstance();
final StorageReference reference = storage.getReference().child(nomerHp+"/profile.png");
final UploadTask uploadTask = reference.putBytes(bytes);
uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
uploadProgres.setVisibility(View.VISIBLE);
String prog = (int) Math.ceil((100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount()) +"%";
uploadProgres.setText(prog);
}
}).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
if (task.isSuccessful()){
DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
Map<String,String> foto = new HashMap<>();
foto.put("foto", nomerHp + "/profile.png");
ref.child("user").child("profile").child("foto").setValue(foto).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
sudahUpload = true;
loading.setVisibility(View.GONE);
uploadProgres.setVisibility(View.GONE);
}
});
}
}
});
}else {
loading.setVisibility(View.GONE);
Toasty.normal(getApplicationContext(),"from camera only",Toasty.LENGTH_LONG).show();
container2.setDisplayedChild(1);
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 200){
if (grantResults[0] == PackageManager.PERMISSION_GRANTED){
Toasty.normal(getApplicationContext(),"permission has granted",Toasty.LENGTH_LONG).show();
}
}
}
}
package dev.malikkurosaki.probuspresto;
import com.google.gson.JsonObject;
import java.util.List;
import java.util.Map;
import retrofit2.Call;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
public interface ConnectDataUser {
@GET("/api/user/poin")
Call<List<JsonObject>> getUser();
@GET("/api/user/poin/{id}")
Call<List<JsonObject>> getUserPoin(@Path("id") String nama);
@GET("/api/user/email/{id}")
Call<List<JsonObject>> getEmail(@Path("id") String email);
@GET("api/user/phone/{id}")
Call<List<JsonObject>> getPhone(@Path("id") String phone);
@FormUrlEncoded
@POST("/api/daftar")
Call<List<JsonObject>> daftar(@FieldMap Map<String,String> member);
}
const admin = require("firebase-admin");
const express = require('express')
const path = require('path')
const PORT = process.env.PORT || 5000
const mysql = require('mysql')
const parser = require('body-parser')
const notifier = require('node-notifier')
const http = require('https')
const multer = require('multer')
const upl = multer({dest:'upload/'})
var serviceAccount = require("./key.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://probuspresto.firebaseio.com",
storageBucket:"https://probuspresto.appspot.com"
});
var bucket = admin.storage().bucket();
const db = mysql.createConnection({
host:'bestmedialearning.com',
user:'u6045499_test',
password:'makuro123',
database:'u6045499_test'
})
process.on('uncaughtException',(err)=>{
console.log(`errornya : ${err}`)
})
process.on('unhandledRejection',(err)=>{
console.log(err)
})
db.connect((err)=>{
if(err)throw err;
})
const app = express();
app.use(parser.json({limit: '10mb', extended: true}))
app.use(parser.urlencoded({limit: '10mb',extended:true}))
app.set("view engine","pug")
app.set("views","views")
app.post('/api/user/upload',(req,res)=>{
let datanya = req.body
console.log(datanya.nama)
let sql =`insert into newpost(id,title,content,image) values(null,"${datanya.judul}","${datanya.isi}","${datanya.nama}")`
let sql2 = `insert into imagebank(id,name,content) values(null,"${datanya.nama}","${datanya.gambar}")`
let query = db.query(sql,(err,result)=>{
if(!err){
console.log("ok1")
}else{
console.log(err)
}
})
let query2 = db.query(sql2,(eer,rsut)=>{
if(!eer){
console.log("ok2")
}else{
console.log(eer)
}
})
var payload = {
notification: {
title:datanya.judul,
body:datanya.isi,
sound: "default"
},
data:{
title:datanya.judul,
body:datanya.isi
}
}
admin.messaging().sendToTopic("probuspresto",payload).then((response) => {
// Response is a message ID string.
res.send(response)
}).catch((error) => {
res.send(error)
});
})
app.post('/api/daftar',(a,b)=>{
var jawaban = b;
let terima = a.body
let sql1 = `select telpon from customer where telpon = "${terima.telpon}"`
let query1 = db.query(sql1,(a1,b1)=>{
if(b1.length == "0"){
let id = Math.floor(Math.random() * 100000);
let sql = `insert into customer(kd_cus,nm_cus,email,telpon,pin_cus) values("${id}","${terima.nm_cus}","${terima.email}","${terima.telpon}","${terima.pin_cus}")`
let query = db.query(sql,(c,d)=>{
if(c) console.log(c)
jawaban.send([{"response":"berhasil"}])
console.log('berhasil mendaftar')
})
}else{
jawaban.send([{"response":"gagal nomor sudah ada"}])
console.log('nomor sudah ada')
}
})
})
app.post('/api/hapus/content',(a,b)=>{
let idnya = a.body;
let sql = `delete from newpost where id="${idnya.idnya}"`
let query = db.query(sql,(c,d)=>{
if(a)console.log("error"+c)
console.log("result"+d)
b.send(d)
})
})
app.get('/api/postnya',(req,res)=>{
let sql = 'select * from newpost'
let query = db.query(sql,(err,result)=>{
res.send(result)
})
})
app.get('/api/user/poin/:id',(req,res)=>{
let nama = req.params.id
let sql = `select nm_cus,tot_poin from customer where nm_cus="${nama}"`
let mysql = db.query(sql,(err,result)=>{
res.send(result)
})
})
app.get('/api/user/email/:id',(req,res)=>{
let email = req.params.id;
let sql = `select email,telpon from customer where email="${email}"`;
let query = db.query(sql,(err,result)=>{
if(err)throw err;
res.send(result)
})
})
app.get('/api/user/poin',(req,res)=>{
let sql = `select nm_cus,tot_poin from customer`
let query = db.query(sql,(err,result)=>{
res.send(result)
})
})
app.get('/api/user/phone/:id',(req,res)=>{
let sql = `select telpon from customer where telpon="${req.params.id}"`;
let query = db.query(sql,(err,result)=>{
if(err) throw err;
res.send(result)
})
})
app.get('/api/user/:id',(req,res)=>{
let nama = req.params.id;
let sql = `select * from customer where nm_cus="${nama}"`
let sql2 = 'update customer set telpon = "+6289697338821" where email = "branantayuda11@gmail.com"'
let query = db.query(sql,(err,result)=>{
if(err)throw err;
res.send(result)
})
});
app.get('/api/user/update/yudha/:id',(req,res)=>{
let sql = `update customer set telpon="${req.params.id}" where nm_cus = "yudha"`
let query = db.query(sql,(err,result)=>{
if(err) throw err
res.send(result)
})
})
app.get('/api/buattabel',(req,res)=>{
// let sql = 'create table newpost(id int(100) auto_increment primary key,title varchar(1000),content text)'
// let sql2 = 'create table imagebank(id int(100) auto_increment primary key,name varchar(1000),content text)'
// let query = db.query(sql,(err,result)=>{
// if(err) throw err
// })
// res.send("table created")
})
app.get('/',(req,res)=>{
res.render('index',{
title:"malik"
})
})
app.get('*',(req,res)=>{
res.send([{"pesan":"hidup tak semudah cocote mario teguh"}])
})
setInterval(() => {
db.query('select 1')
http.get("https://mypizz.herokuapp.com");
//console.log("update db")
}, 1000);
app.listen(PORT,()=>{
console.log('app runing on port 5000')
})