Add ItemCategory form

This commit is contained in:
Mathieu Lagace
2019-08-28 12:57:51 -04:00
parent caf44ba58a
commit d01bf2fca7
12 changed files with 437 additions and 64 deletions

View File

@@ -30,6 +30,11 @@ class InventoryController extends Controller
//
}
public function management()
{
return view('admin.inventory.management');
}
public function booking()
{
$items = Item::all();

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers;
use App\Item;
use App\ItemCategory;
use Illuminate\Http\Request;
@@ -14,7 +15,7 @@ class ItemCategoryController extends Controller
*/
public function index()
{
//
return view('admin.itemcategory.index',['categories' => ItemCategory::all()]);
}
/**
@@ -24,7 +25,7 @@ class ItemCategoryController extends Controller
*/
public function create()
{
//
return view('admin.itemcategory.add');
}
/**
@@ -33,9 +34,32 @@ class ItemCategoryController extends Controller
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
public function store()
{
//
$c = new ItemCategory();
$c->name = \request('name');
$c->desc = \request('desc');
if (\request('is_training') == 1)
{
$c->is_training = 1;
}
else
{
$c->is_training = 0;
}
if (\request('is_op_appro') == 1)
{
$c->is_op_appro = 1;
}
else
{
$c->is_op_appro = 0;
}
$c->save();
return redirect('/admin/inventory/management/category/')->with('success','Catégorie ajouté avec succès');
}
/**
@@ -55,9 +79,9 @@ class ItemCategoryController extends Controller
* @param \App\ItemCategory $itemCategory
* @return \Illuminate\Http\Response
*/
public function edit(ItemCategory $itemCategory)
public function edit($id)
{
//
return view('admin.itemcategory.edit',['category' => ItemCategory::find($id)]);
}
/**
@@ -67,9 +91,32 @@ class ItemCategoryController extends Controller
* @param \App\ItemCategory $itemCategory
* @return \Illuminate\Http\Response
*/
public function update(Request $request, ItemCategory $itemCategory)
public function update($id)
{
//
$c = ItemCategory::find($id);
$c->name = \request('name');
$c->desc = \request('desc');
if (\request('is_training') == 1)
{
$c->is_training = 1;
}
else
{
$c->is_training = 0;
}
if (\request('is_op_appro') == 1)
{
$c->is_op_appro = 1;
}
else
{
$c->is_op_appro = 0;
}
$c->save();
return redirect('/admin/inventory/management/category/')->with('success','Catégorie modifié avec succès');
}
/**
@@ -78,8 +125,10 @@ class ItemCategoryController extends Controller
* @param \App\ItemCategory $itemCategory
* @return \Illuminate\Http\Response
*/
public function destroy(ItemCategory $itemCategory)
public function destroy($id)
{
//
$c = ItemCategory::find($id);
$c->delete();
}
}

View File

@@ -31,4 +31,22 @@ class Item extends Model
{
return \App\ItemCategory::find($this->category_id);
}
public function available()
{
return $this->quantity - $this->booked();
}
public function booked()
{
$nbBooked = 0;
foreach ($this->bookings() as $b)
{
$nbBooked = $nbBooked + $b->amount;
}
return $nbBooked;
}
}

View File

@@ -8,7 +8,10 @@
</a></strong>
</div>
<div class="card-body">
<a name="add" id="add" class="btn btn-primary btn-block" href="/admin/item/add" role="button">Ajouter un item a l'inventaire</a>
<div class="btn-group btn-block">
<a name="add" id="add" class="btn btn-primary btn-block" href="/admin/item/add" role="button">Ajouter un item</a>
<a name="add" id="add" class="btn btn-outline-primary btn-block" href="/admin/item/add" role="button">Réserver un item</a>
</div>
<hr>
<table id="log-data" class="table table-striped table-bordered">
<thead>
@@ -16,6 +19,8 @@
<th>#</th>
<th>Nom</th>
<th>Categorie</th>
<th>Quantité Total</th>
<th>Quantité Disponible</th>
<th>Description</th>
<th>Action</th>
</tr>
@@ -26,6 +31,8 @@
<td>{{$item->official_number}}</td>
<td>{{$item->name}}</td>
<td>{{$item->category()->name}}</td>
<td>{{$item->quantity}}</td>
<td>{{$item->available()}}</td>
<td>{!! $item->desc !!}</td>
<td style="width: 12%;">
<div class="btn-group">

View File

@@ -0,0 +1,42 @@
@extends('layouts.admin.main')
@section('content')
<div class="col-md-12">
<div class="card">
<div class="card-header">
<strong class="card-title">Gestion de l'inventaire <a href="#"><i class="fa fa-question-circle" aria-hidden="true"></i>
</a></strong>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
<div class="card">
<div class="card-header card-header-primary">
<h4 class="card-title">Catégorie</h4>
<p class="category">Gestion des catégories de l'inventaire</p>
</div>
<div class="card-body">
<div class="row">
<div class="col-12">
<p>
Les catégories permettent de diviser l'inventaire et de définir les permissions d'accès aux items
</p>
</div>
<div class="col-12">
<div class="btn-group">
<a class="btn btn-primary" href="/admin/inventory/management/category">Gérer les catégories</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('custom_scripts')
@endsection

View File

@@ -9,52 +9,52 @@
<div class="card-body mt-5">
<form action="/admin/item/add" method="post">
@csrf
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Numéro d'article</label>
<input name="official_number" type="text" class="form-control" required>
@csrf
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Numéro d'article</label>
<input name="official_number" type="text" class="form-control" required>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Nom de l'article</label>
<input name="name" type="text" class="form-control" required>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Taille de l'article</label>
<input name="metadata-size" type="text" class="form-control" required>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Quantité disponible</label>
<input name="quantity" type="number" class="form-control" required>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Catégorie</label>
<select name="category_id" class="form-control selectpicker" required>
@foreach($categories as $category)
<option value="{{$category->id}}">{{$category->name}}</option>
@endforeach
</select>
</div>
</div>
<div class="col-lg-12 mt-4">
<label for="desc">Description de l'image</label>
<div class="form-group">
<textarea name="desc" id="desc" class="form-control" required></textarea>
</div>
</div>
<div class="col-lg-12">
<button type="submit" class="btn btn-primary">Sauvegarder</button>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Nom de l'article</label>
<input name="name" type="text" class="form-control" required>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Taille de l'article</label>
<input name="metadata-size" type="text" class="form-control" required>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Quantité disponible</label>
<input name="quantity" type="number" class="form-control" required>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Catégorie</label>
<select name="category_id" class="form-control selectpicker" required>
@foreach($categories as $category)
<option value="{{$category->id}}">{{$category->name}}</option>
@endforeach
</select>
</div>
</div>
<div class="col-lg-12 mt-4">
<label for="desc">Description de l'image</label>
<div class="form-group">
<textarea name="desc" id="desc" class="form-control" required></textarea>
</div>
</div>
<div class="col-lg-12">
<button type="submit" class="btn btn-primary">Sauvegarder</button>
</div>
</div>
</form>
</div>
</div>

View File

@@ -0,0 +1,64 @@
@extends('layouts.admin.main')
@section('content')
<div class="col-md-12">
<div class="card">
<div class="card-header">
<strong class="card-title">Ajouter une catégorie <a href="#"><i class="fa fa-question-circle" aria-hidden="true"></i>
</a></strong>
</div>
<div class="card-body">
<form action="/admin/inventory/management/category/add" method="post">
@csrf
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label>Nom de la catégorie</label>
<input name="name" type="text" class="form-control" required>
</div>
</div>
<div class="col-md-6 pt-3">
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" name="is_training" value="1">
Les items de cette catégorie sont ils disponible pour l'instruction ?
<span class="form-check-sign">
<span class="check"></span>
</span>
</label>
</div>
</div>
<div class="col-md-6 pt-3">
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" name="is_op_appro" type="checkbox" value="1">
Les items de cette catégorie sont ils réservés à l'officier d'approvisionnement?
<span class="form-check-sign">
<span class="check"></span>
</span>
</label>
</div>
</div>
<div class="col-lg-12 mt-4">
<label for="desc">Description de l'image</label>
<div class="form-group">
<textarea name="desc" id="desc" class="form-control" required></textarea>
</div>
</div>
<div class="col-lg-12">
<button type="submit" class="btn btn-primary">Sauvegarder</button>
</div>
</div>
</form>
</div>
</div>
</div>
@endsection
@section('custom_scripts')
<script>
$('#desc').trumbowyg({
lang: 'fr'
});
</script>
@endsection

View File

@@ -0,0 +1,64 @@
@extends('layouts.admin.main')
@section('content')
<div class="col-md-12">
<div class="card">
<div class="card-header">
<strong class="card-title">Modifier une catégorie <a href="#"><i class="fa fa-question-circle" aria-hidden="true"></i>
</a></strong>
</div>
<div class="card-body">
<form action="/admin/inventory/management/category/edit/{{$category->id}}" method="post">
@csrf
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label>Nom de la catégorie</label>
<input name="name" type="text" class="form-control" required value="{{$category->name}}">
</div>
</div>
<div class="col-md-6 pt-3">
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" name="is_training" value="1" @if($category->is_training == 1) checked @endif>
Les items de cette catégorie sont ils disponible pour l'instruction ?
<span class="form-check-sign">
<span class="check"></span>
</span>
</label>
</div>
</div>
<div class="col-md-6 pt-3">
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" name="is_op_appro" type="checkbox" value="1" @if($category->is_op_appro == 1) checked @endif>
Les items de cette catégorie sont ils réservés à l'officier d'approvisionnement?
<span class="form-check-sign">
<span class="check"></span>
</span>
</label>
</div>
</div>
<div class="col-lg-12 mt-4">
<label for="desc">Description de l'image</label>
<div class="form-group">
<textarea name="desc" id="desc" class="form-control" required>{!! $category->desc !!}</textarea>
</div>
</div>
<div class="col-lg-12">
<button type="submit" class="btn btn-primary">Sauvegarder</button>
</div>
</div>
</form>
</div>
</div>
</div>
@endsection
@section('custom_scripts')
<script>
$('#desc').trumbowyg({
lang: 'fr'
});
</script>
@endsection

View File

@@ -0,0 +1,113 @@
@extends('layouts.admin.main')
@section('content')
<div class="col-md-12">
<div class="card">
<div class="card-header">
<strong class="card-title">Gestion de l'inventaire <a href="#"><i class="fa fa-question-circle" aria-hidden="true"></i>
</a></strong>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-12">
<div class="btn-group">
<a class="btn btn-primary" href="/admin/inventory/management/category/add">Ajouter une catégorie</a>
</div>
</div>
<div class="col-md-12">
<table id="log-data" class="table table-striped table-bordered">
<thead>
<tr>
<th class="text-center">ID</th>
<th>Nom</th>
<th>Description</th>
<th>Disponible pour l'instruction</th>
<th>Réservé a l'officer d'approvisionnement</th>
<th>Action</th>
</tr>
</thead>
<tbody>
@foreach ($categories as $category)
<tr>
<td class="text-center" style="width: 3.5rem;">{{$category->id}}</td>
<td>{{$category->name}}</td>
<td>{!! $category->desc !!}</td>
<td class="text-center" style="width: 10rem;">
@if($category->is_training == 1)
<i class="fas fa-check-square text-success fa-2x"></i>
@else
<i class="far fa-square text-warning fa-2x"></i>
@endif
</td>
<td class="text-center" style="width: 10rem;"#>
@if($category->is_op_appro == 1)
<i class="fas fa-check-square text-success fa-2x"></i>
@else
<i class="far fa-square text-warning fa-2x"></i>
@endif
</td>
<td style="width: 12%;">
<div class="btn-group">
<a href="/admin/inventory/management/category/edit/{{$category->id}}" type="button" class="btn btn-secondary"><i class="fa fa-cog"></i>&nbsp; Modifier</a>
<a type="button" class="btn btn-danger" onclick="Delete({{$category->id}});"><i class="fa fa-times-circle" style="color:white;"></i></a>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('custom_scripts')
<script>
(function($) {
$(document).ready(function() {
$('#log-data').DataTable({
"order": [[ 2, "asc" ]],
"lengthMenu": [[25, 50, -1], [25, 50, "All"]],
});
} );
})(jQuery);
function Delete(pID) {
swal({
title: 'Êtes vous certain de vouloir supprimer la catégorie?',
text: "Vous ne pourrez pas annuler cette action",
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Oui',
cancelButtonText: 'Non'
}).then((result) => {
if (result.value) {
(function($) {
$.post('/api/itemcategory/delete/'+pID+'?api_token='+api_token, function(data) {
console.log('Delete');
});
})(jQuery);
swal(
'Supprimé!',
"La catégorie a été supprimé",
'success'
).then((result) => {
if (result.value) {
location.reload();
}
})
}
})
}
</script>
</script>
@endsection

View File

@@ -81,13 +81,13 @@
<li class="nav-item ">
<a class="nav-link" href="/admin/inventory">
<span class="sidebar-mini"> <i class="fas fa-box"></i> </span>
<span class="sidebar-normal"> Afficher l'inventaire </span>
<span class="sidebar-normal"> Voir l'inventaire </span>
</a>
</li>
<li class="nav-item ">
<a class="nav-link" href="/admin/item/add">
<span class="sidebar-mini"> <i class="fas fa-plus"></i> </span>
<span class="sidebar-normal"> Ajouter un item </span>
<a class="nav-link" href="/admin/inventory/management">
<span class="sidebar-mini"> <i class="fas fa-cogs"></i> </span>
<span class="sidebar-normal"> Gestion de l'inventaire </span>
</a>
</li>
<!--<li class="nav-item ">
@@ -100,7 +100,7 @@
</div>
</li>
<li class="nav-item ">
<a class="nav-link" data-toggle="collapse" href="#inventory">
<a class="nav-link" data-toggle="collapse" href="#picture">
<i class="material-icons">image</i>
<p> Image
<b class="caret"></b>

View File

@@ -43,6 +43,9 @@ Route::middleware('auth:api')->group(function () {
/** Inventory Route */
Route::post('/item/delete', 'ItemController@destroy');
/** Item Category */
Route::post('/itemcategory/delete/{id}','ItemCategoryController@destroy');
/** Config Route */
Route::post('/config/general/save', 'ConfigController@update');
Route::post('/config/activity/delete', 'ComplementaryActivityController@destroy');

View File

@@ -96,21 +96,29 @@ Route::middleware(['auth','admin'])->group(function () {
/** Inventory */
Route::get('/admin/inventory' , 'InventoryController@index');
Route::get('/admin/inventory/booking' , 'InventoryController@booking');
Route::get('/admin/inventory/{id}/{periode}/{niveau}' , 'InventoryController@show');
Route::post('/admin/inventory/add/{id}/{periode}/{niveau}' , 'InventoryController@store');
Route::post('/admin/inventory/remove/{id}/{periode}/{niveau}' , 'InventoryController@destroy');
Route::get('/admin/inventory/management','InventoryController@management');
/** Item Category */
Route::get('/admin/inventory/management/category','ItemCategoryController@index');
Route::get('/admin/inventory/management/category/add','ItemCategoryController@create');
Route::post('/admin/inventory/management/category/add','ItemCategoryController@store');
Route::get('/admin/inventory/management/category/edit/{id}','ItemCategoryController@edit');
Route::post('/admin/inventory/management/category/edit/{id}','ItemCategoryController@update');
/** Booking */
Route::get('/admin/booking/{type}/{id}',function() {
return 'A faire';
});
Route::get('/admin/inventory/booking' , 'InventoryController@booking');
/** Item */
Route::get('/admin/item/add' , 'ItemController@create');
Route::get('/admin/item/edit/{id}' , 'ItemController@edit');
Route::post('/admin/item/add' , 'ItemController@store');
Route::post('/admin/item/edit/{id}' , 'ItemController@update');
/** Local */
Route::get('/admin/config/local' , 'LocalController@index');