April 9 update

This commit is contained in:
George Frederick "Buzz" Beurling
2020-04-09 17:20:03 -04:00
parent 94509caf3c
commit 50abb9d909
57 changed files with 2635 additions and 854 deletions

View File

@@ -26,7 +26,7 @@ class AdminController extends Controller
{
clog('navigate','success','consulte le tableau de bord');
return view('admin.dashboard',['futureEvent' => \App\Event::future()->take(3),'userClasse' => \Auth::User()->getClasse()->forPage(1,6)]);
return view('admin.dashboard',['futureEvent' => \App\Event::future()->take(3),'userClasse' => \Auth::user()->futureCourses()->forPage(1,6)]);
}
public function update()
@@ -42,4 +42,9 @@ class AdminController extends Controller
return view('admin.status.index',['alerts' => $alerts]);
}
public function instruction()
{
}
}

View File

@@ -3,6 +3,7 @@
namespace App\Http\Controllers;
use App\Course;
use App\GoogleDriveFile;
use Illuminate\Http\Request;
class CourseController extends Controller
@@ -14,7 +15,17 @@ class CourseController extends Controller
*/
public function index()
{
//
$mode = 'future';
if (\request('all'))
{
$courses = Course::all();
$mode = 'all';
}
else
{
$courses = Course::allFuture();
}
return view('admin.course.index',['courses' => $courses,'mode' => $mode]);
}
/**
@@ -41,18 +52,25 @@ class CourseController extends Controller
/**
* Display the specified resource.
*
* @param \App\Course $course
* @return \Illuminate\Http\Response
* @param $id
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function show(Course $course)
public function show($id)
{
//
$course = Course::find($id);
$user = \App\User::find($course->user_id);
$name = $course->user_id;
if ($user != null)
{
$name = $user->fullname();
}
return view('admin.course.show',['course' => $course,'username' => $name,'lessonPlanDir' => \App\GoogleDriveFile::findByPath('.Systeme/.Fichier/.PlanDeCours')->id]);
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Course $course
* @param Course $course
* @return \Illuminate\Http\Response
*/
public function edit(Course $course)
@@ -64,7 +82,7 @@ class CourseController extends Controller
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Course $course
* @param Course $course
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Course $course)
@@ -72,14 +90,105 @@ class CourseController extends Controller
//
}
public function updateCommentOfficer(Request $request, $id)
{
$course = Course::findOrFail($id);
$course->comment_officer = $request->comment_officer;
$course->save();
return redirect()->back()->with('success','Modification enregisté avec succès');
}
public function updateComment(Request $request, $id)
{
$course = Course::findOrFail($id);
$course->comment = $request->comment;
$course->save();
return redirect()->back()->with('success','Modification enregisté avec succès');
}
public function updateCommentOfficerPlan(Request $request, $id)
{
$course = Course::findOrFail($id);
$course->lessonPlan->comment = $request->comment_officer;
$course->lessonPlan->save();
return redirect()->back()->with('success','Modification enregisté avec succès');
}
public function updateCommentPlan(Request $request, $id)
{
$course = Course::findOrFail($id);
$course->lessonPlan->desc = $request->comment;
$course->lessonPlan->save();
return redirect()->back()->with('success','Modification enregisté avec succès');
}
public function updateLessonPlan(Request $request, $id)
{
$course = Course::findOrFail($id);
$name = $course->ocom.'_'.$course->instructor().'_'.$course->event->date_begin.'_'.'v'.date('c').'.'.\request()->file('file')->getClientOriginalExtension();
$name = urlencode($name);
$dirID = \App\GoogleDriveFile::findByPath('.Systeme/.Fichier/.PlanDeCours')->id;
if ($course->lessonPlan != null)
{
$lessonPlan = $course->lessonPlan;
$contents = collect(\Storage::cloud()->listContents($dirID, false));
$file = $contents
->where('type', '=', 'file')
->where('filename', '=', pathinfo($course->lessonPlan->file, PATHINFO_FILENAME))
->where('extension', '=', pathinfo($course->lessonPlan->file, PATHINFO_EXTENSION))
->first(); // there can be duplicate file names!
\Storage::cloud()->delete($file['path']);
}
else
{
$lessonPlan = new \App\LessonPlan();
}
\Storage::cloud()->putFileAs($dirID,\request()->file('file'),$name);
$metadata = \Storage::cloud()->getMetadata($dirID.'/'.$name);
$lessonPlan->user_id = \Auth::user()->id;
$lessonPlan->file = $metadata['name'];
$lessonPlan->course_id = $course->id;
$lessonPlan->desc = "";
$lessonPlan->comment = "";
$lessonPlan->save();
return redirect()->back();
}
/**
* Remove the specified resource from storage.
*
* @param \App\Course $course
* @param Course $course
* @return \Illuminate\Http\Response
*/
public function destroy(Course $course)
{
//
}
public function validatePlan($id)
{
$course = Course::findOrFail($id);
if ($course->lessonPlan)
{
if ($course->lessonPlan->approved)
{
$course->lessonPlan->approved = false;
}
else
{
$course->lessonPlan->approved = true;
}
$course->lessonPlan->save();
return strval($course->lessonPlan->approved);
}
return abort(500);
}
}

View File

@@ -44,9 +44,10 @@ class EventTypeController extends Controller
* @param \App\EventType $eventType
* @return \Illuminate\Http\Response
*/
public function show(EventType $eventType)
public function show($id)
{
//
$event_type = EventType::findOrFail($id);
return view('admin.event_type.show',['event_type' => $event_type]);
}
/**

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers;
use App\GoogleDriveFile;
use Illuminate\Http\Request;
class FilesController extends Controller
@@ -84,6 +85,38 @@ class FilesController extends Controller
public function guide()
{
return view('admin.files.guide');
$dirID = \App\GoogleDriveFile::findByPath('.Privé/.Staff/.Guide');
$dir = collect(\Storage::cloud()->listContents($dirID->id,false))->sortBy('name');
return view('admin.files.guide',['dir' => $dir]);
}
public function instruction()
{
return view('admin.files.Google Drive.index',['folder' => \App\GoogleDriveFile::where('path','=','.Privé/.Staff/.Instruction')->first()->id, 'mode' => 'folder']);
}
public function cadet()
{
return view('admin.files.Google Drive.index',['folder' => \App\GoogleDriveFile::where('path','=','.Privé/.Cadet')->first()->id, 'mode' => 'folder']);
}
public function staff()
{
return view('admin.files.Google Drive.index',['folder' => \App\GoogleDriveFile::where('path','=','.Privé/.Staff')->first()->id, 'mode' => 'folder']);
}
public function etamas()
{
return view('admin.files.Google Drive.index',['folder' => \App\GoogleDriveFile::where('path','=','.Privé/.ETAMAS')->first()->id, 'mode' => 'folder']);
}
public function officier()
{
return view('admin.files.Google Drive.index',['folder' => \App\GoogleDriveFile::where('path','=','.Privé/.Officier')->first()->id, 'mode' => 'folder']);
}
public function publique()
{
return view('admin.files.Google Drive.index',['folder' => \App\GoogleDriveFile::where('path','=','.Publique')->first()->id, 'mode' => 'folder']);
}
}

View File

@@ -22,6 +22,11 @@ class GoogleDriveController extends Controller
return view('admin.files.Google Drive.index',['folder' => $folder]);
}
public function indexFolder($folder = '')
{
return view('admin.files.Google Drive.index',['folder' => $folder,'mode' => 'folder']);
}
/**
* Show the form for creating a new file.
*
@@ -172,6 +177,14 @@ class GoogleDriveController extends Controller
->where('type', '=', 'file')
->where('filename', '=', pathinfo($filename, PATHINFO_FILENAME))
->first(); // there can be duplicate file names!
if ($file == null)
{
$filename = \request('f');
$file = $contents
->where('type', '=', 'file')
->where('filename', '=', pathinfo($filename, PATHINFO_FILENAME))
->first(); // there can be duplicate file names!
}
$rawData = Storage::cloud()->get($file['path']);
$filename = urlencode($filename);
@@ -335,76 +348,71 @@ class GoogleDriveController extends Controller
public function getFileStructure()
{
return collect([
'🔒.Privé' => [
'.Systeme' => [
'rank' => [1 => 'rwp'],
'job' => [],
'user' => []
],
'🔒.Privé/🔒.Cadet' => [
'.Systeme/.Fichier' => [
'rank' => [1 => 'rwp'],
'job' => [],
'user' => []
],
'🔒.Privé/🔒.ETAMAS' => [
'.Systeme/.Fichier/.PlanDeCours' => [
'rank' => [1 => 'rwp'],
'job' => [],
'user' => []
],
'🔒.Privé/🔒.Officier' => [
'.Privé' => [
'rank' => [1 => 'rwp'],
'job' => [],
'user' => []
],
'🔒.Privé/🔒.Staff' => [
'.Privé/.Cadet' => [
'rank' => [1 => 'rwp'],
'job' => [],
'user' => []
],
'🔒.Privé/🔒.Staff/🔒.Guide' => [
'.Privé/.ETAMAS' => [
'rank' => [1 => 'rwp'],
'job' => [],
'user' => []
],
'🔒.Publique' => [
'.Privé/.Officier' => [
'rank' => [1 => 'rwp'],
'job' => [],
'user' => []
],
'.Privé/.Staff' => [
'rank' => [1 => 'rwp'],
'job' => [],
'user' => []
],
'.Privé/.Staff/.Guide' => [
'rank' => [1 => 'rwp'],
'job' => [],
'user' => []
],
'.Privé/.Staff/.Instruction' => [
'rank' => [1 => 'rwp'],
'job' => [],
'user' => []
],
'.Publique' => [
'rank' => [1 => 'rwp',0 => 'r'],
'job' => [],
'user' => []
],
'🔒.Publique/🔒.Fichier' => [
'.Publique/.Fichier' => [
'rank' => [1 => 'rwp',0 => 'r'],
'job' => [],
'user' => []
],
'🔒.Publique/🔒.Image' => [
'.Publique/.Image' => [
'rank' => [1 => 'rwp',0 => 'r'],
'job' => [],
'user' => []
],
'🔒.Système' => [
'rank' => [1 => 'rwp'],
'job' => [],
'user' => []
],
'🔒.Système/🔒.Fichier' => [
'rank' => [1 => 'rwp'],
'job' => [],
'user' => []
],
'🔒.Système/🔒.Image' => [
'rank' => [1 => 'rwp'],
'job' => [],
'user' => []
],
'🔒.Système/🔒.Image/🔒.Nouvelle' => [
'rank' => [1 => 'rwp'],
'job' => [],
'user' => []
],
'🔒.Système/🔒.Image/🔒.Profil' => [
'rank' => [1 => 'rwp'],
'job' => [],
'user' => []
],
]);
}
@@ -412,7 +420,7 @@ class GoogleDriveController extends Controller
{
$contents = collect(\Storage::cloud()->listContents($d, false));
$dir = $contents->where('type', '=', 'dir');
$dir = $dir->where('filename','=','🔒');
$dir = $dir->where('filename','=','');
return $dir;
}
@@ -481,6 +489,142 @@ class GoogleDriveController extends Controller
return view('admin.files.Google Drive.permission.edit',['folder' => $dir,'subject' => $foo,'perm' => $perm,'s' => $subject]);
}
public function addPermissionModal($folder,$subject)
{
$dir = GoogleDriveFile::find($folder);
$list = null;
if ($subject == 'rank')
{
$list = \App\Rank::all();
}
elseif ($subject == 'job')
{
$list = \App\Job::all();
}
else
{
$list = \App\User::all();
}
return view('admin.files.Google Drive.permission.add',['folder' => $dir,'list' => $list,'s' => $subject]);
}
public function patchPermission(Request $request,$folder,$subject,$id)
{
$f = GoogleDriveFile::find($folder);
$permstring = '';
if (isset($request->read))
{
if ($request->read == 'on')
{
$permstring = $permstring.'r';
}
}
if (isset($request->write))
{
if ($request->write == 'on')
{
$permstring = $permstring.'w';
}
}
if (isset($request->perm))
{
if ($request->perm == 'on')
{
$permstring = $permstring.'p';
}
}
if ($subject == 'rank')
{
$temp = $f->rank_permission;
$temp[$id] = $permstring;
$f->rank_permission = $temp;
}
if ($subject == 'job')
{
$temp = $f->job_permission;
$temp[$id] = $permstring;
$f->job_permission = $temp;
}
if ($subject == 'user')
{
$temp = $f->user_permission;
$temp[$id] = $permstring;
$f->user_permission = $temp;
}
$f->save();
return redirect()->back()->with('success','Modification enregistré avec succès');
}
public function addPermission(Request $request,$folder,$subject)
{
$f = GoogleDriveFile::find($folder);
$permstring = '';
if (isset($request->read))
{
if ($request->read == 'on')
{
$permstring = $permstring.'r';
}
}
if (isset($request->write))
{
if ($request->write == 'on')
{
$permstring = $permstring.'w';
}
}
if (isset($request->perm))
{
if ($request->perm == 'on')
{
$permstring = $permstring.'p';
}
}
if ($subject == 'rank')
{
$temp = $f->rank_permission;
$temp[$request->id] = $permstring;
$f->rank_permission = $temp;
}
if ($subject == 'job')
{
$temp = $f->job_permission;
$temp[$request->id] = $permstring;
$f->job_permission = $temp;
}
if ($subject == 'user')
{
$temp = $f->user_permission;
$temp[$request->id] = $permstring;
$f->user_permission = $temp;
}
$f->save();
return redirect()->back()->with('success','Modification enregistré avec succès');
}
public function deletePermission($folder,$subject,$id)
{
$f = GoogleDriveFile::find($folder);
if ($subject == 'rank')
{
$temp = $f->rank_permission;
unset($temp[$id]);
$f->rank_permission = $temp;
}
if ($subject == 'job')
{
$temp = $f->job_permission;
unset($temp[$id]);
$f->job_permission = $temp;
}
if ($subject == 'user')
{
$temp = $f->user_permission;
unset($temp[$id]);
$f->user_permission = $temp;
}
$f->save();
return redirect()->back()->with('success','Modification enregistré avec succès');
}
}

View File

@@ -0,0 +1,85 @@
<?php
namespace App\Http\Controllers;
use App\LessonPlan;
use Illuminate\Http\Request;
class LessonPlanController 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 \App\LessonPlan $lessonPlan
* @return \Illuminate\Http\Response
*/
public function show(LessonPlan $lessonPlan)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\LessonPlan $lessonPlan
* @return \Illuminate\Http\Response
*/
public function edit(LessonPlan $lessonPlan)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\LessonPlan $lessonPlan
* @return \Illuminate\Http\Response
*/
public function update(Request $request, LessonPlan $lessonPlan)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\LessonPlan $lessonPlan
* @return \Illuminate\Http\Response
*/
public function destroy(LessonPlan $lessonPlan)
{
//
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ProfilController extends Controller
{
public function courses()
{
$mode = 'future';
if (\request('all'))
{
$courses = \App\Course::allForAuthUser();
$mode = 'all';
}
else
{
$courses = \App\Course::allFutureForAuthUser();
}
return view('admin.user.profil.courses',['courses' => $courses,'mode' => $mode]);
}
}

View File

@@ -11,49 +11,21 @@ class ScheduleController extends Controller
{
public function index()
{
return view('admin.configs.schedule',['configs' => \App\Config::all()]);
return view('admin.configs.schedule',['configs' => \App\Config::all(),'events_type' => \App\EventType::all()]);
}
public function update()
public function update(Request $request)
{
$configs = ['admin_periode_nb'];
$instruction_year_begin = \App\Config::find('instruction_year_begin');
$instruction_year_end = \App\Config::find('instruction_year_end');
foreach ($configs as $config) {
$c = \App\Config::all()->where('name',$config)->first();
$c->data = [request($config)];
$c->save();
}
$instruction_year_begin->data = [date('Y-m-d',strtotime($request->instruction_year_begin))];
$instruction_year_end->data = [date('Y-m-d',strtotime($request->instruction_year_end))];
$new_admin_periode_begin = [];
$new_admin_periode_end = [];
for ($i=1; $i <= request('admin_periode_nb'); $i++) {
if(request('admin_periode_begin_'.$i))
{
$new_admin_periode_begin[$i] = request('admin_periode_begin_'.$i);
}
else
{
$new_admin_periode_begin[$i] = "00:00";
}
if(request('admin_periode_end_'.$i))
{
$new_admin_periode_end[$i] = request('admin_periode_end_'.$i);
}
else
{
$new_admin_periode_end[$i] = "00:00";
}
}
$instruction_year_begin->save();
$instruction_year_end->save();
$temp = \App\Config::all()->where('name','admin_periode_begin')->first();
$temp->data = $new_admin_periode_begin;
$temp->save();
$temp = \App\Config::all()->where('name','admin_periode_end')->first();
$temp->data = $new_admin_periode_end;
$temp->save();
return redirect('/admin/config/schedule')->with('success','Modification sauvegarder avec succès !');
return redirect('/admin/config/instruction')->with('success','Modification sauvegarder avec succès !');
}
public function apiIndex()

View File

@@ -0,0 +1,81 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class StatsController extends Controller
{
public function instruction()
{
$instructorUTTD = collect();
$coursesTY = \App\Course::allThisYear();
$nbCoursePlanDoneTY = 0;
$nbCoursePlanDoneAndCheckTY = 0;
foreach ($coursesTY as $course)
{
if ($course->lessonPlan)
{
if ($course->lessonPlan->approved)
{
$nbCoursePlanDoneAndCheckTY++;
}
else
{
$nbCoursePlanDoneTY++;
}
}
}
$coursesUTTD = $coursesTY;
$nbCoursePlanDoneUTDP = 0;
$nbCoursePlanDoneAndCheckUTDP = 0;
foreach ($coursesUTTD as $key => $course)
{
if (date('c',strtotime($course->event->date_begin)) >= date('c'))
{
$coursesUTTD->forget($key);
}
else
{
$instructorUTTD->push($course->instructor());
if ($course->lessonPlan)
{
if ($course->lessonPlan->approved)
{
$nbCoursePlanDoneAndCheckUTDP++;
}
else
{
$nbCoursePlanDoneUTDP++;
}
}
}
}
$instructorUTTD = $instructorUTTD->unique();
$eventTY = \App\Event::allThisYear();
$eventUTTD = $eventTY;
foreach ($eventUTTD as $key => $event)
{
if (date('c',strtotime($event->date_begin)) >= date('c'))
{
$eventUTTD->forget($key);
}
}
return view('admin.stats.instruction',[
'nbCourseThisYear' => count($coursesTY),
'nbInstructorUpToThisDay' => count($instructorUTTD),
'nbEventThisYear' => count($eventTY),
'nbEventUpToThisDay' => count($eventUTTD),
'nbCourseUpToThisDay' => count($coursesUTTD),
'nbCoursePlanDoneUTDP' => $nbCoursePlanDoneUTDP,
'nbCoursePlanDoneTY' => $nbCoursePlanDoneTY,
'nbCoursePlanDoneAndCheckUTDP' => $nbCoursePlanDoneAndCheckUTDP,
'nbCoursePlanDoneAndCheckTY' => $nbCoursePlanDoneAndCheckTY,
'nbCourseInDB' => count(\App\OCOM::all()),
]);
}
}

View File

@@ -262,4 +262,14 @@ class UserController extends Controller
return json_encode($name);
}
public function showCourses($id)
{
return view('admin.user.courses',['courses' => User::find($id)->courses]);
}
public function showCourse($id,$course_id)
{
return view('admin.user.course',['courses' => User::find($id)->courses]);
}
}

View File

@@ -63,5 +63,6 @@ class Kernel extends HttpKernel
'admin' => \App\Http\Middleware\AccesAdmin::class,
'perm' => \App\Http\Middleware\CheckPerm::class,
'fileperm' => \App\Http\Middleware\CheckFilePerm::class,
'courseperm' => \App\Http\Middleware\CheckCoursePerm::class,
];
}

View File

@@ -0,0 +1,43 @@
<?php
namespace App\Http\Middleware;
use Closure;
class CheckCoursePerm
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next,$perm = 'see')
{
$course = \App\Course::findOrFail($request->id);
if (\Auth::user()->id == $course->user_id)
{
if ($perm == 'see' || $perm == 'edit')
{
return $next($request);
}
}
if (\Auth::user()->p('course_'.$perm.'_all') == 1)
{
return $next($request);
}
if (\Auth::user()->p('course_'.$perm) == 1)
{
return $next($request);
}
if ($perm == 'validate_plan')
{
abort(401);
}
clog('navigate','danger','L\'utilisateur n\'est pas autorisé à effectuer cette action',\Auth::user()->id);
return redirect('/admin')->with('error','Vous n\'êtes pas autorisé à effectuer cette action');
}
}