Commit 7a74dbd5 by Farendi Giotivano R.P

Awali dengan Bismillah

parents
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
[*.{yml,yaml}]
indent_size = 2
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=database
SESSION_LIFETIME=120
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
* text=auto
*.css linguist-vendored
*.scss linguist-vendored
*.js linguist-vendored
CHANGELOG.md export-ignore
/node_modules
/public/hot
/public/storage
/storage/*.key
/vendor
.env
.env.backup
.phpunit.result.cache
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
php:
preset: laravel
disabled:
- unused_use
finder:
not-name:
- index.php
- server.php
js:
finder:
not-name:
- webpack.mix.js
css: true
# neotep
## Getting started
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
## Add your files
- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
```
cd existing_repo
git remote add origin https://gitlab.unesa.ac.id/farendi/neotep.git
git branch -M main
git push -uf origin main
```
## Integrate with your tools
- [ ] [Set up project integrations](https://gitlab.unesa.ac.id/farendi/neotep/-/settings/integrations)
## Collaborate with your team
- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
## Test and Deploy
Use the built-in continuous integration in GitLab.
- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
***
# Editing this README
When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template.
## Suggestions for a good README
Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
## Name
Choose a self-explaining name for your project.
## Description
Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
## Badges
On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
## Visuals
Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
## Installation
Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
## Usage
Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
## Support
Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
## Roadmap
If you have ideas for releases in the future, it is a good idea to list them in the README.
## Contributing
State if you are open to contributions and what your requirements are for accepting them.
For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
## Authors and acknowledgment
Show your appreciation to those who have contributed to the project.
## License
For open source projects, say how it is licensed.
## Project status
If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
<?php
namespace App\Actions\Fortify;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Laravel\Fortify\Contracts\CreatesNewUsers;
use Laravel\Jetstream\Jetstream;
class CreateNewUser implements CreatesNewUsers
{
use PasswordValidationRules;
/**
* Validate and create a newly registered user.
*
* @param array $input
* @return \App\Models\User
*/
public function create(array $input)
{
Validator::make($input, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => $this->passwordRules(),
'terms' => Jetstream::hasTermsAndPrivacyPolicyFeature() ? ['accepted', 'required'] : '',
])->validate();
return User::create([
'name' => $input['name'],
'email' => $input['email'],
'password' => Hash::make($input['password']),
]);
}
}
<?php
namespace App\Actions\Fortify;
use Illuminate\Validation\Rules\Password;
trait PasswordValidationRules
{
/**
* Get the validation rules used to validate passwords.
*
* @return array<int, \Illuminate\Contracts\Validation\Rule|array|string>
*/
protected function passwordRules(): array
{
return ['required', 'string', Password::default(), 'confirmed'];
}
}
<?php
namespace App\Actions\Fortify;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Laravel\Fortify\Contracts\ResetsUserPasswords;
class ResetUserPassword implements ResetsUserPasswords
{
use PasswordValidationRules;
/**
* Validate and reset the user's forgotten password.
*
* @param array<string, string> $input
*/
public function reset(User $user, array $input): void
{
Validator::make($input, [
'password' => $this->passwordRules(),
])->validate();
$user->forceFill([
'password' => Hash::make($input['password']),
])->save();
}
}
<?php
namespace App\Actions\Fortify;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Laravel\Fortify\Contracts\UpdatesUserPasswords;
class UpdateUserPassword implements UpdatesUserPasswords
{
use PasswordValidationRules;
/**
* Validate and update the user's password.
*
* @param array<string, string> $input
*/
public function update(User $user, array $input): void
{
Validator::make($input, [
'current_password' => ['required', 'string', 'current_password:web'],
'password' => $this->passwordRules(),
], [
'current_password.current_password' => __('The provided password does not match your current password.'),
])->validateWithBag('updatePassword');
$user->forceFill([
'password' => Hash::make($input['password']),
])->save();
}
}
<?php
namespace App\Actions\Fortify;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
use Laravel\Fortify\Contracts\UpdatesUserProfileInformation;
class UpdateUserProfileInformation implements UpdatesUserProfileInformation
{
/**
* Validate and update the given user's profile information.
*
* @param mixed $user
* @param array $input
* @return void
*/
public function update($user, array $input)
{
Validator::make($input, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'email', 'max:255', Rule::unique('users')->ignore($user->id)],
'photo' => ['nullable', 'mimes:jpg,jpeg,png', 'max:1024'],
])->validateWithBag('updateProfileInformation');
if (isset($input['photo'])) {
$user->updateProfilePhoto($input['photo']);
}
if ($input['email'] !== $user->email &&
$user instanceof MustVerifyEmail) {
$this->updateVerifiedUser($user, $input);
} else {
$user->forceFill([
'name' => $input['name'],
'email' => $input['email'],
])->save();
}
}
/**
* Update the given verified user's profile information.
*
* @param mixed $user
* @param array $input
* @return void
*/
protected function updateVerifiedUser($user, array $input)
{
$user->forceFill([
'name' => $input['name'],
'email' => $input['email'],
'email_verified_at' => null,
])->save();
$user->sendEmailVerificationNotification();
}
}
<?php
namespace App\Actions\Jetstream;
use Laravel\Jetstream\Contracts\DeletesUsers;
class DeleteUser implements DeletesUsers
{
/**
* Delete the given user.
*
* @param mixed $user
* @return void
*/
public function delete($user)
{
$user->deleteProfilePhoto();
$user->tokens->each->delete();
$user->delete();
}
}
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use App\Models\Biodata;
use Illuminate\Support\Facades\DB;
use App\Models\Nilai;
use App\Models\Pendaftaran;
class ImportDaftarController extends Command
{
protected $signature = 'import:old-daftar';
protected $description = 'Import daftar from old table to new structure';
public function handle()
{
// Ambil data dari tabel users lama
$oldDaftars = DB::table('tr_pendaftaran_lama')->where('idtoken', 'PPG202501')->get();
$this->info("Memulai proses import {$oldDaftars->count()} user...");
$bar = $this->output->createProgressBar($oldDaftars->count());
foreach ($oldDaftars as $oldDaftar) {
try {
DB::transaction(function () use ($oldDaftar) {
// Buat user baru
$bio = Biodata::where('nik', $oldDaftar->id_pendaftaran)->first();
$nilaiOld = DB::table('tr_nilai_lama')->where('id_pedaftaran', $oldDaftar->id)->first();
$newDaftar = Pendaftaran::create([
'noidentitas' => $oldDaftar->id_pendaftaran,
'id_kategori' => '99efee12-5c7b-4cb1-bbdf-a01984fe0437',
'id_jadwal' => '2b887422-3924-45a9-95dc-24e4288064d1',
'tgl_tes' => $oldDaftar->tgl_tes,
'tgl_kembali' => $oldDaftar->tgl_tes_kembali,
'nama_peserta' => $oldDaftar->nama_peserta,
'status' => '2',
'id_user' => $bio->id,
]);
// Buat biodata
Nilai::create([
'id_pendaftaran' => $newDaftar['id'],
'id_user' => $bio->id,
'nilai_list' => $nilaiOld ? $nilaiOld->nilai_list : '0',
'nilai_read' => $nilaiOld ? $nilaiOld->nilai_read : '0',
'nilai_struct' => $nilaiOld ? $nilaiOld->nilai_struct : '0',
'nilai_total' => $nilaiOld ? $nilaiOld->total_nilai : '0',
]);
});
$bar->advance();
} catch (\Exception $e) {
$this->error("Gagal import user {$oldDaftar->nama_peserta}: " . $e->getMessage());
}
}
$bar->finish();
$this->info("\nProses import selesai!");
}
}
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use App\Models\Biodata;
use App\Models\User;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
use App\Models\Admin\Role;
class ImportUserController extends Command
{
protected $signature = 'import:old-users';
protected $description = 'Import users from old table to new structure';
public function handle()
{
// Ambil data dari tabel users lama
$oldUsers = DB::table('users_lama')->where('editor', 'PPG 202501')->get();
$this->info("Memulai proses import {$oldUsers->count()} user...");
$bar = $this->output->createProgressBar($oldUsers->count());
foreach ($oldUsers as $oldUser) {
try {
DB::transaction(function () use ($oldUser) {
// Buat user baru
$newUser = User::create([
'name' => $oldUser->name,
'email' => $oldUser->email,
'password' => Hash::make('p@55w0rd'),
]);
// Buat biodata
Biodata::create([
'id' => $newUser['id'],
'name' => $oldUser->name,
'nik' => $oldUser->username,
'email' => $oldUser->email,
'tipe' => 'umum',
]);
// Assign role
$roleUmum = Role::where('name', 'umum')->first();
$newUser->assignRole($roleUmum);
});
$bar->advance();
} catch (\Exception $e) {
$this->error("Gagal import user {$oldUser->email}: " . $e->getMessage());
}
}
$bar->finish();
$this->info("\nProses import selesai!");
}
}
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
//
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')->hourly();
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands()
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
}
<?php
namespace App\Exceptions;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
class Handler extends ExceptionHandler
{
/**
* A list of the exception types that are not reported.
*
* @var array
*/
protected $dontReport = [
//
];
/**
* A list of the inputs that are never flashed for validation exceptions.
*
* @var array
*/
protected $dontFlash = [
'password',
'password_confirmation',
];
/**
* Register the exception handling callbacks for the application.
*
* @return void
*/
public function register()
{
//
}
}
<?php
namespace App\Exports;
use App\Models\Pendaftaran;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
use Maatwebsite\Excel\Concerns\WithHeadings;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
class NilaiTemplate implements FromCollection, WithHeadings
{
use Exportable;
protected $id_jadwal;
protected $tanggal;
public function __construct($id_jadwal, $tanggal)
{
$this->id_jadwal = $id_jadwal;
$this->tanggal = $tanggal;
}
// public function columnFormats(): array
// {
// return [
// 'B' => NumberFormat::FORMAT_TEXT
// ];
// }
public function headings(): array
{
return [
'No',
'Test ID',
'Nama Peserta',
'Nilai Listening',
'Nilai Reading',
'Nilai Structure',
'Nilai Total'
];
}
public function collection()
{
$daftar = Pendaftaran::with('biodata')
->where('id_jadwal', $this->id_jadwal)
->where('tgl_tes', $this->tanggal)
->where('status', '2')
->get()
->sortBy('no_kursi');
$data = [];
$no = 1;
foreach ($daftar as $key => $value) {
if (is_null($value->kehadiran)) {
$data[] = [
$no,
$value->test_id,
$value->biodata->name ?? '',
'0',
'0',
'0',
'0',
];
} else {
$data[] = [
$no,
$value->test_id,
$value->biodata->name ?? '',
'',
'',
'',
'',
];
}
$no++;
}
return collect($data);
}
}
<?php
namespace App\Exports;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
use Excel;
class UserPesertaImport implements ToCollection
{
/**
* @param Collection $collection
*/
public function collection(Collection $collection)
{
// $data = [];
// foreach($collection as $key => $item){
// if($key == 0){
// continue;
// }
// $data[$key] = $item;
// $data[$key][1] = bcrypt($item[13]);
// $data[$key][11] = '';
// }
// dd($data);
// return Excel::download(new UserPesertaExport(collect($data)), 'user peserta.xlsx');
}
}
<?php
namespace App\Helpers;
use Illuminate\Support\Facades\Auth;
class TepHelper
{
public static function role()
{
$role[] = null;
if (Auth::user()->rRole->count() > 0) {
foreach (Auth::user()->rRole as $value) {
$role[$value->role] = $value->role;
}
}
return $role;
}
}
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Admin\VJadwal;
use App\Models\Admin\VPendaftaranJml;
use App\Models\Admin\VPendaftaranTes;
use App\Models\Pendaftaran;
use Illuminate\Http\Request;
class AbsensiController extends Controller
{
//
public function index(Request $request)
{
if($request->has('tgl_tes')) {
$tgl = $request->get('tgl_tes');
} else {
$tgl = now()->format('Y-m-d');
}
$list = VPendaftaranJml::where('tgl_tes', $tgl)->get();
$data = [
'tgl' => $tgl,
'list' => $list,
'title' => 'Absensi',
'menu' => 'Absensi',
'submenu' => 'absensi',
'breadcrumbs' => [
['url' => route('admin.absensi.index'), 'title' => 'Absensi'],
],
];
return view('admin.peserta.absensi.index', $data);
}
public function list($tgl, $jadwal = null)
{
$list = VPendaftaranTes::where('tgl_tes', $tgl)->where('id_jadwal', $jadwal)->get()->sortBy('no_kursi');
$djadwal = VJadwal::where('id', $jadwal)->first();
$totalPeserta = $list->count();
$jumlahHadir = $list->filter(function ($peserta) {
return $peserta->kehadiran !== null;
})->count();
$jumlahTidakHadir = $totalPeserta - $jumlahHadir;
$data = [
'tgl' => $tgl,
'list' => $list,
'totalPeserta' => $totalPeserta,
'jumlahHadir' => $jumlahHadir,
'jumlahTidakHadir' => $jumlahTidakHadir,
'jadwal' => $djadwal,
'title' => 'Absensi',
'menu' => 'Absensi',
'submenu' => 'absensi',
'breadcrumbs' => [
['url' => route('admin.absensi.index'), 'title' => 'Absensi'],
],
];
return view('admin.peserta.absensi.list', $data);
}
public function cetak($tgl, $jadwal = null)
{
$list = VPendaftaranTes::where('tgl_tes', $tgl)->where('id_jadwal', $jadwal)->get()->sortBy('no_kursi');
$djadwal = VJadwal::where('id', $jadwal)->first();
$data = [
'tgl' => $tgl,
'list' => $list,
'jadwal' => $djadwal,
'title' => 'Absensi',
'menu' => 'Absensi',
'submenu' => 'absensi',
'breadcrumbs' => [
['url' => route('admin.absensi.index'), 'title' => 'Absensi'],
],
];
return view('admin.peserta.absensi.cetak', $data);
}
public function hadir(Request $request, $id)
{
$peserta = Pendaftaran::findOrFail($id);
$nama_peserta = $peserta->biodata ? $peserta->biodata->name : '-';
if ($request->attended) {
$peserta->kehadiran = now();
$message = "Absen berhasil: {$peserta->test_id} - {$nama_peserta}";
} else {
$peserta->kehadiran = null;
$message = "Absen dibatalkan: {$peserta->test_id} - {$nama_peserta}";
}
$peserta->save();
$pesertas = VPendaftaranTes::where('tgl_tes', $peserta->tgl_tes)->get();
$totalPeserta = $pesertas->count();
$jumlahHadir = $pesertas->whereNotNull('kehadiran')->count();
$jumlahTidakHadir = $totalPeserta - $jumlahHadir;
return response()->json([
'success' => true,
'message' => $message,
'stats' => [
'total' => $totalPeserta,
'hadir' => $jumlahHadir,
'tidak_hadir' => $jumlahTidakHadir
]
]);
}
}
<?php
namespace App\Http\Controllers\Admin;
use App\Exports\NilaiTemplate;
use App\Http\Controllers\Controller;
use App\Imports\NilaiImport;
use App\Models\Admin\VCekNilai;
use App\Models\Admin\VNilaiUser;
use App\Models\Admin\VPendaftaranJadwal;
use App\Models\Nilai;
use App\Models\Pendaftaran;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
class DataNilaiController extends Controller
{
//
public function index()
{
$data = [
'title' => 'Data Nilai',
'menu' => 'Nilai',
'submenu' => 'nilai',
'breadcrumbs' => [
['url' => route('admin.nilai-list'), 'title' => 'List Nilai'],
],
];
return view('admin.nilai.index', $data);
}
public function daftar(Request $request)
{
$request->validate([
'tanggal' => 'required|date'
]);
$tanggal = Carbon::parse($request->tanggal)->format('Y-m-d');
$data = VCekNilai::whereDate('tanggal', $tanggal)->get()
->map(function ($item) {
return [
'id' => $item->id,
'nama_ruang' => $item->nama_ruang,
'nama_sesi' => $item->nama_sesi,
'tanggal' => $item->tanggal,
'kode' => encrypt($item->id.'__'.$item->tanggal),
'is_complete' => $item->is_complete,
];
});
return response()->json([
'data' => $data
]);
}
public function caripeserta(Request $request)
{
$request->validate([
'tanggal' => 'required|date'
]);
$tanggal = Carbon::parse($request->tanggal)->format('Y-m-d');
$data = VPendaftaranJadwal::whereDate('tanggal', $tanggal)->get()
->map(function ($item) {
return [
'id' => $item->id,
'nama_ruang' => $item->nama_ruang,
'nama_sesi' => $item->nama_sesi,
'tanggal' => $item->tanggal,
'kode' => encrypt($item->id . '__' . $item->tanggal),
];
});
return response()->json([
'data' => $data
]);
}
public function inputexcel(Request $request)
{
$idx = decrypt($request->id);
$id = explode('__', $idx);
$id_jadwal = $id[0];
$tanggal = $id[1];
$inputNilai = VCekNilai::whereDate('tanggal', $tanggal)->where('id_jadwal', $id_jadwal)->first();
if($inputNilai->is_complete == 'lengkap'){
return redirect()->route('admin.nilai-list', ['id' => $request->id])->with('notify', ['type' => 'success', 'message' => 'Data nilai berhasil diimport']);
}
$daftar = Pendaftaran::where('id_jadwal', $id_jadwal)
->where('tgl_tes', $tanggal)
->where('status', '2')
->get()
->sortBy('no_kursi');
$jadwal = VPendaftaranJadwal::where('id', $id_jadwal)->first();
$data = [
'daftar' => $daftar,
'jadwal' => $jadwal,
'tanggal' => $tanggal,
'title' => 'Input Nilai',
'menu' => 'Nilai',
'submenu' => 'nilai',
'breadcrumbs' => [
['url' => route('admin.nilai-list'), 'title' => 'List Nilai'],
['url' => route('admin.nilai-daftar'), 'title' => 'Input Nilai'],
],
];
return view('admin.nilai.inputexcel', $data);
}
public function nilaitemplate(Request $request)
{
$idx = decrypt($request->id);
$id = explode('__', $idx);
$id_jadwal = $id[0];
$tanggal = $id[1];
$jadwal = VPendaftaranJadwal::where('id', $id_jadwal)->first();
return (new NilaiTemplate($id_jadwal, $tanggal))->download('template_inputnilai_' . $tanggal .'_'. $jadwal->nama_sesi .'.xls');
}
public function import(Request $request)
{
$request->validate([
'file' => 'required|mimes:xlsx,xls'
]);
try {
Excel::import(new NilaiImport, $request->file('file'));
return back()->with('notify', ['type' => 'success', 'message' => 'Data nilai berhasil diimport']);
} catch (ValidationException $e) {
$errors = $e->validator->errors()->all();
$errorMessage = implode('<br>', $errors); // turn array into string message
return back()->with('notify', ['type' => 'danger', 'message' => $errorMessage]);
}
}
public function list(Request $request)
{
$idx = decrypt($request->id);
$id = explode('__', $idx);
$id_jadwal = $id[0];
$tanggal = $id[1];
$nilai = VNilaiUser::where('id_jadwal', $id_jadwal)->where('tgl_tes', $tanggal)->withCount(['pendaftarans as rHistory' => function ($query) { $query->where('status', '2');} ])->get();
$jadwal = VPendaftaranJadwal::where('id', $id_jadwal)->first();
$data = [
'nilai' => $nilai,
'jadwal' => $jadwal,
'tanggal' => $tanggal,
'title' => 'List Nilai',
'menu' => 'Nilai',
'submenu' => 'nilai',
'breadcrumbs' => [
['url' => route('admin.nilai-list'), 'title' => 'List Nilai'],
],
];
return view('admin.nilai.list', $data);
}
public function detail($id)
{
$nilai = Nilai::with(['pendaftaran', 'pendaftaran.user'])->where('id', $id)->first();
$data = [
'nilai' => $nilai,
'title' => 'Detail Nilai',
'menu' => 'Nilai',
'submenu' => 'nilai',
'breadcrumbs' => [
['url' => route('admin.nilai-list'), 'title' => 'List Nilai'],
['url' => route('admin.nilai-detail', $id), 'title' => 'Detail Nilai'],
],
];
return view('admin.nilai.detail', $data);
}
public function edit($id)
{
$nilai = Nilai::with(['pendaftaran', 'pendaftaran.user'])->where('id', $id)->first();
$data = [
'nilai' => $nilai,
'title' => 'Edit Nilai',
'menu' => 'Nilai',
'submenu' => 'nilai',
'breadcrumbs' => [
['url' => route('admin.nilai-list'), 'title' => 'List Nilai'],
['url' => route('admin.nilai-detail', $id), 'title' => 'Detail Nilai'],
['url' => route('admin.nilai-edit', $id), 'title' => 'Edit Nilai'],
],
];
return view('admin.nilai.edit', $data);
}
public function update(Request $request, $id)
{
$nilai = Nilai::find($id);
$nilai->update($request->all());
return response()->json(['message' => 'Update berhasil!']);
}
public function nilailuar()
{
return view('admin.nilai.nilailuar');
}
}
<?php
namespace App\Http\Controllers\Admin\Import;
use App\Exports\UserPesertaImport;
use App\Http\Controllers\Controller;
use App\Models\Admin\Role;
use App\Models\Biodata;
use App\Models\User;
use Excel;
use Str;
use Faker\Factory as Faker;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Models\Import\UserTep\DaftarTep;
use App\Models\Import\UserTep\NewUserTep;
use App\Models\Import\UserTep\NilaiTep;
use App\Models\Import\UserTep\RoleTep;
class ImportUserController extends Controller
{
public function index()
{
$data = [
'title' => 'Absensi',
'menu' => 'Absensi',
'submenu' => 'absensi',
'breadcrumbs' => [
['url' => route('admin.absensi.index'), 'title' => 'Absensi'],
],
];
return view('admin.import.index', $data);
}
public function importppg(Request $request){
$collection = Excel::toCollection(new UserPesertaImport, $request->file('file'))[0];
$jum = 0;
$no = 25256;
$iddaftar = 359404;
$idnilai = 333204;
$ada = ['2300103911097036', '2300103912154013', '2300103912027087', '2300103912180037', '2300103913027067', '2300103913027146', '2300103913027095', '2300103913180009', '2300103913180024', '2300103913027082'];
foreach ($collection as $key => $inbound) {
if ($key == 0) {
$keys = $inbound;
continue;
}
if ((!in_array($inbound[1], $ada)) && ($inbound[1] != null)) {
$text = $inbound[2];
$cleaned_text = rtrim($text);
//user
$data['id'] = Str::uuid()->toString();
$data['name'] = $cleaned_text;
$data['username'] = $inbound[1];
$data['password'] = bcrypt($inbound[1]);
$data['email'] = $inbound[1] . '@unesa.ac.id';
$data['userid'] = $no;
$suers = NewUserTep::insert($data);
//role
$role['id'] = Str::uuid()->toString();
$role['roleid'] = 4;
$role['userid'] = $no++;
$roles = RoleTep::insert($role);
//daftar
$daftar['id_pendaftaran'] = $inbound[1];
$daftar['id_kategori'] = 10;
$daftar['tgl_tes'] = '2024-12-27';
$daftar['nama_peserta'] = $cleaned_text;
$daftar['status_pembayaran_tes'] = 2;
$daftar['tgl_tes_kembali'] = '2025-01-11';
$daftar['id_sesi'] = 8;
$daftar['id_ruang'] = 1;
$daftar['editor_pembayaran'] = 'Unggah Manual';
$daftar['editor_pendaftaran'] = 'Unggah Manual';
$daftar['stts_nilai'] = 1;
$daftar['kat_ruang'] = 0;
$daftar['tes_id'] = $inbound[1];
$daftar['sangsi'] = 'Tidak Ada';
$daftar['idtoken'] = 'PPG202502';
$daftar['kode_soal'] = 'a31457b7-7923-463e-8b15-6b3fe110c09c';
$daftar['idnya'] = $iddaftar;
$pendaftar = DaftarTep::insert($daftar);
//nilai
$nilai['id_pendaftaran'] = $iddaftar++;
$nilai['editor'] = 'AdminPPG202501';
$nilai['tgl_nilai_masuk'] = '2025-01-11 15:39:29';
$nilai['status_nilai'] = 'Lulus';
$nilai['total_nilai'] = $inbound[7];
$nilai['nilai_list'] = $inbound[4];
$nilai['nilai_struct'] = $inbound[5];
$nilai['nilai_read'] = $inbound[6];
$nilainya = NilaiTep::insert($nilai);
$jum++;
}
}
dd($jum);
}
public function importuser(){
$roleUmum = Role::where('name', 'umum')->first();
// Ambil data dari tabel users lama
$oldUsers = DB::table('users_lama')->where('editor', 'PPG 202501')->get();
// $this->info("Memulai proses import {$oldUsers->count()} user...");
// $bar = $this->output->createProgressBar($oldUsers->count());
foreach ($oldUsers as $oldUser) {
try {
DB::transaction(function () use ($oldUser, $roleUmum) {
// Buat user baru
$newUserId = Str::uuid();
$newUser = User::create([
'id' => $newUserId,
'name' => $oldUser->name,
'email' => $oldUser->email,
'password' => Hash::make('p@55w0rd'),
]);
// Buat biodata
Biodata::create([
'id' => $newUserId,
'name' => $oldUser->name,
'nik' => $oldUser->username,
'email' => $oldUser->email,
'tipe' => 'umum',
]);
// Assign role
$newUser->assignRole($roleUmum);
});
// $bar->advance();
} catch (\Exception $e) {
$this->error("Gagal import user {$oldUser->email}: " . $e->getMessage());
}
}
$bar->finish();
$this->info("\nProses import selesai!");
}
}
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Admin\HariLibur;
use App\Models\Admin\Jadwal;
use App\Models\Admin\MsRuang;
use App\Models\Admin\MsSesites;
use App\Models\Admin\VJadwal;
use Carbon\Carbon;
use Illuminate\Http\Request;
class JadwalController extends Controller
{
//
public function index()
{
$jadwal = VJadwal::query()->get();
$data = [
'jadwal' => $jadwal,
];
return view('admin.master.jadwal.index', $data);
}
public function create()
{
$jadwal = VJadwal::query()->first();
$sesis = MsSesites::where('status', '1')->pluck('nama_sesi', 'id');
$ruangs = MsRuang::where('status_ruang', '1')->pluck('nama_ruang', 'id');
$data = [
'jadwal' => $jadwal,
'sesis' => $sesis,
'ruangs' => $ruangs,
];
return view('admin.master.jadwal.create', $data);
}
public function store(Request $request)
{
$validated = $request->validate([
'hari' => 'required|array',
'hari.*' => 'string|in:Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday'
]);
$data['id_sesi'] = $request->sesi;
$data['id_ruang'] = $request->ruang;
$data['hari'] = $request->hari;
Jadwal::create($data);
return redirect()->route('admin.jadwal.index');
}
public function edit($id)
{
$jadwal = VJadwal::where('id', $id)->first();
$sesis = MsSesites::where('status', '1')->pluck('nama_sesi', 'id');
$ruangs = MsRuang::where('status_ruang', '1')->pluck('nama_ruang', 'id');
$data = [
'jadwal' => $jadwal,
'sesis' => $sesis,
'ruangs' => $ruangs,
];
return view('admin.master.jadwal.create', $data);
}
public function update(Request $request, Jadwal $jadwal)
{
$validated = $request->validate([
'hari' => 'required|array',
'hari.*' => 'string|in:Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday'
]);
$schedule = Jadwal::where('id', $jadwal->id)->first();
$data['id_sesi'] = $request->sesi;
$data['id_ruang'] = $request->ruang;
$data['hari'] = $request->hari;
$schedule->update($data);
return redirect()->route('admin.jadwal.index');
}
}
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Komen;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Session;
class KomentarController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
$id_komen = Session::get('id_komen');
$komen = [];
// Jika ada id_komen di session, ambil semua komen dengan id_komen tersebut
if ($id_komen) {
$comments = Komen::with('user')
->where('id_sertifikat', $id_komen)
->latest()
->get();
}
$formattedComments = $comments->map(function ($comment) {
return [
'id' => $comment->id,
'content' => $comment->komen,
'created_at' => $comment->created_at->diffForHumans(),
'user' => [
'name' => $comment->user->name,
'role' => $comment->user->roles->first()->name
],
// Tambahkan badge khusus untuk admin/member jika diperlukan
'is_admin' => 'true',
'is_member' => 'false',
];
});
return response()->json($formattedComments);
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
public function detail()
{
// // Mengambil id_komen dari session
// $id_komen = Session::get('id_komen');
// $query = Komen::with('user')->where('id_komen', $id_komen)->latest();
// $comments = $query->get()->map(function ($comment) use ($id_komen) {
// return [
// 'id' => $comment->id,
// 'content' => $comment->komen,
// 'created_at' => $comment->created_at->diffForHumans(),
// 'user' => [
// 'name' => $comment->user->name,
// 'role' => 'Admin' // Ganti dengan role sebenarnya
// ],
// 'is_parent' => $comment->id_komen == $id_komen
// ];
// });
// return response()->json($comments);
// Mengambil id_komen dari session
$id_komen = Session::get('id_komen');
$komen = [];
// Jika ada id_komen di session, ambil semua komen dengan id_komen tersebut
if ($id_komen) {
$comments = Komen::with('user')
->where('id_sertifikat', $id_komen)
->latest()
->get();
}
$formattedComments = $comments->map(function ($comment) {
return [
'id' => $comment->id,
'content' => $comment->komen,
'created_at' => $comment->created_at->diffForHumans(),
'user' => [
'name' => $comment->user->name,
'role' => $comment->user->roles->first()->name
],
// Tambahkan badge khusus untuk admin/member jika diperlukan
'is_admin' => 'true',
'is_member' => 'false',
];
});
return response()->json($formattedComments);
}
public function simpan(Request $request)
{
$request->validate(['content' => 'required']);
$comment = new Komen();
$comment->komen = $request->content;
$comment->id_user = auth()->id();
$comment->id_sertifikat = Session::get('id_komen'); // Null jika tidak ada session
$comment->oleh = 'Admin';
$comment->save();
return response()->json([
'new_comment' => [
'id' => $comment->id,
'content' => $comment->content,
'created_at' => $comment->created_at->diffForHumans(),
'user' => [
'name' => auth()->user()->name,
'role' => 'Admin'
],
'is_parent' => false
]
]);
}
}
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class LaporanController extends Controller
{
//
public function index()
{
return view('admin.laporan.nilai.index');
}
public function laporannilai()
{
return view('admin.laporan.nilai.index');
}
public function rekapnilai()
{
return view('admin.laporan.nilai.index');
}
public function nilaiterbaik()
{
return view('admin.laporan.nilai.index');
}
}
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Admin\MsInstansi;
use Illuminate\Http\Request;
class MasterInstansiController extends Controller
{
//
public function index()
{
$instansi = MsInstansi::query()->get();
$data = [
'instansi' => $instansi,
'title' => 'Instansi',
'menu' => 'Master Data',
'submenu' => 'instansi',
'breadcrumbs' => [
['url' => route('admin.instansi.index'), 'title' => 'Master Instansi'],
],
];
return view('admin.master.instansi.index', $data);
}
}
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class MasterJadwalLuarKotaController extends Controller
{
//
}
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Admin\MsKategori;
use Illuminate\Http\Request;
class MasterKategoriController extends Controller
{
//
public function index()
{
$kategori = MsKategori::query()->get();
$data = [
'kategori' => $kategori,
'title' => 'Kategori',
'menu' => 'Master Data',
'submenu' => 'kategori',
'breadcrumbs' => [
['url' => route('admin.kategori.index'), 'title' => 'Master Kategori Tes'],
],
];
return view('admin.master.kategori.index', $data);
}
}
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Admin\HariLibur;
use Illuminate\Http\Request;
class MasterLiburController extends Controller
{
//
public function index()
{
$libur = HariLibur::query()->get();
$data = [
'libur' => $libur,
'title' => 'Hari Libur',
'menu' => 'Master Data',
'submenu' => 'libur',
'breadcrumbs' => [
['url' => route('admin.libur.index'), 'title' => 'Master Hari Libur'],
],
];
return view('admin.master.libur.index', $data);
}
}
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Admin\MsRuang;
use Illuminate\Http\Request;
class MasterRuangController extends Controller
{
//
public function index()
{
$ruang = MsRuang::query()->get();
$data = [
'ruang' => $ruang,
'title' => 'Ruang',
'menu' => 'Master Data',
'submenu' => 'ruang',
'breadcrumbs' => [
['url' => route('admin.ruang.index'), 'title' => 'Master Ruang Tes'],
],
];
return view('admin.master.ruang.index', $data);
}
}
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Admin\MsSesites;
use Illuminate\Http\Request;
class MasterSesiController extends Controller
{
//
public function index()
{
$sesi = MsSesites::query()->get();
$data = [
'sesi' => $sesi,
'title' => 'Sesi',
'menu' => 'Master Data',
'submenu' => 'sesi',
'breadcrumbs' => [
['url' => route('admin.sesi.index'), 'title' => 'Master Sesi Tes'],
],
];
return view('admin.master.sesi.index', $data);
}
}
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class MasterSkorController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class PendaftaranController extends Controller
{
//
}
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Pendaftaran;
use Illuminate\Http\Request;
class PesertaController extends Controller
{
//
public function index()
{
$data = [
'title' => 'Peserta',
'menu' => 'Master Data',
'submenu' => 'peserta',
'breadcrumbs' => [
['url' => route('admin.peserta.index'), 'title' => 'Master Peserta'],
],
];
return view('admin.peserta.index', $data);
}
public function show($id)
{
$data = [
'title' => 'Tambah Peserta',
'menu' => 'Master Data',
'submenu' => 'peserta',
'breadcrumbs' => [
['url' => route('admin.peserta.index'), 'title' => 'Master Peserta'],
['url' => route('admin.peserta.create'), 'title' => 'Tambah Peserta'],
],
];
return view('admin.peserta.show', $data);
}
public function unggah_manual()
{
$list = Pendaftaran::query()->get();
$data = [
'list' => $list,
'title' => 'Tambah Peserta',
'menu' => 'Master Data',
'submenu' => 'peserta',
'breadcrumbs' => [
['url' => route('admin.peserta.index'), 'title' => 'Master Peserta'],
['url' => route('admin.peserta.create'), 'title' => 'Tambah Peserta'],
],
];
return view('admin.peserta.unggah_manual', $data);
}
}
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Controllers\GenController;
use App\Models\Sertifikat;
use Illuminate\Http\Request;
use App\Models\Komen;
use Illuminate\Support\Facades\Session;
class SertifikatController extends Controller
{
//
public function index()
{
$sertifikat = Sertifikat::with(['nilai'])->where('status_bayar', '2')->get();
Session::forget('id_komen');
$data = [
'sertifikat' => $sertifikat,
'title' => 'Sertifikat',
'menu' => 'Sertifikat',
'submenu' => 'sertifikat',
'breadcrumbs' => [
['url' => route('admin.sertifikat.index'), 'title' => 'Sertifikat'],
],
];
return view('admin.sertifikat.index', $data);
}
public function show($id)
{
}
public function detail($id)
{
$idx = decrypt($id);
Session::put('id_komen', $idx);
$sertifikat = Sertifikat::with(['nilai', 'komen'])->find($idx);
$nilai = $sertifikat->nilai ? $sertifikat->nilai : [];
$daftar = $nilai->pendaftaran ? $nilai->pendaftaran : [];
$noseri = GenController::generateNoserikertas();
$data = [
'noseri' => $noseri,
'nilai' => $nilai,
'daftar' => $daftar,
'sertifikat' => $sertifikat,
'title' => 'Sertifikat',
'menu' => 'Sertifikat',
'submenu' => 'sertifikat',
'breadcrumbs' => [
['url' => route('admin.sertifikat.index'), 'title' => 'Sertifikat'],
],
];
return view('admin.sertifikat.detail', $data);
}
public function simpan (Request $request)
{
//
$noseri = GenController::generateNoserikertas();
$sertifikat = Sertifikat::with(['nilai', 'komen'])->find($request->id);
$sertifikat->nomor_seri = $noseri['full_serial'];
$sertifikat->kode_seri = '';
$sertifikat->tgl_eksekusi = now();
$sertifikat->editor_eksekusi = auth()->user()->id;
$sertifikat->status = '2';
$sertifikat->save();
return response()->json(['message' => 'Update berhasil!']);
}
public function pengajuancetak()
{
return view('admin.sertifikat.pengajuancetak');
}
}
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class UserController extends Controller
{
//
public function index()
{
return view('mahasiswa.nilai.index');
}
}
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class VaController extends Controller
{
//
public function index()
{
return view('admin.token.index');
}
public function belitoken()
{
return view('admin.token.belitoken');
}
}
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\Pendaftaran;
class PurchaseApiController extends Controller
{
// Cek status
public function status($purchaseId) {
$pendaftaran = Pendaftaran::findOrFail($purchaseId);
if ($pendaftaran->status == 1 && $pendaftaran->bayar_expired->isPast()) {
$pendaftaran->update(['status' => 3]);
}
return response()->json([
'status' => $pendaftaran->status,
'remaining' => $pendaftaran->status == 1
? max(0, now()->diffInSeconds($pendaftaran->bayar_expired, false))
: 0
]);
}
// Callback bank (update ke Paid)
public function handleBankCallback(Request $request) {
$validated = $request->validate([
'va_number' => 'required|exists:purchases,va_number'
]);
$purchase = Purchase::where('va_number', $validated['va_number'])->first();
if ($purchase->status === 1) {
$purchase->update(['status' => 2]);
}
return response()->json(['success' => true]);
}
}
\ No newline at end of file
<?php
namespace App\Http\Controllers\Authentication;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Password;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use App\Models\User;
class ForgotPasswordController extends Controller
{
public function showLinkRequestForm()
{
return view('auth.submit-email');
}
public function sendResetLinkEmail(Request $request)
{
$user = User::where('email', $request->email)->first();
if(is_null($user)){
return redirect()->route('user.password.request')->with('status', 'Email tidak terdaftar, silakan gunakan email lain.');
} else {
Mail::to($user->email)->send(new ActivationEmail($user, $token));
}
}
}
<?php
namespace App\Http\Controllers\Authentication;
use App\Http\Controllers\Controller;
use App\Models\Admin\Role as AdminRole;
use App\Models\User as ModelsUser;
use App\Repositories\AuthRepository;
use App\Repositories\BiodataRepository;
use App\Repositories\UsersRepository;
use App\User;
use Auth;
use Exception;
use GuzzleHttp\Client as GuzzleHttpClient;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Str;
class LoginController extends Controller
{
private $authRepo;
private $userRepo;
private $biodataRepo;
private $userDetailRepo;
public function __construct(
AuthRepository $authRepo,
UsersRepository $userRepo,
BiodataRepository $biodataRepo
) {
$this->authRepo = $authRepo;
$this->userRepo = $userRepo;
$this->biodataRepo = $biodataRepo;
}
public function index()
{
try {
$sessso = $_COOKIE['email_sso'];
if (isset($sessso)) {
$urlsso = 'https://sso.unesa.ac.id/api/user-cookie';
$cek_sesisso = file_get_contents($urlsso."/$sessso");
$rr = (json_decode($cek_sesisso));
$emailsso = $rr->email;
$useridsso = $rr->userid;
}
$user = $this->userRepo->find(null, null, $emailsso);
if ($user) {
// Login
return $this->getlogin($user->id);
} else {
// Add User
if (isset($sessso)) {
$auth = $this->authRepo->getEmailAuth($emailsso);
$this->getadduser($auth);
return redirect()->route('app');
}
}
return Redirect::to('https://sso.unesa.ac.id/dashboard');
} catch (\Exception $sessso) {
return View('auth.login');
}
}
public function sso(Request $request, $email, $session_id)
{
$auth = $this->authRepo->sso($request, $email, $session_id);
// try {
// $clientbiodata = new GuzzleHttpClient();
// $apiRequestbiodata = $clientbiodata->request('GET', 'https://sso.unesa.ac.id/userid/'.'steffi.19056@mhs.unesa.ac.id');
// $aksessso = json_decode($apiRequestbiodata->getBody()->getContents());
// } catch (\Exception $apiRequestbiodata) {
// $gagal_login = 'Data Tidak Ditemukan';
// return $error;
// }
// $auth = $aksessso;
if (!is_array($auth)) {
return redirect('https://sso.unesa.ac.id/user');
}
$user = $this->userRepo->find(null, null, $auth[0]->email);
if ($user) {
// Login
if(is_null($user->manual_update)){
$biodata = $this->biodataRepo->biodata($auth);
// if(!is_null($biodata['akses_sms_id'])){
$user->biodata->update($biodata);
$role = AdminRole::query()->where('name', $biodata['role'])->first();
$user->syncRoles([$role]);
}
// }
return $this->getlogin($user->id);
} else {
// Add User
// dd($this->getadduser($auth));
return $this->getadduser($auth);
}
return redirect()->route('/');
}
private function getlogin($userid)
{
Auth::loginUsingId($userid);
ModelsUser::generateUserToken($userid);
return redirect()->route('dashboard');
}
private function getAdduser($auth)
{
$biodata = $this->biodataRepo->biodata($auth);
if ($biodata) {
DB::beginTransaction();
try {
$id = (string) Str::uuid();
$user = $this->userRepo->storeSso($id, $biodata);
$this->biodataRepo->storeSso($user->id, $biodata);
DB::commit();
return $this->getlogin($user->id);
// return redirect()->route('dashboard');
} catch (Exception $ex) {
DB::rollBack();
}
}
return redirect()->route('login');
}
public function checkLoginToken(Request $request)
{
try{
$user = ModelsUser::getFromLoginToken($request->email, $request->token);
if(is_null($user)){
return response([
'code' => 404,
'message' => 'User tidak ditemukan!',
'user' => null,
'nim' => null,
'id_sms' => null
], 200);
}
return response([
'code' => 200,
'message' => 'Sukses!',
'user' => $user->email,
'nim' => $user->biodata->nim,
'id_sms' => $user->biodata->prodi_id
], 200);
}
catch(Exception $ex){
return response([
'code' => 404,
'message' => 'User tidak ditemukan!',
'user' => null,
'nim' => null,
'id_sms' => null
], 200);
}
}
// public function check($email)
// {
// $clientbiodata = new GuzzleHttpClient();
// $apiRequestbiodata = $clientbiodata->request('GET', 'https://sso.unesa.ac.id/userid/'. $email);
// $auth = json_decode($apiRequestbiodata->getBody()->getContents());
// // $auth[0] = (object)['userid' => '18020074065'];
// $check = $this->biodataRepo->siakadu($auth);
// dd($check);
// }
}
<?php
namespace App\Http\Controllers\Authentication;
use Auth;
use Alert;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use App\Http\Controllers\Controller;
use App\Mail\ActivationEmail;
use App\Models\Admin\Role;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Uuid;
use Crypt;
use Illuminate\Support\Facades\Mail;
use App\Models\User;
use App\Models\Biodata;
use Carbon\Carbon;
class RegisterController extends Controller
{
public function index()
{
return view('auth.registrasi');
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
public function create(Request $request)
{
}
protected function validator(array $data)
{
return Validator::make($data, [
'email' => [
'required',
'string',
'email',
'max:255',
],
'id' => 'string',
// 'role' => 'required',
// 'captcha' => 'required|captcha',
]);
}
public function register(Request $request)
{
$validated = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users,email',
'password' => 'required|string|min:8',
'gender' => 'required|string',
// 'birthdate' => 'required|date|before_or_equal:' . Carbon::now()->subYears(18)->toDateString(), // Usia minimal 18 tahun
], [
'email.unique' => 'Email sudah terdaftar, silakan gunakan email lain.',
]);
if (str_contains($request->email, 'unesa.ac.id')) {
return redirect()->back()->withErrors(['unesa' => 'Harap tidak menggunakan email UNESA!']);
}
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
Biodata::create([
'id' => $user['id'],
'name' => $user['name'],
'email' => $user['email'],
'sex' => $request->gender,
'tgl_lahir' => $request->tgl,
]);
$roleUmum = Role::where('name', 'umum')->first();
$user->assignRole($roleUmum);
$token = encrypt($user->email);
// Kirim email aktivasi
Mail::to($user->email)->send(new ActivationEmail($user, $token));
return redirect()->route('login')->with('status', 'Please check your email for activation link.');
// $objSend = new \stdClass();
// $objSend->email = $user['email'];
// $objSend->id = Crypt::encrypt($user['id']);
// $objSend->passuser = $passuser;
// $to = $user['email'];
// $data = [
// 'user' => $user,
// ];
// //dd($objSend);
// Mail::to($to)->send(new RegisterEmail($objSend));
// return view('auth.register_info', $data);
}
public function verify($token)
{
// Verifikasi token dan aktivasi user
$user = User::where('email', $token)->first();
if ($user) {
$user->email_verified_at = Carbon::now();
$user->save();
return redirect()->route('login')->with('status', 'Your account is activated. Please login.');
}
return redirect()->route('login')->withErrors('Invalid activation link.');
}
}
<?php
namespace App\Http\Controllers\Authentication;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Password;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use App\Models\User;
class ResetPasswordController extends Controller
{
public function showResetForm($token)
{
return view('auth.passwords.reset')->with(['token' => $token]);
}
public function reset(Request $request)
{
$request->validate([
'email' => 'required|email|exists:users,email',
'password' => 'required|confirmed|min:8',
'token' => 'required',
]);
$response = Password::reset(
$request->only('email', 'password', 'password_confirmation', 'token'),
function ($user, $password) {
$user->forceFill([
'password' => bcrypt($password),
])->save();
}
);
return $response == Password::PASSWORD_RESET ? redirect()->route('login')->with('status', 'Password reset successful.') : back()->withErrors(['email' => [trans($response)]]);
}
}
<?php
namespace App\Http\Controllers\CService;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class JadwalController extends Controller
{
//
public function kursus()
{
return view('cs.jadwal.kursus.index');
}
public function treatment()
{
return view('cs.jadwal.treatment.index');
}
public function kerjasama()
{
return view('cs.jadwal.kerjasama.index');
}
}
<?php
namespace App\Http\Controllers\CService;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class PesertaController extends Controller
{
//
public function index()
{
return view('cs.master.peserta.index');
}
public function pesertaluar()
{
return view('cs.master.pesertaluar.index');
}
public function biodatapeserta()
{
return view('cs.master.biodata.index');
}
public function pesertapost()
{
return view('cs.master.posttes.index');
}
public function rekappeserta()
{
return view('cs.master.rekap.index');
}
}
<?php
namespace App\Http\Controllers\CService;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class SertifikatController extends Controller
{
//
public function index()
{
return view('cs.sertifikat.index');
}
//
public function ajuan()
{
return view('cs.sertifikat.ajuan');
}
}
<?php
namespace App\Http\Controllers\CService;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class UserController extends Controller
{
//
public function index()
{
return view('cs.master.user.index');
}
}
<?php
namespace App\Http\Controllers\CService;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class VaController extends Controller
{
//
public function index()
{
return view('cs.token.index');
}
public function tokenrekap()
{
return view('cs.token.rekap');
}
public function tokenuser()
{
return view('cs.token.user');
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}
<?php
namespace App\Http\Controllers;
use App\Models\Biodata;
use App\Models\Sertifikat;
use App\Models\User;
use Exception;
use Illuminate\Support\Facades\DB;
class GenController extends Controller
{
public static function generateNomorUrut($userId, $jenis = 1)
{
$user = Biodata::find($userId);
if ($user && $user->no_urut_va && $user->kredit_va) {
return [
'nomor_urut' => $user->no_urut_va,
'jenis' => $user->jenis,
'warning' => null
];
}
$newJenis = $jenis;
$newNumber = null;
$warning = null;
DB::transaction(function () use ($user, &$newNumber, &$newJenis, &$warning, $jenis) {
$sequence = DB::table('sequence_counter')
->where('kredit_va', $jenis)
->lockForUpdate()
->first();
$lastNumber = $sequence ? $sequence->last_number : 0;
if ($lastNumber >= 99960 && $lastNumber < 99999) {
$sisa = 99999 - $lastNumber;
$warning = "Peringatan: Nomor urut jenis $jenis hampir habis! Sisa: $sisa nomor";
}
if ($lastNumber >= 99999) {
$newJenis = $jenis + 1;
$lastNumber = 0;
$newSequence = DB::table('sequence_counter')
->where('kredit_va', $newJenis)
->lockForUpdate()
->first();
if (!$newSequence) {
DB::table('sequence_counter')->insert([
'kredit_va' => $newJenis,
'last_number' => 0
]);
}
$warning = "Nomor jenis $jenis penuh! Beralih ke jenis $newJenis";
}
$newNumberInt = $lastNumber + 1;
$newNumber = str_pad($newNumberInt, 5, '0', STR_PAD_LEFT);
DB::table('sequence_counter')
->where('kredit_va', $newJenis)
->update(['last_number' => $newNumberInt]);
if ($user) {
$user->update([
'no_urut_va' => $newNumber,
'kredit_va' => $newJenis
]);
}
});
return [
'nomor_urut' => $newNumber,
'jenis' => $newJenis,
'warning' => $warning
];
}
public static function generateNoserikertas()
{
// Ambil semua huruf yang ada dan nomor maksimal per huruf
$maxPerLetter = [];
$allSerials = Sertifikat::pluck('nomor_seri');
foreach ($allSerials as $serial) {
if (preg_match('/^([A-Z])\.(\d{5})$/', $serial, $matches)) {
$letter = $matches[1];
$number = (int)$matches[2];
if (!isset($maxPerLetter[$letter]) || $number > $maxPerLetter[$letter]) {
$maxPerLetter[$letter] = $number;
}
}
}
// Jika tidak ada data
if (empty($maxPerLetter)) {
return [
'full_serial' => 'A.00001',
'huruf_seri' => 'A',
'nomor_seri' => '00001'
];
}
// Urutkan huruf dari Z ke A
krsort($maxPerLetter);
// Ambil huruf terbesar dengan nomor tertinggi
$currentLetter = array_key_first($maxPerLetter);
$currentNumber = $maxPerLetter[$currentLetter];
// Generate next serial
if ($currentNumber === 99999) {
$nextLetter = chr(ord($currentLetter) + 1);
$nextNumber = 1;
// Validasi batas huruf (A-Z)
if (ord($nextLetter) > ord('Z')) {
throw new Exception("Batas maksimal serial sudah tercapai");
}
} else {
$nextLetter = $currentLetter;
$nextNumber = $currentNumber + 1;
}
$fullSerial = $nextLetter . '.' . str_pad($nextNumber, 5, '0', STR_PAD_LEFT);
return [
'full_serial' => $fullSerial,
'huruf_seri' => $nextLetter,
'nomor_seri' => str_pad($nextNumber, 5, '0', STR_PAD_LEFT)
];
}
}
<?php
namespace App\Http\Controllers;
use App\Models\Admin\MsKategori;
use Session;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class HomeController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$user = Auth::user();
$role = $user->roles->first()->name;
$menuItems = MsKategori::where('peserta', $user->biodata->tipe)->where('jenis', 'TES')->where('status', '1')->get();
Session::put('menukategori', $menuItems);
if (empty($menuItems)) {
return redirect()->route('dashboard');
}
switch ($role) {
case 'mahasiswa':
return redirect()->route('mahasiswa.home');
case 'admin':
return redirect()->route('admin.dashboard');
case 'umum':
return redirect()->route('umum.dashboard');
}
}
public function home()
{
//
return view('dashboard');
}
}
<?php
namespace App\Http\Controllers\Mahasiswa;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class DataNilaiController extends Controller
{
//
public function index()
{
return view('mahasiswa.nilai.index');
}
public function daftar()
{
return view('mahasiswa.nilai.daftar');
}
public function bayar()
{
return view('mahasiswa.nilai.bayar');
}
public function qris()
{
return view('mahasiswa.nilai.qris');
}
}
<?php
namespace App\Http\Controllers\Mahasiswa;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class KursusController extends Controller
{
//
public function index()
{
return view('mahasiswa.kursus.index');
}
}
<?php
namespace App\Http\Controllers\Mahasiswa;
use App\Http\Controllers\Controller;
use App\Models\Admin\HariLibur;
use App\Models\Admin\Jadwal;
use App\Models\Admin\Kuota;
use App\Models\Admin\MsKategori;
use App\Models\Admin\VJadwal;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Crypt;
class PendaftaranController extends Controller
{
//
public function index()
{
return view('mahasiswa.daftar.index');
}
public function show($id)
{
dd(decrypt($id));
return view('umum.daftar.index');
}
public function daftar($id)
{
$user = Auth::user();
$jadwal = VJadwal::where('id', decrypt($id))->first();
// $kategori = MsKategori::where('peserta')
$data = [
'jadwal' => $jadwal,
'user' => $user,
];
return view('mahasiswa.daftar.create', $data);
}
public function bayar()
{
return view('mahasiswa.daftar.bayar');
}
public function qris()
{
return view('mahasiswa.daftar.qris');
}
public function getDisabledDates()
{
$dates = HariLibur::pluck('holiday_date')->toArray();
return response()->json($dates);
}
public function getSessions(Request $request)
{
$date = $request->date;
$dayName = Carbon::parse($date)->englishDayOfWeek;
$carbonDate = Carbon::parse($date);
if ($carbonDate->isWeekend() || HariLibur::whereDate('holiday_date', $date)->exists()) {
return response()->json(['error' => 'Tanggal tidak tersedia'], 400);
}
$sessions = VJadwal::whereJsonContains('hari', $dayName)->get()
->map(function ($session) use ($date) {
$booked = Kuota::where('id', $session->id)
->whereDate('tgl_daftar', $date)
->first();
if($booked == null){
$quota = 0;
} else {
$quota = $booked->kuota;
}
$session->available = $session->kapasitas - $quota;
$session->encrypted_id = Crypt::encrypt($session->id);
return $session;
});
return response()->json($sessions);
}
}
<?php
namespace App\Http\Controllers\Mahasiswa;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class SertifikatController extends Controller
{
//
public function index()
{
return view('mahasiswa.sertifikat.index');
}
}
<?php
namespace App\Http\Controllers\Mahasiswa;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class TreatmentController extends Controller
{
//
public function index()
{
return view('mahasiswa.treatment.index');
}
}
<?php
namespace App\Http\Controllers\Umum;
use Alert;
use App\Http\Controllers\Controller;
use App\Http\Controllers\GenController;
use App\Models\Biodata;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class BiodataController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$user = Auth::user();
$ceknourut = GenController::generateNomorUrut($user->id, 1);
$data = [
'user' => $user,
];
return view('umum.biodata.index', $data);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
try {
$userId = $id;
$bio = $request->except('_token');
Biodata::where('id', $userId)->update([
'nik' => $bio['nik'],
'name' => $bio['name'],
'sex' => $bio['gender'],
'temp_lahir' => $bio['temp_lahir'],
'tgl_lahir' => $bio['tgl_lahir'],
'kode_pos' => $bio['kode_pos'],
'alamat' => $bio['alamat'],
'phone' => $bio['phone'],
'instansi' => $bio['instansi'],
]);
User::where('id', $userId)->update([
'is_active' => now(),
]);
Alert::success('Data berhasil di update')->persistent('Ok');
return redirect()->route('umum.biodata.index');
} catch (Exception $ex) {
return response('Gagal Update Biodata', 500);
}
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
<?php
namespace App\Http\Controllers\Umum;
use App\Http\Controllers\Controller;
use App\Models\Nilai;
use App\Models\Pendaftaran;
use App\Models\Admin\MsKategori;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class DataNilaiController extends Controller
{
//
public function index()
{
$nilai = Pendaftaran::where('id_user', auth()->user()->id)
->where('status', 2)
->with(['nilai' => function ($query) {
$query->orderBy('created_at', 'desc');
}])
->get();
$data = [
'nilai' => $nilai,
'title' => 'Data Nilai',
'active' => 'data-nilai',
];
return view('umum.nilai.index', $data);
}
public function daftar($id)
{
$user = Auth::user();
$nilai = Nilai::where('id_pendaftaran', decrypt($id))
->with(['pendaftaran' => function ($query) {
$query->with(['biodata']);
}])
->first();
$kategori = MsKategori::where('peserta', $user->roles->first()->name)->where('kategori', 'Sertifikat')->where('jenis', 'Sertifikat')->first();
$data = [
'kategori' => $kategori,
'nilai' => $nilai,
'title' => 'Data Nilai',
'active' => 'data-nilai',
'id' => $id,
];
return view('umum.nilai.daftar', $data);
}
}
<?php
namespace App\Http\Controllers\Umum;
use App\Http\Controllers\Controller;
use App\Models\Biodata;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
use Intervention\Image\Facades\Image;
class FotoController extends Controller
{
//
public function index()
{
}
public function show($id)
{
$user = User::find(decrypt($id));
$bio = Biodata::find(decrypt($id));
$data = [
'user' => $user,
'bio' => $bio,
];
return view('umum.foto.index', $data);
}
public function store(Request $request)
{
$datanya = $request->except('_token');
$this->validate(
$request,
[
'filefoto' => 'mimes:jpg,jpeg|max:2000'
],
[
'filefoto.mimes' => 'File harus jpg',
'filefoto.max' => 'File tidak boleh lebih dari 2 mb',
]
);
$jenis = 'umum';
$bio = Biodata::find($datanya['userid']);
$destinationPath = public_path('/thumbnail');
$img = Image::make($image->path());
$img->resize(100, 100, function ($constraint) {
$constraint->aspectRatio();
})->save($destinationPath . '/' . $input['imagename']);
if (!isset($datanya['filefoto'])) {
$file_nama = $bio->foto;
} else {
$image = Image::make($datanya['filefoto']); // Membuat instance image dari file foto
$image->resize(330, 450); // Resize image menjadi 330x450
$file_nama = $bio->id . '.' . $datanya['filefoto']->getClientOriginalExtension();
Storage::disk('static')->put('neotep/foto/' . $jenis . '/' . $file_nama, file_get_contents($proposal['file']->getRealPath()));
// Storage::disk('static')->put('neotep/foto/' . $jenis . '/' . $file_nama, (string) $image->encode());
}
$bio->foto = $file_nama;
$bio->updated_at = now();
$bio->save();
return redirect()->route('umum.foto.show', [ 'foto' => encrypt($datanya['userid']) ])->with('success', 'Foto Berhasil di upload');
}
}
<?php
namespace App\Http\Controllers\Umum;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class HomeController extends Controller
{
//
public function index()
{
return view('umum.dasboard');
}
}
<?php
namespace App\Http\Controllers\Umum;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class KursusController extends Controller
{
//
public function index()
{
return view('umum.kursus.index');
}
}
<?php
namespace App\Http\Controllers\Umum;
use Session;
use Alert;
use App\Http\Controllers\Controller;
use App\Models\Admin\HariLibur;
use App\Models\Admin\Jadwal;
use App\Models\Admin\Kuota;
use App\Models\Admin\MsKategori;
use App\Models\Admin\VJadwal;
use App\Models\Pendaftaran;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Crypt;
class PendaftaranController extends Controller
{
//
public function index()
{
$user = Auth::user();
$pendaftaran = Pendaftaran::where('id_user', $user->id)->get();
$data = [
'pendaftaran' => $pendaftaran,
];
return view('umum.daftar.index', $data);
}
public function show($id)
{
$user = Auth::user();
$pendaftaran = Pendaftaran::where('id_user', $user->id)->get();
Pendaftaran::where('status', 1)->where('bayar_expired', '<', now())->update(['status' => 3]);
Session::put('jenistes', decrypt($id));
$data = [
'jenistes' => $id,
'pendaftaran' => $pendaftaran
];
return view('umum.daftar.index', $data);
}
public function store(Request $request)
{
$tgl_kembali = date('Y-m-d', strtotime($request->tgl_tes . ' + 3 day'));
$data['noidentitas'] = $request->noidentitas;
$data['nama_peserta'] = $request->nama;
$data['id_jadwal'] = $request->jadwal;
$data['id_kategori'] = $request->kategori;
$data['id_user'] = $request->iduser;
$data['status'] = '1';
$data['tgl_tes'] = $request->tgl_tes;
$data['tgl_kembali'] = $tgl_kembali;
Pendaftaran::create($data);
return redirect()->route('umum.pendaftaran.index')->with('success', 'Berhasil Melakukan Pendaftaran');
}
public function daftar($id)
{
$idx = explode('_', decrypt($id));
$jenisTes = Session::get('jenistes');
$user = Auth::user();
$cekPendaftaran = Pendaftaran::where('noidentitas', $user->biodata->nik)->where('id_jadwal', $idx[0])->where('tgl_tes', $idx[1])->first();
if ($cekPendaftaran) {
Alert::error('Tidak bisa melakukan pendaftaran pada tanggal dan sesi yang sama!');
return redirect()->back();
}
$jadwal = VJadwal::where('id', $idx[0]) ->first();
$kategori = MsKategori::where('peserta', $user->roles->first()->name)->where('kategori', $jenisTes)->where('jenis', 'TES')->first();
$tanggal = $idx[1];
$data = [
'jadwal' => $jadwal,
'user' => $user,
'kategori' => $kategori,
'tanggal' => $tanggal
];
return view('umum.daftar.create', $data);
}
public function bayar($id)
{
$pendaftaran = Pendaftaran::where('id', decrypt($id))->first();
if ($pendaftaran->status == 1 && $pendaftaran->bayar_expired->isPast()) {
$pendaftaran->update(['status' => 3]);
}
$remaining = max(0, now()->diffInSeconds($pendaftaran->bayar_expired, false));
$data = [
'pendaftaran' => $pendaftaran->refresh(),
'remaining' => $remaining,
];
return view('umum.daftar.bayar', $data);
}
public function qris()
{
return view('umum.daftar.qris');
}
public function getDisabledDates()
{
$dates = HariLibur::pluck('holiday_date')->toArray();
return response()->json($dates);
}
public function getSessions(Request $request)
{
$date = $request->date;
$dayName = Carbon::parse($date)->englishDayOfWeek;
$carbonDate = Carbon::parse($date);
if ($carbonDate->isWeekend() || HariLibur::whereDate('holiday_date', $date)->exists()) {
return response()->json(['error' => 'Tanggal tidak tersedia'], 400);
}
$sessions = VJadwal::whereJsonContains('hari', $dayName)->get()
->map(function ($session) use ($date) {
$booked = Kuota::where('id_jadwal', $session->id)
->whereDate('tgl_daftar', $date)
->first();
if ($booked == null) {
$quota = 0;
} else {
$quota = $booked->kuota;
}
$session->available = $session->kapasitas - $quota;
$session->encrypted_id = Crypt::encrypt($session->id.'_'.$date);
return $session;
});
return response()->json($sessions);
}
}
<?php
namespace App\Http\Controllers\Umum;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class RegistrasiController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
return view('auth.registrasi');
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
<?php
namespace App\Http\Controllers\Umum;
use App\Http\Controllers\Controller;
use App\Models\Pendaftaran;
use App\Models\Sertifikat;
use Illuminate\Http\Request;
class SertifikatController extends Controller
{
//
public function index()
{
$pendaftaran = Pendaftaran::where('id_user', auth()->user()->id)
->where('status', 2)
->with(['nilai' => function ($query) {
$query->orderBy('created_at', 'desc');
}])
->get();
$nilai = $pendaftaran->first()->nilai ? $pendaftaran->first()->nilai : [];
$data = [
'pendaftaran' => $pendaftaran,
'nilai' => $nilai,
'title' => 'Data Sertifikat',
'active' => 'data-sertifikat',
];
return view('umum.sertifikat.index', $data);
}
public function store(Request $request)
{
$tgl_kembali = date('Y-m-d', strtotime($request->tgl_tes . ' + 3 day'));
$data['id_nilai'] = $request->id_nilai;
$data['test_id'] = $request->test_id;
$data['tes_ke'] = '1';
$data['id_kategori'] = $request->id_kategori;
$data['tgl_ajuan'] = now();
$data['status'] = '1';
$data['status_bayar'] = '1';
Sertifikat::create($data);
return redirect()->route('umum.sertifikat.index')->with('success', 'Berhasil Melakukan Pendaftaran');
}
public function show($id)
{
$sertifikat = Sertifikat::find($id);
return view('umum.sertifikat.show', compact('sertifikat'));
}
}
<?php
namespace App\Http\Controllers\Umum;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class TreatmentController extends Controller
{
//
public function index()
{
return view('umum.treatment.index');
}
}
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
// \App\Http\Middleware\TrustHosts::class,
\App\Http\Middleware\TrustProxies::class,
\Fruitcake\Cors\HandleCors::class,
\App\Http\Middleware\PreventRequestsDuringMaintenance::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];
}
<?php
namespace App\Http\Middleware;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
class Authenticate extends Middleware
{
/**
* Get the path the user should be redirected to when they are not authenticated.
*
* @param \Illuminate\Http\Request $request
* @return string|null
*/
protected function redirectTo($request)
{
if (! $request->expectsJson()) {
return route('login');
}
}
}
<?php
namespace App\Http\Middleware;
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
class EncryptCookies extends Middleware
{
/**
* The names of the cookies that should not be encrypted.
*
* @var array
*/
protected $except = [
//
];
}
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance as Middleware;
class PreventRequestsDuringMaintenance extends Middleware
{
/**
* The URIs that should be reachable while maintenance mode is enabled.
*
* @var array
*/
protected $except = [
//
];
}
<?php
namespace App\Http\Middleware;
use App\Providers\RouteServiceProvider;
use Closure;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string[]|null ...$guards
* @return mixed
*/
public function handle($request, Closure $next, ...$guards)
{
$guards = empty($guards) ? [null] : $guards;
foreach ($guards as $guard) {
if (Auth::guard($guard)->check()) {
return redirect(RouteServiceProvider::HOME);
}
}
return $next($request);
}
}
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
class TrimStrings extends Middleware
{
/**
* The names of the attributes that should not be trimmed.
*
* @var array
*/
protected $except = [
'password',
'password_confirmation',
];
}
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Middleware\TrustHosts as Middleware;
class TrustHosts extends Middleware
{
/**
* Get the host patterns that should be trusted.
*
* @return array
*/
public function hosts()
{
return [
$this->allSubdomainsOfApplicationUrl(),
];
}
}
<?php
namespace App\Http\Middleware;
use Fideloper\Proxy\TrustProxies as Middleware;
use Illuminate\Http\Request;
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
* @var array|string|null
*/
protected $proxies;
/**
* The headers that should be used to detect proxies.
*
* @var int
*/
protected $headers = Request::HEADER_X_FORWARDED_ALL;
}
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
//
];
}
<?php
namespace App\Imports;
use App\Models\Pendaftaran;
use App\Models\Nilai;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithValidation;
use Illuminate\Validation\ValidationException;
use Maatwebsite\Excel\Concerns\SkipsOnError;
use Throwable;
class NilaiImport implements ToCollection, WithHeadingRow, WithValidation, SkipsOnError
{
private $errors = [];
private $invalidTestIds = [];
public function collection(Collection $rows)
{
// Validasi header
$expectedHeaders = ['no', 'test_id', 'nama_peserta', 'nilai_listening', 'nilai_reading', 'nilai_structure', 'nilai_total'];
$firstRow = $rows->first();
if ($firstRow && array_diff(array_keys($firstRow->toArray()), $expectedHeaders)) {
throw ValidationException::withMessages([
'template' => ['Template file tidak sesuai dengan format yang ditentukan']
]);
}
foreach ($rows as $row) {
// Cek apakah test_id ada di tabel pendaftaran
$pendaftaran = Pendaftaran::where('test_id', $row['test_id'])->first();
if (!$pendaftaran) {
$this->invalidTestIds[] = $row['test_id'];
continue;
}
// Simpan data ke tabel nilai
Nilai::updateOrCreate(
['id_pendaftaran' => $pendaftaran->id],
[
// $nilai_total = $row['nilai_listening'] + $row['nilai_reading'] + $row['nilai_structure'],
'id_user' => $pendaftaran->id_user,
'nilai_list' => $row['nilai_listening'],
'nilai_read' => $row['nilai_reading'],
'nilai_struct' => $row['nilai_structure'],
'nilai_total' => $row['nilai_total']
]
);
}
// Jika ada test_id tidak valid
if (!empty($this->invalidTestIds)) {
throw ValidationException::withMessages([
'test_id' => ['Test ID berikut tidak valid: ' . implode(', ', $this->invalidTestIds)]
]);
}
}
public function rules(): array
{
return [
'*.nilai_listening' => 'required|numeric',
'*.nilai_reading' => 'required|numeric',
'*.nilai_structure' => 'required|numeric',
'*.nilai_total' => 'required|numeric',
'*.test_id' => 'required|integer',
];
}
public function onError(Throwable $e)
{
// Handle error
}
public function getErrors()
{
return $this->errors;
}
}
<?php
namespace App\Mail;
use App\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class ActivationEmail extends Mailable
{
public $user;
public $token;
public function __construct(User $user, $token)
{
$this->user = $user;
$this->token = $token;
}
public function build()
{
return $this->view('auth.verifikasiemail')
->with([
'url' => route('verify', $this->token),
]);
}
}
<?php
namespace App\Mail;
use App\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class ResetPassword extends Mailable
{
public $user;
public $token;
public function __construct(User $user, $token)
{
$this->user = $user;
$this->token = $token;
}
public function build()
{
return $this->view('auth.resetpassword')
->with([
'url' => route('verify', $this->token),
]);
}
}
<?php
namespace App\Models\Admin;
use Illuminate\Database\Eloquent\Model;
class HariLibur extends Model
{
public $incrementing = false;
protected $table = 'ms_harilibur';
protected $fillable = [
'id',
'holiday_name',
'holiday_date',
'is_national_holiday',
'is_cuti',
'status',
'ket',
'year',
'created_at',
'updated_at',
];
}
<?php
namespace App\Models\Admin;
use App\Traits\UuidTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Jadwal extends Model
{
use HasFactory;
use UuidTrait;
public $incrementing = false;
protected $table = 'jadwal';
protected $keyType = 'string';
protected $casts = [
'hari' => 'array',
];
protected $fillable = [
'id',
'id_sesi',
'id_ruang',
'kuota',
'hari',
'status',
'keterangan',
'jenis',
'kategori',
'created_at',
'updated_at',
'created_by',
'updated_by'
];
}
<?php
namespace App\Models\Admin;
use App\Traits\UuidTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Kuota extends Model
{
use HasFactory;
use UuidTrait;
public $incrementing = false;
protected $table = 'tr_kuota';
protected $keyType = 'string';
protected $fillable = [
'id',
'tgl_daftar',
'id_jadwal',
'kuota',
'status',
'keterangan',
'created_at',
'updated_at',
];
}
<?php
namespace App\Models\Admin;
use Illuminate\Database\Eloquent\Model;
class MsInstansi extends Model
{
public $incrementing = false;
protected $table = 'ms_instansi';
protected $fillable = [
'id',
'nama_instansi',
'alamat',
'telepon',
'email',
'website',
'keterangan',
'status',
'created_at',
'updated_at',
'created_by',
'updated_by',
];
}
<?php
namespace App\Models\Admin;
use Illuminate\Database\Eloquent\Model;
class MsKategori extends Model
{
public $incrementing = false;
protected $table = 'ms_kategori';
protected $fillable = [
'id',
'nama',
'kategori',
'peserta',
'harga',
'jenis',
'syarat_tes',
'status',
'batas_prodi',
'batas_umum',
'periode',
'keterangan',
'created_at',
'updated_at',
];
}
<?php
namespace App\Models\Admin;
use Illuminate\Database\Eloquent\Model;
class MsRuang extends Model
{
public $incrementing = false;
protected $table = 'ms_ruang';
protected $fillable = [
'id',
'nama_ruang',
'kapasitas',
'status_ruang',
'khusus',
'keterangan',
'created_at',
'updated_at',
'created_by',
'updated_by',
];
}
<?php
namespace App\Models\Admin;
use Illuminate\Database\Eloquent\Model;
class MsSesites extends Model
{
public $incrementing = false;
protected $table = 'ms_sesites';
protected $fillable = [
'id',
'nama_sesi',
'waktu_mulai',
'waktu_selesai',
'waktu_mulai_khusus',
'waktu_selesai_khusus',
'batas_daftar',
'waktu_aktif',
'status',
'keterangan',
'tipe',
'created_at',
'updated_at',
'created_by',
'updated_by',
];
}
<?php
namespace App\Models\Admin;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Spatie\Permission\Contracts\Role as RoleContract;
use Spatie\Permission\Exceptions\GuardDoesNotMatch;
use Spatie\Permission\Exceptions\RoleAlreadyExists;
use Spatie\Permission\Exceptions\RoleDoesNotExist;
use Spatie\Permission\Guard;
use Spatie\Permission\Traits\HasPermissions;
use Spatie\Permission\Traits\RefreshesPermissionCache;
class Role extends Model implements RoleContract
{
use HasPermissions;
use RefreshesPermissionCache;
public $incrementing = false;
protected $keyType = 'string';
protected $fillable = [
'id',
'name',
'created_at',
'updated_at'
];
public function __construct(array $attributes = [])
{
$attributes['guard_name'] = $attributes['guard_name'] ?? config('auth.defaults.guard');
parent::__construct($attributes);
}
public function getTable()
{
return config('permission.table_names.roles', parent::getTable());
}
public static function create(array $attributes = [])
{
$attributes['guard_name'] = $attributes['guard_name'] ?? Guard::getDefaultName(static::class);
if (static::where('name', $attributes['name'])->where('guard_name', $attributes['guard_name'])->first()) {
throw RoleAlreadyExists::create($attributes['name'], $attributes['guard_name']);
}
return static::query()->create($attributes);
}
/**
* A role may be given various permissions.
*/
public function permissions(): BelongsToMany
{
return $this->belongsToMany(
config('permission.models.permission'),
config('permission.table_names.role_has_permissions'),
'role_id',
'permission_id'
);
}
/**
* A role belongs to some users of the model associated with its guard.
*/
public function users(): BelongsToMany
{
return $this->morphedByMany(
getModelForGuard($this->attributes['guard_name']),
'model',
config('permission.table_names.model_has_roles'),
'role_id',
config('permission.column_names.model_morph_key')
);
}
/**
* Find a role by its name and guard name.
*
* @param string $name
* @param string|null $guardName
*
* @return \Spatie\Permission\Contracts\Role|\Spatie\Permission\Models\Role
*
* @throws \Spatie\Permission\Exceptions\RoleDoesNotExist
*/
public static function findByName(string $name, $guardName = null): RoleContract
{
$guardName = $guardName ?? Guard::getDefaultName(static::class);
$role = static::where('name', $name)->where('guard_name', $guardName)->first();
if (! $role) {
throw RoleDoesNotExist::named($name);
}
return $role;
}
public static function findById(int $id, $guardName = null): RoleContract
{
$guardName = $guardName ?? Guard::getDefaultName(static::class);
$role = static::where('id', $id)->where('guard_name', $guardName)->first();
if (! $role) {
throw RoleDoesNotExist::withId($id);
}
return $role;
}
/**
* Find or create role by its name (and optionally guardName).
*
* @param string $name
* @param string|null $guardName
*
* @return \Spatie\Permission\Contracts\Role
*/
public static function findOrCreate(string $name, $guardName = null): RoleContract
{
$guardName = $guardName ?? Guard::getDefaultName(static::class);
$role = static::where('name', $name)->where('guard_name', $guardName)->first();
if (! $role) {
return static::query()->create(['name' => $name, 'guard_name' => $guardName]);
}
return $role;
}
/**
* Determine if the user may perform the given permission.
*
* @param string|Permission $permission
*
* @return bool
*
* @throws \Spatie\Permission\Exceptions\GuardDoesNotMatch
*/
public function hasPermissionTo($permission): bool
{
if (config('permission.enable_wildcard_permission', false)) {
return $this->hasWildcardPermission($permission, $this->getDefaultGuardName());
}
$permissionClass = $this->getPermissionClass();
if (is_string($permission)) {
$permission = $permissionClass->findByName($permission, $this->getDefaultGuardName());
}
if (is_int($permission)) {
$permission = $permissionClass->findById($permission, $this->getDefaultGuardName());
}
if (! $this->getGuardNames()->contains($permission->guard_name)) {
throw GuardDoesNotMatch::create($permission->guard_name, $this->getGuardNames());
}
return $this->permissions->contains('id', $permission->id);
}
}
<?php
namespace App\Models\Admin;
use Illuminate\Database\Eloquent\Model;
class VCekNilai extends Model
{
public $incrementing = false;
protected $table = 'v_cek_nilai';
}
<?php
namespace App\Models\Admin;
use Illuminate\Database\Eloquent\Model;
class VJadwal extends Model
{
public $incrementing = false;
protected $table = 'v_jadwal';
}
<?php
namespace App\Models\Admin;
use App\Models\Biodata;
use App\Models\Pendaftaran;
use Illuminate\Database\Eloquent\Model;
class VNilaiUser extends Model
{
public $incrementing = false;
protected $table = 'v_nilai_user';
public function rBiodata()
{
return $this->hasOne(Biodata::class, 'id', 'id_user');
}
public function pendaftarans()
{
return $this->hasMany(Pendaftaran::class, 'id_user', 'id_user');
}
}
<?php
namespace App\Models\Admin;
use Illuminate\Database\Eloquent\Model;
class VPendaftaranJadwal extends Model
{
public $incrementing = false;
protected $table = 'v_pendaftaran_jadwal';
}
<?php
namespace App\Models\Admin;
use Illuminate\Database\Eloquent\Model;
class VPendaftaranJml extends Model
{
public $incrementing = false;
protected $table = 'v_pendaftaran_jml';
}
<?php
namespace App\Models\Admin;
use Illuminate\Database\Eloquent\Model;
class VPendaftaranTes extends Model
{
public $incrementing = false;
protected $table = 'v_pendaftaran_test';
}
<?php
namespace App\Models;
use App\Models\Sms;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Biodata extends Model
{
use HasFactory;
protected $table = 'biodata';
public $incrementing = false;
protected $keyType = 'string';
protected $fillable = [
'id',
'nik',
'name',
'telephone',
'phone',
'email',
'web',
'userid_created',
'userid_updated',
'created_at',
'updated_at',
'nidn',
'nim',
'alamat',
'agama',
'nm_ayah',
'nm_ibu',
'temp_lahir',
'tgl_lahir',
'fakultas_id',
'prodi_id',
'universitas_id',
'foto',
'periode',
'sex',
'id_jenjang',
'akses_sms_id',
'nip',
'nisn',
'kewarganegaraan',
'dusun',
'rt',
'rw',
'kelurahan',
'kode_pos',
'id_wilayah',
'handphone',
'id_reg_pd',
'instansi',
'tipe',
'kredit_va',
'no_urut_va',
];
public function prodi()
{
return $this->belongsTo(Sms::class, 'prodi_id', 'id_sms');
}
public function pendaftarans()
{
return $this->hasMany(Pendaftaran::class, 'id_user', 'id');
}
}
<?php
namespace App\Models\Import;
use Illuminate\Database\Eloquent\Model;
class NewInboundBiodata extends Model
{
protected $connection = 'melisa';
public $incrementing = false;
protected $table = 'v_new_inbound_biodata';
protected $primaryKey = 'id';
public $keyType = 'string';
}
<?php
namespace App\Models\Import;
use Illuminate\Database\Eloquent\Model;
class NewMatkulInbound extends Model
{
protected $connection = 'melisa';
public $incrementing = false;
protected $table = 'v_new_matkul_inbound';
protected $primaryKey = 'id';
public $keyType = 'string';
}
<?php
namespace App\Models\Import;
use Illuminate\Database\Eloquent\Model;
class NewMatkulLuar extends Model
{
protected $connection = 'melisa';
public $incrementing = false;
protected $table = 'v_new_matkul_luar';
protected $primaryKey = 'id';
public $keyType = 'string';
}
<?php
namespace App\Models\Import;
use Illuminate\Database\Eloquent\Model;
class NewMatkulUnesa extends Model
{
protected $connection = 'melisa';
public $incrementing = false;
protected $table = 'v_new_matkul_unesa';
protected $primaryKey = 'id';
public $keyType = 'string';
}
<?php
namespace App\Models\Import;
use Illuminate\Database\Eloquent\Model;
class NewMbkmKegiatan extends Model
{
protected $connection = 'melisa';
public $incrementing = false;
protected $table = 'v_new_mbkm_kegiatan';
protected $primaryKey = 'id';
public $keyType = 'string';
}
<?php
namespace App\Models\Import;
use Illuminate\Database\Eloquent\Model;
class NewMhsInbound extends Model
{
protected $connection = 'melisa';
public $incrementing = false;
protected $table = 'v_new_mhs_inbound';
protected $primaryKey = 'id';
public $keyType = 'string';
}
<?php
namespace App\Models\Import;
use Illuminate\Database\Eloquent\Model;
class NewMhsOutbound extends Model
{
protected $connection = 'melisa';
public $incrementing = false;
protected $table = 'v_new_mhs_outbound';
protected $primaryKey = 'id';
public $keyType = 'string';
}
<?php
namespace App\Models\Import;
use Illuminate\Database\Eloquent\Model;
class NewOutboundBiodata extends Model
{
protected $connection = 'melisa';
public $incrementing = false;
protected $table = 'v_new_outbound_biodata';
protected $primaryKey = 'id';
public $keyType = 'string';
}
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
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