crud peneliti asing

parent 288c30f2
......@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use App\Models\Biodata;
use Exception;
use Illuminate\Http\Request;
use App\Models\Admin\MsBidangPenelitianKategori as MsBidangPenelitianKategori;
class GetDataController extends Controller
{
......@@ -19,4 +20,17 @@ class GetDataController extends Controller
return response('Not Found', 404);
}
}
public function getChildren(Request $request)
{
$class = 'App\\Models\\Admin\\'.$request->parent;
$parent = $class::query()->with('children')->find(decrypt($request->id));
$children = $parent->children;
$str = '';
foreach ($children as $child) {
$str .= '<option value="'.encrypt($child->id).'">'.$child->nama.'</option>';
}
return response($str, 200);
}
}
......@@ -19,7 +19,7 @@ class KekayaanIntelController extends Controller
*/
public function index()
{
$data = KekayaanIntelektual::query()->orderBy('updated_at', 'desc')->get();
$data = KekayaanIntelektual::query()->with('dosen')->orderBy('updated_at', 'desc')->get();
return view('user.kekayaan.index', ['data' => $data]);
}
......
......@@ -3,7 +3,13 @@
namespace App\Http\Controllers\User;
use App\Http\Controllers\Controller;
use App\Models\Admin\MsBidangKepakaranKategori;
use App\Models\Admin\MsBidangPenelitianKategori;
use App\Models\Admin\MsNegara;
use App\Models\User\PenelitiAsing;
use Exception;
use Illuminate\Http\Request;
use Validator;
class PenelitiAsingController extends Controller
{
......@@ -14,8 +20,8 @@ class PenelitiAsingController extends Controller
*/
public function index()
{
//
return view('user.penelitiasing.index');
$data['rs'] = PenelitiAsing::query()->with(['negara', 'bidang'])->orderBy('updated_at')->get();
return view('user.penelitiasing.index', $data);
}
/**
......@@ -25,64 +31,105 @@ class PenelitiAsingController extends Controller
*/
public function create()
{
//
return view('user.penelitiasing.create');
$kategori = MsBidangKepakaranKategori::query()->orderBy('namabidang')->get();
$negara = MsNegara::query()->orderBy('nama', 'asc')->get();
return view('user.penelitiasing.create', [
'kategori' => $kategori,
'negara' => $negara,
'edit' => false
]);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
$data = $request->except('_token');
Validator::make($data, PenelitiAsing::RULES, PenelitiAsing::ERROR_MESSAGES)->validate();
$data['bidang_id'] = decrypt($data['bidang_id']);
$data['negara_id'] = decrypt($data['negara_id']);
try{
PenelitiAsing::query()->create($data);
return redirect()->route('penelitiasing.index');
}
catch(Exception $ex){
return redirect()->back()->withInput();
}
}
/**
* Display the specified resource.
*
* @param int $id
* @param int $id
*
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @param int $id
*
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
$data['kategori'] = MsBidangKepakaranKategori::query()->orderBy('namabidang')->get();
$data['negara'] = MsNegara::query()->orderBy('nama', 'asc')->get();
$data['edit'] = true;
$data['data'] = PenelitiAsing::query()->find(decrypt($id));
return view('user.penelitiasing.create', $data);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @param int $id
*
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
$data = $request->except('_token');
Validator::make($data, PenelitiAsing::RULES, PenelitiAsing::ERROR_MESSAGES)->validate();
$data['bidang_id'] = decrypt($data['bidang_id']);
$data['negara_id'] = decrypt($data['negara_id']);
try{
PenelitiAsing::query()->find(decrypt($id))->update($data);
return redirect()->route('penelitiasing.index');
}
catch(Exception $ex){
return redirect()->back()->withInput();
}
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @param int $id
*
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
try{
PenelitiAsing::query()->find(decrypt($id))->delete();
return redirect()->route('penelitiasing.index');
}
catch(Exception $ex){
return redirect()->route('penelitiasing.index');
}
}
}
<?php
namespace App\Models\Admin;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class MsBidangKepakaran extends Model
{
use HasFactory;
public $incrementing = false;
protected $table = 'ms_bidang_kepakaran';
protected $keyType = 'string';
}
<?php
namespace App\Models\Admin;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class MsBidangKepakaranKategori extends Model
{
use HasFactory;
public $incrementing = false;
protected $table = 'ms_bidang_kepakaran_kategori';
protected $keyType = 'string';
public function children()
{
return $this->hasMany(MsBidangKepakaran::class, 'id_kategori_kepakaran', 'id');
}
}
<?php
namespace App\Models\Admin;
use App\Traits\UuidTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class MsBidangPenelitian extends Model
{
use HasFactory;
use UuidTrait;
public $incrementing = false;
protected $table = 'ms_bidang_penelitian';
protected $keyType = 'string';
}
<?php
namespace App\Models\Admin;
use App\Traits\UuidTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class MsBidangPenelitianKategori extends Model
{
use HasFactory;
use UuidTrait;
public $incrementing = false;
protected $table = 'ms_bidang_penelitian_kategori';
protected $keyType = 'string';
public function children()
{
return $this->hasMany(MsBidangPenelitian::class, 'id_kategori', 'id');
}
}
<?php
namespace App\Models\Admin;
use App\Traits\UuidTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class MsNegara extends Model
{
use HasFactory;
use UuidTrait;
public $incrementing = false;
protected $table = 'ms_negara';
protected $keyType = 'string';
}
......@@ -2,6 +2,8 @@
namespace App\Models\User;
use App\Models\Admin\MsBidangKepakaran;
use App\Models\Admin\MsNegara;
use App\Traits\UuidTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
......@@ -16,6 +18,36 @@ class PenelitiAsing extends Model
protected $keyType = 'string';
protected $fillable = [
'id', 'nama', 'jenis_kelamin', 'institusi', 'negara', 'pendidikan', 'bidang', 'lamatinggal', 'userid_created', 'userid_updated', 'created_at', 'updated_at',
'id', 'nama', 'jenis_kelamin', 'institusi', 'negara_id', 'pendidikan', 'bidang_id', 'lamatinggal', 'userid_created', 'userid_updated', 'created_at', 'updated_at',
];
public const RULES = [
'nama' => 'required',
'jenis_kelamin' => 'required',
'institusi' => 'required',
'negara_id' => 'required',
'pendidikan' => 'required',
'bidang_id' => 'required',
'lamatinggal' => 'required',
];
public const ERROR_MESSAGES = [
'nama.required' => 'nama tidak boleh kosong',
'jenis_kelamin.required' => 'jenis_kelamin tidak boleh kosong',
'institusi.required' => 'institusi tidak boleh kosong',
'negara_id.required' => 'negara tidak boleh kosong',
'pendidikan.required' => 'pendidikan tidak boleh kosong',
'bidang_id.required' => 'bidang tidak boleh kosong',
'lamatinggal.required' => 'lamatinggal tidak boleh kosong',
];
public function negara()
{
return $this->belongsTo(MsNegara::class, 'negara_id', 'id');
}
public function bidang()
{
return $this->belongsTo(MsBidangKepakaran::class, 'bidang_id', 'id');
}
}
......@@ -41,7 +41,7 @@
{{ $item->nidn }}
</td>
<td>
<a class="btn btn-warning" href="{{ route('kekayaanintelek.edit', ['kekayaanintelek' => encrypt($item->id)]) }}">Hapus</a>
<a class="btn btn-warning" href="{{ route('kekayaanintelek.edit', ['kekayaanintelek' => encrypt($item->id)]) }}">Edit</a>
<button class="btn btn-danger delete" type="button" data-target="form_kekayaan_{{ $loop->iteration }}">Hapus</button>
<form id="form_kekayaan_{{ $loop->iteration }}" action="{{ route('kekayaanintelek.destroy', ['kekayaanintelek' => encrypt($item->id)]) }}" method="POST">
{{ method_field('DELETE') }}
......
......@@ -15,13 +15,17 @@
$menu = 'dashboard';
@endphp
<div class="account-settings-container layout-top-spacing">
<form id="contact" class="section contact" action="{{ $edit ? route('penelitiasing.update', ['penelitiasing' => encrypt($data->id)]) : route('penelitiasing.store') }}" method="POST">
<div class="account-content">
<div class="scrollspy-example" data-spy="scroll" data-target="#account-settings-scroll" data-offset="-100">
<div class="row">
@if ($edit)
{{ method_field('PUT') }}
@endif
<div class="col-xl-12 col-lg-12 col-md-12 layout-spacing">
<form id="contact" class="section contact">
@csrf
<div class="info">
<h5 class="">Data Peneliti Asing</h5>
<div class="row">
......@@ -30,7 +34,7 @@
<div class="col-md-6">
<div class="form-group">
<label>Nama Lengkap & Gelar</label>
<input type="text" class="form-control mb-4" id="unit_pelaksanaan" placeholder="Nama Lengkap & Gelar">
<input type="text" class="form-control mb-4" id="unit_pelaksanaan" placeholder="Nama Lengkap & Gelar" name="nama" value="{{ $edit ? $data->nama : old('nama') }}" required>
</div>
</div>
<div class="col-md-6">
......@@ -38,43 +42,59 @@
<div class="col-md-6">
<div class="form-group">
<label>Jenis Kelamin</label>
<select class="form-control" id="status">
<option>Laki-Laki</option>
<option>Perempuan</option>
<select class="form-control" id="jenis-kelamin" name="jenis_kelamin" required>
<option {{ $edit ? ($data->jenis_kelamin == 'Laki-Laki' ? 'selected' : '') : '' }}>Laki-Laki</option>
<option {{ $edit ? ($data->jenis_kelamin == 'Perempuan' ? 'selected' : '') : '' }}>Perempuan</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Institusi Asal</label>
<input type="text" class="form-control mb-4" id="unit_pelaksanaan" placeholder="Institusi Asal">
<input type="text" class="form-control mb-4" id="unit_pelaksanaan" name="institusi" placeholder="Institusi Asal" value="{{ $edit ? $data->institusi : old('institusi') }}" required>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Jenis Kelamin</label>
<select class="form-control" id="jenis_kelamin">
<option>Laki-Laki</option>
<option>Perempuan</option>
<label>Negara</label>
<select class="form-control" id="negara" name="negara_id" required>
<option value="">Pilih Negara</option>
@foreach ($negara as $item)
<option value="{{ encrypt($item->id) }}" {{ $edit ? ($data->negara_id == $item->id ? 'selected' : '') : (old('negara_id') ? (decrypt(old('negara_id')) == $item->id ? 'selected' : '') : '') }}>{{ $item->nama }}</option>
@endforeach
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Pendidikan Tertinggi</label>
<select class="form-control" id="pendidikan">
<option>Master</option>
<option>Doctor</option>
<select class="form-control" id="pendidikan" name="pendidikan" required>
<option {{ $edit ? ($data->pendidikan == 'Master' ? 'selected' : '') : '' }}>Master</option>
<option {{ $edit ? ($data->pendidikan == 'Doctor' ? 'selected' : '') : '' }}>Doctor</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Bidang Kepakaran</label>
<select class="form-control" id="bidangkepakaran">
<option>Master</option>
<option>Doctor</option>
</select>
<div class="row">
<div class="col-md-6">
<select class="form-control" id="bidang-kepakaran-kategori" onchange="getChildren(this)" data-parent="MsBidangKepakaranKategori" data-target="bidang-kepakaran">
<option value="">Pilih Kategori</option>
@foreach ($kategori as $item)
<option value="{{ encrypt($item->id) }}">{{ $item->namabidang }}</option>
@endforeach
</select>
</div>
<div class="col-md-6">
<select class="form-control" id="bidang-kepakaran" name="bidang_id" required>
@if ($edit)
<option value="{{ encrypt($data->bidang_id) }}">{{ $data->bidang->nama }}</option>
@endif
</select>
</div>
</div>
</div>
</div>
<div class="col-md-6">
......@@ -82,26 +102,26 @@
<div class="col-md-6">
<div class="form-group">
<label>Lama Tinggal</label>
<input type="text" class="form-control mb-4" id="nomor_kontrak" placeholder="Lama Tinggal">
<input type="text" class="form-control mb-4" id="nomor_kontrak" placeholder="Lama Tinggal" name="lamatinggal" value="{{ $edit ? $data->lamatinggal : old('lamatinggal') }}" required>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="account-settings-footer">
<div class="as-footer-container">
<button id="multiple-reset" class="btn btn-warning">Batal</button>
<button id="multiple-messages" class="btn btn-primary">Save Changes</button>
<div class="account-settings-footer">
<div class="as-footer-container">
<button id="multiple-reset" class="btn btn-warning">Batal</button>
<button id="multiple-messages" class="btn btn-primary">Save Changes</button>
</div>
</div>
</div>
</form>
</div>
@endsection
......@@ -109,4 +129,20 @@
@section('js')
<script src="{{ url('theme/plugins/apex/apexcharts.min.js') }} "></script>
<script src="{{ url('theme/assets/js/dashboard/dash_2.js') }} "></script>
<script>
function getChildren(element){
var parent = $(element).data('parent');
var id = $(element).val();
var target = $("#"+$(element).data('target'));
var request = $.ajax({
url: "{{ route('get-children') }}",
type: "GET",
dataType: "html",
data: {parent: parent, id: id},
success: function(result){
target.html(result);
}
})
}
</script>
@endsection
......@@ -22,127 +22,36 @@
<table id="zero-config" class="table table-hover" style="width:100%">
<thead>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Start date</th>
<th>Salary</th>
<th>Nama</th>
<th>Jenis Kelamin</th>
<th>Institusi</th>
<th>Negara</th>
<th>Pendidikan</th>
<th>Bidang</th>
<th>Lama Tinggal</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
<tr>
<td>Tiger Nixon</td>
<td>System Architect</td>
<td>Edinburgh</td>
<td>61</td>
<td>2011/04/25</td>
<td>$320,800</td>
</tr>
<tr>
<td>Garrett Winters</td>
<td>Accountant</td>
<td>Tokyo</td>
<td>63</td>
<td>2011/07/25</td>
<td>$170,750</td>
</tr>
<tr>
<td>Ashton Cox</td>
<td>Junior Technical Author</td>
<td>San Francisco</td>
<td>66</td>
<td>2009/01/12</td>
<td>$86,000</td>
</tr>
<tr>
<td>Cedric Kelly</td>
<td>Senior Javascript Developer</td>
<td>Edinburgh</td>
<td>22</td>
<td>2012/03/29</td>
<td>$433,060</td>
</tr>
<tr>
<td>Airi Satou</td>
<td>Accountant</td>
<td>Tokyo</td>
<td>33</td>
<td>2008/11/28</td>
<td>$162,700</td>
</tr>
<tr>
<td>Brielle Williamson</td>
<td>Integration Specialist</td>
<td>New York</td>
<td>61</td>
<td>2012/12/02</td>
<td>$372,000</td>
</tr>
<tr>
<td>Herrod Chandler</td>
<td>Sales Assistant</td>
<td>San Francisco</td>
<td>59</td>
<td>2012/08/06</td>
<td>$137,500</td>
</tr>
<tr>
<td>Rhona Davidson</td>
<td>Integration Specialist</td>
<td>Tokyo</td>
<td>55</td>
<td>2010/10/14</td>
<td>$327,900</td>
</tr>
<tr>
<td>Colleen Hurst</td>
<td>Javascript Developer</td>
<td>San Francisco</td>
<td>39</td>
<td>2009/09/15</td>
<td>$205,500</td>
</tr>
<tr>
<td>Sonya Frost</td>
<td>Software Engineer</td>
<td>Edinburgh</td>
<td>23</td>
<td>2008/12/13</td>
<td>$103,600</td>
</tr>
<tr>
<td>Jena Gaines</td>
<td>Office Manager</td>
<td>London</td>
<td>30</td>
<td>2008/12/19</td>
<td>$90,560</td>
</tr>
<tr>
<td>Quinn Flynn</td>
<td>Support Lead</td>
<td>Edinburgh</td>
<td>22</td>
<td>2013/03/03</td>
<td>$342,000</td>
</tr>
<tr>
<td>Charde Marshall</td>
<td>Regional Director</td>
<td>San Francisco</td>
<td>36</td>
<td>2008/10/16</td>
<td>$470,600</td>
</tr>
<tr>
<td>Haley Kennedy</td>
<td>Senior Marketing Designer</td>
<td>London</td>
<td>43</td>
<td>2012/12/18</td>
<td>$313,500</td>
</tr>
@foreach ($rs as $item)
<tr>
<td>{{ $item->nama }}</td>
<td>{{ $item->jenis_kelamin }}</td>
<td>{{ $item->institusi }}</td>
<td>{{ $item->negara->nama }}</td>
<td>{{ $item->pendidikan }}</td>
<td>{{ $item->bidang->nama }}</td>
<td>{{ $item->lamatinggal }}</td>
<td>
<a class="btn btn-warning" href="{{ route('penelitiasing.edit', ['penelitiasing' => encrypt($item->id)]) }}">Edit</a>
<button class="btn btn-danger delete" type="button" data-target="form_peneliti_{{ $loop->iteration }}">Hapus</button>
<form id="form_peneliti_{{ $loop->iteration }}" action="{{ route('penelitiasing.destroy', ['penelitiasing' => encrypt($item->id)]) }}" method="POST">
{{ method_field('DELETE') }}
@csrf
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
......@@ -168,5 +77,25 @@
"lengthMenu": [10, 20, 50],
"pageLength": 10
});
$("body").on("click", ".delete", function (e) {
e.preventDefault();
var id = $(this).data('target');
Swal.fire({
title: "Apakah Anda Yakin?",
text: "Anda akan menghapus data ini!",
icon: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes",
cancelButtonText: "No"
}).then((result) => {
if (result.value) {
Swal.close();
$("#"+id).submit();
} else if (result.dismiss === Swal.DismissReason.cancel) {
Swal.fire('Dibatalkan', 'Data batal dihapus', 'error');
}
});
});
</script>
@endsection
......@@ -34,13 +34,13 @@ Route::get('login', [LoginController::class, 'index'])->name('login');
Route::get('sso/{email}/{sessionid}', [LoginController::class, 'sso']);
Route::middleware(['auth:sanctum', 'verified'])->group(function () {
Route::get('/dashboard', function () {
return view('dashboard');
})->name('dashboard');
Route::get('/get-biodata', [GetDataController::class, 'getBiodata'])->name('get-biodata');
Route::get('/get-row-anggota', [PenelitianSumberDanaController::class, 'getRowAnggota'])->name('get-row-anggota');
Route::get('/get-children', [GetDataController::class, 'getChildren'])->name('get-children');
Route::resource('/bukuajar', BukuAjarController::class);
Route::resource('/fasilitas', FasilitasController::class);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment