Commit 53395f02 authored by FARDA ALAN MA'RUF's avatar FARDA ALAN MA'RUF

fixing import

parent 377a445d
......@@ -40,11 +40,13 @@ class ImportGuruDapodikController extends Controller
public function index()
{
$excelGuru = $this->mExcelGuru->where('idPSekolah', session()->get('idPSekolah'))->get();
$dapodikGuru = $this->mDapodikGuru->where('idPSekolah', session()->get('idPSekolah'))->get();
$data = [
'title' => $this->title,
'url' => $this->url,
'page' => 'Data Import Guru',
'excelGuru' => $excelGuru,
'dapodikGuru' => $dapodikGuru
];
return view($this->views . "/index", $data);
......@@ -163,7 +165,7 @@ class ImportGuruDapodikController extends Controller
// }
// $pesan = 'Data Guru di Kelas berhasil di import. masuk: ' . $bisa . ', gagal: ' . $ada . ' (karena sudah ada guru tsb / data ada yang kosong / nip dibawah 10 karakter / nip duplikasi / nip bukan angka)';
$pesan = "Ay";
$pesan = "Berhasil import";
return redirect("$this->url")->with('sukses', $pesan);
}
}
......@@ -3,286 +3,92 @@
namespace App\Http\Controllers\Admin\Import;
use App\Http\Controllers\Controller;
use App\Imports\ImportDapodikGuru;
use App\Jobs\ImportDataJob;
use Illuminate\Http\Request;
use App\Models\Master\AgamaModel;
use App\Models\Master\TempatModel;
use App\Models\Master\PekerjaanModel;
// use App\Imports\LulusanImport;
// use App\Exports\LulusanExport;
use Maatwebsite\Excel\Facades\Excel;
// Panggil Nama file Model yang mau dipake
use App\Models\ImportDapodik\ImportexcelGuruModel;
use App\Models\ImportDapodik\ImportDapodikGuruModel;
use App\Models\ImportDapodik\ImportExcelSiswaModel;
use App\Models\Perpus\KelasKodeModel;
use App\Models\Stakeholder\SekolahWaliModel;
use App\Models\Stakeholder\KonselorModel;
use App\Models\Siswa\OrtuModel;
use App\Models\Siswa\SiswaModel;
use App\Models\Siswa\SiswaMutasiModel;
use App\Models\Master\PeriodeModel;
use App\Models\Stakeholder\GuruModel;
use App\Models\Perpus\SekolahModel;
use Illuminate\Support\Facades\DB;
class ImportSiswaDapodikController extends Controller
{
private $views = 'admin/importdapodik/importSiswa';
private $views = 'admin/importdapodik/importStudent';
private $url = 'admin/import-dapodik/siswa';
private $urlKelas = 'admin/master/sekolah/indeks-kelas';
private $title = 'Halaman Siswa';
private $title = 'Halaman Import Siswa';
public function __construct()
{
createLogActivity();
$this->mAgama = new AgamaModel();
$this->mTempat = new TempatModel();
$this->mPekerjaan = new PekerjaanModel();
$this->mPerpusKelasKode = new KelasKodeModel();
$this->mSekolahWali = new SekolahWaliModel();
$this->mKonselor = new KonselorModel();
$this->mOrtu = new OrtuModel();
$this->mSiswa = new SiswaModel();
$this->mSiswaMutasi = new SiswaMutasiModel();
$this->mExcelSiswa = new ImportExcelSiswaModel();
}
public function index()
{
$excelSiswa = $this->mExcelSiswa->where('idPSekolah', session()->get('idPSekolah'))->get();
$data = [
'title' => $this->title,
'url' => $this->url,
'urlKelas' => $this->urlKelas,
'page' => 'Data Siswa',
'page' => 'Data Import Siswa',
'excelSiswa' => $excelSiswa
];
return view($this->views . "/index", $data);
}
public function create($idKelas = null)
public function create()
{
if (session()->get('role') == 1) {
$kelaskode = $this->mPerpusKelasKode->get();
$where = [
'status' => 1,
];
$konselor = $this->mKonselor->where($where)->get();
} else if (session()->get('role') == 2) {
$kelaskode = $this->mPerpusKelasKode->where('idPSekolah', session()->get('idPSekolah'))->get();
$where = [
'status' => 1,
'idPSekolah' => session()->get('idPSekolah'),
];
$konselor = $this->mKonselor->where($where)->get();
}
$agama = $this->mAgama->get();
$pekerjaan = $this->mPekerjaan->get();
$tempat = $this->mTempat->get();
$data = [
'title' => $this->title,
'url' => $this->url,
'page' => 'Tambah Data Siswa',
'kelaskode' => $kelaskode,
'agama' => $agama,
'pekerjaan' => $pekerjaan,
'konselor' => $konselor,
'tempat' => $tempat,
'idKelas' => $idKelas
'page' => 'Import Excel Siswa',
];
return view($this->views . "/create", $data);
}
public function store(Request $request)
{
$lahirTanggal = $request->lahir_tanggal;
$lahirTanggalnew = date("d-m-Y", strtotime($lahirTanggal));
$cekSiswa = $this->mSiswa->where('nisn', $request->nisn)->where('idMStatus', 1)->first();
if (isset($cekSiswa)) {
return redirect("$this->url")->with('gagal', 'Siswa dengan NISN tersebut sudah terdaftar');
}
if (session()->get('role') == 1) {
$dataSiswa = [
'idPKKode' => $request->idPKKode,
'idMAgama' => $request->idMAgama,
'idPPeriode' => session()->get('idPPeriode'),
'idMStatus' => '1', // Langsung Aktif
'idSKonselor' => $request->idSKonselor,
'nisn' => $request->nisn,
'nama' => $request->nama,
'lahir_tanggal' => $lahirTanggalnew,
'lahir_tempat' => $request->lahir_tempat,
'idPPKelas' => '1', // Langsung Sesuai Periode Sekarang
'idPPStatus' => '1', // Langsung Sesuai Periode Sekarang
'idMTempat' => $request->idMTempat,
'email' => $request->email,
'telp' => $request->telp,
'idPSekolah' => $request->idPSekolah,
];
$siswa = $this->mSiswa->create($dataSiswa);
$dataOrtu = [
'idSiswa' => $siswa['id'], // dapatkan id Siswa yang baru di input
'idMPekerjaan' => $request->idMPekerjaan,
'nama' => $request->namaOrtu,
'alamat' => $request->alamatOrtu,
'idPSekolah' => $request->idPSekolah,
];
$this->mOrtu->create($dataOrtu);
} else if (session()->get('role') == 2) {
$dataSiswa = [
'idPKKode' => $request->idPKKode,
'idMAgama' => $request->idMAgama,
'idPPeriode' => session()->get('idPPeriode'),
'idMStatus' => '1', // Langsung Aktif
'idSKonselor' => $request->idSKonselor,
'nisn' => $request->nisn,
'nama' => $request->nama,
'lahir_tanggal' => $lahirTanggalnew,
'lahir_tempat' => $request->lahir_tempat,
'idPPKelas' => '1', // Langsung Sesuai Periode Sekarang
'idPPStatus' => '1', // Langsung Sesuai Periode Sekarang
'idMTempat' => $request->idMTempat,
'email' => $request->email,
'telp' => $request->telp,
'idPSekolah' => session()->get('idPSekolah')
];
$siswa = $this->mSiswa->create($dataSiswa);
$dataOrtu = [
'idSiswa' => $siswa['id'], // dapatkan id Siswa yang baru di input
'idPSekolah' => session()->get('idPSekolah'),
'idMPekerjaan' => $request->idMPekerjaan,
'nama' => $request->namaOrtu,
'alamat' => $request->alamatOrtu,
];
$this->mOrtu->create($dataOrtu);
}
// Riwayat kelas siswa
$dataSiswaMutasi = [
'idSiswa' => $siswa['id'], // dapatkan id Siswa yang baru di input
'idPKKode' => $request->idPKKode,
'idPPeriode' => session()->get('idPPeriode'),
'idMStatus' => '1',
];
$this->mSiswaMutasi->create($dataSiswaMutasi);
return redirect("$this->url")->with('sukses', 'Siswa berhasil di tambahkan');
}
public function show($id)
{
$siswa = $this->mSiswa->where('id', $id)->first();
$konselor = $this->mKonselor->where('id', $siswa['idSKonselor'])->first();
$sekolah_wali = $this->mSekolahWali->where('idPKKode', $siswa['idPKKode'])->first();
$ortu = $this->mOrtu->where('idSiswa', $id)->first();
$siswaMutasi = $this->mSiswaMutasi->where('idSiswa', $id)->get();
if (!$siswa || !$konselor || !$sekolah_wali || !$ortu || !$siswaMutasi) {
return redirect()->back()->with('gagal', 'Data tidak ditemukan atau sudah dihapus.');
}
$data = [
'title' => $this->title,
'url' => $this->url,
'page' => 'Detail Data Siswa',
'id' => $id,
'siswa' => $siswa,
'ortu' => $ortu,
'sekolah_wali' => $sekolah_wali,
'konselor' => $konselor,
'siswaMutasi' => $siswaMutasi,
];
return view($this->views . "/show", $data);
}
public function edit($id)
{
// Get Data
$siswa = $this->mSiswa->where('id', $id)->first();
if (!$siswa) {
return redirect()->back()->with('gagal', 'Data tidak ditemukan atau sudah dihapus.');
}
if (session()->get('role') == 1) {
$kelaskode = $this->mPerpusKelasKode->get();
$where = [
'status' => 1,
];
$konselor = $this->mKonselor->where($where)->get();
} else if (session()->get('role') == 2) {
$kelaskode = $this->mPerpusKelasKode->where('idPSekolah', session()->get('idPSekolah'))->get();
$where = [
'status' => 1,
'idPSekolah' => session()->get('idPSekolah'),
];
$konselor = $this->mKonselor->where($where)->get();
}
$agama = $this->mAgama->get();
$tempat = $this->mTempat->get();
$data = [
'title' => $this->title,
'url' => $this->url,
'page' => 'Edit Data Siswa',
'id' => $id,
'siswa' => $siswa,
'kelaskode' => $kelaskode,
'agama' => $agama,
'tempat' => $tempat,
'konselor' => $konselor,
];
return view($this->views . "/edit", $data);
}
public function update(Request $request, $id)
{
// Validasi
$request->validate([
'idPKKode' => 'required',
'idSKonselor' => 'required',
'idMAgama' => 'required',
'nisn' => 'required',
'nama' => 'required',
'telp' => 'required',
'email' => 'required',
'lahir_tanggal' => 'required',
'lahir_tempat' => 'required',
$validateData = $request->validate([
'file_excel' => 'required|mimes:csv,xls,xlsx'
], [
'file_excel.required' => 'Pilih file terlebih dahulu',
'file_excel.mimes' => 'Format data harus csv, xls atau xlsx',
]);
$dataSiswa = [
'idPKKode' => $request->idPKKode,
'idSKonselor' => $request->idSKonselor,
'idMAgama' => $request->idMAgama,
'nisn' => $request->nisn,
'nama' => $request->nama,
'telp' => $request->telp,
'email' => $request->email,
'lahir_tanggal' => $request->lahir_tanggal,
'lahir_tempat' => $request->lahir_tempat,
];
$this->mSiswa->where('id', $id)->update($dataSiswa);
return redirect("$this->url")->with('sukses', 'Data Siswa berhasil di edit');
}
public function delete($id)
{
try {
if (session()->get('role') == 1) {
$this->mSiswa->where('id', $id)->delete();
} else if (session()->get('role') == 2) {
$this->mSiswa->where('id', $id)->where('idPSekolah', session()->get('idPSekolah'))->delete();
}
return redirect("$this->url")->with('sukses', 'Data Siswa berhasil di hapus');
} catch (\Exception $e) {
DB::rollback();
// error message
return redirect("$this->url")->with('gagal', 'Terjadi error: ' . $e->getMessage());
}
$fileSave = $request->file('file_excel')->store('imports');
$filePath = storage_path('app/' . $fileSave);
$dataJob = [];
$dataJob['jenis'] = 'importSiswa';
$dataJob['file_path'] = $filePath;
// Setting Siswa
$idPKKode = $request->kelasKode;
$idMStatus = 1; // Langsung aktif
$idPPKelas = 1; // Langsung Sesuai Periode Sekarang
$idPPStatus = 1; // Langsung Sesuai Periode Sekarang
$dataJob['idUser'] = session()->get('users_id');
$dataJob['idPSekolah'] = session()->get('idPSekolah');
$dataJob['idPPeriode'] = session()->get('idPPeriode');
$dataJob['idPKKode'] = $idPKKode;
$dataJob['idMStatus'] = $idMStatus;
$dataJob['idPPKelas'] = $idPPKelas;
$dataJob['idPPStatus'] = $idPPStatus;
ImportDataJob::dispatch($dataJob);
$pesan = "Berhasil import";
return redirect("$this->url")->with('sukses', $pesan);
}
}
......@@ -167,8 +167,8 @@ public function __construct()
foreach ($kelaskode as $row)
{
// $btnDetail = "<a href='".url($this->url."/indeks-kelas/".$row->id)."'><button type='button' class='btn btn-primary btn-sm' title='Detail Data'>Detail</button></a>";
$btnDetail = "<a href='".url($this->url."/indeks-kelas/dapodik/".$row->id)."'><button type='button' class='btn btn-warning btn-sm' title='Detail Data'>Detail</button></a>";
$btnDetail = "<a href='".url($this->url."/indeks-kelas/".$row->id)."'><button type='button' class='btn btn-primary btn-sm' title='Detail Data'>Detail</button></a>";
// $btnDetail = "<a href='".url($this->url."/indeks-kelas/dapodik/".$row->id)."'><button type='button' class='btn btn-warning btn-sm' title='Detail Data'>Detail</button></a>";
$btnEdit = "<a href='".url($this->url."/indeks-kelas/".$row->id)."/edit"."'><button type='button' class='btn btn-primary btn-sm' title='Detail Data'>Edit</button></a>";
$btn = $btnDetail.' '.$btnEdit;
......
......@@ -49,6 +49,8 @@
<tr>
<th width="50">No.</th>
<th>Periode</th>
<th>NIP</th>
<th>Nama</th>
<th>Waktu Import</th>
<th>Data Admin</th>
<th>Status</th>
......@@ -59,6 +61,8 @@
<tr>
<td>{{ $loop->iteration }}</td>
<td>{{ $r->periode->nama_periode }}</td>
<td>{{ $r->nip }}</td>
<td>{{ $r->nama }}</td>
<td>{{ $r->created_at }}</td>
<td>{{ $r->user->username ?? '-' }}</td>
<td>
......
@extends($admin)
@section('title')
{{ $title }}
@endsection
@push('css')
@endpush
@section('content')
@component('components.breadcrumb')
@slot('breadcrumb_title')
<h3>Halaman</h3>
@endslot
<li class="breadcrumb-item">Halaman</li>
<li class="breadcrumb-item active">List</li>
@endcomponent
<div class="container-fluid">
<div class="row">
<div class="col-sm-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-lg-6">
<h5 class="card-title">{{ $page }}</h5>
</div>
<div class="col-lg-6">
<a href="{{ url('excel-template/format_input_guru.xlsx') }}" class="btn btn-sm btn-primary float-end">Download Template</a>
</div>
</div>
</div>
</div>
</div>
<div class="col-sm-12">
<div class="card">
<div class="card-body">
<div class="row g-2">
<form action="{{ url($url) }}/store" method="POST" enctype="multipart/form-data">
@csrf
<div class="mb-3 row">
<label class="col-sm-3 col-form-label" for="exampleFormControlTextarea4">Import Excel</label>
<div class="col-sm-9">
<input class="form-control" name="file_excel" type="file" accept=".csv, .xls, .xlsx">
</div>
</div>
<div>
<div class="text-end btn-mb">
<input type="submit" value="Migrasi" class="btn btn-primary">
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
@push('scripts')
@endpush
@endsection
@extends($admin)
@section('title')
{{ $title }}
@endsection
@push('css')
<link rel="stylesheet" type="text/css" href="{{ asset('assets/css/datatables.css') }}">
@endpush
@section('content')
@component('components.breadcrumb')
@slot('breadcrumb_title')
<h3>Halaman</h3>
@endslot
<li class="breadcrumb-item">Halaman</li>
<li class="breadcrumb-item active">List</li>
@endcomponent
<div class="container-fluid">
<div class="row">
<div class="col-sm-12">
{{-- Diberikan alert --}}
@if (session()->has('sukses'))
<div class="alert alert-success" role="alert">
{{ session('sukses') }}
</div>
@elseif (session()->has('gagal'))
<div class="alert alert-danger" role="alert">
{{ session('gagal') }}
</div>
@endif
<div class="card">
<div class="card-header p-3">
<div class="row">
<div class="col-lg-6">
<h5 class="card-title">{{ $page }}</h5>
</div>
<div class="col-lg-6">
<a href="{{ url($url) }}/create" class="btn btn-sm btn-primary float-end">Import Siswa</a>
</div>
</div>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="display" id="basic-1">
<thead>
<tr>
<th width="50">No.</th>
<th>Periode</th>
<th>NISN</th>
<th>Nama</th>
<th>Waktu Import</th>
<th>Data Admin</th>
<th>Status</th>
</tr>
</thead>
<tbody>
@foreach ($excelSiswa as $r)
<tr>
<td>{{ $loop->iteration }}</td>
<td>{{ $r->periode->nama_periode }}</td>
<td>{{ $r->nisn }}</td>
<td>{{ $r->nama }}</td>
<td>{{ $r->created_at }}</td>
<td>{{ $r->user->username ?? '-' }}</td>
<td>
@if($r->status == 1)
Tambah
@elseif($r->status == 2)
Edit
@else
Gagal
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
@push('scripts')
<script src="{{ asset('assets/js/datatable/datatables/jquery.dataTables.min.js') }}"></script>
<script src="{{ asset('assets/js/datatable/datatables/datatable.custom.js') }}"></script>
<script>
$(function() {
$("#isi-tabel").DataTable(); // tambahin ini ki
let baseUrl = '{{ url('') }}';
let idSekolah = "{{ session()->get('idsekolah') }}";
$('#tabel-jquery').hide();
});
</script>
@endpush
@endsection
@extends($admin)
@section('title')
{{ $title }}
@endsection
@push('css')
<link rel="stylesheet" type="text/css" href="{{ asset('assets/css/datatables.css') }}">
@endpush
@section('content')
@component('components.breadcrumb')
@slot('breadcrumb_title')
<h3>Halaman</h3>
@endslot
<li class="breadcrumb-item">Halaman</li>
<li class="breadcrumb-item active">List</li>
@endcomponent
<div class="container-fluid">
<div class="row">
<div class="col-sm-12">
{{-- Diberikan alert --}}
@if (session()->has('sukses'))
<div class="alert alert-success" role="alert">
{{ session('sukses') }}
</div>
@elseif (session()->has('gagal'))
<div class="alert alert-danger" role="alert">
{{ session('gagal') }}
</div>
@endif
<div class="card">
<div class="card-header p-3">
<div class="row">
<div class="col-lg-6">
<h5 class="card-title">{{ $page }}</h5>
</div>
<div class="col-lg-6">
<a href="{{ url($url) }}" class="btn btn-sm btn-primary float-end">Kembali</a>
</div>
</div>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="display" id="basic-1">
<thead>
<tr>
<th width="50">No.</th>
<th>Periode</th>
<th>Waktu Import</th>
<th>Data Admin</th>
<th>Action</th>
</tr>
</thead>
<tbody>
@foreach ($excelGuru as $r)
<tr>
<td>{{ $loop->iteration }}</td>
<td>{{ $r->periode->nama_periode }}</td>
<td>{{ $r->created_at }}</td>
<td>{{ $r->user->username ?? '-' }}</td>
<td>
<a href="{{ url($url) }}/preview" class="btn btn-sm btn">Lihat Data</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
@push('scripts')
<script src="{{ asset('assets/js/datatable/datatables/jquery.dataTables.min.js') }}"></script>
<script src="{{ asset('assets/js/datatable/datatables/datatable.custom.js') }}"></script>
<script>
$(function() {
$("#isi-tabel").DataTable(); // tambahin ini ki
let baseUrl = '{{ url('') }}';
let idSekolah = "{{ session()->get('idsekolah') }}";
$('#tabel-jquery').hide();
});
</script>
@endpush
@endsection
......@@ -60,6 +60,7 @@
<a class="nav-link menu-title {{ prefixActive('/admin/import-dapodik') }}" href="javascript:void(0)"><i data-feather="master"></i><span>Import Dapodik</span></a>
<ul class="nav-submenu menu-content" style="display: {{ prefixBlock('/admin/import-dapodik') }}">
<li><a href="{{ route('import-dapodik.guru') }}" class="{{ routeActive('import-dapodik.guru') }}">Import Guru</a></li>
<li><a href="{{ route('import-dapodik.siswa') }}" class="{{ routeActive('import-dapodik.siswa') }}">Import Siswa</a></li>
</ul>
</li>
<li class="dropdown">
......
......@@ -83,23 +83,19 @@ Route::prefix('/admin/import-dapodik')->group(function () {
Route::get('/guru/create', 'Admin\Import\ImportGuruDapodikController@create');
Route::post('/guru/store', 'Admin\Import\ImportGuruDapodikController@store');
Route::prefix('/siswa')->group(function () {
// Route::get('/ortu', 'Admin\Siswa\OrtuController@index')->name('ortu');
// Route::get('/ortu/create', 'Admin\Siswa\OrtuController@create');
// Route::post('/ortu/store', 'Admin\Siswa\OrtuController@store');
// Route::get('/ortu/{dataId?}/edit', 'Admin\Siswa\OrtuController@edit');
// Route::put('/ortu/update/{dataId?}', 'Admin\Siswa\OrtuController@update');
// Route::get('/ortu/{dataId?}', 'Admin\Siswa\OrtuController@show');
Route::get('/', 'Admin\Import\ImportSiswaDapodikController@index')->name('siswa');
Route::get('/create/{dataId?}', 'Admin\Import\ImportSiswaDapodikController@create');
Route::post('/store', 'Admin\Import\ImportSiswaDapodikController@store');
Route::get('/{dataId?}/edit', 'Admin\Import\ImportSiswaDapodikController@edit');
Route::put('/update/{dataId?}', 'Admin\Import\ImportSiswaDapodikController@update');
Route::delete('/delete/{dataId?}', 'Admin\Import\ImportSiswaDapodikController@delete');
Route::get('/{dataId?}', 'Admin\Import\ImportSiswaDapodikController@show');
});
Route::get('/siswa', 'Admin\Import\ImportSiswaDapodikController@index')->name('import-dapodik.siswa');
Route::get('/siswa/create', 'Admin\Import\ImportSiswaDapodikController@create');
Route::post('/siswa/store', 'Admin\Import\ImportSiswaDapodikController@store');
// Route::prefix('/siswa')->group(function () {
// Route::get('/', 'Admin\Import\ImportSiswaDapodikController@index')->name('siswa');
// Route::get('/create/{dataId?}', 'Admin\Import\ImportSiswaDapodikController@create');
// Route::post('/store', 'Admin\Import\ImportSiswaDapodikController@store');
// Route::get('/{dataId?}/edit', 'Admin\Import\ImportSiswaDapodikController@edit');
// Route::put('/update/{dataId?}', 'Admin\Import\ImportSiswaDapodikController@update');
// Route::delete('/delete/{dataId?}', 'Admin\Import\ImportSiswaDapodikController@delete');
// Route::get('/{dataId?}', 'Admin\Import\ImportSiswaDapodikController@show');
// });
});
......
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