This commit is contained in:
rianbtk 2022-08-20 20:29:14 +07:00
parent c2f158e43c
commit dc86674841
16 changed files with 303 additions and 66 deletions

View File

@ -21,7 +21,7 @@ class DownloadController extends Controller
}
public function downFile($file_name, $topic_name, $doctype, $folder) {
$dirname = str_replace('\\',DIRECTORY_SEPARATOR,'app\public\\'.$folder.'\\');
$dirname = str_replace('\\',DIRECTORY_SEPARATOR,'app\\public\\'.$folder.'\\');
$file_path = storage_path($dirname.$file_name);
$ext = pathinfo($file_path, PATHINFO_EXTENSION);
$headers = array('Content-Type' => 'application/zip','Content-Type' => 'application/pdf',
@ -34,16 +34,6 @@ class DownloadController extends Controller
public function downLearning($file_name, $topic_name, $doctype) {
/*
$dirname = str_replace('\\',DIRECTORY_SEPARATOR,'app\public\learning\\');
$file_path = storage_path($dirname.$file_name);
$ext = pathinfo($file_path, PATHINFO_EXTENSION);
$headers = array('Content-Type' => 'application/zip','Content-Type' => 'application/pdf','Content-Type' => 'application/rar');
$fname=$topic_name.'-'.$doctype.'.'.$ext;
$this->saveHistory($file_path,$topic_name,$doctype,$fname);
return response()->download($file_path, $fname, $headers);
*/
return $this->downFile($file_name, $topic_name, $doctype,'learning');
}

View File

@ -179,7 +179,7 @@ class ExerciseFilesController extends Controller
//
$entity = \App\ExerciseFiles::find($id);
/*
$dirpath = storage_path('app\public\\');
$dirpath = storage_path('app\\public\\\');
File::delete(getPath($dirpath.$entity['guide']));
File::delete(getPath($dirpath.$entity['supplement']));
File::delete(getPath($dirpath.$entity['testfiles']));

View File

@ -78,10 +78,7 @@ class FileResultController extends Controller
//
$entity = \App\FileResult::find($id);
$path = storage_path('app\\public\\').$entity['rscfile'];
//$path = str_replace('\\',DIRECTORY_SEPARATOR,$path);
//$dirpath = storage_path('app\public\\');
$path = storage_path('app/public/').$entity['rscfile'];
File::delete(getPath($path));
$entity->delete();
@ -98,7 +95,7 @@ class FileResultController extends Controller
$path = storage_path('app\\public\\').$entity['rscfile'];
//$path = str_replace('\\',DIRECTORY_SEPARATOR,$path);
//$dirpath = storage_path('app\public\\');
//$dirpath = storage_path('app\\public\\\');
File::delete($path);
$entity->delete();

View File

@ -49,7 +49,7 @@ class FlutterFileResultController extends Controller
return Redirect::to('student/fluttercourse/lfiles/create/'.$request->get('topic'))
->withErrors("File name should be ".$fileinfo['fileName']);
} else {
$result = \App\FileResult::where('userid','=',Auth::user()->id)
$result = \App\FlutterFileResult::where('userid','=',Auth::user()->id)
->where('fileid','=',$request->get('fileid'))
->get();
if (count($result)>0) {
@ -57,7 +57,7 @@ class FlutterFileResultController extends Controller
->withErrors('File '.$fileinfo['fileName'].' was already submitted');
} else {
$rsc=$file->store('resource','public');
$entity=new \App\FileResult;
$entity=new \App\FlutterFileResult;
$entity->userid=Auth::user()->id;
$entity->fileid=$request->get('fileid');
@ -76,12 +76,12 @@ class FlutterFileResultController extends Controller
public function destroy(Request $request,$id)
{
//
$entity = \App\FileResult::find($id);
$entity = \App\FlutterFileResult::find($id);
$path = storage_path('app\\public\\').$entity['rscfile'];
//$path = str_replace('\\',DIRECTORY_SEPARATOR,$path);
//$dirpath = storage_path('app\public\\');
//$dirpath = storage_path('app\\public\\\');
File::delete(getPath($path));
$entity->delete();
@ -93,12 +93,12 @@ class FlutterFileResultController extends Controller
public function delete($id,$topic)
{
//
$entity = \App\FileResult::find($id);
$entity = \App\FlutterFileResult::find($id);
$path = storage_path('app\\public\\').$entity['rscfile'];
//$path = str_replace('\\',DIRECTORY_SEPARATOR,$path);
//$dirpath = storage_path('app\public\\');
//$dirpath = storage_path('app\\public\\\');
File::delete($path);
$entity->delete();

View File

@ -177,7 +177,7 @@ class LearningFileController extends Controller {
//
$entity = \App\LearningFile::find($id);
/*
$dirpath = storage_path('app\public\\');
$dirpath = storage_path('app\\public\\\');
File::delete(getPath($dirpath.$entity['guide']));
File::delete(getPath($dirpath.$entity['supplement']));
File::delete(getPath($dirpath.$entity['testfiles']));

View File

@ -49,7 +49,7 @@ class NodejsFileResultController extends Controller
return Redirect::to('student/nodejscourse/lfiles/create/'.$request->get('topic'))
->withErrors("File name should be ".$fileinfo['fileName']);
} else {
$result = \App\FileResult::where('userid','=',Auth::user()->id)
$result = \App\NodejsFileResult::where('userid','=',Auth::user()->id)
->where('fileid','=',$request->get('fileid'))
->get();
if (count($result)>0) {
@ -57,7 +57,7 @@ class NodejsFileResultController extends Controller
->withErrors('File '.$fileinfo['fileName'].' was already submitted');
} else {
$rsc=$file->store('resource','public');
$entity=new \App\FileResult;
$entity=new \App\NodejsFileResult;
$entity->userid=Auth::user()->id;
$entity->fileid=$request->get('fileid');
@ -76,12 +76,12 @@ class NodejsFileResultController extends Controller
public function destroy(Request $request,$id)
{
//
$entity = \App\FileResult::find($id);
$entity = \App\NodejsFileResult::find($id);
$path = storage_path('app\\public\\').$entity['rscfile'];
//$path = str_replace('\\',DIRECTORY_SEPARATOR,$path);
//$dirpath = storage_path('app\public\\');
//$dirpath = storage_path('app\\public\\\');
File::delete(getPath($path));
$entity->delete();
@ -93,12 +93,12 @@ class NodejsFileResultController extends Controller
public function delete($id,$topic)
{
//
$entity = \App\FileResult::find($id);
$entity = \App\NodejsFileResult::find($id);
$path = storage_path('app\\public\\').$entity['rscfile'];
//$path = str_replace('\\',DIRECTORY_SEPARATOR,$path);
//$dirpath = storage_path('app\public\\');
//$dirpath = storage_path('app\\public\\\');
File::delete($path);
$entity->delete();

View File

@ -49,7 +49,7 @@ class UnityFileResultController extends Controller
return Redirect::to('student/unitycourse/lfiles/create/'.$request->get('topic'))
->withErrors("File name should be ".$fileinfo['fileName']);
} else {
$result = \App\FileResult::where('userid','=',Auth::user()->id)
$result = \App\UnityFileResult::where('userid','=',Auth::user()->id)
->where('fileid','=',$request->get('fileid'))
->get();
if (count($result)>0) {
@ -57,7 +57,7 @@ class UnityFileResultController extends Controller
->withErrors('File '.$fileinfo['fileName'].' was already submitted');
} else {
$rsc=$file->store('resource','public');
$entity=new \App\FileResult;
$entity=new \App\UnityFileResult;
$entity->userid=Auth::user()->id;
$entity->fileid=$request->get('fileid');
@ -76,12 +76,12 @@ class UnityFileResultController extends Controller
public function destroy(Request $request,$id)
{
//
$entity = \App\FileResult::find($id);
$entity = \App\UnityFileResult::find($id);
$path = storage_path('app\\public\\').$entity['rscfile'];
//$path = str_replace('\\',DIRECTORY_SEPARATOR,$path);
//$dirpath = storage_path('app\public\\');
//$dirpath = storage_path('app\\public\\\');
File::delete(getPath($path));
$entity->delete();
@ -93,12 +93,12 @@ class UnityFileResultController extends Controller
public function delete($id,$topic)
{
//
$entity = \App\FileResult::find($id);
$entity = \App\UnityFileResult::find($id);
$path = storage_path('app\\public\\').$entity['rscfile'];
//$path = str_replace('\\',DIRECTORY_SEPARATOR,$path);
//$dirpath = storage_path('app\public\\');
//$dirpath = storage_path('app\\public\\\');
File::delete($path);
$entity->delete();

View File

@ -40,7 +40,7 @@ class UnityUser extends Authenticatable
public function checkRoleId($roleid) {
if ($roleid=='student') {
return Redirect::to('student/Unitycourse/home');
return Redirect::to('student/unitycourse/home');
} elseif ($roleid=='teacher') {
return Redirect::to('teacher/home');
} elseif ($roleid=='admin') {

View File

@ -1,4 +1,4 @@
<nav class="main-header navbar navbar-expand navbar-white navbar-light" style="background-color: coral;">
<nav class="main-header navbar navbar-expand navbar-white navbar-light" style="background-color: red;">
<!-- Left navbar links -->
<ul class="navbar-nav">

View File

@ -1,9 +1,10 @@
<aside class="main-sidebar sidebar-dark-primary elevation-4">
<!-- Brand Logo -->
<a href="{{URL::to('admin/main')}}" class="brand-link">
<img src="{{asset('lte/dist/img/logo-aplas.png')}}" alt="APLAS logo" class="brand-image elevation-3"
style="opacity: .8">
<span class="brand-text font-weight-light">WebApps</span>
<a href="#" class="brand-link">
<img src="{{asset('lte/dist/img/iclop-logo.png')}}" alt="iCLOP logo" class="brand-image elevation-3"
style="width:120px;height:60px;">
<br>
<span class="brand-text font-weight-light" style="font-size:140%;"> &nbsp; ADMIN</span>
</a>
<!-- Sidebar -->
@ -203,6 +204,24 @@
</a>
</li>
<li class="nav-item">
<a href="{{URL::to('/admin/python/topic')}}" class="nav-link">
<i class="nav-icon fab fa-python"></i>
<p>
Python Learning
<span class="right badge badge-danger">New</span>
</p>
</a>
</li>
<li class="nav-item">
<a href="{{URL::to('/admin/python/percobaan')}}" class="nav-link">
<i class="nav-icon fab fa-python"></i>
<p>
Python Percobaan
<span class="right badge badge-danger">New</span>
</p>
</a>
</li>
<li class="nav-item">
<a href="{{URL::to('admin/resetpassword')}}" class="nav-link">
<i class="nav-icon fas fa-hand-pointer"></i>
<p>

View File

@ -624,7 +624,7 @@
$.ajax({
type: "GET",
url: "{{ url('student/python-history/'. $infotopik->id_topik.'/'. $percobaan->id_percobaan) }}",
url: "{{ url('student/pythoncourse/python-history/'. $infotopik->id_topik.'/'. $percobaan->id_percobaan) }}",
dataType: "json",
success: function( result ) {
@ -746,7 +746,7 @@
var variabelid_percobaan = $('input[name="id_percobaan"]').val();
$.ajax({
url: "http://127.0.0.1:8000/student/python-compile",
url: "http://127.0.0.1:8000/student/pythoncourse/python-compile",
method: "GET", // GET | POST
data: {
code: editor.getSession().getValue(),

View File

@ -1,4 +1,4 @@
<nav class="main-header navbar navbar-expand navbar-white navbar-light" style="background-color: #D7BDE2;">
<nav class="main-header navbar navbar-expand navbar-white navbar-light" style="background-color: red;">
<!-- Left navbar links -->
<ul class="navbar-nav">

View File

@ -0,0 +1,104 @@
@extends('teacher/home')
@section('content')
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h3 class="card-title">Python Student Learning Result - Detail</h3>
<div class="card-tools">
</div>
</div>
<div class="card-body">
{{-- <div class="row" style="margin-bottom: 30px">
<div class="col-md-4" style="border-right: 2px solid #e0e0e0">
<b>Dosen Pengajar Oleh</b>
<h3>{{ $dosen->name }}</h3>
</div>
<div class="col-md-4">
<b>Hasil Dari Pembelajaran Mahasiswa : </b>
<h3>{{ $mhs }} Mahasiswa</h3>
</div>
</div> --}}
<div class="row">
<div class="col-md-12">
<table class="table table-hover table-bordered">
<thead>
<tr class="text-center">
<th rowspan="2">
<b><small>Topik</small></b><br>
<b>{{ $topik->nama }}</b>
</th>
<th colspan="4">Pengumpulan Detail</th>
</tr>
<tr>
<th class="text-center">Nama Mahasiswa</th>
<th class="text-center">Status</th>
<th class="text-center">Waktu</th>
<th class="text-center">Opsi</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="{{ count( $allPercobaan['validation'] ) + 1 }}">
<small>Nama Percobaan</small>
<h4>{{ $dt_percobaan->nama_percobaan }}</h4>
</td>
</tr>
@foreach ( $allPercobaan['validation'] AS $nomor => $isi )
<tr>
<td>{{ $isi->name }}</td>
<td>{{ $isi->status }}</td>
<td>{{ date('d M Y H.i A', strtotime($isi->create_at)) }}</td>
<td>
<a href="javascript:;" data-toggle="modal" data-target="#modal-{{ $nomor }}" class="btn btn-sm btn-primary">Submitted</a>
<!-- Modal -->
<div class="modal fade" id="modal-{{ $nomor }}" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-body">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<b>Materi {{ $topik->nama }}</b>
<h5 style="margin: 0px"><code>{{ $dt_percobaan->nama_percobaan }}</code></h5>
<small>Pengerjaan pada {{ date('d F Y H.i A', strtotime($isi->create_at)) }}</small>
<div class="card card-body" style="font-family: 'Courier New', Courier, monospace">
{{ $isi->report }}
<hr>
<b>Hasil Unit Test : </b><br>
<?php echo $isi->checkresult ?>
</div>
<a href="{{ asset('python-resources/unittest/jawaban/'. $isi->file_submitted) }}.py" download>Unduh Source Code</a><br>
<small>Klik untuk mengunduh file jawaban</small>
</div>
</div>
</div>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,116 @@
@extends('teacher/home')
@section('content')
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h3 class="card-title">Python Student Learning Result</h3>
<div class="card-tools">
</div>
</div>
<div class="card-body">
@if (Session::has('message'))
<div id="alert-msg" class="alert alert-success alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true"><EFBFBD></button>
{{ Session::get('message') }}
</div>
@endif
<div class="row" style="margin-bottom: 30px">
<div class="col-md-4" style="border-right: 2px solid #e0e0e0">
<b>Dosen Pengajar Oleh</b>
<h3>{{ $dosen->name }}</h3>
</div>
<div class="col-md-4">
<b>Total mahasiswa yang mengikuti kelas</b>
<h3>{{ $mhs }} Mahasiswa</h3>
</div>
</div>
<div class="row">
<div class="col-md-12">
<table class="table table-hover table-bordered">
<thead>
<tr class="text-center">
<th>Topik</th>
<th>Percobaan</th>
<th>Terkumpul</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody>
@foreach ( $allData AS $index => $isi )
@php
$rowspan = count( $isi['materi'] ) + 1;
@endphp
<tr style="border-bottom: 2px solid #e0e0e0">
<td rowspan="{{ $rowspan }}">
<small>Nama Topik</small><br>
<b>{{ $isi['topik']->nama }}</b>
</td>
</tr>
@foreach ( $isi['materi'] AS $materi )
<tr style="border-bottom: 2px solid #e0e0e0">
<td>{{ $materi['percobaan']->nama_percobaan }}</td>
<td>
@php
if ( $materi['total'] > 0 ) {
echo $materi['total'].' mhs';
} else {
echo '-';
}
@endphp
</td>
<td>
@php
$label = "";
if ( count( $materi['validation'] ) == $mhs ) {
$label = '<label class="badge badge-info">Materi Selesai</label>';
} else if ( count( $materi['validation'] ) == 0 ) {
$label = '<label class="badge badge-secondary">Kosong</label>';
} else if ( count( $materi['validation'] ) != $mhs ) {
$label = '<label class="badge badge-warning">Sebagian</label>';
}
// echo count( $materi['validation'] );
echo $label;
@endphp
</td>
<td><a href="{{ url('teacher/python/resultstudentdetail/'. $isi['topik']->id_topik.'/'.$materi['percobaan']->id_percobaan) }}" class="btn btn-primary btn-sm"><i class="fa fa-book"></i> Detail</a></td>
</tr>
@endforeach
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@ -1,9 +1,10 @@
<aside class="main-sidebar sidebar-dark-primary elevation-4">
<!-- Brand Logo -->
<a href="#" class="brand-link">
<img src="{{asset('lte/dist/img/logo-aplas.png')}}" alt="APLAS logo" class="brand-image elevation-3"
style="opacity: .8">
<span class="brand-text font-weight-light">WebApps</span>
<img src="{{asset('lte/dist/img/iclop-logo.png')}}" alt="iCLOP logo" class="brand-image elevation-3"
style="width:120px;height:60px;">
<br>
<span class="brand-text font-weight-light" style="font-size:140%;"> &nbsp; TEACHER</span>
</a>
<!-- Sidebar -->
@ -47,6 +48,22 @@
</p>
</a>
</li>
<li class="nav-item">
<a href="{{URL::to('teacher/rankview')}}" class="nav-link">
<i class="nav-icon fas fa-check"></i>
<p>
Top 20 Rank
</p>
</a>
</li>
<li class="nav-item">
<a href="{{URL::to('teacher/studentres')}}" class="nav-link">
<i class="nav-icon fas fa-trophy"></i>
<p>
Student Result
</p>
</a>
</li>
<li class="nav-item">
<a href="{{URL::to('teacher/studentclasssummary')}}" class="nav-link">
<i class="nav-icon fas fa-trophy"></i>
@ -65,22 +82,6 @@
</p>
</a>
</li>
<li class="nav-item">
<a href="{{URL::to('teacher/studentres')}}" class="nav-link">
<i class="nav-icon fas fa-trophy"></i>
<p>
Student Result
</p>
</a>
</li>
<li class="nav-item">
<a href="{{URL::to('teacher/rankview')}}" class="nav-link">
<i class="nav-icon fas fa-check"></i>
<p>
Top 20 Rank
</p>
</a>
</li>
<li class="nav-item">
<a href="{{URL::to('teacher/completeness')}}" class="nav-link">
<i class="nav-icon fas fa-hand-pointer"></i>
@ -126,6 +127,16 @@
</p>
</a>
</li>
{{-- Python --}}
<li class="nav-item">
<a href="{{URL::to('teacher/python/resultstudent')}}" class="nav-link">
<i class="nav-icon fas fa-trophy"></i>
<p>
Python Result
<span class="right badge badge-danger">New</span>
</p>
</a>
</li>
</ul>
</nav>
<!-- /.sidebar-menu -->

View File

@ -161,7 +161,7 @@ Route::group(['middleware' => ['auth', 'student']], function() {
// tampilan feedback
Route::get('/student/pythoncourse/python/feedback/{id_topik}/{id_percobaan}', [ExercisePythonController::class, 'feedback']);
//Compile Program
Route::get('/student/python-compile', [ExercisePythonController::class, 'compiler']);
Route::get('/student/pythoncourse/python-compile', [ExercisePythonController::class, 'compiler']);
//tampilan data validation
Route::get('student/pythoncourse/python/tampil-data-validation', [ExercisePythonController::class, 'dataValidation']);
//tampilan result mahasiswa
@ -169,7 +169,7 @@ Route::group(['middleware' => ['auth', 'student']], function() {
Route::get('pythonfeedback', [ExercisePythonController::class, 'feedback_submit']);
Route::get("student/python-history/{id_topik}/{id_percobaan}", [ExercisePythonController::class, 'submit_history']);
Route::get("student/pythoncourse/python-history/{id_topik}/{id_percobaan}", [ExercisePythonController::class, 'submit_history']);
Route::get('/student/androidcourse/asynctask', 'StudentController@asynctask');
Route::get('/student/androidcourse/firebase', 'StudentController@firebase');