sablontok/app/Http/Controllers/Customer/PesananCustomerController.php

312 lines
11 KiB
PHP

<?php
namespace App\Http\Controllers\customer;
use App\Http\Controllers\Controller;
use App\Models\Keranjang;
use App\Models\Pesanan;
use App\Models\Rekening;
use App\Models\Variasi;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class PesananCustomerController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*
*
*/
public function get_ongkir($id_kota, $berat)
{
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.rajaongkir.com/starter/cost",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "origin=399&destination=" . $id_kota . "&weight=" . $berat . "&courier=jne",
CURLOPT_HTTPHEADER => array(
"content-type: application/x-www-form-urlencoded",
"key: f201c33f7b1021a48e2a76125bfa5e15"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
$response = json_decode($response, true);
$provinsi = $response['rajaongkir']['results'];
return $provinsi;
}
}
public function index()
{
$pesanan_paid = Pesanan::join('produk', 'produk.id_produk', '=', 'pesanan.id_produk')
->join('user_alamat', 'user_alamat.id_user_alamat', '=', 'pesanan.id_alamat')
->select('pesanan.*', 'produk.*', 'user_alamat.nama_prov', 'user_alamat.nama_kota')
->where('pesanan.id_user', Auth::user()->id)
->where(function($query){
$query->where('pesanan.status', 'menunggu pembayaran')
->orWhere('pesanan.status','Bukti Pembayaraan Sedang Di Tinjau')
->orWhere('pesanan.status','Pesanan Di Tolak');
})
->orderBy('pesanan.updated_at', 'desc')
->get();
$ongoing = Pesanan::join('produk', 'produk.id_produk', '=', 'pesanan.id_produk')
->join('user_alamat', 'user_alamat.id_user_alamat', '=', 'pesanan.id_alamat')
->select('pesanan.*', 'produk.*', 'user_alamat.nama_prov', 'user_alamat.nama_kota')
->where('pesanan.id_user', Auth::user()->id)
->where('pesanan.status', 'Pesanan Di Terima')
->orderBy('pesanan.updated_at', 'desc')
->get();
$kirim = Pesanan::join('produk', 'produk.id_produk', '=', 'pesanan.id_produk')
->join('user_alamat', 'user_alamat.id_user_alamat', '=', 'pesanan.id_alamat')
->select('pesanan.*', 'produk.nama_produk', 'user_alamat.nama_prov', 'user_alamat.nama_kota')
->where('pesanan.id_user', Auth::user()->id)
->where('pesanan.status', 'Barang Dalam Pengiriman')
->orderBy('pesanan.updated_at', 'desc')
->get();
$tagihan = Pesanan::join('produk', 'produk.id_produk', '=', 'pesanan.id_produk')
->join('user_alamat', 'user_alamat.id_user_alamat', '=', 'pesanan.id_alamat')
->select('pesanan.*', 'produk.nama_produk', 'user_alamat.nama_prov', 'user_alamat.nama_kota')
->where('pesanan.id_user', Auth::user()->id)
->where('pesanan.dp_status', 'tagihan deliver')
->orderBy('pesanan.updated_at', 'desc')
->get();
return view('customer.pesanan.pesanan', compact(['pesanan_paid', 'ongoing','kirim','tagihan']));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
if ($request->alamat_kirim == NULL) {
return back()->with('error', 'Proses Gagal Wajib Memilih Salah Satu Alamat Pengiriman');
}
$id_keranjang = $request->id_keranjang;
$harga_variasi = $request->variasi_harga;
$harga_sablon = $request->sablon_harga;
if ($harga_sablon == null) {
$total_sablon = "0";
}
if ($harga_variasi == null) {
$total_variasi = "0";
}
$total_variasi = array_sum(explode(',', $harga_variasi));
$total_sablon = array_sum(explode(',', $harga_sablon));
$kota = $request->alamat_kirim;
$kota_result = explode('|', $kota);
$id_kota = $kota_result[0];
$id_alamat = $kota_result[1];
$keranjang = Keranjang::join('produk', 'keranjang.id_produk', '=', 'produk.id_produk')
->select('keranjang.*', 'produk.*')
->find($id_keranjang);
if ($keranjang->total <= 11) {
$total = $keranjang->total;
$harga = $keranjang->harga_produk1;
$jumlah = $harga * $total;
} elseif ($keranjang->total <= 23) {
$total = $keranjang->total;
$harga = $keranjang->harga_produk2;
$jumlah = $harga * $total;
} elseif ($keranjang->total <= 50) {
$total = $keranjang->total;
$harga = $keranjang->harga_produk3;
$jumlah = $harga * $total;
} elseif ($keranjang->total <= 100) {
$total = $keranjang->total;
$harga = $keranjang->harga_produk4;
$jumlah = $harga * $total;
} elseif ($keranjang->total <= 200) {
$total = $keranjang->total;
$harga = $keranjang->harga_produk5;
$jumlah = $harga * $total;
}
$berat = $total * 145;
$ongkir = $this->get_ongkir($id_kota, $berat);
foreach ($ongkir as $ongkir) {
// dd($ongkir['costs'][1]);
$cost = $ongkir['costs'][1];
foreach ($cost as $costs) {
$costs = $cost['cost'];
foreach ($costs as $costs) {
$harga_ongkir = $costs['value'];
}
}
}
$total_bayar = $jumlah + $harga_ongkir + $total_variasi + $total_sablon;
Pesanan::create([
'id_user' => Auth::user()->id,
'id_produk' => $keranjang->id_produk,
'quantity' => $keranjang->total,
'id_alamat' => $id_alamat,
'id_kota' => $id_kota,
'variasi' => $request->variasi,
'variasi_harga' => $harga_variasi,
'variasi_total' => $total_variasi,
'sablon' => $request->sablon,
'sablon_harga' => $harga_sablon,
'sablon_total' => $total_sablon,
'note_sablon_variasi' => $request->note,
'bayar' => $jumlah,
'ongkir' => $harga_ongkir,
'total_bayar' => $total_bayar,
'status' => "menunggu pembayaran",
]);
Keranjang::find($id_keranjang)->delete();
return to_route('pesanan.index');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$pesanan = Pesanan::join('produk', 'produk.id_produk', '=', 'pesanan.id_produk')
->join('user_alamat', 'user_alamat.id_user_alamat', '=', 'pesanan.id_alamat')
->join('users', 'users.id', '=', 'pesanan.id_user')
->select('pesanan.*', 'produk.*', 'user_alamat.no_telp','user_alamat.alamat','user_alamat.nama_penerima', 'user_alamat.nama_prov', 'user_alamat.nama_kota', 'users.*')
->find($id);
return view('customer.pesanan.pesanan_cetak', compact(['pesanan']));
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$pesanan = Pesanan::join('produk', 'produk.id_produk', '=', 'pesanan.id_produk')
->join('user_alamat', 'user_alamat.id_user_alamat', '=', 'pesanan.id_alamat')
->select(
'pesanan.*',
'produk.*',
'user_alamat.nama_prov',
'user_alamat.nama_kota',
'user_alamat.alamat',
'user_alamat.kode_pos',
'user_alamat.nama_penerima',
'user_alamat.no_telp'
)
->find($id);
$rekening = Rekening::get();
$id_kota = $pesanan->id_kota;
$berat = $pesanan->quantity * 145;
$ongkir = $this->get_ongkir($id_kota, $berat);
// dd($ongkir);
return view('customer.pesanan.pesanan_edit', compact(['pesanan', 'ongkir', 'rekening']));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$request->validate([
'bukti_bayar' => 'required',
'metode' => 'required'
]);
$data_desain = Pesanan::find($id);
if ($request->hasFile('bukti_bayar')) {
$bukit_pembayaran = $request->file('bukti_bayar')->getClientOriginalName();
$request->bukti_bayar->move(public_path('bukti_bayar'), $bukit_pembayaran);
}
if ($request->hasFile('desain')) {
$desain = $request->file('desain')->getClientOriginalName();
$request->desain->move(public_path('desain'), $desain);
} else {
$desain = $data_desain->desain;
}
if ($request->metode=='dp') {
Pesanan::find($id)->update([
'bukti_bayar_dp' => $bukit_pembayaran,
'desain' => $desain,
'request_user' => $request->request_desain,
'status' => 'Bukti Pembayaraan Sedang Di Tinjau',
'tipe_pembayaran' => 'dp',
]);
}else{
Pesanan::find($id)->update([
'bukti_bayar' => $bukit_pembayaran,
'desain' => $desain,
'request_user' => $request->request_desain,
'status' => 'Bukti Pembayaraan Sedang Di Tinjau',
'tipe_pembayaran' => 'lunas',
]);
}
return to_route('pesanan.index');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}