Senin, 22 Maret 2021

Get Alamat By Coordinat

 Get Alamat By Coordinat Di Laravel

create app\Helpers\Geocoding.php

<?php

namespace App\Helpers;

class Geocoding
{
protected $api_key;
protected $debug;
protected $callurl = "https://maps.googleapis.com/maps/api/geocode/json";
function __construct($api_key, $debug = 0)
{
$this->api_key = $api_key;
$this->debug = $debug;
}
public function request($url, $parameters)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url . "?" . http_build_query($parameters));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
return $result;
}
public function getAddress($latitude, $longitude)
{
$data = [
'latlng' => "$latitude,$longitude",
'key' => $this->api_key
];
$addressData = $this->request($this->callurl, $data);
return (json_decode($addressData)->results[0]->formatted_address);
}
public function getCoordinates($address)
{
$data = [
'address' => $address,
'key' => $this->api_key
];
$addressData = $this->request($this->callurl, $data);
$location = json_decode($addressData)->results[0]->geometry->location;
return [ 'latitude' => $location->lat, 'longitude' => $location->lng];
}
}

tambahkan di file global app\Helpers\Global.php

<?php

function get_address_google($latitude,$longitude){
$geo = new Geocoding('AIzaSyCEqgPSJg-nZ2iJfnEkDY79iRj_rAcQgzg');
$alamat = $geo->getAddress($latitude,$longitude);
return $alamat;
}

cara pemangilan di controller


public function checkout_invoice(Request $request){
$alamat = get_address_google($latitude,$longitude);
return view('frontend.checkout.invoice',compact('data','alamat'));
}


Jumat, 22 Januari 2021

Laravel API Client dengan Guzzle


1. composer require guzzlehttp/guzzle


<?php
    namespace App\Http\Controllers;
    use Illuminate\Http\Request;
    use GuzzleHttp\Client;
    use App\Models\Branch;
    class ProductController extends Controller
    {
    public function index()
    {
    $branch = Branch::query();
    $branch->truncate();
    $url = 'https://mnfdev.agrobogautama.co.id/api/getbranch';
    $client = new Client();
    $headers = [
    'Content-Type' => 'application/json',
    'x-api-key' => 'xTYuaskl76510!#$%Zhyuulattr6!',
    ];
    $data = '{}';
    $options = [
    'body' => $data,
    'headers' => $headers,
    ];
    $response = $client->request('get', $url, $options);
    $res = json_decode($response->getBody());
    $data = [];
    $res = $res->result->data;
    foreach($res as $key => $item){
    $data[] = [
    "branch_id"=> $item->branch_id,
    "branch_name"=> $item->branch_name,
    "branch_latitude"=> $item->branch_latitude,
    "branch_longitude"=> $item->branch_longitude,
    "company_id"=> $item->company_id,
    "company_name"=> $item->company_name,
    "region_id"=> $item->region_id,
    "region_name"=> $item->region_name
    ];
    }
    $jd = count($res);
    $chunk = array_chunk($data,$jd);
    foreach($chunk as $d){
    Branch::insert($d);
    }
        }
    }


Senin, 18 Januari 2021

Laravel integrasi dengan midtrans

 Laravel integrasi dengan midtrans

1. composer require midtrans/midtrans-php

2. composer dump-autoload

3. php artisan make:controller MidtransController -r

edit di bagian function index() jadi seperti di bawah.

public function index()
{
// Set your Merchant Server Key
\Midtrans\Config::$serverKey = 'SB-Mid-server-feM6Qc7DQ4tLnsJO_IyhlN2P';
// Set to Development/Sandbox Environment (default). Set to true for Production Environment (accept real transaction).
\Midtrans\Config::$isProduction = false;
// Set sanitization on (default)
\Midtrans\Config::$isSanitized = true;
// Set 3DS transaction for credit card to true
\Midtrans\Config::$is3ds = true;
$params = array(
'transaction_details' => array(
'order_id' => rand(),
'gross_amount' => 10000,
)
);
$snapToken = \Midtrans\Snap::getSnapToken($params);
return view('midtrans',compact('snapToken'));
}

4. buat file midtrans.blade.php di folder resource/view

isi dengan kode di bawah

<html>
<body>
<button id="pay-button">Pay!</button>
<pre><div id="result-json">JSON result will appear here after payment:<br></div></pre>

<!-- TODO: Remove ".sandbox" from script src URL for production environment. Also input your client key in "data-client-key" -->
<script src="https://app.sandbox.midtrans.com/snap/snap.js" data-client-key="<Set your ClientKey here>"></script>
<script type="text/javascript">
document.getElementById('pay-button').onclick = function(){
// SnapToken acquired from previous step
snap.pay('<?=$snapToken?>', {
// Optional
onSuccess: function(result){
/* You may add your own js here, this is just example */ document.getElementById('result-json').innerHTML += JSON.stringify(result, null, 2);
},
// Optional
onPending: function(result){
/* You may add your own js here, this is just example */ document.getElementById('result-json').innerHTML += JSON.stringify(result, null, 2);
},
// Optional
onError: function(result){
/* You may add your own js here, this is just example */ document.getElementById('result-json').innerHTML += JSON.stringify(result, null, 2);
}
});
};
</script>
</body>
</html>

5. setting route web.php


Route::resource('midtrans','MidtransController');

6. php artisan serve

7. akses localhost:8000


oke


Rabu, 13 Januari 2021

Request Ajax Secara Interval


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<div id="data-id"></div>
<script>
function fetchdata(){
    $.ajax({
        url: "{{ route('user.index') }}",
        type: 'get',
        success: function(data){
            // eksekusi kode di sini
            // alert(data);
            $('#data-id').html(data) // ini contohnya
        },
        complete:function(data){
            setTimeout(fetchdata,100);
        }
    });
}

$(document).ready(function(){
    setTimeout(fetchdata,1000);
});
</script>

Senin, 07 Desember 2020

ngrok

 Download ngrok di sini

ekstrak ngrok.zip

./ngrok authtoken 1lMUILIPXIg1YTdiUJPoCh1xfpU_5eiwWw1uGatsmGcpjdsRm
./ngrok help
./ngrok http 8000
 

Laravel 8 Jwt-Auth

  • laravel new jwt
  • cd jwt
  • composer require tymon/jwt-auth
  • php artisan vendor:publish
  • pilih yang = Tymon\JWTAuth\Providers\LaravelServiceProvider
  • php artisan jwt:secret
  •  
  • edit file app/models/user.php
  • <?php

    namespace App\Models;

    use Illuminate\Contracts\Auth\MustVerifyEmail;
    use Illuminate\Database\Eloquent\Factories\HasFactory;
    use Illuminate\Foundation\Auth\User as Authenticatable;
    use Illuminate\Notifications\Notifiable;

    class User extends Authenticatable
    {
    use HasFactory, Notifiable;

    protected $fillable = [
    'name',
    'email',
    'password',
    ];

    protected $hidden = [
    'password',
    'remember_token',
    ];

    protected $casts = [
    'email_verified_at' => 'datetime',
    ];
    }


     menjadi
  • <?php

    namespace App\Models;

    use Illuminate\Contracts\Auth\MustVerifyEmail;
    use Illuminate\Database\Eloquent\Factories\HasFactory;
    use Illuminate\Foundation\Auth\User as Authenticatable;
    use Illuminate\Notifications\Notifiable;

    use Tymon\JWTAuth\Contracts\JWTSubject;
    class User extends Authenticatable implements JWTSubject
    {
    use HasFactory, Notifiable;

    protected $fillable = [
    'name',
    'email',
    'password',
    ];

    protected $hidden = [
    'password',
    'remember_token',
    ];

    protected $casts = [
    'email_verified_at' => 'datetime',
    ];

    public function getJWTIdentifier()
    {
    return $this->getKey();
    }

    public function getJWTCustomClaims()
    {
    return [];
    }
    }


     
  • php artisan make:controller  Api/Auth/LoginController -i
  •  ubah file app/Http/Controllers/Api/Auth/LoginController.php
  • <?php

    namespace App\Http\Controllers\Auth;

    use App\Http\Controllers\Controller;
    use Illuminate\Http\Request;

    class LoginController extends Controller
    {
    /**
    * Handle the incoming request.
    *
    * @param \Illuminate\Http\Request $request
    * @return \Illuminate\Http\Response
    */
    public function __invoke(Request $request)
    {
    //
    }
    }


     menjadi
  •  
    <?php

    namespace App\Http\Controllers\Auth;

    use App\Http\Controllers\Controller;
    use Illuminate\Http\Request;

    class LoginController extends Controller
    {
    public function __invoke(Request $request)
    {
    $request->validate([
    'email' => 'required',
    'password' => 'required'
    ]);
    $credentials = request(['email', 'password']);
    if (!$token = auth('api')->attempt($credentials)) {
    return response()->json([
    'status' => '0',
    'data' => 'login',
    'result' => [
    'message' => 'Phone atau Password Salah',
    ]
    ], 401);
    }
    $data = [
    'status' => '1',
    'data' => 'login',
    'result' => [
    'token' => $token
    ]
    ];
    return response()->json($data,200);
    }
    }


 

tambah route di api.php


Route::post('login','Api/Auth/LoginController');

 mengedit app/config/auth.php

'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],

'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
],

 menjadi

'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],

'api' => [
'driver' => 'jwt',
'provider' => 'users',
'hash' => false,
],
],

cek postman

localhost:8000/api/Login

localhost:8000/api/users

 

Selasa, 01 Desember 2020

DATA TABLES YAJRA

 https://fahmidasclassroom.com/laravel-7-crud-using-datatables/


1. Install yajra datatables

$ composer require yajra/laravel-datatables-oracle:"~9.0"

2. Daftarkan provider dan facade pada file "config/app.php"

'providers'    =>    [
 ....,
 Yajra\DataTables\DataTablesServiceProvider::class,
]
'aliases'        =>    [
'DataTables'    =>    Yajra\DataTables\Facades\DataTables::class,
]

3. Publish Vendor

$ php artisan vendor:publish --provider="Yajra\DataTables\DataTablesServiceProvider" 

4. Buat Model & Migration

$ php artisan make:model Product -m 

 edit file "app\database\migrations\2020_12_24_204248_create_banners_table.php"

    Schema::create('banners', function (Blueprint $table) {
        $table->id();
       //addcode
        $table->string('title');
        $table->text('img');
        $table->boolean('status');
        //encode
        $table->timestamps();
    });

edit file "app\Models\Product.php

    <?php
    namespace App\Models;
    use Illuminate\Database\Eloquent\Factories\HasFactory;
    use Illuminate\Database\Eloquent\Model;

    class Banner extends Model
    {
    use HasFactory;
    protected $fillable = [
    'title',
    'img',
    'status'
    ];
    }

4. Buat Controller

$ php artisan make:controller UserController -r 

5. Buka UserController di folder "app/Http/Controllers" edit code menjadi seperti di bawah.

    

    <?php
    namespace App\Http\Controllers;
    use Illuminate\Http\Request;
    //addcode
    use App\Models\User;
    use DataTables;
    use Redirect,Response;
    //endcode
    class UserController extends Controller
    {
    public function index()
    {
            //addcode
if ($request->ajax()) {
$data = User::latest()->get();
return Datatables::of($data)
->addIndexColumn()
->addColumn('action', function($row){
$action =
            '<a class="btn btn-info" id="show-user" data-toggle="modal" data-id='.$row->id.'>Show</a>
<a class="btn btn-success" id="edit-user" data-toggle="modal" data-id='.$row->id.'>Edit </a>
<meta name="csrf-token" content="{{ csrf_token() }}">
<a id="delete-user" data-id='.$row->id.' class="btn btn-danger delete-user">Delete</a>';
return $action;
})
->rawColumns(['action'])
->make(true);
}
return view('users');
            //endcode  
    }

    public function create()
    {
            //addcode
     return view('menu.banner.create');
            //endcode
    }

     public function store(Request $request)
    {
    //addcode
    $request->validate([
    'title' => 'required',
    'img' => 'required'
    ]);
            $imgName = $request->title.time()."_".$request->file('img')->GetClientOriginalName();
Banner::create([
    'img' => $imgName,
    'title' => $request->title,
    'status' => $request->status
    ]);
    $msg = 'Data Berhasil Di Tambahkan';
    return redirect()->route('banner.index')->with('success',$msg);
    }


public function show($id)
{
//
}

public function edit($id)
{
//
}

public function update(Request $request, $id)
{
//
}

public function destroy($id)
{
//
}
}

 

create project flutter with getx

Get CLI adalah alat yang sangat berguna untuk mempercepat pengembangan aplikasi Flutter dengan memanfaatkan arsitektur GetX . Berikut adala...