Done?: status booking user
This commit is contained in:
parent
c67d576750
commit
50b0ec2c1b
|
|
@ -41,6 +41,7 @@ public function show(string $id)
|
|||
return response()->json([
|
||||
'status' => true,
|
||||
'msg' => 'Data ditemukan (' . $id . ')',
|
||||
'id_booking' => $data->id_booking,
|
||||
'status_data' => $data->status_tes,
|
||||
'nama_lengkap' => $data->nama_lengkap,
|
||||
'kode_unik' => $data->kode_unik,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,88 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\TestSessionsModel;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class TestSessionsController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
$request->validate([
|
||||
'id_booking' => 'required|exists:booking,id_booking',
|
||||
]);
|
||||
|
||||
$testSession = TestSessionsModel::create([
|
||||
'id_booking' => $request->id_booking,
|
||||
'status_session' => 0, // Set status awal sebagai "Belum Dimulai"
|
||||
]);
|
||||
|
||||
return redirect()->route('cek-status.show', $request->id_booking)->with('success', 'Sesi tes berhasil dibuat. Token: ' . $testSession->token_session);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*/
|
||||
public function show(string $id)
|
||||
{
|
||||
$data = TestSessionsModel::where('id_booking', $id)->first();
|
||||
if($data != null) {
|
||||
return response()->json([
|
||||
'status' => true,
|
||||
'msg' => 'Data ditemukan (' . $id . ')',
|
||||
'status_session' => $data->status_session,
|
||||
'token_session' => $data->token_session,
|
||||
'id_booking' => $data->id_booking,
|
||||
]);
|
||||
|
||||
}
|
||||
return response()->json([
|
||||
'status' => false,
|
||||
'msg' => 'Data tidak ditemukan (' . $id . ')',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*/
|
||||
public function edit(string $id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*/
|
||||
public function update(Request $request, string $id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*/
|
||||
public function destroy(string $id)
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
|
|
@ -38,7 +38,7 @@ protected static function boot()
|
|||
}
|
||||
|
||||
if(empty($model->status_tes)) {
|
||||
$model->status_tes = 0;
|
||||
$model->status_tes = '0';
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,42 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class TestSessionsModel extends Model
|
||||
{
|
||||
protected $table = 'test_sessions';
|
||||
|
||||
protected $primaryKey = 'id_test_sessions';
|
||||
|
||||
protected $keyType = 'string';
|
||||
|
||||
public $incrementing = false;
|
||||
|
||||
protected $fillable = [
|
||||
'status_session',
|
||||
'token_session',
|
||||
'id_booking'
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'id_test_sessions' => 'string',
|
||||
'id_booking' => 'string',
|
||||
];
|
||||
|
||||
protected static function boot()
|
||||
{
|
||||
parent::boot();
|
||||
static::creating(function ($model) {
|
||||
if (empty($model->id_test_sessions)) {
|
||||
$model->id_test_sessions = (string) \Illuminate\Support\Str::uuid();
|
||||
}
|
||||
|
||||
if (empty($model->token_session)) {
|
||||
$model->token_session = \Illuminate\Support\Str::random(50);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -14,7 +14,7 @@ public function up(): void
|
|||
Schema::create('test_sessions', function (Blueprint $table) {
|
||||
$table->uuid('id_test_sessions')->primary();
|
||||
$table->enum('status_session', [0, 1, 2]);
|
||||
$table->string();
|
||||
$table->string('token_session', 50)->unique();
|
||||
$table->uuid('id_booking');
|
||||
$table->timestamps();
|
||||
|
||||
|
|
|
|||
|
|
@ -71,18 +71,25 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8 my-3">
|
||||
<div class="col-md-8 my-3" id="result_test">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title text-center">Lakukan Tes</h5>
|
||||
<h6 class="card-subtitle mb-2 text-body-secondary text-center">Kalau kamu sudah siap menjalankan tes, klik tombol di bawah untuk mulai tes kecemasan dari sistem kami!</h6>
|
||||
<h6 class="card-subtitle mb-2 text-body-secondary text-center" id="result_test_title">Kalau kamu sudah siap menjalankan tes, klik tombol di bawah untuk mulai tes kecemasan dari sistem kami!</h6>
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12 text-center my-3">
|
||||
<span>Status tes kamu: <span id="status_tes_down" class="fw-bold text-white bg-secondary p-2 rounded-pill">Belum Dimulai</span></span>
|
||||
<span>Status tes kamu: <span id="result_test_status" class="fw-bold text-white bg-secondary p-2 rounded-pill">Belum Dimulai</span></span>
|
||||
</div>
|
||||
<div class="col-md-9 mb-3">
|
||||
<div class="row justify-content-center">
|
||||
<a href="#" class="btn btn-primary text-white fw-bold">Cari</a>
|
||||
<form action="" method="POST" id="result_test_form">
|
||||
@csrf
|
||||
<input type="hidden" name="id_booking" id="id_booking_input">
|
||||
<div class="row justify-content-center">
|
||||
<button type="button" class="btn btn-primary text-white fw-bold" onclick="startSessionTest()">Mulai Tes</button>
|
||||
</div>
|
||||
</form>
|
||||
<a href="#" class="btn btn-primary text-white fw-bold" id="result_test_link">Mulai Tes</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -98,8 +105,12 @@
|
|||
@section('script')
|
||||
<script>
|
||||
$('#result_data').hide();
|
||||
$('#result_test').hide();
|
||||
$('#result_test_form').hide();
|
||||
$('#result_test_link').hide();
|
||||
function searchUserStatus() {
|
||||
$('#result_data').hide();
|
||||
$('#result_test').hide();
|
||||
Swal.fire({
|
||||
title: 'Status',
|
||||
text: 'Mencari data...',
|
||||
|
|
@ -132,6 +143,35 @@ function searchUserStatus() {
|
|||
$('#alert_status').removeClass();
|
||||
$('#alert_status').addClass('alert alert-info');
|
||||
$('#alert_status').html('Kamu sudah dikonfirmasi oleh psikolog!');
|
||||
|
||||
let test_session = getTestSession(response.id_booking);
|
||||
$('#result_test').show();
|
||||
$('#result_test_title').html('Kamu sudah dikonfirmasi oleh psikolog! Kalau kamu sudah siap menjalankan tes, klik tombol di bawah untuk mulai tes kecemasan dari sistem kami!');
|
||||
if(test_session.status) {
|
||||
if(test_session.status_session == 0) {
|
||||
$('#result_test_status').html('Belum Dimulai');
|
||||
$('#result_test_status').removeClass();
|
||||
$('#result_test_status').addClass('fw-bold text-white bg-secondary p-2 rounded-pill');
|
||||
$('#result_test_form').show();
|
||||
} else if(test_session.status_session == 1) {
|
||||
$('#result_test_status').html('Sedang Berlangsung');
|
||||
$('#result_test_status').removeClass();
|
||||
$('#result_test_status').addClass('fw-bold text-white bg-warning p-2 rounded-pill');
|
||||
} else if(test_session.status_session == 2) {
|
||||
$('#result_test_status').html('Selesai');
|
||||
$('#result_test_status').removeClass();
|
||||
$('#result_test_status').addClass('fw-bold text-white bg-success p-2 rounded-pill');
|
||||
}
|
||||
} else if(!test_session.status) {
|
||||
console.log(test_session.msg);
|
||||
$('#result_test').show();
|
||||
$('#result_test_title').html('Kamu sudah dikonfirmasi oleh psikolog! Kalau kamu sudah siap menjalankan tes, klik tombol di bawah untuk mulai tes kecemasan dari sistem kami!');
|
||||
|
||||
$('#result_test_status').html('Belum Dimulai');
|
||||
$('#result_test_status').removeClass();
|
||||
$('#result_test_status').addClass('fw-bold text-white bg-secondary p-2 rounded-pill');
|
||||
$('#result_test_form').show();
|
||||
}
|
||||
} else if(response.status_data == 2) {
|
||||
$('#alert_status').removeClass();
|
||||
$('#alert_status').addClass('alert alert-success');
|
||||
|
|
@ -152,5 +192,53 @@ function searchUserStatus() {
|
|||
xhttp.open('GET', url.replace('__CODE__', the_code));
|
||||
xhttp.send();
|
||||
}
|
||||
|
||||
function getTestSession(id_booking) {
|
||||
let xhttp = new XMLHttpRequest();
|
||||
let result = {
|
||||
'status': false,
|
||||
'msg': 'Data tidak ditemukan (' + id_booking + ')',
|
||||
};
|
||||
|
||||
xhttp.onreadystatechange = function() {
|
||||
if(this.readyState == 4 && this.status == 200) {
|
||||
let response = JSON.parse(this.responseText);
|
||||
if(response.status) {
|
||||
result = {
|
||||
'status': true,
|
||||
'msg': 'Data ditemukan (' + id_booking + ')',
|
||||
'id_booking': response.id_booking,
|
||||
'status_session': response.status_session,
|
||||
'token_session': response.token_session
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
let url = '{{ route('test-sessions.show', ['__ID__']) }}';
|
||||
xhttp.open('GET', url.replace('__ID__', id_booking), false);
|
||||
xhttp.send();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function startSessionTest() {
|
||||
let id_booking = $('#id_booking_input').val();
|
||||
let url = '{{ route('test-sessions.store') }}';
|
||||
let form = $('#result_test_form');
|
||||
Swal.fire({
|
||||
title: 'Konfirmasi',
|
||||
text: 'Apakah kamu yakin ingin memulai tes sekarang?',
|
||||
icon: 'question',
|
||||
showCancelButton: true,
|
||||
confirmButtonText: 'Ya, mulai tes!',
|
||||
cancelButtonText: 'Nggak jadi deh'
|
||||
}).then((result) => {
|
||||
if(result.isConfirmed) {
|
||||
form.attr('action', url);
|
||||
form.submit();
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -7,6 +7,7 @@
|
|||
use App\Http\Controllers\HasilTesController;
|
||||
use App\Http\Controllers\LandingController;
|
||||
use App\Http\Controllers\ProfileController;
|
||||
use App\Http\Controllers\TestSessionsController;
|
||||
use App\Http\Controllers\UsersController;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
|
@ -29,6 +30,7 @@
|
|||
Route::get('/about', [LandingController::class, 'about'])->name('beranda.about');
|
||||
Route::resource('booking', BookingController::class)->only(['store']);
|
||||
Route::resource('cek-status', CekStatusController::class)->only(['index', 'show']);
|
||||
Route::resource('test-sessions', TestSessionsController::class)->only(['store', 'show']);
|
||||
Route::middleware(['auth', 'role.auth'])->group(function() {
|
||||
Route::resource('dashboard', DashboardController::class);
|
||||
Route::resource('users', UsersController::class);
|
||||
|
|
|
|||
Loading…
Reference in New Issue