Penambahan fungsi pada user dan setting admin
This commit is contained in:
parent
cf16994497
commit
35bc68bd4c
@ -7,7 +7,7 @@ use App\Models\Refunds;
|
|||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class RefundController extends Controller
|
class AdminRefundController extends Controller
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Display a listing of the resource.
|
* Display a listing of the resource.
|
110
app/Http/Controllers/Admin/AdminSettingController.php
Normal file
110
app/Http/Controllers/Admin/AdminSettingController.php
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Admin;
|
||||||
|
|
||||||
|
use App\Models\Setting;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
|
||||||
|
class AdminSettingController extends Controller
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
*/
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
$settings = Setting::all();
|
||||||
|
return view('admin.setting.index', [
|
||||||
|
'name' => 'Jilhan Haura',
|
||||||
|
'settings' => $settings,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for creating a new resource.
|
||||||
|
*/
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a newly created resource in storage.
|
||||||
|
*/
|
||||||
|
public function store(Request $request)
|
||||||
|
{
|
||||||
|
// dd($request->persentase);
|
||||||
|
[$tahun, $bulan] = explode('-', $request->bulan_tahun);
|
||||||
|
Setting::create([
|
||||||
|
'bulan' => $bulan,
|
||||||
|
'tahun' => $tahun,
|
||||||
|
'persentase' => $request->persentase,
|
||||||
|
'status' => 'Active',
|
||||||
|
]);
|
||||||
|
return redirect()->route('admin-setting.index');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display the specified resource.
|
||||||
|
*/
|
||||||
|
public function show(Setting $setting)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for editing the specified resource.
|
||||||
|
*/
|
||||||
|
public function edit(Setting $setting)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the specified resource in storage.
|
||||||
|
*/
|
||||||
|
public function update(Request $request, $id)
|
||||||
|
{
|
||||||
|
// dd($setting['status'] );
|
||||||
|
$setting = Setting::findOrFail($id);
|
||||||
|
if ($setting->status == 'Active') {
|
||||||
|
$setting->status = 'Nonactive';
|
||||||
|
$result = $setting->save();
|
||||||
|
if ($result) {
|
||||||
|
return response()->json([
|
||||||
|
'message' => "Berhasil update kebijakan",
|
||||||
|
'status' => true,
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
return response()->json([
|
||||||
|
'message' => "Gagal update kebijakan",
|
||||||
|
'status' => true,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$setting->status = 'Active';
|
||||||
|
$result = $setting->save();
|
||||||
|
if ($result) {
|
||||||
|
return response()->json([
|
||||||
|
'message' => "Berhasil update kebijakan",
|
||||||
|
'status' => true,
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
return response()->json([
|
||||||
|
'message' => "Gagal update kebijakan",
|
||||||
|
'status' => true,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// return response()->json($id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified resource from storage.
|
||||||
|
*/
|
||||||
|
public function destroy(Setting $setting)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}
|
@ -7,7 +7,7 @@ use App\Models\Transactions;
|
|||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class TransactionController extends Controller
|
class AdminTransactionController extends Controller
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Display a listing of the resource.
|
* Display a listing of the resource.
|
118
app/Http/Controllers/Admin/AdminUserController.php
Normal file
118
app/Http/Controllers/Admin/AdminUserController.php
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Admin;
|
||||||
|
|
||||||
|
use App\Models\User;
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class AdminUserController extends Controller
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
*/
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
$list_users = User::where('role','User')->get();
|
||||||
|
return view('admin.users.list-user', ['name' => 'Muhammad Raihan Surya', 'list_users' => $list_users]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for creating a new resource.
|
||||||
|
*/
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a newly created resource in storage.
|
||||||
|
*/
|
||||||
|
public function store(Request $request)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display the specified resource.
|
||||||
|
*/
|
||||||
|
public function show($id)
|
||||||
|
{
|
||||||
|
$user = User::find($id);
|
||||||
|
return view('admin.users.detail-user',['name'=>"Muhammad Raihan Surya", 'detail_user'=>$user]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for editing the specified resource.
|
||||||
|
*/
|
||||||
|
public function edit(User $user)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the specified resource in storage.
|
||||||
|
*/
|
||||||
|
public function update(Request $request, $id)
|
||||||
|
{
|
||||||
|
return response()->json([
|
||||||
|
'user' => $request,
|
||||||
|
'id' => $id,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified resource from storage.
|
||||||
|
*/
|
||||||
|
public function destroy($id)
|
||||||
|
{
|
||||||
|
try{
|
||||||
|
$result = User::destroy($id);
|
||||||
|
if($result){
|
||||||
|
return response()->json([
|
||||||
|
'message' => 'Berhasil hapus data',
|
||||||
|
'status' => true
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}catch(\Exception $e){
|
||||||
|
return response()->json([
|
||||||
|
'message' => 'Gagal hapus data, karena '.$e,
|
||||||
|
'status' => false
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function approveUser($id){
|
||||||
|
$user = User::findOrFail($id);
|
||||||
|
$user->status = 'Finished';
|
||||||
|
$result = $user->save();
|
||||||
|
if($result){
|
||||||
|
return response()->json([
|
||||||
|
'message' => "Akun telah disetujui dan dapat digunakan",
|
||||||
|
'status' => true,
|
||||||
|
]);
|
||||||
|
}else{
|
||||||
|
return response()->json([
|
||||||
|
'message' => "Akun gagal disetujui karena "+$result,
|
||||||
|
'status' => false,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function denyUser($id){
|
||||||
|
$user = User::findOrFail($id);
|
||||||
|
$user->status = 'Rejected';
|
||||||
|
$result = $user->save();
|
||||||
|
if($result){
|
||||||
|
return response()->json([
|
||||||
|
'message' => "Akun telah ditolak dan tidak dapat digunakan",
|
||||||
|
'status' => true,
|
||||||
|
]);
|
||||||
|
}else{
|
||||||
|
return response()->json([
|
||||||
|
'message' => "Akun gagal ditolak karena "+$result,
|
||||||
|
'status' => false,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,70 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin;
|
|
||||||
|
|
||||||
use App\Models\Setting;
|
|
||||||
use App\Models\Settings;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
|
|
||||||
class SettingController extends Controller
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Display a listing of the resource.
|
|
||||||
*/
|
|
||||||
public function index()
|
|
||||||
{
|
|
||||||
return view('admin/setting/index',[
|
|
||||||
'name'=>"Jilhan Haura",
|
|
||||||
"setting" => Settings:: HistorySetting()
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Show the form for creating a new resource.
|
|
||||||
*/
|
|
||||||
public function create()
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Store a newly created resource in storage.
|
|
||||||
*/
|
|
||||||
public function store(Request $request)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Display the specified resource.
|
|
||||||
*/
|
|
||||||
public function show(Setting $setting)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Show the form for editing the specified resource.
|
|
||||||
*/
|
|
||||||
public function edit(Setting $setting)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Update the specified resource in storage.
|
|
||||||
*/
|
|
||||||
public function update(Request $request, Setting $setting)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove the specified resource from storage.
|
|
||||||
*/
|
|
||||||
public function destroy(Setting $setting)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,79 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin;
|
|
||||||
|
|
||||||
use App\Models\User;
|
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
|
|
||||||
class UserController extends Controller
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Display a listing of the resource.
|
|
||||||
*/
|
|
||||||
public function index()
|
|
||||||
{
|
|
||||||
$list_users = User::where('role','User')->get();
|
|
||||||
return view('admin.users.list-user', ['name' => 'Muhammad Raihan Surya', 'list_users' => $list_users]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Show the form for creating a new resource.
|
|
||||||
*/
|
|
||||||
public function create()
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Store a newly created resource in storage.
|
|
||||||
*/
|
|
||||||
public function store(Request $request)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Display the specified resource.
|
|
||||||
*/
|
|
||||||
public function show(User $user)
|
|
||||||
{
|
|
||||||
// dd($user);
|
|
||||||
return view('admin.users.detail-user',['name'=>"Muhammad Raihan Surya", 'detail_user'=>$user]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Show the form for editing the specified resource.
|
|
||||||
*/
|
|
||||||
public function edit(User $user)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Update the specified resource in storage.
|
|
||||||
*/
|
|
||||||
public function update(Request $request, User $users)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove the specified resource from storage.
|
|
||||||
*/
|
|
||||||
public function destroy(User $user)
|
|
||||||
{
|
|
||||||
try{
|
|
||||||
User::destroy($user->id);
|
|
||||||
return response()->json([
|
|
||||||
'message' => 'Berhasil hapus data',
|
|
||||||
'status' => true
|
|
||||||
]);
|
|
||||||
}catch(\Exception $e){
|
|
||||||
return response()->json([
|
|
||||||
'message' => 'Gagal hapus data, karena '.$e,
|
|
||||||
'status' => false
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -52,7 +52,7 @@ class LoginController extends Controller
|
|||||||
return redirect()->intended('/');
|
return redirect()->intended('/');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Session::flash('message', 'Akun Tidak Ditemukan');
|
Session::flash('message', 'Akun tidak ditemukan atau sedang dalam pengajuan');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -102,26 +102,26 @@ class LoginController extends Controller
|
|||||||
|
|
||||||
// $validatedData['email_verified_at'] = now();
|
// $validatedData['email_verified_at'] = now();
|
||||||
|
|
||||||
$fotoKTP = '';
|
$validatedData['foto-ktp'] = '';
|
||||||
$fotoWajah = '';
|
$validatedData['foto-wajah'] = '';
|
||||||
$fotoProfil ='';
|
$validatedData['foto-profil'] ='';
|
||||||
if ($request->hasFile('foto_ktp') && $request->hasFile('foto_wajah')) {
|
if ($request->hasFile('foto_ktp') && $request->hasFile('foto_wajah')) {
|
||||||
// $namaGambarOri = $request->file('foto-gambar')->getClientOriginalName();
|
// $namaGambarOri = $request->file('foto-gambar')->getClientOriginalName();
|
||||||
// $namaGambar = round(microtime(true) * 1000) . '-' . str_replace(' ', '-', $namaGambarOri);
|
// $namaGambar = round(microtime(true) * 1000) . '-' . str_replace(' ', '-', $namaGambarOri);
|
||||||
$tipeFotoKtp = $request->file('foto_ktp')->getClientMimeType();
|
$tipeFotoKtp = $request->file('foto_ktp')->getClientMimeType();
|
||||||
$tipeFotoWajah = $request->file('foto_wajah')->getClientMimeType();
|
$tipeFotoWajah = $request->file('foto_wajah')->getClientMimeType();
|
||||||
$fotoKTP = 'Foto-KTP-' . $request->nama . '.' . $tipeFotoKtp;
|
$validatedData['foto-ktp'] = 'Foto-KTP-' . $request->nama . '.' . $tipeFotoKtp;
|
||||||
$fotoWajah = 'Foto-Wajah' . $request->nama . '.' . $tipeFotoWajah;
|
$validatedData['foto-wajah'] = 'Foto-Wajah' . $request->nama . '.' . $tipeFotoWajah;
|
||||||
// Simpan foto
|
// Simpan foto
|
||||||
$request->file('foto-ktp')->storeAs('public/foto-ktp', $fotoKTP);
|
$request->file('foto-ktp')->storeAs('public/foto-ktp', $validatedData['foto-ktp']);
|
||||||
$request->file('foto-wajah')->storeAs('public/foto-wajah', $fotoWajah);
|
$request->file('foto-wajah')->storeAs('public/foto-wajah', $validatedData['foto-wajah']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($request->hasFile('foto_profil')){
|
if($request->hasFile('foto_profil')){
|
||||||
$tipeFotoProfil = $request->file('foto_profil')->getClientMimeType();
|
$tipeFotoProfil = $request->file('foto_profil')->getClientMimeType();
|
||||||
$fotoProfil = 'Foto-Profil-' . $request->nama . '.' . $tipeFotoProfil;
|
$validatedData['foto-profil'] = 'Foto-Profil-' . $request->nama . '.' . $tipeFotoProfil;
|
||||||
// Simpan foto
|
// Simpan foto
|
||||||
$request->file('foto-profil')->storeAs('public/foto-profil', $fotoProfil);
|
$request->file('foto-profil')->storeAs('public/foto-profil', $validatedData['foto-profil']);
|
||||||
}
|
}
|
||||||
|
|
||||||
//OCR
|
//OCR
|
||||||
@ -185,8 +185,9 @@ class LoginController extends Controller
|
|||||||
'nohp' => $validatedData['nohp'],
|
'nohp' => $validatedData['nohp'],
|
||||||
'nik' => $validatedData['nik'],
|
'nik' => $validatedData['nik'],
|
||||||
'alamat' => $validatedData['alamat'],
|
'alamat' => $validatedData['alamat'],
|
||||||
'foto_ktp' => $fotoKTP,
|
'foto_ktp' => $validatedData['foto-ktp'],
|
||||||
'foto_wajah' => $fotoWajah,
|
'foto_wajah' => $validatedData['foto-wajah'],
|
||||||
|
'foto_profil' => $validatedData['foto-profil'],
|
||||||
'status' => $validatedData['status'],
|
'status' => $validatedData['status'],
|
||||||
'gender' => $validatedData['gender'],
|
'gender' => $validatedData['gender'],
|
||||||
'remember_token' => Str::random(10),
|
'remember_token' => Str::random(10),
|
||||||
|
@ -59,8 +59,19 @@ class ContactController extends Controller
|
|||||||
/**
|
/**
|
||||||
* Remove the specified resource from storage.
|
* Remove the specified resource from storage.
|
||||||
*/
|
*/
|
||||||
public function destroy(Contact $contact)
|
public function destroy(Contact $contact, $id)
|
||||||
{
|
{
|
||||||
//
|
try{
|
||||||
|
Contact::destroy($id);
|
||||||
|
return response()->json([
|
||||||
|
'message' => 'Berhasil hapus data',
|
||||||
|
'status' => true
|
||||||
|
]);
|
||||||
|
}catch(\Exception $e){
|
||||||
|
return response()->json([
|
||||||
|
'message' => 'Gagal hapus data, karena '.$e,
|
||||||
|
'status' => false
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -17,7 +17,7 @@ class Setting extends Model
|
|||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
'bulan',
|
'bulan',
|
||||||
'tahun',
|
'tahun',
|
||||||
'diskon',
|
'persentase',
|
||||||
'status',
|
'status',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -95,6 +95,10 @@ class User extends Authenticatable
|
|||||||
public function penjual(){
|
public function penjual(){
|
||||||
return $this->hasMany(Transaction::class, 'email', 'penjual');
|
return $this->hasMany(Transaction::class, 'email', 'penjual');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function kelurahan(){
|
||||||
|
return $this->belongsTo('Laravolt\Indonesia\Models\Village', 'code', 'kode_kelurahan');
|
||||||
|
}
|
||||||
//Relasi
|
//Relasi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -10,14 +10,16 @@
|
|||||||
"require": {
|
"require": {
|
||||||
"php": "^8.1",
|
"php": "^8.1",
|
||||||
"guzzlehttp/guzzle": "^7.2",
|
"guzzlehttp/guzzle": "^7.2",
|
||||||
|
"intervention/image": "^2.7",
|
||||||
"laravel/framework": "^10.10",
|
"laravel/framework": "^10.10",
|
||||||
"laravel/sanctum": "^3.2",
|
"laravel/sanctum": "^3.2",
|
||||||
"laravel/tinker": "^2.8",
|
"laravel/tinker": "^2.8",
|
||||||
|
"laravolt/indonesia": "^0.34.0",
|
||||||
|
"nesbot/carbon": "^2.69",
|
||||||
"pusher/pusher-php-server": "^7.2",
|
"pusher/pusher-php-server": "^7.2",
|
||||||
"ramsey/uuid": "^4.7",
|
"ramsey/uuid": "^4.7",
|
||||||
"thiagoalessio/tesseract_ocr": "^2.12",
|
"thiagoalessio/tesseract_ocr": "^2.12",
|
||||||
"tymon/jwt-auth": "^2.0",
|
"tymon/jwt-auth": "^2.0"
|
||||||
"intervention/image": "^2.7"
|
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"fakerphp/faker": "^1.9.1",
|
"fakerphp/faker": "^1.9.1",
|
||||||
|
84
composer.lock
generated
84
composer.lock
generated
@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "051f567ac5cf2db555525f2a0ee59015",
|
"content-hash": "eb6424bf82942b6b939788b88ee6586b",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "brick/math",
|
"name": "brick/math",
|
||||||
@ -1497,6 +1497,88 @@
|
|||||||
},
|
},
|
||||||
"time": "2023-08-15T14:27:00+00:00"
|
"time": "2023-08-15T14:27:00+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "laravolt/indonesia",
|
||||||
|
"version": "v0.34",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/laravolt/indonesia.git",
|
||||||
|
"reference": "dfb584207f277e38c7706412d7414c8753dc78d5"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/laravolt/indonesia/zipball/dfb584207f277e38c7706412d7414c8753dc78d5",
|
||||||
|
"reference": "dfb584207f277e38c7706412d7414c8753dc78d5",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"illuminate/support": "^8.0|^9.0|^10.0",
|
||||||
|
"php": "^7.3|^8.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"orchestra/testbench": "^6.0|^7.0|^8.0",
|
||||||
|
"php-coveralls/php-coveralls": "^2.1",
|
||||||
|
"phpunit/phpunit": "^9.0"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"laravolt/suitable": "Required if you want to access editor panel",
|
||||||
|
"spatie/geocoder": "Synchronize latitude longitude data directly using Google's Geocoding Service"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.0-dev"
|
||||||
|
},
|
||||||
|
"laravel": {
|
||||||
|
"providers": [
|
||||||
|
"Laravolt\\Indonesia\\ServiceProvider"
|
||||||
|
],
|
||||||
|
"aliases": {
|
||||||
|
"Indonesia": "Laravolt\\Indonesia\\Facade"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Laravolt\\Indonesia\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Bayu Hendra Winata",
|
||||||
|
"email": "bayu.hendra@javan.co.id"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Akbar Adhatama",
|
||||||
|
"email": "am.adhatama@gmail.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Deri Ramdani",
|
||||||
|
"email": "deri.ramdani1@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Package Laravel yang berisi data Provinsi, Kabupaten/Kota, Kecamatan, dan Keluarahan/Desa di seluruh Indonesia.",
|
||||||
|
"keywords": [
|
||||||
|
"desa",
|
||||||
|
"indonesia",
|
||||||
|
"kabupaten",
|
||||||
|
"kecamatan",
|
||||||
|
"kelurahan",
|
||||||
|
"kota",
|
||||||
|
"laravel",
|
||||||
|
"laravolt",
|
||||||
|
"provinsi"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/laravolt/indonesia/issues",
|
||||||
|
"source": "https://github.com/laravolt/indonesia/tree/v0.34"
|
||||||
|
},
|
||||||
|
"time": "2023-03-05T15:16:54+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "lcobucci/clock",
|
"name": "lcobucci/clock",
|
||||||
"version": "2.3.0",
|
"version": "2.3.0",
|
||||||
|
16
config/laravolt/indonesia.php
Normal file
16
config/laravolt/indonesia.php
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
'table_prefix' => 'indonesia_',
|
||||||
|
'route' => [
|
||||||
|
'enabled' => false,
|
||||||
|
'middleware' => ['web', 'auth'],
|
||||||
|
'prefix' => 'indonesia',
|
||||||
|
],
|
||||||
|
'view' => [
|
||||||
|
'layout' => 'ui::layouts.app',
|
||||||
|
],
|
||||||
|
'menu' => [
|
||||||
|
'enabled' => false,
|
||||||
|
],
|
||||||
|
];
|
@ -30,6 +30,7 @@ class UserFactory extends Factory
|
|||||||
'nohp'=> $this->faker->phoneNumber(),
|
'nohp'=> $this->faker->phoneNumber(),
|
||||||
'status'=> $this->faker->randomElement(['Progress', 'Finished']),
|
'status'=> $this->faker->randomElement(['Progress', 'Finished']),
|
||||||
'gender' => $this->faker->randomElement(['Laki-laki', 'Perempuan']),
|
'gender' => $this->faker->randomElement(['Laki-laki', 'Perempuan']),
|
||||||
|
'kode_kelurahan' => '1101012002',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,10 +24,13 @@ return new class extends Migration
|
|||||||
$table->string('foto_ktp')->nullable();
|
$table->string('foto_ktp')->nullable();
|
||||||
$table->string('foto_wajah')->nullable();
|
$table->string('foto_wajah')->nullable();
|
||||||
$table->string('foto_profil')->nullable();
|
$table->string('foto_profil')->nullable();
|
||||||
$table->string('status',10);
|
$table->enum('status',['Finished','Progress','Rejected'])->default('Progress');
|
||||||
$table->string('gender',15);
|
$table->string('gender',15);
|
||||||
|
$table->char('kode_kelurahan',10);
|
||||||
$table->rememberToken();
|
$table->rememberToken();
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
|
|
||||||
|
// $table->foreign('kode_kelurahan')->on('villages')->references('code');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateProvincesTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create(config('laravolt.indonesia.table_prefix').'provinces', function (Blueprint $table) {
|
||||||
|
$table->bigIncrements('id');
|
||||||
|
$table->char('code', 2)->unique();
|
||||||
|
$table->string('name', 255);
|
||||||
|
$table->text('meta')->nullable();
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::drop(config('laravolt.indonesia.table_prefix').'provinces');
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateCitiesTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create(config('laravolt.indonesia.table_prefix').'cities', function (Blueprint $table) {
|
||||||
|
$table->bigIncrements('id');
|
||||||
|
$table->char('code', 4)->unique();
|
||||||
|
$table->char('province_code', 2);
|
||||||
|
$table->string('name', 255);
|
||||||
|
$table->text('meta')->nullable();
|
||||||
|
$table->timestamps();
|
||||||
|
|
||||||
|
$table->foreign('province_code')
|
||||||
|
->references('code')
|
||||||
|
->on(config('laravolt.indonesia.table_prefix').'provinces')
|
||||||
|
->onUpdate('cascade')->onDelete('restrict');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::drop(config('laravolt.indonesia.table_prefix').'cities');
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateDistrictsTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create(config('laravolt.indonesia.table_prefix').'districts', function (Blueprint $table) {
|
||||||
|
$table->bigIncrements('id');
|
||||||
|
$table->char('code', 7)->unique();
|
||||||
|
$table->char('city_code', 4);
|
||||||
|
$table->string('name', 255);
|
||||||
|
$table->text('meta')->nullable();
|
||||||
|
$table->timestamps();
|
||||||
|
|
||||||
|
$table->foreign('city_code')
|
||||||
|
->references('code')
|
||||||
|
->on(config('laravolt.indonesia.table_prefix').'cities')
|
||||||
|
->onUpdate('cascade')->onDelete('restrict');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::drop(config('laravolt.indonesia.table_prefix').'districts');
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateVillagesTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create(config('laravolt.indonesia.table_prefix').'villages', function (Blueprint $table) {
|
||||||
|
$table->bigIncrements('id');
|
||||||
|
$table->char('code', 10)->unique();
|
||||||
|
$table->char('district_code', 7);
|
||||||
|
$table->string('name', 255);
|
||||||
|
$table->text('meta')->nullable();
|
||||||
|
$table->timestamps();
|
||||||
|
|
||||||
|
$table->foreign('district_code')
|
||||||
|
->references('code')
|
||||||
|
->on(config('laravolt.indonesia.table_prefix').'districts')
|
||||||
|
->onUpdate('cascade')->onDelete('restrict');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::drop(config('laravolt.indonesia.table_prefix').'villages');
|
||||||
|
}
|
||||||
|
}
|
@ -24,7 +24,7 @@ return new class extends Migration
|
|||||||
$table->double('total_harga'); // gross amount
|
$table->double('total_harga'); // gross amount
|
||||||
$table->string('signature_key');
|
$table->string('signature_key');
|
||||||
$table->string('metode_pembayaran');
|
$table->string('metode_pembayaran');
|
||||||
$table->string('status'); // transaction_status
|
$table->enum('status',['settlement','capture','pending','cancel','refund','expire','failure','progress','failed'])->default('pending'); // transaction_status
|
||||||
$table->timestamp('batas_pembayaran');
|
$table->timestamp('batas_pembayaran');
|
||||||
$table->timestamp('batas_pengiriman_barang');
|
$table->timestamp('batas_pengiriman_barang');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
|
@ -16,7 +16,7 @@ return new class extends Migration
|
|||||||
$table->foreignUuid('order_id');
|
$table->foreignUuid('order_id');
|
||||||
$table->double('total',10);
|
$table->double('total',10);
|
||||||
$table->timestamp('due_date');
|
$table->timestamp('due_date');
|
||||||
$table->string('status',20);
|
$table->enum('status',['partial_refund','deny','pending'])->default('pending');
|
||||||
|
|
||||||
$table->foreign('order_id')->on('transactions')->references('order_id');
|
$table->foreign('order_id')->on('transactions')->references('order_id');
|
||||||
});
|
});
|
||||||
|
@ -15,7 +15,7 @@ return new class extends Migration
|
|||||||
$table->id();
|
$table->id();
|
||||||
$table->string('bulan',20);
|
$table->string('bulan',20);
|
||||||
$table->string('tahun',5);
|
$table->string('tahun',5);
|
||||||
$table->double('diskon',5);
|
$table->string('persentase',5);
|
||||||
$table->string('status',15);
|
$table->string('status',15);
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
});
|
});
|
||||||
|
@ -14,6 +14,7 @@ return new class extends Migration
|
|||||||
Schema::create('transaction_descriptions', function (Blueprint $table) {
|
Schema::create('transaction_descriptions', function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
$table->foreignUuid('order_id');
|
$table->foreignUuid('order_id');
|
||||||
|
$table->string('status',15);
|
||||||
$table->string('user');
|
$table->string('user');
|
||||||
$table->string('judul');
|
$table->string('judul');
|
||||||
$table->string('deskripsi');
|
$table->string('deskripsi');
|
||||||
|
@ -8,6 +8,10 @@ use App\Models\User;
|
|||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
use Faker\Factory as FakerFactory;
|
use Faker\Factory as FakerFactory;
|
||||||
use Faker\Provider\id_ID\Person as Person;
|
use Faker\Provider\id_ID\Person as Person;
|
||||||
|
use Laravolt\Indonesia\Seeds\CitiesSeeder;
|
||||||
|
use Laravolt\Indonesia\Seeds\VillagesSeeder;
|
||||||
|
use Laravolt\Indonesia\Seeds\DistrictsSeeder;
|
||||||
|
use Laravolt\Indonesia\Seeds\ProvincesSeeder;
|
||||||
|
|
||||||
class DatabaseSeeder extends Seeder
|
class DatabaseSeeder extends Seeder
|
||||||
{
|
{
|
||||||
@ -30,10 +34,18 @@ class DatabaseSeeder extends Seeder
|
|||||||
'nik' => $faker->nik($faker->randomElement(['male','female']), $faker->dateTimeBetween('-65 years', '-18 years')),
|
'nik' => $faker->nik($faker->randomElement(['male','female']), $faker->dateTimeBetween('-65 years', '-18 years')),
|
||||||
'alamat'=> $faker->address,
|
'alamat'=> $faker->address,
|
||||||
'nohp'=> $faker->phoneNumber(),
|
'nohp'=> $faker->phoneNumber(),
|
||||||
'status'=> $faker->randomElement(['Progress', 'Finished']),
|
'status'=> 'Finished',
|
||||||
'gender' => $faker->randomElement(['Laki-laki', 'Perempuan']),
|
'gender' => $faker->randomElement(['Laki-laki', 'Perempuan']),
|
||||||
|
'kode_kelurahan' => '1101012002',
|
||||||
|
]);
|
||||||
|
User::factory(20)->create();
|
||||||
|
|
||||||
|
$this->call([
|
||||||
|
ProvincesSeeder::class,
|
||||||
|
CitiesSeeder::class,
|
||||||
|
DistrictsSeeder::class,
|
||||||
|
VillagesSeeder::class,
|
||||||
]);
|
]);
|
||||||
User::factory(100)->create();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,40 +1,49 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
$("[data-checkboxes]").each(function() {
|
$("[data-checkboxes]").each(function () {
|
||||||
var me = $(this),
|
var me = $(this),
|
||||||
group = me.data('checkboxes'),
|
group = me.data("checkboxes"),
|
||||||
role = me.data('checkbox-role');
|
role = me.data("checkbox-role");
|
||||||
|
|
||||||
me.change(function() {
|
me.change(function () {
|
||||||
var all = $('[data-checkboxes="' + group + '"]:not([data-checkbox-role="dad"])'),
|
var all = $(
|
||||||
checked = $('[data-checkboxes="' + group + '"]:not([data-checkbox-role="dad"]):checked'),
|
'[data-checkboxes="' +
|
||||||
dad = $('[data-checkboxes="' + group + '"][data-checkbox-role="dad"]'),
|
group +
|
||||||
|
'"]:not([data-checkbox-role="dad"])'
|
||||||
|
),
|
||||||
|
checked = $(
|
||||||
|
'[data-checkboxes="' +
|
||||||
|
group +
|
||||||
|
'"]:not([data-checkbox-role="dad"]):checked'
|
||||||
|
),
|
||||||
|
dad = $(
|
||||||
|
'[data-checkboxes="' + group + '"][data-checkbox-role="dad"]'
|
||||||
|
),
|
||||||
total = all.length,
|
total = all.length,
|
||||||
checked_length = checked.length;
|
checked_length = checked.length;
|
||||||
|
|
||||||
if(role == 'dad') {
|
if (role == "dad") {
|
||||||
if(me.is(':checked')) {
|
if (me.is(":checked")) {
|
||||||
all.prop('checked', true);
|
all.prop("checked", true);
|
||||||
}else{
|
} else {
|
||||||
all.prop('checked', false);
|
all.prop("checked", false);
|
||||||
}
|
}
|
||||||
}else{
|
} else {
|
||||||
if(checked_length >= total) {
|
if (checked_length >= total) {
|
||||||
dad.prop('checked', true);
|
dad.prop("checked", true);
|
||||||
}else{
|
} else {
|
||||||
dad.prop('checked', false);
|
dad.prop("checked", false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// User
|
||||||
$("#table-1").dataTable({
|
$("#table-1").dataTable({
|
||||||
"columnDefs": [
|
columnDefs: [{ sortable: false, targets: [2, 7] }],
|
||||||
{ "sortable": false, "targets": [2,3] }
|
|
||||||
]
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Refund, Setting, Transaction
|
||||||
$("#table-2").dataTable({
|
$("#table-2").dataTable({
|
||||||
"columnDefs": [
|
ordering: true,
|
||||||
{ "sortable": false, "targets": [0,2,3] }
|
|
||||||
]
|
|
||||||
});
|
});
|
||||||
|
866
public/assets/modules/datatables/datatables.min.css
vendored
866
public/assets/modules/datatables/datatables.min.css
vendored
File diff suppressed because one or more lines are too long
@ -135,7 +135,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<canvas id="myChart1" height="130"></canvas>
|
<canvas id="myChart1"></canvas>
|
||||||
{{-- <div class="statistic-details mt-sm-4">
|
{{-- <div class="statistic-details mt-sm-4">
|
||||||
<div class="statistic-details-item">
|
<div class="statistic-details-item">
|
||||||
<span class="text-muted"><span class="text-primary"><i
|
<span class="text-muted"><span class="text-primary"><i
|
||||||
@ -372,4 +372,221 @@
|
|||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
@include('admin.transaction.tracking')
|
@include('admin.transaction.tracking')
|
||||||
|
<script src="{{ asset('assets/modules/chart.min.js') }}"></script>
|
||||||
|
<script>
|
||||||
|
// Set new default font family and font color to mimic Bootstrap's default styling
|
||||||
|
Chart.defaults.global.defaultFontFamily = 'Nunito',
|
||||||
|
'-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif';
|
||||||
|
Chart.defaults.global.defaultFontColor = '#858796';
|
||||||
|
|
||||||
|
var ctx = document.getElementById("myChart1").getContext('2d');
|
||||||
|
var myChart = new Chart(ctx, {
|
||||||
|
type: 'line',
|
||||||
|
data: {
|
||||||
|
labels: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "Oktober", "November", "December"],
|
||||||
|
datasets: [{
|
||||||
|
label: 'Transaction',
|
||||||
|
data: [3200, 18009, 4305, 3022, 6310, 5120, 5880, 6154, 0],
|
||||||
|
borderWidth: 2,
|
||||||
|
backgroundColor: 'rgba(63,82,227,.8)',
|
||||||
|
borderWidth: 0,
|
||||||
|
borderColor: 'transparent',
|
||||||
|
pointBorderWidth: 0,
|
||||||
|
pointRadius: 3.5,
|
||||||
|
pointBackgroundColor: 'transparent',
|
||||||
|
pointHoverBackgroundColor: 'rgba(63,82,227,.8)',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Refund',
|
||||||
|
data: [2207, 3403, 220000, 5025, 2302, 4208, 3880, 4880, 5000],
|
||||||
|
borderWidth: 2,
|
||||||
|
backgroundColor: 'rgba(254,86,83,.7)',
|
||||||
|
borderWidth: 0,
|
||||||
|
borderColor: 'transparent',
|
||||||
|
pointBorderWidth: 0,
|
||||||
|
pointRadius: 3.5,
|
||||||
|
pointBackgroundColor: 'transparent',
|
||||||
|
pointHoverBackgroundColor: 'rgba(254,86,83,.8)',
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
layout:{
|
||||||
|
padding: 20,
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
display: true,
|
||||||
|
labels:{
|
||||||
|
padding: 20,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
scales: {
|
||||||
|
yAxes: [{
|
||||||
|
gridLines: {
|
||||||
|
// display: false,
|
||||||
|
drawBorder: false,
|
||||||
|
color: '#f2f2f2',
|
||||||
|
},
|
||||||
|
ticks: {
|
||||||
|
beginAtZero: true,
|
||||||
|
stepSize: 15000,
|
||||||
|
callback: function(value, index, values) {
|
||||||
|
// return 'Rp.' + value;
|
||||||
|
return new Intl.NumberFormat('id-ID', {
|
||||||
|
style: 'currency',
|
||||||
|
currency: 'IDR',
|
||||||
|
}).format(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
xAxes: [{
|
||||||
|
gridLines: {
|
||||||
|
display: true,
|
||||||
|
tickMarkLength: 15,
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var balance_chart = document.getElementById("balance-chart").getContext('2d');
|
||||||
|
|
||||||
|
var balance_chart_bg_color = balance_chart.createLinearGradient(0, 0, 0, 70);
|
||||||
|
balance_chart_bg_color.addColorStop(0, 'rgba(63,82,227,.2)');
|
||||||
|
balance_chart_bg_color.addColorStop(1, 'rgba(63,82,227,0)');
|
||||||
|
|
||||||
|
var myChart = new Chart(balance_chart, {
|
||||||
|
type: 'line',
|
||||||
|
data: {
|
||||||
|
labels: ['16-07-2018', '17-07-2018', '18-07-2018', '19-07-2018', '20-07-2018', '21-07-2018',
|
||||||
|
'22-07-2018', '23-07-2018', '24-07-2018', '25-07-2018', '26-07-2018', '27-07-2018',
|
||||||
|
'28-07-2018', '29-07-2018', '30-07-2018', '31-07-2018'
|
||||||
|
],
|
||||||
|
datasets: [{
|
||||||
|
label: 'Balance',
|
||||||
|
data: [50, 61, 80, 50, 72, 52, 60, 41, 30, 45, 70, 40, 93, 63, 50, 62],
|
||||||
|
backgroundColor: balance_chart_bg_color,
|
||||||
|
borderWidth: 3,
|
||||||
|
borderColor: 'rgba(63,82,227,1)',
|
||||||
|
pointBorderWidth: 0,
|
||||||
|
pointBorderColor: 'transparent',
|
||||||
|
pointRadius: 3,
|
||||||
|
pointBackgroundColor: 'transparent',
|
||||||
|
pointHoverBackgroundColor: 'rgba(63,82,227,1)',
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
layout: {
|
||||||
|
padding: {
|
||||||
|
bottom: -1,
|
||||||
|
left: -1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
display: false
|
||||||
|
},
|
||||||
|
scales: {
|
||||||
|
yAxes: [{
|
||||||
|
gridLines: {
|
||||||
|
display: false,
|
||||||
|
drawBorder: false,
|
||||||
|
},
|
||||||
|
ticks: {
|
||||||
|
beginAtZero: true,
|
||||||
|
display: false
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
xAxes: [{
|
||||||
|
gridLines: {
|
||||||
|
drawBorder: false,
|
||||||
|
display: false,
|
||||||
|
},
|
||||||
|
ticks: {
|
||||||
|
display: false
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var sales_chart = document.getElementById("sales-chart").getContext('2d');
|
||||||
|
|
||||||
|
var sales_chart_bg_color = sales_chart.createLinearGradient(0, 0, 0, 80);
|
||||||
|
balance_chart_bg_color.addColorStop(0, 'rgba(63,82,227,.2)');
|
||||||
|
balance_chart_bg_color.addColorStop(1, 'rgba(63,82,227,0)');
|
||||||
|
|
||||||
|
var myChart = new Chart(sales_chart, {
|
||||||
|
type: 'line',
|
||||||
|
data: {
|
||||||
|
labels: ['16-07-2018', '17-07-2018', '18-07-2018', '19-07-2018', '20-07-2018', '21-07-2018',
|
||||||
|
'22-07-2018', '23-07-2018', '24-07-2018', '25-07-2018', '26-07-2018', '27-07-2018',
|
||||||
|
'28-07-2018', '29-07-2018', '30-07-2018', '31-07-2018'
|
||||||
|
],
|
||||||
|
datasets: [{
|
||||||
|
label: 'Sales',
|
||||||
|
data: [70, 62, 44, 40, 21, 63, 82, 52, 50, 31, 70, 50, 91, 63, 51, 60],
|
||||||
|
borderWidth: 2,
|
||||||
|
backgroundColor: balance_chart_bg_color,
|
||||||
|
borderWidth: 3,
|
||||||
|
borderColor: 'rgba(63,82,227,1)',
|
||||||
|
pointBorderWidth: 0,
|
||||||
|
pointBorderColor: 'transparent',
|
||||||
|
pointRadius: 3,
|
||||||
|
pointBackgroundColor: 'transparent',
|
||||||
|
pointHoverBackgroundColor: 'rgba(63,82,227,1)',
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
layout: {
|
||||||
|
padding: {
|
||||||
|
bottom: -1,
|
||||||
|
left: -1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
display: false
|
||||||
|
},
|
||||||
|
scales: {
|
||||||
|
yAxes: [{
|
||||||
|
gridLines: {
|
||||||
|
display: false,
|
||||||
|
drawBorder: false,
|
||||||
|
},
|
||||||
|
ticks: {
|
||||||
|
beginAtZero: true,
|
||||||
|
display: false
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
xAxes: [{
|
||||||
|
gridLines: {
|
||||||
|
drawBorder: false,
|
||||||
|
display: false,
|
||||||
|
},
|
||||||
|
ticks: {
|
||||||
|
display: false
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// $("#products-carousel").owlCarousel({
|
||||||
|
// items: 3,
|
||||||
|
// margin: 10,
|
||||||
|
// autoplay: true,
|
||||||
|
// autoplayTimeout: 5000,
|
||||||
|
// loop: true,
|
||||||
|
// responsive: {
|
||||||
|
// 0: {
|
||||||
|
// items: 2
|
||||||
|
// },
|
||||||
|
// 768: {
|
||||||
|
// items: 2
|
||||||
|
// },
|
||||||
|
// 1200: {
|
||||||
|
// items: 3
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
</script>
|
||||||
@endsection
|
@endsection
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
<div class="dropdown-list-content dropdown-list-message">
|
<div class="dropdown-list-content dropdown-list-message">
|
||||||
<a href="#" class="dropdown-item dropdown-item-unread">
|
<a href="#" class="dropdown-item dropdown-item-unread">
|
||||||
<div class="dropdown-item-avatar">
|
<div class="dropdown-item-avatar">
|
||||||
<img alt="image" src="assets/img/avatar/avatar-1.png" class="rounded-circle">
|
<img alt="image" src="{{asset('assets/img/avatar/avatar-1.png')}}" class="rounded-circle">
|
||||||
<div class="is-online"></div>
|
<div class="is-online"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-item-desc">
|
<div class="dropdown-item-desc">
|
||||||
@ -30,7 +30,7 @@
|
|||||||
</a>
|
</a>
|
||||||
<a href="#" class="dropdown-item dropdown-item-unread">
|
<a href="#" class="dropdown-item dropdown-item-unread">
|
||||||
<div class="dropdown-item-avatar">
|
<div class="dropdown-item-avatar">
|
||||||
<img alt="image" src="assets/img/avatar/avatar-2.png" class="rounded-circle">
|
<img alt="image" src="{{asset('assets/img/avatar/avatar-2.png')}}" class="rounded-circle">
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-item-desc">
|
<div class="dropdown-item-desc">
|
||||||
<b>Dedik Sugiharto</b>
|
<b>Dedik Sugiharto</b>
|
||||||
@ -40,7 +40,7 @@
|
|||||||
</a>
|
</a>
|
||||||
<a href="#" class="dropdown-item dropdown-item-unread">
|
<a href="#" class="dropdown-item dropdown-item-unread">
|
||||||
<div class="dropdown-item-avatar">
|
<div class="dropdown-item-avatar">
|
||||||
<img alt="image" src="assets/img/avatar/avatar-3.png" class="rounded-circle">
|
<img alt="image" src="{{asset('assets/img/avatar/avatar-3.png')}}" class="rounded-circle">
|
||||||
<div class="is-online"></div>
|
<div class="is-online"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-item-desc">
|
<div class="dropdown-item-desc">
|
||||||
@ -51,7 +51,7 @@
|
|||||||
</a>
|
</a>
|
||||||
<a href="#" class="dropdown-item">
|
<a href="#" class="dropdown-item">
|
||||||
<div class="dropdown-item-avatar">
|
<div class="dropdown-item-avatar">
|
||||||
<img alt="image" src="assets/img/avatar/avatar-4.png" class="rounded-circle">
|
<img alt="image" src="{{asset('assets/img/avatar/avatar-4.png')}}" class="rounded-circle">
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-item-desc">
|
<div class="dropdown-item-desc">
|
||||||
<b>Ardian Rahardiansyah</b>
|
<b>Ardian Rahardiansyah</b>
|
||||||
@ -61,7 +61,7 @@
|
|||||||
</a>
|
</a>
|
||||||
<a href="#" class="dropdown-item">
|
<a href="#" class="dropdown-item">
|
||||||
<div class="dropdown-item-avatar">
|
<div class="dropdown-item-avatar">
|
||||||
<img alt="image" src="assets/img/avatar/avatar-5.png" class="rounded-circle">
|
<img alt="image" src="{{asset('assets/img/avatar/avatar-5.png')}}" class="rounded-circle">
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-item-desc">
|
<div class="dropdown-item-desc">
|
||||||
<b>Alfa Zulkarnain</b>
|
<b>Alfa Zulkarnain</b>
|
||||||
@ -137,7 +137,7 @@
|
|||||||
</li>
|
</li>
|
||||||
<li class="dropdown"><a href="#" data-toggle="dropdown"
|
<li class="dropdown"><a href="#" data-toggle="dropdown"
|
||||||
class="nav-link dropdown-toggle nav-link-lg nav-link-user">
|
class="nav-link dropdown-toggle nav-link-lg nav-link-user">
|
||||||
<img alt="image" src="assets/img/avatar/avatar-1.png" class="rounded-circle mr-1">
|
<img alt="image" src="{{asset('assets/img/avatar/avatar-1.png')}}" class="rounded-circle mr-1">
|
||||||
<div class="d-sm-none d-lg-inline-block">Hi, {{ $name }}</div>
|
<div class="d-sm-none d-lg-inline-block">Hi, {{ $name }}</div>
|
||||||
</a>
|
</a>
|
||||||
<div class="dropdown-menu dropdown-menu-right">
|
<div class="dropdown-menu dropdown-menu-right">
|
||||||
|
@ -55,7 +55,7 @@
|
|||||||
href="{{ asset('assets/modules/datatables/DataTables-1.10.16/css/dataTables.bootstrap4.min.css') }}">
|
href="{{ asset('assets/modules/datatables/DataTables-1.10.16/css/dataTables.bootstrap4.min.css') }}">
|
||||||
<link rel="stylesheet" href="{{ asset('assets/modules/datatables/Select-1.2.4/css/select.bootstrap4.min.css') }}">
|
<link rel="stylesheet" href="{{ asset('assets/modules/datatables/Select-1.2.4/css/select.bootstrap4.min.css') }}">
|
||||||
<!-- Start GA -->
|
<!-- Start GA -->
|
||||||
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-94034622-3"></script>
|
{{-- <script async src="https://www.googletagmanager.com/gtag/js?id=UA-94034622-3"></script>
|
||||||
<script>
|
<script>
|
||||||
window.dataLayer = window.dataLayer || [];
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
|
||||||
@ -65,8 +65,30 @@
|
|||||||
gtag('js', new Date());
|
gtag('js', new Date());
|
||||||
|
|
||||||
gtag('config', 'UA-94034622-3');
|
gtag('config', 'UA-94034622-3');
|
||||||
</script>
|
</script> --}}
|
||||||
|
|
||||||
|
<!-- /END GA -->
|
||||||
|
|
||||||
|
{{-- JS --}}
|
||||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
|
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<header class="header-area header-sticky">
|
||||||
|
@include('admin.layout.header')
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main id="main" style="min-height: 100vh;">
|
||||||
|
@include('admin.layout.sidebar')
|
||||||
|
@yield('content')
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer id="footer">
|
||||||
|
@include('admin.layout.footer')
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
@ -110,23 +132,6 @@
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<!-- /END GA -->
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<header class="header-area header-sticky">
|
|
||||||
@include('admin.layout.header')
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<main id="main" style="min-height: 100vh;">
|
|
||||||
@include('admin.layout.sidebar')
|
|
||||||
@yield('content')
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<footer id="footer">
|
|
||||||
@include('admin.layout.footer')
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
<!-- General JS Scripts -->
|
<!-- General JS Scripts -->
|
||||||
<script src="{{ asset('assets/modules/jquery.min.js') }}"></script>
|
<script src="{{ asset('assets/modules/jquery.min.js') }}"></script>
|
||||||
@ -145,11 +150,10 @@
|
|||||||
<script src="{{ asset('assets/modules/summernote/summernote-bs4.js') }}"></script>
|
<script src="{{ asset('assets/modules/summernote/summernote-bs4.js') }}"></script>
|
||||||
<script src="{{ asset('assets/modules/chocolat/dist/js/jquery.chocolat.min.js') }}"></script>
|
<script src="{{ asset('assets/modules/chocolat/dist/js/jquery.chocolat.min.js') }}"></script>
|
||||||
|
|
||||||
<!-- Page Specific JS File -->
|
|
||||||
<script src="{{ asset('assets/js/page/index.js') }}"></script>
|
|
||||||
<script src="{{ asset('assets/js/page/index-0.js') }}"></script>
|
|
||||||
<!-- JS Libraies -->
|
<!-- JS Libraies -->
|
||||||
<script src="{{ asset('assets/modules/datatables/datatables.min.js') }}"></script>
|
<script src="{{ asset('assets/modules/datatables/datatables.min.js') }}"></script>
|
||||||
|
{{-- <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.11.5/css/jquery.dataTables.css"> --}}
|
||||||
|
{{-- <script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.11.5/js/jquery.dataTables.js"></script> --}}
|
||||||
<script src="{{ asset('assets/modules/datatables/DataTables-1.10.16/js/dataTables.bootstrap4.min.js') }}"></script>
|
<script src="{{ asset('assets/modules/datatables/DataTables-1.10.16/js/dataTables.bootstrap4.min.js') }}"></script>
|
||||||
<script src="{{ asset('assets/modules/datatables/Select-1.2.4/js/dataTables.select.min.js') }}"></script>
|
<script src="{{ asset('assets/modules/datatables/Select-1.2.4/js/dataTables.select.min.js') }}"></script>
|
||||||
<script src="{{ asset('assets/modules/jquery-ui/jquery-ui.min.js') }}"></script>
|
<script src="{{ asset('assets/modules/jquery-ui/jquery-ui.min.js') }}"></script>
|
||||||
@ -176,28 +180,6 @@
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<script>
|
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
|
||||||
const toggleSwitches = document.querySelectorAll('.switch input[type="checkbox"]');
|
|
||||||
toggleSwitches.forEach(toggleSwitch => {
|
|
||||||
toggleSwitch.addEventListener('change', function() {
|
|
||||||
const parentRow = toggleSwitch.closest('tr');
|
|
||||||
const statusBadge = parentRow.querySelector('.badge');
|
|
||||||
const onText = toggleSwitch.nextElementSibling.getAttribute('data-on-text');
|
|
||||||
const offText = toggleSwitch.nextElementSibling.getAttribute('data-off-text');
|
|
||||||
if (toggleSwitch.checked) {
|
|
||||||
statusBadge.textContent = onText === 'Yes' ? 'Active' : 'Non Active';
|
|
||||||
statusBadge.classList.remove('badge-danger');
|
|
||||||
statusBadge.classList.add('badge-success');
|
|
||||||
} else {
|
|
||||||
statusBadge.textContent = offText === 'No' ? 'Non Active' : 'Active';
|
|
||||||
statusBadge.classList.remove('badge-success');
|
|
||||||
statusBadge.classList.add('badge-danger');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
@ -8,14 +8,14 @@
|
|||||||
</div>
|
</div>
|
||||||
<ul class="sidebar-menu">
|
<ul class="sidebar-menu">
|
||||||
<li class="menu-header">Dashboard</li>
|
<li class="menu-header">Dashboard</li>
|
||||||
<li><a class="nav-link active" href="{{route('index')}}"><i class="fas fa-fire"></i> <span>Dashboard</span></a></li>
|
<li ><a class="nav-link active" href="{{route('index')}}"><i class="fas fa-fire"></i> <span>Dashboard</span></a></li>
|
||||||
<li class="menu-header">Starter</li>
|
<li class="menu-header">Starter</li>
|
||||||
<li><a class="nav-link" href="{{route('user.index')}}"><i class="far fa-user"></i> <span>User</span></a></li>
|
<li><a class="nav-link" href="{{route('admin-user.index')}}"><i class="far fa-user"></i> <span>User</span></a></li>
|
||||||
<li><a class="nav-link" href="{{route('transaction.index')}}"><i
|
<li><a class="nav-link" href="{{route('admin-transaction.index')}}"><i
|
||||||
class="fas fa-columns"></i><span>Transaction</span></a></li>
|
class="fas fa-columns"></i><span>Transaction</span></a></li>
|
||||||
<li><a class="nav-link" href="{{route('refund.index')}}"><i class="far fa-square"></i> <span>List Refund</span></a>
|
<li><a class="nav-link" href="{{route('admin-refund.index')}}"><i class="far fa-square"></i> <span>List Refund</span></a>
|
||||||
</li>
|
</li>
|
||||||
<li><a class="nav-link" href="{{route('setting.index')}}"><i class="fas fa-cog"></i> <span>Setting</span></a></li>
|
<li><a class="nav-link" href="{{route('admin-setting.index')}}"><i class="fas fa-cog"></i> <span>Setting</span></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</aside>
|
</aside>
|
||||||
</div>
|
</div>
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
<table class="table table-striped" id="table-1">
|
<table class="table table-striped" id="table-2">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="text-center">
|
<th class="text-center">
|
||||||
|
@ -12,30 +12,27 @@
|
|||||||
<div class="section-body">
|
<div class="section-body">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<form>
|
<form action="{{route('admin-setting.store')}}" method="POST">
|
||||||
|
@csrf
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<h4>Add Data Setting</h4>
|
<h4>Add Data Setting</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Bulan</label>
|
<label>Bulan</label>
|
||||||
<input type="text" class="form-control" required="">
|
<input type="month" class="form-control" name="bulan_tahun" required>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
{{-- <div class="form-group">
|
||||||
<label>Tahun</label>
|
<label>Tahun</label>
|
||||||
<input type="number" class="form-control" required="">
|
<input type="number" class="form-control" name="tahun" required>
|
||||||
</div>
|
</div> --}}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Persentase</label>
|
<label>Persentase</label>
|
||||||
<input type="text" class="form-control">
|
<input type="number" class="form-control" name="persentase" required>
|
||||||
</div>
|
|
||||||
<div class="form-group mb-0">
|
|
||||||
<label>Status</label>
|
|
||||||
<input type="text" class="form-control" required=""></input>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-footer text-right">
|
<div class="card-footer text-right">
|
||||||
<button class="btn btn-primary">Submit</button>
|
<button class="btn btn-primary" id="simpan" type="submit">Simpan</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
@extends('Admin.layout.main')
|
@extends('admin.layout.main')
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="main-content">
|
<div class="main-content">
|
||||||
<section class="section">
|
<section class="section">
|
||||||
<div class="section-header">
|
<div class="section-header">
|
||||||
<h1>Setting</h1>
|
<h1>Setting</h1>
|
||||||
<div class="section-header-breadcrumb">
|
<div class="section-header-breadcrumb">
|
||||||
<div class="breadcrumb-item active"><a href="{{route('index')}}">Dashboard</a></div>
|
<div class="breadcrumb-item active"><a href="{{ route('index') }}">Dashboard</a></div>
|
||||||
<div class="breadcrumb-item">Setting</div>
|
<div class="breadcrumb-item">Setting</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -17,39 +17,36 @@
|
|||||||
data-target="#ModalSetting">Add Data</a>
|
data-target="#ModalSetting">Add Data</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
<table class="table table-striped" id="table-1">
|
<table class="table table-striped" id="table-2">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>#</th>
|
<th>#</th>
|
||||||
<th>Bulan</th>
|
<th>Bulan</th>
|
||||||
<th>Tahun</th>
|
<th>Tahun</th>
|
||||||
<th>Persentase</th>
|
<th>Persentase (%)</th>
|
||||||
<th>Status</th>
|
<th>Status</th>
|
||||||
<th>Action</th>
|
<th>Action</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@foreach ($setting as $settings)
|
@foreach ($settings as $setting)
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ $settings['no'] }}</td>
|
<td>{{ $loop->iteration }}</td>
|
||||||
<td>{{ $settings['month'] }}</td>
|
<td>{{ DateTime::createFromFormat('!m', $setting->bulan)->format('F') }}</td>
|
||||||
<td>{{ $settings['year'] }}</td>
|
<td>{{ $setting->tahun }}</td>
|
||||||
<td>{{ $settings['persentase'] }}</td>
|
<td>{{ $setting->persentase }}</td>
|
||||||
|
{{-- <td hidden>{{$setting->id}}</td> --}}
|
||||||
<td>
|
<td>
|
||||||
@php
|
<div
|
||||||
$statusClass = '';
|
class="badge {{ $setting->status == 'Active' ? 'badge-success' : 'badge-danger' }}">
|
||||||
if ($settings['status'] === 'Active') {
|
{{ $setting->status }}</div>
|
||||||
$statusClass = 'badge-success';
|
|
||||||
} elseif ($settings['status'] === 'Non Active') {
|
|
||||||
$statusClass = 'badge-danger';
|
|
||||||
}
|
|
||||||
@endphp
|
|
||||||
<div class="badge {{ $statusClass }}">{{ $settings['status'] }}</div>
|
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<label class="switch">
|
<label class="switch">
|
||||||
<input type="checkbox" @if ($settings['status'] === 'Active') checked @endif>
|
<input type="checkbox" @if ($setting->status === 'Active') checked @endif
|
||||||
<span class="slider round" data-on-text="Yes" data-off-text="No" id="checkOnOf"></span>
|
data-id="{{ $setting->id }}">
|
||||||
|
<span class="slider round" data-on-text="Yes" data-off-text="No"
|
||||||
|
id="checkOnOf"></span>
|
||||||
</label>
|
</label>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -62,5 +59,59 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
@include('Admin.setting.add-Data')
|
@include('admin.setting.add-data')
|
||||||
|
<script>
|
||||||
|
$(document).ready(function() {
|
||||||
|
const table = $('#table-2').DataTable(); // Inisialisasi DataTable
|
||||||
|
|
||||||
|
$('#table-2').on('change', '.switch input[type="checkbox"]', function() {
|
||||||
|
const parentRow = $(this).closest('tr');
|
||||||
|
const csrfToken = $('meta[name="csrf-token"]').attr('content');
|
||||||
|
const statusBadge = parentRow.find('.badge');
|
||||||
|
const onText = $(this).next().data('on-text');
|
||||||
|
const offText = $(this).next().data('off-text');
|
||||||
|
const isChecked = $(this).prop('checked');
|
||||||
|
let dataId = $(this).data("id");
|
||||||
|
|
||||||
|
const rowData = table.row(parentRow).data(); // Dapatkan data baris dari DataTable
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: "{{ route('admin-setting.update', ':admin_setting') }}".replace(':admin_setting', dataId),
|
||||||
|
type: 'PUT',
|
||||||
|
data: {
|
||||||
|
_token: csrfToken,
|
||||||
|
},
|
||||||
|
success: function(response) {
|
||||||
|
Swal.fire({
|
||||||
|
title: response.status ? 'Berhasil!' : 'Gagal!',
|
||||||
|
text: response.message,
|
||||||
|
icon: response.status ? 'success' : 'error',
|
||||||
|
confirmButtonText: 'OK'
|
||||||
|
}).then(function() {
|
||||||
|
if (isChecked) {
|
||||||
|
// location.reload();
|
||||||
|
statusBadge.text(onText === 'Yes' ? 'Active' :
|
||||||
|
'Nonactive');
|
||||||
|
statusBadge.removeClass('badge-danger').addClass(
|
||||||
|
'badge-success');
|
||||||
|
} else {
|
||||||
|
statusBadge.text(offText === 'No' ? 'Nonactive' :
|
||||||
|
'Active');
|
||||||
|
statusBadge.removeClass('badge-success').addClass(
|
||||||
|
'badge-danger');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
error: function(error) {
|
||||||
|
Swal.fire({
|
||||||
|
title:'Error!',
|
||||||
|
text:'Terjadi error, '+error,
|
||||||
|
icon:'error',
|
||||||
|
confirmButtonText : 'OK'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
@endsection
|
@endsection
|
||||||
|
@ -75,7 +75,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<a href="{{route('transaction.index')}}" class="btn btn-primary mx-1">Back</a>
|
<a href="{{route('admin-transaction.index')}}" class="btn btn-primary mx-1">Back</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
<table class="table table-striped" id="table-1">
|
<table class="table table-striped" id="table-2">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="text-center">
|
<th class="text-center">
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<div class="section-header">
|
<div class="section-header">
|
||||||
<h1>User</h1>
|
<h1>User</h1>
|
||||||
<div class="section-header-breadcrumb">
|
<div class="section-header-breadcrumb">
|
||||||
<div class="breadcrumb-item active"><a href="{{route('index')}}">Dashboard</a></div>
|
<div class="breadcrumb-item active"><a href="{{ route('index') }}">Dashboard</a></div>
|
||||||
<div class="breadcrumb-item">User</div>
|
<div class="breadcrumb-item">User</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -28,22 +28,22 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@foreach ($list_users as $list_user)
|
@foreach ($list_users as $user)
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ $loop->iteration }}</td>
|
<td>{{ $loop->iteration }}</td>
|
||||||
<td>{{ $list_user->id }}</td>
|
<td>{{ $user->id }}</td>
|
||||||
<td>
|
<td>
|
||||||
<figure class="avatar mr-2 avatar-xl">
|
<figure class="avatar mr-2 avatar-xl">
|
||||||
<img src="{{ asset('assets/img/avatar/avatar-6.png') }}" alt="...">
|
<img src="{{ asset('assets/img/avatar/avatar-6.png') }}" alt="...">
|
||||||
</figure>
|
</figure>
|
||||||
</td>
|
</td>
|
||||||
<td>{{ $list_user->nama }}</td>
|
<td>{{ $user->nama }}</td>
|
||||||
<td>{{ $list_user->email }}</td>
|
<td>{{ $user->email }}</td>
|
||||||
<td>{{ $list_user->created_at }}</td>
|
<td>{{ $user->created_at }}</td>
|
||||||
<td>
|
<td>
|
||||||
<div
|
<div
|
||||||
class="badge {{ $list_user->status == 'Finished' ? 'badge-success' : 'badge-danger' }}">
|
class="badge {{ $user->status == 'Finished' ? 'badge-success' : ($user->status == 'Progress' ? 'badge-info' : 'badge-warning') }}">
|
||||||
{{ $list_user->status }}</div>
|
{{ $user->status }}</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
@ -53,9 +53,14 @@
|
|||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu">
|
<div class="dropdown-menu">
|
||||||
<a class="dropdown-item"
|
<a class="dropdown-item"
|
||||||
href="{{ route('user.show', $list_user->id) }}">Details</a>
|
href="{{ route('admin-user.show', $user->id) }}">Details</a>
|
||||||
|
@if ($user->status == 'Progress')
|
||||||
<a class="dropdown-item" href="#"
|
<a class="dropdown-item" href="#"
|
||||||
data-id="{{ $list_user->id }}" id="deleteUser">Delete</a>
|
data-id="{{ $user->id }}" id="approveUser">Setujui
|
||||||
|
Akun</a>
|
||||||
|
@endif
|
||||||
|
<a class="dropdown-item" href="#"
|
||||||
|
data-id="{{ $user->id }}" id="deleteUser">Delete</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@ -71,6 +76,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
$(function() {
|
$(function() {
|
||||||
|
// Hapus data
|
||||||
$('#table-1').on('click', '#deleteUser', function() {
|
$('#table-1').on('click', '#deleteUser', function() {
|
||||||
const csrfToken = $('meta[name="csrf-token"]').attr('content');
|
const csrfToken = $('meta[name="csrf-token"]').attr('content');
|
||||||
let dataId = $(this).data("id");
|
let dataId = $(this).data("id");
|
||||||
@ -91,9 +97,11 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
'url': "{{ route('user.destroy', ':user') }}".replace(':user',
|
url: "{{ route('admin-user.destroy', ':admin_user') }}"
|
||||||
|
.replace(
|
||||||
|
':admin_user',
|
||||||
dataId),
|
dataId),
|
||||||
'type': 'DELETE',
|
type: 'DELETE',
|
||||||
processData: false,
|
processData: false,
|
||||||
contentType: false,
|
contentType: false,
|
||||||
success: function(response) {
|
success: function(response) {
|
||||||
@ -103,6 +111,9 @@
|
|||||||
text: response.message,
|
text: response.message,
|
||||||
icon: response.status ? 'success' : 'error',
|
icon: response.status ? 'success' : 'error',
|
||||||
confirmButtonText: 'OK'
|
confirmButtonText: 'OK'
|
||||||
|
}).then(function() {
|
||||||
|
// location.reload();
|
||||||
|
console.log(response);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
error: function(error) {
|
error: function(error) {
|
||||||
@ -122,7 +133,90 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
})
|
});
|
||||||
|
|
||||||
|
// Approved dan deny Akun
|
||||||
|
$('#table-1').on('click', '#approveUser', function() {
|
||||||
|
const csrfToken = $('meta[name="csrf-token"]').attr('content');
|
||||||
|
let dataId = $(this).data("id");
|
||||||
|
|
||||||
|
Swal.fire({
|
||||||
|
title: '',
|
||||||
|
text: 'Apakah yakin ingin menyutuji akun user ini?',
|
||||||
|
icon: 'info',
|
||||||
|
confirmButtonText: 'Ya, setuju!',
|
||||||
|
showDenyButton: true,
|
||||||
|
denyButtonText: 'Tidak, jangan setujui!',
|
||||||
|
}).then((result) => {
|
||||||
|
if (result.isConfirmed) {
|
||||||
|
|
||||||
|
$.ajaxSetup({
|
||||||
|
headers: {
|
||||||
|
'X-CSRF-TOKEN': csrfToken
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: "{{ route('admin-user.approve', ':id') }}".replace(
|
||||||
|
':id', dataId),
|
||||||
|
type: 'PUT',
|
||||||
|
success: function(response) {
|
||||||
|
Swal.fire({
|
||||||
|
title: response.status ? 'Berhasil!' :
|
||||||
|
'Gagal!',
|
||||||
|
text: response.message,
|
||||||
|
icon: response.status ? 'success' : 'error',
|
||||||
|
confirmButtonText: 'OK'
|
||||||
|
}).then(function() {
|
||||||
|
location.reload();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
error: function(error) {
|
||||||
|
Swal.fire({
|
||||||
|
title: 'Gagal!',
|
||||||
|
text: 'Tidak ada data yang dihapus, karena ' +
|
||||||
|
error,
|
||||||
|
icon: 'error'
|
||||||
|
}).then(function() {
|
||||||
|
location.reload();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else if (result.isDenied) {
|
||||||
|
|
||||||
|
$.ajaxSetup({
|
||||||
|
headers: {
|
||||||
|
'X-CSRF-TOKEN': csrfToken
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: "{{ route('admin-user.deny', ':id') }}".replace(
|
||||||
|
':id', dataId),
|
||||||
|
type: 'PUT',
|
||||||
|
success: function(response) {
|
||||||
|
Swal.fire({
|
||||||
|
title: response.status ? 'Berhasil!' :
|
||||||
|
'Gagal!',
|
||||||
|
text: response.message,
|
||||||
|
icon: response.status ? 'success' : 'error',
|
||||||
|
confirmButtonText: 'OK'
|
||||||
|
}).then(function() {
|
||||||
|
location.reload();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
error: function(error) {
|
||||||
|
Swal.fire({
|
||||||
|
title: 'Gagal!',
|
||||||
|
text: 'Gagal mengubah status akun, karena ' +
|
||||||
|
error,
|
||||||
|
icon: 'info'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
@endsection
|
@endsection
|
||||||
|
@ -1,17 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use App\Http\Controllers\Admin\RefundController;
|
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
use App\Models\Refunds;
|
use App\Models\Refunds;
|
||||||
use App\Models\Refund;
|
|
||||||
use App\Models\Settings;
|
|
||||||
use App\Models\Setting;
|
|
||||||
use App\Models\Transactions;
|
use App\Models\Transactions;
|
||||||
use App\Models\Transaction;
|
use App\Http\Controllers\Admin\AdminRefundController;
|
||||||
use App\Models\User;
|
use App\Http\Controllers\Admin\AdminUserController;
|
||||||
use App\Http\Controllers\Admin\UserController;
|
use App\Http\Controllers\Admin\AdminSettingController;
|
||||||
use App\Http\Controllers\Admin\SettingController;
|
use App\Http\Controllers\Admin\AdminTransactionController;
|
||||||
use App\Http\Controllers\Admin\TransactionController;
|
|
||||||
use App\Http\Controllers\Login\LoginController;
|
use App\Http\Controllers\Login\LoginController;
|
||||||
|
|
||||||
// use Illuminate\Foundation\Auth\User;
|
// use Illuminate\Foundation\Auth\User;
|
||||||
@ -103,7 +98,7 @@ Route::get('/profile',function() {
|
|||||||
// });
|
// });
|
||||||
|
|
||||||
|
|
||||||
Route::resource('/',LoginController::class);
|
Route::resource('/login',LoginController::class);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -111,17 +106,24 @@ Route::resource('/',LoginController::class);
|
|||||||
|
|
||||||
|
|
||||||
// admin dan user
|
// admin dan user
|
||||||
Route::middleware(['auth'])->group(function(){
|
// Route::middleware(['auth'])->group(function(){
|
||||||
Route::prefix('admin')->group(function(){
|
Route::prefix('admin')->group(function(){
|
||||||
// Tampilan dashboard admin beserta perhitungan
|
// Tampilan dashboard admin beserta perhitungan
|
||||||
// Tampilan, aprove atau deny dan hapus user
|
// Tampilan, aprove atau deny dan hapus user
|
||||||
Route::resource('user', UserController::class);
|
// Route::resource('admin-user', AdminUserController::class);
|
||||||
|
Route::controller(AdminUserController::class)->group(function(){
|
||||||
|
Route::get('admin-user','index')->name('admin-user.index');
|
||||||
|
Route::get('admin-user/{id}','show')->name('admin-user.show');
|
||||||
|
Route::delete('admin-user/{id}','delete')->name('admin-user.destroy');
|
||||||
|
Route::put('admin-user/approve-user/{id}', 'approveUser')->name('admin-user.approve');
|
||||||
|
Route::put('admin-user/deny-user/{id}', 'denyUser')->name('admin-user.deny');
|
||||||
|
});
|
||||||
// Tampilan transaksi
|
// Tampilan transaksi
|
||||||
Route::resource('transaction', TransactionController::class);
|
Route::resource('admin-transaction', AdminTransactionController::class);
|
||||||
// Tampilan, approve atau deny dan hapus refund
|
// Tampilan, approve atau deny dan hapus refund
|
||||||
Route::resource('refund',RefundController::class);
|
Route::resource('admin-refund',AdminRefundController::class);
|
||||||
// Tampilan, tambah, ubah dan hapus kebijakan persentase perusahaan
|
// Tampilan, tambah, ubah dan hapus kebijakan persentase perusahaan
|
||||||
Route::resource('setting',SettingController::class);
|
Route::resource('admin-setting',AdminSettingController::class);
|
||||||
});
|
});
|
||||||
Route::prefix('user')->group(function(){
|
Route::prefix('user')->group(function(){
|
||||||
// Tampilan dashboard user beserta perhitungan
|
// Tampilan dashboard user beserta perhitungan
|
||||||
@ -129,5 +131,6 @@ Route::middleware(['auth'])->group(function(){
|
|||||||
// Tampilan transaksi, bayar, update status pengiriman dan refund
|
// Tampilan transaksi, bayar, update status pengiriman dan refund
|
||||||
// Tampilan refund
|
// Tampilan refund
|
||||||
// Tampilan
|
// Tampilan
|
||||||
|
// Route::resource('user', UserController::class);
|
||||||
});
|
});
|
||||||
});
|
// });
|
||||||
|
Loading…
Reference in New Issue
Block a user