Skip to content

Instantly share code, notes, and snippets.

@malikkurosaki
Created June 23, 2019 13:03
Show Gist options
  • Save malikkurosaki/7f41eee9ce34906de6d403504b62bba4 to your computer and use it in GitHub Desktop.
Save malikkurosaki/7f41eee9ce34906de6d403504b62bba4 to your computer and use it in GitHub Desktop.
retrofit post dan node jd

retrofit post

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();
            }
        }
    }
}

interface

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);
}

node js

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')
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment