ALPHA 3.0.5

This commit is contained in:
TheGamecraft
2018-09-21 14:31:00 -04:00
parent 252ff658e0
commit 3b593297cd
33 changed files with 559 additions and 98 deletions

View File

@@ -26,7 +26,23 @@ class AdminController extends Controller
{
Log::saveLog('Affichage du tableau de bord');
return view('admin.dashboard');
$futureEvent_to_filtered = \App\Schedule::all()->sortBy('date');
$futureEvent_to_filtered_pass_1 = collect();
$futureEvent = collect();
foreach ($futureEvent_to_filtered as $day) {
if ($day->date >= date('Y-m-d')) {
$futureEvent_to_filtered_pass_1->push($day);
}
}
foreach ($futureEvent_to_filtered_pass_1 as $day) {
if ($day->date <= date('Y-m-d',strtotime("+2 week"))) {
$futureEvent->push($day);
}
}
return view('admin.dashboard',['futureEvent' => $futureEvent,'userClasse' => \Auth::User()->getClasse()->forPage(1,6)]);
}
public function update()

View File

@@ -191,9 +191,6 @@ class CalendarController extends Controller
'<a type="button" class="btn btn-danger" onclick="deleteEvent('.$date->id.');"><i class="fa fa-times-circle" style="color:white;"></i></a>'.
'</div>'.
'</div>'.
'<p>'.
"L'activité auras lieux a l'escadron entre 18h30 et 21h30".
'</p>'.
'<p>'.$date->data['event_desc'].
'</p>'
);
@@ -445,14 +442,14 @@ class CalendarController extends Controller
$schedule->save();
/** Logs and Notification */
Log::saveLog("Ajout de l'activité, ".$schedule->name." à l'horaire le ".$schedule->date);
Log::saveLog("Ajout de l'activité, ".$schedule->data['event_name']." à l'horaire le ".$schedule->date);
$userToNotify = $schedule->getUserToNotify();
\Notification::send($userToNotify, new Alert(\Auth::User()->id,"Ajout de l'activité, ".$schedule->name." à l'horaire le ".$schedule->date,"/admin/calendar"));
\Notification::send($userToNotify, new Alert(\Auth::User()->id,"Ajout de l'activité, ".$schedule->data['event_name']." à l'horaire le ".$schedule->date,"/admin/calendar"));
if(\App\Config::where('name','is_schedule_build')->first()->state == 1)
{
\Notification::send($userToNotify, new mail(\Auth::User(),"Ajout d'une activité a l'horaire",\Auth::User()->fullname()." à ajouté l'activité, ".$schedule->name." à l'horaire le ".$schedule->date));
\Notification::send($userToNotify, new mail(\Auth::User(),"Ajout d'une activité a l'horaire",\Auth::User()->fullname()." à ajouté l'activité, ".$schedule->data['event_name']." à l'horaire le ".$schedule->date));
}
return redirect('/admin/calendar');

View File

@@ -14,7 +14,7 @@ class ConfigController extends Controller
*/
public function index()
{
//
return view ('admin.configs.general',['configs' => Config::all()]);
}
/**
@@ -67,9 +67,19 @@ class ConfigController extends Controller
* @param \App\Config $config
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Config $config)
public function update()
{
//
$config = Config::all()->where('name',request('perm'))->first();
if (request('value') == "true") {
$config->state = 1;
} else {
$config->state = 0;
}
$config->save();
\App\Log::saveLog('Modification de la configuration du site');
}
/**

View File

@@ -247,25 +247,43 @@ class ECCController extends Controller
foreach ($items_array as $item_array) {
if ($item_array != "") {
$items->push(\App\Item::find($item_array));
$item_array_ex = explode(":",$item_array);
$this_item = \App\Item::find($item_array_ex[0]);
$this_item->quantity = $item_array_ex[1];
$items->push($this_item);
}
}
}
return view('ecc.booking',['schedule' => $schedule, 'periode' => $periode, 'niveau' => $niveau, 'items' => $items, 'dispo_item' => $schedule->getInventory($periode)]);
}
public function booking_add($id,$periode,$niveau)
{
$schedule = Schedule::find($id);
$id_to_modify = "passet";
$qt_to_add = 0;
$periode_item = 'n'.$niveau.'_p'.$periode.'_item';
if (isset($schedule->$periode_item)) {
$array_items = explode("-",$schedule->$periode_item);
array_push($array_items,request('add'));
for ($i=0; $i < count($array_items); $i++) {
$array_item_id = explode(":",$array_items[$i]);
if ($array_item_id[0] == request('add')) {
$id_to_modify = $i;
$qt_to_add = $array_item_id[1];
}
}
if ($id_to_modify === "passet") {
array_push($array_items,request('add').":".request('qt'));
} else {
$toadd = $qt_to_add+request('qt');
$array_items[$id_to_modify] = request('add').":".$toadd;
}
} else {
$array_items = [];
array_push($array_items,request('add'));
array_push($array_items,request('add').":".request('qt'));
}
$final_items = implode("-",$array_items);
@@ -273,7 +291,7 @@ class ECCController extends Controller
$schedule->$periode_item = $final_items;
$schedule->save();
return redirect('/ecc/inventory/'.$id.'/'.$niveau.'/'.$periode);
}

View File

@@ -54,15 +54,29 @@ class InventoryController extends Controller
public function store($id,$periode,$niveau)
{
$schedule = Schedule::find($id);
$id_to_modify = "passet";
$qt_to_add = 0;
$periode_item = 'n'.$niveau.'_p'.$periode.'_item';
if (isset($schedule->$periode_item)) {
$array_items = explode("-",$schedule->$periode_item);
array_push($array_items,request('add'));
for ($i=0; $i < count($array_items); $i++) {
$array_item_id = explode(":",$array_items[$i]);
if ($array_item_id[0] == request('add')) {
$id_to_modify = $i;
$qt_to_add = $array_item_id[1];
}
}
if ($id_to_modify === "passet") {
array_push($array_items,request('add').":".request('qt'));
} else {
$toadd = $qt_to_add+request('qt');
$array_items[$id_to_modify] = request('add').":".$toadd;
}
} else {
$array_items = [];
array_push($array_items,request('add'));
array_push($array_items,request('add').":".request('qt'));
}
$final_items = implode("-",$array_items);
@@ -70,7 +84,7 @@ class InventoryController extends Controller
$schedule->$periode_item = $final_items;
$schedule->save();
return redirect('/admin/inventory/'.$id.'/'.$periode.'/'.$niveau);
}
@@ -91,10 +105,14 @@ class InventoryController extends Controller
foreach ($items_array as $item_array) {
if ($item_array != "") {
$items->push(Item::find($item_array));
$item_array_ex = explode(":",$item_array);
$this_item = Item::find($item_array_ex[0]);
$this_item->quantity = $item_array_ex[1];
$items->push($this_item);
}
}
}
return view('admin.inventory.show',['schedule' => $schedule, 'periode' => $periode, 'niveau' => $niveau, 'items' => $items, 'dispo_item' => $schedule->getInventory($periode)]);
}

View File

@@ -39,6 +39,7 @@ class ItemController extends Controller
$item->name = request('name');
$item->desc = request('desc');
$item->quantiy = request('qt');
$item->save();
@@ -82,6 +83,7 @@ class ItemController extends Controller
$item->name = request('name');
$item->desc = request('desc');
$item->quantity = request('qt');
$item->save();

19
app/Http/helpers.php Normal file
View File

@@ -0,0 +1,19 @@
<?php
function getStatus()
{
$client = new GuzzleHttp\Client();
$incidents = $client->get('https://status.c-cms.cf/api/v1/incidents');
$isBroken = false;
$incidents_decode = json_decode($incidents->getBody(),true);
foreach ($incidents_decode['data'] as $incident) {
if (!$incident['is_resolved']) {
$isBroken = true;
}
}
return $isBroken;
}

View File

@@ -13,8 +13,10 @@ class Schedule extends Model
public function getInventory($periode)
{
$dispo = [];
$used = [];
$dispo_id = [];
$dispo_qt = [];
$used_id = [];
$used_qt = [];
$dispo_item = collect();
$string_periode = 'p'.$periode;
@@ -22,34 +24,72 @@ class Schedule extends Model
$inventory = Item::all();
foreach ($inventory as $item) {
array_push($dispo, $item->id);
array_push($dispo_id, $item->id);
array_push($dispo_qt, $item->quantity);
}
$n1 = 'n1_'.$string_periode.'_item';
$items_array = explode("-",$this->$n1);
foreach ($items_array as $item_array) {
array_push($used,$item_array);
if ($items_array[0] == "") {
unset($items_array[0]);
}
$items_array = array_values($items_array);
if ($items_array != "") {
foreach ($items_array as $item_array) {
$items_for = explode(":",$item_array);
array_push($used_id,$items_for[0]);
array_push($used_qt,$items_for[1]);
}
}
$n2 = 'n2_'.$string_periode.'_item';
$items_array = explode("-",$this->$n2);
if ($items_array[0] == "") {
unset($items_array[0]);
}
$items_array = array_values($items_array);
foreach ($items_array as $item_array) {
array_push($used,$item_array);
if ($items_array != "") {
foreach ($items_array as $item_array) {
$items_for = explode(":",$item_array);
array_push($used_id,$items_for[0]);
array_push($used_qt,$items_for[1]);
}
}
$n3 = 'n3_'.$string_periode.'_item';
$items_array = explode("-",$this->$n3);
foreach ($items_array as $item_array) {
array_push($used,$item_array);
if ($items_array[0] == "") {
unset($items_array[0]);
}
$items_array = array_values($items_array);
if ($items_array != "") {
foreach ($items_array as $item_array) {
$items_for = explode(":",$item_array);
array_push($used_id,$items_for[0]);
array_push($used_qt,$items_for[1]);
}
}
$dispo = array_diff($dispo,$used);
foreach ($dispo as $key) {
$dispo_item->push(Item::find($key));
for ($i=0; $i < count($used_id); $i++) {
for ($e=0; $e < count($dispo_id); $e++) {
if (isset($dispo_id[0])) {
if ($used_id[$i] == $dispo_id[$e]) {
$dispo_qt[$e] = $dispo_qt[$e] - $used_qt[$i];
if ($dispo_qt[$e] < 1) {
unset($dispo_id[$e]);
unset($dispo_qt[$e]);
}
}
}
}
}
$dispo_id = array_values($dispo_id);
$dispo_qt = array_values($dispo_qt);
for ($i=0; $i < count($dispo_id); $i++) {
$this_item = Item::find($dispo_id[$i]);
$this_item->quantity = $dispo_qt[$i];
$dispo_item->push($this_item);
}
return $dispo_item;

View File

@@ -26,7 +26,8 @@
],
"psr-4": {
"App\\": "app/"
}
},
"files": ["app/Http/helpers.php"]
},
"autoload-dev": {
"psr-4": {

View File

@@ -15,6 +15,7 @@ class CreateItemsTable extends Migration
{
Schema::create('items', function (Blueprint $table) {
$table->increments('id');
$table->integer('quantity');
$table->string('name');
$table->string('desc');
$table->timestamps();

View File

@@ -98,7 +98,7 @@ function switchType()
eventBeginTime.value = "18:30";
eventEndTime.value = "21:45";
eventLocation.value = "Escadron";
tinymce.get('event_desc').setContent("Lors des soirées d'instruction, les cadets auronts la possibilité de participer par niveau a des activitées en lien avec le programme des cadets, que ce soit des activitées de tir, marche militaire, musique, pilotage, leadership et plus, a tous les coups le plaisir est au rendez-vous.");
tinymce.get('event_desc').setContent("Lors des soirées d'instruction, les cadets auront la possibilité de participer par niveau à des activités en lien avec le programme des cadets, qu'il s'agisse d'activités de tir, de marche militaire, de musique, de pilotage, de leadership et plus, dans une ambiance plaisante.");
var n1_p1_plandone = document.getElementById('n1_p1_plandone');
var n1_p2_plandone = document.getElementById('n1_p2_plandone');

View File

@@ -16,11 +16,6 @@
</div>
</div>
</div>
@if (!\App\Config::find(1)->state)
<div class="alert alert-danger" role="alert">
Attention ! L'horaire n'est présentement pas visible par le publique ! <a href="/admin/config#schedule_public">Cliquer ici pour accéder aux options</a>
</div>
@endif
<div class="calendar"></div>
</div>
</div>

View File

@@ -0,0 +1,70 @@
@extends('layouts.admin.main')
@section('content')
<div class="col-md-12">
<div class="card">
<div class="card-header">
Configuration Générale
</div>
<div class="card-body">
<div class="row form-group">
<div class="col-md-6">
<div class="col col-md-8"><label for="text-input" class=" form-control-label">Horaire publique</label><small class="form-text text-muted">L'horaire est t-il disponible publique sur la page d'accueil du site</small></div>
<div class="col col-md-4" style="margin: auto;">
<label for="disabled-input" class=" form-control-label"></label>
<label class="switch switch-3d switch-primary mr-3" style="margin-left: 3rem;"><input id="is_schedule_public" name="is_schedule_public" class="switch-input" @if($configs->where('name','is_schedule_public')->first()->state == 1) checked="true" @endif type="checkbox" onchange="saveChange('is_schedule_public')"><span class="switch-label"></span><span class="switch-handle"></span></label>
</div>
</div>
<div class="col-md-6">
<div class="col col-md-8"><label for="text-input" class=" form-control-label">Horaire complet</label><small class="form-text text-muted">L'horaire est t-il complet ? Si cette option est désactivé les utilisateurs ne reseverons pas de notification concernant l'horaire</small></div>
<div class="col col-md-4" style="margin: auto;">
<label for="disabled-input" class=" form-control-label"></label>
<label class="switch switch-3d switch-primary mr-3" style="margin-left: 3rem;"><input id="is_schedule_build" name="is_schedule_build" class="switch-input" @if($configs->where('name','is_schedule_build')->first()->state == 1) checked="true" @endif type="checkbox" onchange="saveChange('is_schedule_build')"><span class="switch-label"></span><span class="switch-handle"></span></label>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('breadcrumb')
<div class="breadcrumbs">
<div class="col-sm-4">
<div class="page-header float-left">
<div class="page-title">
<h1>Configuration Générale</h1>
</div>
</div>
</div>
<div class="col-sm-8">
<div class="page-header float-right">
<div class="page-title">
<ol class="breadcrumb text-right">
<li class="active">Configuration/Générale</li>
</ol>
</div>
</div>
</div>
</div>
@endsection
@section('custom_scripts')
<script>
function saveChange(pPerm) {
(function($) {
var myswitch = document.getElementById(pPerm);
$.post('/api/config/general/save?api_token='+api_token, { value: myswitch.checked,perm: pPerm } , function(data) {
swal({
title: 'Modification enregistré !',
type: 'success',
}).then((result) => {
if (result.value) {
location.reload();
}
})
});
})(jQuery);
}
</script>
@endsection

View File

@@ -1,33 +1,123 @@
@extends('layouts.admin.main')
@section('content')
<!--<div class="col-sm-6 col-lg-6">
<div class="card text-white bg-flat-color-3">
<div class="card-body pb-0">
<div class="dropdown float-right">
<button class="btn bg-transparent dropdown-toggle theme-toggle text-light" type="button" id="dropdownMenuButton" data-toggle="dropdown">
<i class="fa fa-cog"></i>
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<div class="dropdown-menu-content">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</div>
</div>
<h4 class="mb-0">
<span class="count">10468</span>
</h4>
<p class="text-light">Members online</p>
</div>
<div class="chart-wrapper px-0" style="height:70px;" height="70">
<canvas id="widgetChart3"></canvas>
</div>
<div class="col-md-12">
<div class="card">
<div class="card-header">
Cours a venir
</div>
</div>-->
<div class="card-body">
@foreach ($userClasse as $classe)
<div class="col-sm-6">
@if ($classe['plan_done'] == "on")
<div class="alert alert-success alert-with-icon">
<span data-notify="icon" class="ti-crown"></span>
<span data-notify="message">Le cours {{$classe['ocom']}} - {{$classe['name']}} du {{$classe['date']}} est remis.<br>
@if ($classe['material'] != "")
- Vous avez réservé
@foreach (\App\Item::explodeItems($classe['material']) as $item)
@if (\App\Item::explodeItems($classe['material'])->last() == $item && \App\Item::explodeItems($classe['material'])->first() != $item)
et
@endif
{{$item->name}}
@endforeach
@else
- Aucun matériel réservé
@endif
</span>
</div>
@else
<div class="alert alert-warning alert-with-icon">
<span data-notify="icon" class="ti-alert"></span>
<span data-notify="message">Le cours {{$classe['ocom']}} - {{$classe['name']}} du {{$classe['date']}} n'est pas remis.<br>
@if ($classe['material'] != "")
- Vous avez réservé
@foreach (\App\Item::explodeItems($classe['material']) as $item)
@if (\App\Item::explodeItems($classe['material'])->last() == $item && \App\Item::explodeItems($classe['material'])->first() != $item)
et
@endif
{{$item->name}}
@endforeach
@else
- Aucun matériel réservé
@endif
</span>
</div>
@endif
</div>
@endforeach
</div>
</div>
</div>
<div class="col-sm-6 col-lg-6">
<div class="card">
<div class="card-header">
<span class="count">{{count($futureEvent)}}</span>
<div class="float-right">Activité a venir</div>
</div>
<div class="card-body">
@foreach ($futureEvent as $event)
<i class="fa fa-star" aria-hidden="true" style="color:gold"></i> {{$event->data['event_name']}}<br>
@endforeach
<br>
<a href="/admin/calendar" type="button" class="btn btn-primary btn-lg btn-block">Afficher plus</a>
</div>
</div>
</div>
<div class="col-sm-6 col-lg-6">
<div class="card">
<div class="card-header">
<span class="count">{{count(\App\Log::all())}}</span>
<div class="float-right">Activité sur le site</div>
</div>
<div class="card-body">
@foreach (\App\Log::all()->forPage(1,3); as $event)
<i class="fa fa-arrow-right" aria-hidden="true"></i> {{$event->action}}<br>
@endforeach
<br>
<a href="/admin/stats/log" type="button" class="btn btn-primary btn-lg btn-block text-white">Afficher plus</a>
</div>
</div>
</div>
<div class="col-lg-8 col-md-12">
<div class="card">
<div class="card-header">
<span class="count">{{count(\App\Message::all())}}</span>
<div class="float-right">Message publié</div>
</div>
<div class="card-body">
<div class="row">
@foreach (\App\Message::all()->forPage(1,4); as $msg)
<div class="col-lg-6 text-center">
<div style="height:2rem;">{{$msg->title}}</div>
<br>
<div class="msg-body" style="height:12rem;overflow:hidden">
{!!$msg->body!!}
</div>
<br>
</div>
@endforeach
</div>
<br>
<a href="/admin/admin/message" type="button" class="btn btn-primary btn-lg btn-block text-white">Afficher plus</a>
</div>
</div>
</div>
<div class="col-sm-4 col-lg-4">
<div class="card">
<div class="card-body">
<div class="mx-auto d-block">
<img class="rounded-circle mx-auto d-block" src="/assets/admin/images/avatar/user-{{\Auth::User()->avatar}}.jpg" alt="Card image cap" style="height:12rem">
<h5 class="text-sm-center mt-2 mb-1">{{\Auth::User()->fullname()}}</h5>
<div class="location text-sm-center"><i class="fa fa-id-card-o" aria-hidden="true"></i> {{\App\Rank::find(\Auth::User()->rank)->name}}</div>
</div>
<hr>
<div class="card-text text-sm-center">
<a href="#">Profil</a>
</div>
</div>
</div>
</div>
@endsection
@section('breadcrumb')

View File

@@ -42,7 +42,7 @@
<table class="table float center" style="border:none; max-width:80%; margin:auto;">
<thead>
<tr style="border:none;">
<th style="border:none;">ID</th>
<th style="border:none;">Quantité</th>
<th style="border:none;">Item</th>
<th style="border:none;">Description</th>
</tr>
@@ -50,7 +50,7 @@
<tbody>
@foreach ($n1_p1_items as $item)
<tr style="border:none;">
<td style="border:none; width:10%">{{$item}}</td>
<td style="border:none; width:10%">@php $quantity = explode(":",$item); @endphp {{$quantity[1]}}</td>
<td style="border:none;">{{\App\Item::find($item)->name}}</td>
<td style="border:none;">{{\App\Item::find($item)->desc}}</td>
</tr>
@@ -76,7 +76,7 @@
<table class="table float center" style="border:none; max-width:80%; margin:auto;">
<thead>
<tr style="border:none;">
<th style="border:none;">ID</th>
<th style="border:none;">Quantité</th>
<th style="border:none;">Item</th>
<th style="border:none;">Description</th>
</tr>
@@ -84,7 +84,7 @@
<tbody>
@foreach ($n1_p2_items as $item)
<tr style="border:none;">
<td style="border:none; width:10%">{{$item}}</td>
<td style="border:none; width:10%">@php $quantity = explode(":",$item); @endphp {{$quantity[1]}}</td>
<td style="border:none;">{{\App\Item::find($item)->name}}</td>
<td style="border:none;">{{\App\Item::find($item)->desc}}</td>
</tr>
@@ -113,7 +113,7 @@
<table class="table float center" style="border:none; max-width:80%; margin:auto;">
<thead>
<tr style="border:none;">
<th style="border:none;">ID</th>
<th style="border:none;">Quantité</th>
<th style="border:none;">Item</th>
<th style="border:none;">Description</th>
</tr>
@@ -121,7 +121,7 @@
<tbody>
@foreach ($n2_p1_items as $item)
<tr style="border:none;">
<td style="border:none; width:10%">{{$item}}</td>
<td style="border:none; width:10%">@php $quantity = explode(":",$item); @endphp {{$quantity[1]}}</td>
<td style="border:none;">{{\App\Item::find($item)->name}}</td>
<td style="border:none;">{{\App\Item::find($item)->desc}}</td>
</tr>
@@ -147,7 +147,7 @@
<table class="table float center" style="border:none; max-width:80%; margin:auto;">
<thead>
<tr style="border:none;">
<th style="border:none;">ID</th>
<th style="border:none;">Quantité</th>
<th style="border:none;">Item</th>
<th style="border:none;">Description</th>
</tr>
@@ -155,7 +155,7 @@
<tbody>
@foreach ($n2_p2_items as $item)
<tr style="border:none;">
<td style="border:none; width:10%">{{$item}}</td>
<td style="border:none; width:10%">@php $quantity = explode(":",$item); @endphp {{$quantity[1]}}</td>
<td style="border:none;">{{\App\Item::find($item)->name}}</td>
<td style="border:none;">{{\App\Item::find($item)->desc}}</td>
</tr>
@@ -184,7 +184,7 @@
<table class="table float center" style="border:none; max-width:80%; margin:auto;">
<thead>
<tr style="border:none;">
<th style="border:none;">ID</th>
<th style="border:none;">Quantité</th>
<th style="border:none;">Item</th>
<th style="border:none;">Description</th>
</tr>
@@ -192,7 +192,7 @@
<tbody>
@foreach ($n3_p1_items as $item)
<tr style="border:none;">
<td style="border:none; width:10%">{{$item}}</td>
<td style="border:none; width:10%">@php $quantity = explode(":",$item); @endphp {{$quantity[1]}}</td>
<td style="border:none;">{{\App\Item::find($item)->name}}</td>
<td style="border:none;">{{\App\Item::find($item)->desc}}</td>
</tr>
@@ -218,7 +218,7 @@
<table class="table float center" style="border:none; max-width:80%; margin:auto;">
<thead>
<tr style="border:none;">
<th style="border:none;">ID</th>
<th style="border:none;">Quantité</th>
<th style="border:none;">Item</th>
<th style="border:none;">Description</th>
</tr>
@@ -226,7 +226,7 @@
<tbody>
@foreach ($n3_p2_items as $item)
<tr style="border:none;">
<td style="border:none; width:10%">{{$item}}</td>
<td style="border:none; width:10%">@php $quantity = explode(":",$item); @endphp {{$quantity[1]}}</td>
<td style="border:none;">{{\App\Item::find($item)->name}}</td>
<td style="border:none;">{{\App\Item::find($item)->desc}}</td>
</tr>

View File

@@ -13,7 +13,7 @@
<table id="log-data" class="table table-striped table-bordered">
<thead>
<tr>
<th>ID </th>
<th>Quantité</th>
<th>Nom</th>
<th>Description</th>
<th></th>
@@ -22,7 +22,7 @@
<tbody>
@foreach ($items as $item)
<tr>
<td style="width:5%;">{{$item->id}}</td>
<td style="width:5%;">{{$item->quantity}}</td>
<td>{{$item->name}}</td>
<td>{{$item->desc}}</td>
<td style="width: 12%;"><a href="/admin/item/edit/{{$item->id}}" type="button" class="btn btn-secondary"><i class="fa fa-cog"></i>&nbsp; Modifier</a><a type="button" class="btn btn-danger" onclick="deleteEvent({{$item->id}});"><i class="fa fa-times-circle" style="color:white;"></i></a></td>

View File

@@ -19,6 +19,7 @@
<tr>
<th>Nom</th>
<th>Description</th>
<th>Quantité</th>
<th></th>
</tr>
</thead>
@@ -28,7 +29,8 @@
<tr>
<td>{{$item->name}}</td>
<td>{{$item->desc}}</td>
<td style="width: 12%;"><form action="/admin/inventory/remove/{{$schedule->id}}/{{$periode}}/{{$niveau}}" method="post">{{ csrf_field() }}<button type="submit" name="remove" value="{{$item->id}}" class="btn btn-danger"><i class="fa fa-arrow-right" style="color:white;"></i></button></form></td>
<td>{{$item->quantity}}</td>
<td style="width: 12%;"><form action="/admin/inventory/remove/{{$schedule->id}}/{{$periode}}/{{$niveau}}" method="post">{{ csrf_field() }}<button type="submit" name="remove" value="{{$item->id}}:{{$item->quantity}}" class="btn btn-danger"><i class="fa fa-arrow-right" style="color:white;"></i></button></form></td>
</tr>
@endif
@endforeach
@@ -47,15 +49,17 @@
<th></th>
<th>Nom</th>
<th>Description</th>
<th>Quantité</th>
</tr>
</thead>
<tbody>
@foreach ($dispo_item as $item)
@if ($item !== null)
<tr>
<td style="width: 12%;"><form action="/admin/inventory/add/{{$schedule->id}}/{{$periode}}/{{$niveau}}" method="post">{{ csrf_field() }}<button type="submit" name="add" class="btn btn-success" value="{{$item->id}}"><i class="fa fa-arrow-left" style="color:white;"></i></button></form></td>
<td style="width: 12%;"><form action="/admin/inventory/add/{{$schedule->id}}/{{$periode}}/{{$niveau}}" method="post">{{ csrf_field() }}<button type="submit" name="add" class="btn btn-success" value="{{$item->id}}"><i class="fa fa-arrow-left" style="color:white;"></i></button></td>
<td>{{$item->name}}</td>
<td>{{$item->desc}}</td>
<td><input type="number" class="form-control" name="qt" id="qt" min="1" max="{{$item->quantity}}" value="{{$item->quantity}}"></div></form></td>
</tr>
@endif
@endforeach

View File

@@ -18,6 +18,15 @@
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="form-group">
<label for="qt">Quantité</label>
<input type="number" class="form-control" name="qt" id="qt" aria-describedby="qthelp" placeholder="" required>
<small id="qthelp" class="form-text text-muted">Quantité disponible</small>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="form-group">

View File

@@ -18,6 +18,15 @@
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="form-group">
<label for="qt">Quantité</label>
<input type="number" class="form-control" name="qt" id="qt" aria-describedby="qthelp" placeholder="" required value="{{$item->quantity}}">
<small id="qthelp" class="form-text text-muted">Quantité disponible</small>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="form-group">

View File

@@ -1,6 +1,73 @@
@extends('layouts.admin.main')
@section('content')
<!--/* ALPHA 3.0.5 */-->
<div class="card-header">
<strong class="card-title"><i class="fa fa-star" aria-hidden="true" style="color: gold"></i> ALPHA 3.0.5<small><span class="badge badge-success float-right mt-1">STABLE</span> <span class="badge badge-warning float-right mt-1">ALPHA</span></small></strong>
</div>
<div class="card-body">
<p>
Front-End
<ul style="margin-left: 28px;list-style-type: none;">
<li><i class="fa fa-plus" aria-hidden="true" style="color: green;width:1.2rem;"></i> Ajout d'un quantité d'item dans l'inventaire.</li>
<li><i class="fa fa-exclamation" aria-hidden="true" style="color: orange;width:1.2rem;"></i> Modification de l'interface de la gestion d'inventaire pour accomoder l'ajout de quantité.</li>
<li><i class="fa fa-plus" aria-hidden="true" style="color: green;width:1.2rem;"></i> Ajout d'un indicateur de status sur la page de connexion..</li>
<li><i class="fa fa-exclamation" aria-hidden="true" style="color: orange;width:1.2rem;"></i> Le rapport de bug est maintenant publique.</li>
<li><i class="fa fa-plus" aria-hidden="true" style="color: green;width:1.2rem;"></i> Ajout du dashboard administrateur.</li>
<li><i class="fa fa-plus" aria-hidden="true" style="color: green;width:1.2rem;"></i> Ajout d'option de configuration générale.'</li>
</ul>
</p>
<hr>
<p>
Back End & API
<ul style="margin-left: 28px;list-style-type: none;">
<li><i class="fa fa-plug" aria-hidden="true" style="color: #0174DF;width:1.2rem;"></i> Modification du model de réservation pour accomoder l'ajout de quantité.</li>
<li><i class="fa fa-plug" aria-hidden="true" style="color: #0174DF;width:1.2rem;"></i> Ajout d'une quantité d'item a l'inventaire.</li>
<li><i class="fa fa-plug" aria-hidden="true" style="color: #0174DF;width:1.2rem;"></i> Ajout d'un « Helper » pour connaitre le status des services.</li>
<li><i class="fa fa-plug" aria-hidden="true" style="color: #0174DF;width:1.2rem;"></i> Ajout d'une section « Alerte » dans le modele de page Admin.</li>
</ul>
</p>
<hr>
<p>
Correction de bug
<ul style="margin-left: 28px;list-style-type: none;">
<li><i class="fa fa-bug" aria-hidden="true" style="color: green;width:1.2rem;"></i> Correction de <a href="https://gitlab.com/TheGamecraft/c-cms/issues/22"> - Bug avec les heures quand il s'agit d'une activité "Autre" - #22</a></li>
<li><i class="fa fa-bug" aria-hidden="true" style="color: green;width:1.2rem;"></i> Correction de <a href="https://gitlab.com/TheGamecraft/c-cms/issues/21"> - Bug ECC" - #21</a></li>
<li><i class="fa fa-bug" aria-hidden="true" style="color: green;width:1.2rem;"></i> Correction de multiple bug</li>
</ul>
</p>
<small><span class="badge badge-primary float-right mt-1">2018-09-21 18:30</span></small>
</div>
<!--/* ALPHA 3.0.4 */-->
<div class="card-header">
<strong class="card-title"><i class="fa fa-star" aria-hidden="true" style="color: gold"></i> ALPHA 3.0.4<small><span class="badge badge-success float-right mt-1">STABLE</span> <span class="badge badge-warning float-right mt-1">ALPHA</span></small></strong>
</div>
<div class="card-body">
<p class="card-text">
Nouveauté
<ul style="margin-left: 28px;list-style-type: none;">
<li><i class="fa fa-plus" aria-hidden="true" style="color: green"></i> Création de l'espace cadet cadre.</li>
<li><i class="fa fa-plus" aria-hidden="true" style="color: green"></i> Ajout de nouveau type d'icones.</li>
</ul>
</p>
<hr>
<p>
Back End & API
<ul style="margin-left: 28px;list-style-type: none;">
<li><i class="fa fa-plug" aria-hidden="true" style="color: #0174DF"></i> Ajout de CSS spécifique au calendrier</li>
<li><i class="fa fa-plug" aria-hidden="true" style="color: #0174DF"></i> Ajout d'un controller pour l'ECC</li>
</ul>
</p>
<hr>
<p>
Correction de bug
<ul style="margin-left: 28px;list-style-type: none;">
<li><i class="fa fa-bug" aria-hidden="true" style="color: green"></i> Correction de multiple bug</li>
</ul>
</p>
<small><span class="badge badge-primary float-right mt-1">2018-09-14 18:30</span></small>
</div>
<!--/* ALPHA 3.0.3 */-->
<div class="card-header">

View File

@@ -9,6 +9,7 @@
<table class="table" id="book">
<thead>
<tr>
<th>Quantité</th>
<th>Nom</th>
<th>Description</th>
<th></th>
@@ -17,9 +18,10 @@
<tbody>
@foreach ($items as $item)
<tr>
<td>{{$item->quantity}}</td>
<td scope="row">{{$item->name}}</td>
<td>{{$item->desc}}</td>
<td style="width:12%"><form action="/ecc/inventory/remove/{{$schedule->id}}/{{$periode}}/{{$niveau}}" method="post">{{ csrf_field() }}<button type="submit" name="remove" class="btn btn-danger" value="{{$item->id}}"><i class="fa fa-arrow-right"></i></button></form></td>
<td style="width:12%"><form action="/ecc/inventory/remove/{{$schedule->id}}/{{$periode}}/{{$niveau}}" method="post">{{ csrf_field() }}<button type="submit" name="remove" class="btn btn-danger" value="{{$item->id}}:{{$item->quantity}}"><i class="fa fa-arrow-right"></i></button></form></td>
</tr>
@endforeach
</tbody>
@@ -36,15 +38,16 @@
<th></th>
<th>Nom</th>
<th>Description</th>
<th>Quantité</th>
</tr>
</thead>
<tbody>
@foreach ($dispo_item as $item)
<tr>
<td style="width:12%"><form action="/ecc/inventory/add/{{$schedule->id}}/{{$periode}}/{{$niveau}}" method="post">{{ csrf_field() }}<button type="submit" name="add" class="btn btn-success" value="{{$item->id}}"><i class="fa fa-arrow-left"></i></button></form></td>
<td style="width:12%"><form action="/ecc/inventory/add/{{$schedule->id}}/{{$periode}}/{{$niveau}}" method="post">{{ csrf_field() }}<button type="submit" name="add" class="btn btn-success" value="{{$item->id}}"><i class="fa fa-arrow-left"></i></button></td>
<td scope="row">{{$item->name}}</td>
<td>{{$item->desc}}</td>
<td><input type="number" class="form-control" name="qt" id="qt" min="1" max="{{$item->quantity}}" value="{{$item->quantity}}"></form><td>
</tr>
@endforeach
</tbody>

View File

@@ -29,7 +29,7 @@
@if ($classe['material'] != "")
- Vous avez réservé
@foreach (\App\Item::explodeItems($classe['material']) as $item)
@if (\App\Item::explodeItems($classe['material'])->last() == $item)
@if (\App\Item::explodeItems($classe['material'])->last() == $item && \App\Item::explodeItems($classe['material'])->first() != $item)
et
@endif
{{$item->name}}
@@ -46,7 +46,7 @@
@if ($classe['material'] != "")
- Vous avez réservé
@foreach (\App\Item::explodeItems($classe['material']) as $item)
@if (\App\Item::explodeItems($classe['material'])->last() == $item)
@if (\App\Item::explodeItems($classe['material'])->last() == $item && \App\Item::explodeItems($classe['material'])->first() != $item)
et
@endif
{{$item->name}}

View File

@@ -2,6 +2,43 @@
@section('content')
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="container">
<h5><i class="fa fa-star" aria-hidden="true" style="color:gold"></i> Mise a jour 3.0.5</h5>
<p>
Front-End
<ul style="margin-left: 28px;list-style-type: none;">
<li><i class="fa fa-plus" aria-hidden="true" style="color: green;width:1.2rem;"></i> Ajout d'un quantité d'item dans l'inventaire.</li>
<li><i class="fa fa-exclamation" aria-hidden="true" style="color: orange;width:1.2rem;"></i> Modification de l'interface de la gestion d'inventaire pour accomoder l'ajout de quantité.</li>
<li><i class="fa fa-plus" aria-hidden="true" style="color: green;width:1.2rem;"></i> Ajout d'un indicateur de status sur la page de connexion..</li>
<li><i class="fa fa-exclamation" aria-hidden="true" style="color: orange;width:1.2rem;"></i> Le rapport de bug est maintenant publique.</li>
<li><i class="fa fa-plus" aria-hidden="true" style="color: green;width:1.2rem;"></i> Ajout du dashboard administrateur.</li>
<li><i class="fa fa-plus" aria-hidden="true" style="color: green;width:1.2rem;"></i> Ajout d'option de configuration générale.'</li>
</ul>
</p>
<hr>
<p>
Back End & API
<ul style="margin-left: 28px;list-style-type: none;">
<li><i class="fa fa-plug" aria-hidden="true" style="color: #0174DF;width:1.2rem;"></i> Modification du model de réservation pour accomoder l'ajout de quantité.</li>
<li><i class="fa fa-plug" aria-hidden="true" style="color: #0174DF;width:1.2rem;"></i> Ajout d'une quantité d'item a l'inventaire.</li>
<li><i class="fa fa-plug" aria-hidden="true" style="color: #0174DF;width:1.2rem;"></i> Ajout d'un « Helper » pour connaitre le status des services.</li>
<li><i class="fa fa-plug" aria-hidden="true" style="color: #0174DF;width:1.2rem;"></i> Ajout d'une section « Alerte » dans le modele de page Admin.</li>
</ul>
</p>
<hr>
<p>
Correction de bug
<ul style="margin-left: 28px;list-style-type: none;">
<li><i class="fa fa-bug" aria-hidden="true" style="color: green;width:1.2rem;"></i> Correction de <a href="https://gitlab.com/TheGamecraft/c-cms/issues/22"> - Bug avec les heures quand il s'agit d'une activité "Autre" - #22</a></li>
<li><i class="fa fa-bug" aria-hidden="true" style="color: green;width:1.2rem;"></i> Correction de <a href="https://gitlab.com/TheGamecraft/c-cms/issues/21"> - Bug ECC" - #21</a></li>
<li><i class="fa fa-bug" aria-hidden="true" style="color: green;width:1.2rem;"></i> Correction de multiple bug</li>
</ul>
</p>
</div>
</div>
</div>
<div class="col-md-12">
<div class="card">
<div class="container">

View File

@@ -0,0 +1,23 @@
<div class="row">
<div class="col-md-12">
@php
$configs = \App\Config::all();
@endphp
@if ($configs->where('name','is_schedule_public')->first()->state == 0)
@if (\Auth::User()->getPerm('schedule_edit'))
<div class="alert alert-danger" role="alert">
Attention ! L'horaire n'est présentement pas visible par le publique ! <a href="/admin/config#schedule_public">Cliquer ici pour accéder aux options</a>
</div>
@endif
@endif
@if ($configs->where('name','is_schedule_build')->first()->state == 0)
@if (\Auth::User()->getPerm('schedule_edit'))
<div class="alert alert-primary" role="alert">
Attention ! L'horaire n'est pas marqué comme complet, les utilisateurs ne receverons pas de notification concernant l'horaire <a href="/admin/config#schedule_build">Cliquer ici pour accéder aux options</a>
</div>
@endif
@endif
</div>
</div>

View File

@@ -55,8 +55,8 @@ foreach (Auth::user()->unreadNotifications as $notification) {
</a>
<div class="user-menu dropdown-menu">
<a class="nav-link" href="/admin/profil"><i class="fa fa-user"></i> {{ trans('admin/header.profil')}}</a>
<a class="nav-link" href="/admin/settings"><i class="fa fa-cog"></i> {{ trans('admin/header.settings')}}</a>
<!--<a class="nav-link" href="/admin/profil"><i class="fa fa-user"></i> {{ trans('admin/header.profil')}}</a>
<a class="nav-link" href="/admin/settings"><i class="fa fa-cog"></i> {{ trans('admin/header.settings')}}</a>-->
<a class="nav-link" href="/logout"><i class="fa fa-power-off"></i> {{ trans('admin/header.logout')}}</a>
</div>
</div>

View File

@@ -30,6 +30,8 @@ use App\Notifications\Alert;
<!-- Yield Content -->
@include('layouts.admin.alert')
@yield('content')
</div>

View File

@@ -71,7 +71,7 @@
<ul class="sub-menu children dropdown-menu">
<li><i class="menu-icon fa fa-plus"></i><a href="/admin/user/add">Ajouter un utilisateur</a></li>
<li><i class="menu-icon fa fa-list"></i><a href="/admin/user">Liste des utilisateurs</a></li>
<li><i class="menu-icon fa fa-user-secret"></i><a href="/admin/log">Activitées des utilisateurs</a></li>
<!--<li><i class="menu-icon fa fa-user-secret"></i><a href="/admin/log">Activitées des utilisateurs</a></li>-->
</ul>
</li>
@@ -79,9 +79,9 @@
<a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="menu-icon fa fa-cogs"></i>Configuration</a>
<ul class="sub-menu children dropdown-menu">
<li><i class="menu-icon fa fa-cog"></i><a href="/admin/config">Général</a></li>
<li><i class="menu-icon fa fa-building"></i><a href="/admin/config/local">Locaux</a></li>
<!--<li><i class="menu-icon fa fa-building"></i><a href="/admin/config/local">Locaux</a></li>
<li><i class="menu-icon fa fa-briefcase"></i><a href="/admin/config/job">Poste</a></li>
<!--<li><i class="menu-icon fa fa-address-card"></i><a href="/admin/config/rank">Grade</a></li>-->
<li><i class="menu-icon fa fa-address-card"></i><a href="/admin/config/rank">Grade</a></li>-->
</ul>
</li>
<h3 class="menu-title">{{ trans('admin/sidebar.tools_title') }}</h3>

View File

@@ -16,17 +16,38 @@
<!-- Fonts -->
<link rel="dns-prefetch" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css?family=Raleway:300,400,600" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
<!-- Styles -->
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
<style>
.fa-beat {
margin-left:10px;
animation:fa-beat 2s ease infinite;
}
@keyframes fa-beat {
25% {
transform:scale(1);
}
50% {
transform:scale(1.4);
}
}
</style>
</head>
<body style="background-color: #343a40 !important">
<div id="app">
<nav class="navbar navbar-expand-md navbar-light navbar-laravel">
<nav class="navbar navbar-expand-md navbar-light navbar-laravel" style="background-color:rgb(39, 44, 51)">
<div class="container">
<a class="navbar-brand" href="{{ url('/') }}">
<a class="navbar-brand" href="{{ url('/') }}" style="color:white">
{{ config('squadron.fullname') }}
</a>
<div class="float-right" style="color: white;"><a href="https://status.c-cms.cf/" style="color:white">Status
@if (getStatus())
<i class="fas fa-circle fa-beat" style="color: red;"></i></a></div>
@else
<i class="fas fa-circle" style="color: green;"></i></a></div>
@endif
</div>
</nav>

View File

@@ -32,6 +32,9 @@ Route::middleware('auth:api')->group(function () {
/** Inventory Route */
Route::post('/item/delete', 'ItemController@destroy');
/** Config Route */
Route::post('/config/general/save', 'ConfigController@update');
Route::get('/user/perm/{id}', function($id) {
$user = \App\User::find($id);
return $user->getPerm("schedule_edit");

View File

@@ -55,6 +55,8 @@ Route::middleware(['auth','admin'])->group(function () {
Route::get('/admin/config/job/add' , 'JobController@create');
Route::post('/admin/config/job/add' , 'JobController@store');
Route::get('/admin/config/job/edit/{id}' , 'JobController@edit');
Route::get('/admin/config' , 'ConfigController@index');
/** Inventory */
Route::get('/admin/inventory' , 'InventoryController@index');
@@ -92,8 +94,8 @@ Route::middleware(['auth','staff'])->group(function () {
});
/* Other Route */
Route::get('/test', function () {
return view('welcome');
dd(getStatus());
});

View File

@@ -18,6 +18,7 @@ return array(
'App\\Http\\Controllers\\CalendarController' => $baseDir . '/app/Http/Controllers/CalendarController.php',
'App\\Http\\Controllers\\ConfigController' => $baseDir . '/app/Http/Controllers/ConfigController.php',
'App\\Http\\Controllers\\Controller' => $baseDir . '/app/Http/Controllers/Controller.php',
'App\\Http\\Controllers\\ECCController' => $baseDir . '/app/Http/Controllers/ECCController.php',
'App\\Http\\Controllers\\InventoryController' => $baseDir . '/app/Http/Controllers/InventoryController.php',
'App\\Http\\Controllers\\ItemController' => $baseDir . '/app/Http/Controllers/ItemController.php',
'App\\Http\\Controllers\\JobController' => $baseDir . '/app/Http/Controllers/JobController.php',

View File

@@ -26,4 +26,5 @@ return array(
'0b0974a5566a1077e4f2e111341112c1' => $vendorDir . '/zendframework/zend-diactoros/src/functions/normalize_server.php',
'1ca3bc274755662169f9629d5412a1da' => $vendorDir . '/zendframework/zend-diactoros/src/functions/normalize_uploaded_files.php',
'40360c0b9b437e69bcbb7f1349ce029e' => $vendorDir . '/zendframework/zend-diactoros/src/functions/parse_cookie_header.php',
'6d394c3a532652dafb4dd296ba6a3f0b' => $baseDir . '/app/Http/helpers.php',
);

View File

@@ -27,6 +27,7 @@ class ComposerStaticInit7aa8410dad307922e6e62bcfdfadda15
'0b0974a5566a1077e4f2e111341112c1' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/functions/normalize_server.php',
'1ca3bc274755662169f9629d5412a1da' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/functions/normalize_uploaded_files.php',
'40360c0b9b437e69bcbb7f1349ce029e' => __DIR__ . '/..' . '/zendframework/zend-diactoros/src/functions/parse_cookie_header.php',
'6d394c3a532652dafb4dd296ba6a3f0b' => __DIR__ . '/../..' . '/app/Http/helpers.php',
);
public static $prefixLengthsPsr4 = array (
@@ -401,6 +402,7 @@ class ComposerStaticInit7aa8410dad307922e6e62bcfdfadda15
'App\\Http\\Controllers\\CalendarController' => __DIR__ . '/../..' . '/app/Http/Controllers/CalendarController.php',
'App\\Http\\Controllers\\ConfigController' => __DIR__ . '/../..' . '/app/Http/Controllers/ConfigController.php',
'App\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/app/Http/Controllers/Controller.php',
'App\\Http\\Controllers\\ECCController' => __DIR__ . '/../..' . '/app/Http/Controllers/ECCController.php',
'App\\Http\\Controllers\\InventoryController' => __DIR__ . '/../..' . '/app/Http/Controllers/InventoryController.php',
'App\\Http\\Controllers\\ItemController' => __DIR__ . '/../..' . '/app/Http/Controllers/ItemController.php',
'App\\Http\\Controllers\\JobController' => __DIR__ . '/../..' . '/app/Http/Controllers/JobController.php',