Skip to content

Commit

Permalink
Merge pull request #3 from Pemrograman-Fasilkom-Unej/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
miqdadyyy authored Mar 6, 2020
2 parents 42d059b + 8a8c00a commit 85643fe
Show file tree
Hide file tree
Showing 30 changed files with 1,723 additions and 486 deletions.
6 changes: 6 additions & 0 deletions .idea/Assistant-Manager.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/php.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

698 changes: 452 additions & 246 deletions .idea/workspace.xml

Large diffs are not rendered by default.

38 changes: 38 additions & 0 deletions app/Exports/ClassExport.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?php

namespace App\Exports;

use App\Classes;
use Illuminate\Contracts\View\View;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\FromView;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;

class ClassExport implements FromView, WithColumnFormatting, ShouldAutoSize
{
private $class;
public function __construct($class_id)
{
$this->class = Classes::with('students.student', 'tasks.submissions.student')->find($class_id);
}

/**
* @return View
*/
public function view(): View
{
return \view('excel.class-recap', ['class' => $this->class]);
}

/**
* @return array
*/
public function columnFormats(): array
{
return [
'B' => '@'
];
}
}
6 changes: 4 additions & 2 deletions app/Http/Controllers/Admin/TaskController.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
class TaskController extends Controller
{
use MinioHelper;
private $datatypes = ['zip', 'pdf', 'docx', 'rar', 'txt'];
private $datatypes = ['zip', 'pdf', 'docx', 'rar', 'txt', 'jpg', 'png', 'jpeg', 'doc'];

public function __construct()
{
Expand Down Expand Up @@ -131,6 +131,7 @@ public function update(Request $request, Task $task)
$this->validate($request, [
'description' => 'required|min:3',
'datatypes' => 'required',
'deadline' => 'required'
]);

foreach ($request->datatypes as $datatype) {
Expand All @@ -142,7 +143,8 @@ public function update(Request $request, Task $task)

$task->update([
'description' => $request->description,
'data_types' => implode("|", $request->datatypes)
'data_types' => implode("|", $request->datatypes),
'due_time' => Carbon::parse($request->deadline)
]);

return \redirect()->route('admin.task.show', $task)->with('success', "Tugas berhasil diubah");
Expand Down
74 changes: 74 additions & 0 deletions app/Http/Controllers/Ajax/AdminController.php
Original file line number Diff line number Diff line change
Expand Up @@ -146,4 +146,78 @@ public function getTickets(){
public function uploadFile(Request $request){
return $request;
}

public function getStudentTaskSubmissions($id)
{
$task = Task::with('submissions.student')->find($id);
if (Auth::user()->can('view', $task)) {
return DataTables::of($task->submissions)
->addColumn('_status', function ($submission) {
if (!is_null($submission->score)) {
return '<span class="badge badge-light-success">Done</span>';
} else {
return '<span class="badge badge-light-warning">Pending</span>';
}
})
->addColumn('_status_order', function ($submission) {
return !is_null($submission->score) ? 1 : 0;
})
->addColumn('_nim', function ($submission) {
return '<div class="d-inline-block align-middle">
<div class="d-inline-block">
<h6 class="m-b-0">'. $submission->student->nim .'</h6>
</div>
</div>';
})
->addColumn('_name', function($submission){
return
'<div class="d-inline-block align-middle">
<div class="d-inline-block">
<h6 class="m-b-0">'. $submission->student->name .'</h6>
</div>
</div>';
})
->addColumn('_file', function($submission){
if(!is_null($submission->files)){
return
'<div class="overlay-edit">
<a href="'. route('assistant.task.submission.download', $submission) .'" target="_blank"
class="btn btn-sm btn-icon btn-success">
<i class="feather icon-download"></i>
</a>
</div>';
}
})
->addColumn('_comment', function($submission){
return $submission->comment ?? 'No comment';
})
->addColumn('_date', function($submission){
return $submission->created_at->format('F d Y');
})
->addColumn('_score', function($submission){
return $submission->score ?? ' - ';
})
->addColumn('_action', function($submission){
if(is_null($submission->score)){
return
'<div class="overlay-edit">
<button type="button" class="btn btn-sm btn-icon btn-success add-score-btn" data-toggle="modal"
data-id="'. $submission->id .'" data-target="#score-modal">
<i class="feather icon-check-circle"></i>
</button>
</div>';
} else {
return
'<div class="overlay-edit">
<button type="button" class="btn btn-sm btn-icon btn-primary edit-score-btn" data-toggle="modal"
data-id="'. $submission->id .'" data-target="#score-modal">
<i class="feather icon-edit"></i>
</button>
</div>';
}
})
->rawColumns(['_status', '_nim', '_name', '_file', '_action'])
->make(true);
}
}
}
104 changes: 90 additions & 14 deletions app/Http/Controllers/Ajax/AssistantController.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class AssistantController extends Controller
{
public function getClasses(Request $request)
{
$classes = Auth::user()->classes->map(function($class, $index){
$classes = Auth::user()->classes->map(function ($class, $index) {
$class->classes->no = $index + 1;
return $class->classes;
});
Expand All @@ -24,47 +24,123 @@ public function getClasses(Request $request)
}

return DataTables::of($classes)
->addColumn('_year', function($q){
->addColumn('_year', function ($q) {
return $q->year . ($q->semester == 1 ? ' / Ganjil' : ' / Genap');
})
->addColumn('_student_count', function($q){
->addColumn('_student_count', function ($q) {
return $q->students->count();
})
->addColumn('_task_count', function($q){
->addColumn('_task_count', function ($q) {
return $q->tasks->count();
})
->addColumn('action', function($q){
->addColumn('action', function ($q) {
return "
<a class='btn btn-primary btn-sm has-ripple' href='". route('assistant.class.show', $q) ."'>Detail</a>
<a class='btn btn-primary btn-sm has-ripple' href='" . route('assistant.class.show', $q) . "'>Detail</a>
";
})
->make(true);
}

public function getTasks(Request $request){
public function getTasks(Request $request)
{
$my_classes = Auth::user()->classes->pluck('class_id')->toArray();
$tasks = Task::whereIn('class_id', $my_classes)->get()->map(function($q, $i){
$tasks = Task::whereIn('class_id', $my_classes)->get()->map(function ($q, $i) {
$q->no = $i + 1;
return $q;
});
return DataTables::of($tasks)
->addColumn('_class', function($q){
->addColumn('_class', function ($q) {
return $q->classes->title;
})
->addColumn('_deadline', function($q){
->addColumn('_deadline', function ($q) {
return $q->due_time->format('d M Y - h:i');
})
->addColumn('_url', function($q){
->addColumn('_url', function ($q) {
return "<a href='$q->url' target='_blank'>$q->url</a>";
})
->addColumn('action', function($q){
return "<a class='btn btn-primary btn-sm has-ripple' href='". route('assistant.task.show', $q) ."'>Detail</a>";
->addColumn('action', function ($q) {
return "<a class='btn btn-primary btn-sm has-ripple' href='" . route('assistant.task.show', $q) . "'>Detail</a>";
})
->rawColumns(['_url', 'action'])
->make(true);
}

public function getStudentInfo($id){
public function getStudentInfo($id)
{
return TaskSubmission::with('student')->find($id);
}

public function getStudentTaskSubmissions($id)
{
$task = Task::with('submissions.student')->find($id);
if (Auth::user()->can('view', $task)) {
return DataTables::of($task->submissions)
->addColumn('_status', function ($submission) {
if (!is_null($submission->score)) {
return '<span class="badge badge-light-success">Done</span>';
} else {
return '<span class="badge badge-light-warning">Pending</span>';
}
})
->addColumn('_status_order', function ($submission) {
return !is_null($submission->score) ? 1 : 0;
})
->addColumn('_nim', function ($submission) {
return '<div class="d-inline-block align-middle">
<div class="d-inline-block">
<h6 class="m-b-0">'. $submission->student->nim .'</h6>
</div>
</div>';
})
->addColumn('_name', function($submission){
return
'<div class="d-inline-block align-middle">
<div class="d-inline-block">
<h6 class="m-b-0">'. $submission->student->name .'</h6>
</div>
</div>';
})
->addColumn('_file', function($submission){
if(!is_null($submission->files)){
return
'<div class="overlay-edit">
<a href="'. route('assistant.task.submission.download', $submission) .'" target="_blank"
class="btn btn-sm btn-icon btn-success">
<i class="feather icon-download"></i>
</a>
</div>';
}
})
->addColumn('_comment', function($submission){
return $submission->comment ?? 'No comment';
})
->addColumn('_date', function($submission){
return $submission->created_at->format('F d Y');
})
->addColumn('_score', function($submission){
return $submission->score ?? ' - ';
})
->addColumn('_action', function($submission){
if(is_null($submission->score)){
return
'<div class="overlay-edit">
<button type="button" class="btn btn-sm btn-icon btn-success add-score-btn" data-toggle="modal"
data-id="'. $submission->id .'" data-target="#score-modal">
<i class="feather icon-check-circle"></i>
</button>
</div>';
} else {
return
'<div class="overlay-edit">
<button type="button" class="btn btn-sm btn-icon btn-primary edit-score-btn" data-toggle="modal"
data-id="'. $submission->id .'" data-target="#score-modal">
<i class="feather icon-edit"></i>
</button>
</div>';
}
})
->rawColumns(['_status', '_nim', '_name', '_file', '_action'])
->make(true);
}
}
}
47 changes: 47 additions & 0 deletions app/Http/Controllers/Assistant/ProfileController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?php

namespace App\Http\Controllers\Assistant;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class ProfileController extends Controller
{
public function index(){
$assistant = Auth::user();
return view('dashboard.assistant.profile.index', compact('assistant'));
}

public function update(Request $request){
$assistant = Auth::user();
$this->validate($request, [
'name' => 'required|min:3|max:32',
'nim' => 'required|max:15',
'_avatar' => 'image'
]);

$assistant->update([
'name' => $request->name,
'nim' => $request->nim,
]);

if($request->has('_avatar')){
Storage::disk('public')->delete($assistant->avatar);
$file = $request->file('_avatar');
$avatar = Storage::disk('public')->put("assets/assistants", $file);
$assistant->update([
'avatar' => 'storage/' . $avatar
]);
}

if(!is_null($request->new_password)){
$assistant->update([
'password' => Hash::make($request->new_password)
]);
}

toastr()->success('Profil berhasil diupdate');
return redirect()->back();
}
}
Loading

0 comments on commit 85643fe

Please sign in to comment.