Compare commits

...

10 Commits

30 changed files with 372 additions and 144 deletions

View File

@ -1,29 +1,23 @@
# Gestionale di Famiglia
Piccolo sistema di gestione famigliare.
# Gestionale Per le associazioni
Piccolo sistema di gestione.
Al momento sono presenti:
- Gestione delle Entrate e uscite con possibilità di inserimento delle foto degli scontrini ed eventuali documenti in PDF.
- Possibilità di importare gli estratti conto da un file excel o csv.
- Un sistema di gestione delle letture dei contatori per il GAS e per l'Energia elettrica
- Un sistema di gestione delle autovetture e relative operazioni effettuate su di esse.
- Un sistema di gestione delle letture dei contatori per il GAS e per l'Energia elettrica [Da rivedere]
- Un sistema di gestione delle autovetture e relative operazioni effettuate su di esse. [Da rivedere]
- Una rubrica telefonica e degli indirizzi
- Una gestione dei progetti (ancora in sviluppo)
- Una gestione degli utenti e dei gruppi e relativi permessi.
- Una gestione dei progetti (ancora in sviluppo) [Da rivedere]
- Una gestione degli utenti e dei gruppi e relativi permessi. [Da rivedere]
*Sviluppato in php, mysql, jquery su framework Laravel*.
## Installazione
- clonare il repository
- copiare il file ```.env.example``` in ```.env```
- inserire le informazioni del database (username,password,dbname)
- lanciare ``` composer install ```
- lanciare ``` php artisan migrate --seed```
- di default si crea l'utente ``` admin ``` con password ```admin ``` per accedere la prima volta.
## Sviluppatori (attualmente)
Flavio Barachino <flavio.barachino@lavorain.cloud>
## Consulenza e richiesta
Mariano Benzi
### Vuoi partecipare?
Scrivimi con le tue proposte, le tue critiche, i tuoi suggerimenti.
Scrivici con le tue proposte, le tue critiche, i tuoi suggerimenti.
AdimGest <adimgest@lavorain.cloud>

View File

@ -0,0 +1,10 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class AssociazioneController extends Controller
{
//
}

View File

@ -0,0 +1,10 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class GruppiController extends Controller
{
//
}

View File

@ -37,10 +37,14 @@ class MovimentiController extends Controller
public static function dashboard()
{
$bilancio=Movimenti::getSaldo(date('Y'));
/*$bilancio=Movimenti::getSaldo(date('Y'));*/
$entrate=Movimenti::getEntrate(date('Y'));
$uscite=Movimenti::getUscite(date('Y'));
$saldo=Movimenti::getSaldoTot();
return view('layouts.dashboard',[
'bilancio'=>$bilancio,
'entrate'=>$entrate,
'uscite'=>$uscite,
'saldo'=>$saldo,
]);
}

View File

@ -0,0 +1,10 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class RivistaController extends Controller
{
//
}

View File

@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Associazione extends Model
{
use HasFactory;
}

11
app/Models/Gruppi.php Normal file
View File

@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Gruppi extends Model
{
use HasFactory;
}

View File

@ -20,15 +20,15 @@ class Movimenti extends Model
->groupBy('movimentis.id','mov_data','mov_descrizione','mov_importo','cat_name','tag_name')
->get();
}
public static function getSaldo($date) {
return DB::table('movimentis')->whereYear('mov_data','=',$date)->sum('mov_importo');
}
public static function getSaldoTot() {
return DB::table('movimentis')->sum('mov_importo');
}
public static function insSpesa($request) {
DB::table('movimentis')->insert(
[
@ -40,7 +40,7 @@ class Movimenti extends Model
'mov_inserito_da'=>$request['userid'],
]);
}
public static function insEntrata($request) {
DB::table('movimentis')->insert(
[
@ -52,7 +52,7 @@ class Movimenti extends Model
'mov_inserito_da'=>$request['userid'],
]);
}
public static function export() {
return DB::table('movimentis')
->join('categories','movimentis.mov_fk_categoria','=','categories.id')
@ -61,7 +61,7 @@ class Movimenti extends Model
->orderBy('Data','asc')
->get();
}
public static function reportSpesa($year,$month) {
return DB::table('movimentis')
->selectRaw('ABS(Sum(movimentis.mov_importo)) as resoconto, categories.cat_name,categories.id')
@ -72,7 +72,7 @@ class Movimenti extends Model
->groupBy('cat_name','categories.id')
->get();
}
public static function reportEntrate($year,$month) {
return DB::table('movimentis')
->selectRaw('ABS(Sum(movimentis.mov_importo)) as resoconto, categories.cat_name,categories.id')
@ -83,7 +83,7 @@ class Movimenti extends Model
->groupBy('cat_name','categories.id')
->get();
}
public static function getMovimentoById($id) {
return DB::table('movimentis')
->join('categories','movimentis.mov_fk_categoria','=','categories.id')
@ -91,7 +91,7 @@ class Movimenti extends Model
->where('movimentis.id','=',$id)
->get();
}
public static function updateMovimenti($request) {
DB::table('movimentis')
->where('id','=', $request['id'])
@ -104,13 +104,13 @@ class Movimenti extends Model
'mov_inserito_da'=>$request['userid'],
]);
}
public static function deleteMovimento($id) {
DB::table('movimentis')
->where('id','=', $id)
->delete();
}
public static function listByCatMonth($month,$cat,$year) {
return DB::table('movimentis')
->join('categories','movimentis.mov_fk_categoria','=','categories.id')
@ -123,7 +123,7 @@ class Movimenti extends Model
->groupBy('movimentis.id','mov_data','mov_descrizione','mov_importo','cat_name','tag_name')
->get();
}
public static function listByCategory($cat) {
return DB::table('movimentis')
->join('categories','movimentis.mov_fk_categoria','=','categories.id')
@ -134,7 +134,7 @@ class Movimenti extends Model
->groupBy('movimentis.id','mov_data','mov_descrizione','mov_importo','cat_name','tag_name')
->get();
}
public static function getByTag($tag) {
return DB::table('movimentis')
->where('mov_fk_tags','=',$tag)
@ -151,7 +151,7 @@ class Movimenti extends Model
$inputPath='/var/www/html/bubofamily/public/storage/'.$filename;
$outputPath='/var/www/html/bubofamily/public/'.$filename;
rename($inputPath,$outputPath);
$collection = (new FastExcel)->import($filename, function ($line){
if($line['Data valuta'])
{
@ -166,13 +166,13 @@ class Movimenti extends Model
}
});
}
public static function importEstrattoCR($filename)
{
$inputPath='/var/www/html/bubofamily/public/storage/'.$filename;
$outputPath='/var/www/html/bubofamily/public/'.$filename.'.csv';
rename($inputPath,$outputPath);
$collection = (new FastExcel)->configureCsv(';')->import($filename.'.csv', function ($line){
if($line['VALUTA'])
{
@ -202,18 +202,18 @@ class Movimenti extends Model
}
});
}
public static function getYearsFromMovimenti()
{
$anni=DB::table('movimentis')->select(DB::raw('DISTINCT YEAR(mov_data) as anno'))->get();
// dd($anni); // for test purposes
return $anni;
}
private static function dateFormat($type,$string)
{
if($type)
{
$string=$string->format('Y-m-d');
@ -226,4 +226,24 @@ class Movimenti extends Model
}
}
public static function getEntrate($year)
{
$entrate_anno=DB::table('movimentis')
->where('mov_importo','>',0)
->whereYear('mov_data', '=' , $year)
->sum('mov_importo');
//->get();
return $entrate_anno;
}
public static function getUscite($year)
{
$uscite_anno=DB::table('movimentis')
->where('mov_importo','<',0)
->whereYear('mov_data', '=' , $year)
->sum('mov_importo');
//->get();
return ($uscite_anno);
}
}

11
app/Models/Rivista.php Normal file
View File

@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Rivista extends Model
{
use HasFactory;
}

18
composer.lock generated
View File

@ -501,28 +501,28 @@
},
{
"name": "doctrine/inflector",
"version": "2.0.6",
"version": "2.0.8",
"source": {
"type": "git",
"url": "https://github.com/doctrine/inflector.git",
"reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024"
"reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/inflector/zipball/d9d313a36c872fd6ee06d9a6cbcf713eaa40f024",
"reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024",
"url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff",
"reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
},
"require-dev": {
"doctrine/coding-standard": "^10",
"doctrine/coding-standard": "^11.0",
"phpstan/phpstan": "^1.8",
"phpstan/phpstan-phpunit": "^1.1",
"phpstan/phpstan-strict-rules": "^1.3",
"phpunit/phpunit": "^8.5 || ^9.5",
"vimeo/psalm": "^4.25"
"vimeo/psalm": "^4.25 || ^5.4"
},
"type": "library",
"autoload": {
@ -572,7 +572,7 @@
],
"support": {
"issues": "https://github.com/doctrine/inflector/issues",
"source": "https://github.com/doctrine/inflector/tree/2.0.6"
"source": "https://github.com/doctrine/inflector/tree/2.0.8"
},
"funding": [
{
@ -588,7 +588,7 @@
"type": "tidelift"
}
],
"time": "2022-10-20T09:10:12+00:00"
"time": "2023-06-16T13:40:37+00:00"
},
{
"name": "doctrine/lexer",
@ -10285,5 +10285,5 @@
"php": "^7.3|^8.0"
},
"platform-dev": [],
"plugin-api-version": "2.2.0"
"plugin-api-version": "2.3.0"
}

View File

@ -13,14 +13,14 @@ class ColumnsAnagrafica extends Migration
*/
public function up()
{
Schema::table('anagraficas', function (Blueprint $table) {
//
$table->longText('ang_indirizzo');
/*Schema::table('anagraficas', function (Blueprint $table) {
/* //
// $table->longText('ang_indirizzo');
$table->string('ang_CAP');
$table->string('ang_Citta');
$table->string('ang_Provincia');
$table->string('ang_telefono');
});
});*/
}
/**

View File

@ -0,0 +1,31 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateRivistasTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('rivistas', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('rivistas');
}
}

View File

@ -0,0 +1,31 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateAssociazionesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('associaziones', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('associaziones');
}
}

View File

@ -0,0 +1,31 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateGruppisTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('gruppis', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('gruppis');
}
}

13
public/js/app/auto.js vendored
View File

@ -1,12 +1,13 @@
$(document).ready(function() {
$('#automobili').DataTable({
responsive: true,
fields: [
{
label:"Data",
type: "datetime"
}
]
columnDefs: [
{
target: 0,
render: DataTable.render.date(),
}
],
"order": [[0, "desc"]]
});
});

View File

@ -1,22 +1,12 @@
$(document).ready(function() {
$('#listrapportoS').DataTable({
responsive: true,
fields: [
{
label:"Data",
type: "datetime"
}
]
"responsive": true,
"order": [[0, "asc"]]
});
$('#listrapportoE').DataTable({
responsive: true,
fields: [
{
label:"Data",
type: "datetime"
}
]
"responsive": true,
"order": [[0, "asc"]]
});
$('#categorie').DataTable({

15
public/js/app/enel.js vendored
View File

@ -1,11 +1,12 @@
$(document).ready(function() {
$('#listaLettureEnel').DataTable({
responsive: true,
fields: [
{
label:"Data lettura",
type: "datetime"
}
]
"responsive": true,
columnDefs: [
{
target: 0,
render: DataTable.render.date(),
}
],
"order": [[0, "desc"]]
});
});

15
public/js/app/gas.js vendored
View File

@ -1,11 +1,12 @@
$(document).ready(function() {
$('#listaLettureGas').DataTable({
responsive: true,
fields: [
{
label:"Data lettura",
type: "datetime"
}
]
"responsive": true,
columnDefs: [
{
target: 0,
render: DataTable.render.date(),
}
],
"order": [[0, "desc"]]
});
});

View File

@ -1,12 +1,12 @@
$(document).ready(function() {
$('#listamovimenti').DataTable({
"responsive": true,
fields: [
{
label:"Data",
type: "datetime"
}
],
columnDefs: [
{
target: 0,
render: DataTable.render.date(),
}
],
"order": [[0, "desc"]]
});
});

View File

@ -1,13 +1,14 @@
$(document).ready(function() {
$('#tab_progetti').DataTable({
responsive: true,
fields: [
{
label:"Data",
type: "datetime"
}
]
"responsive": true,
columnDefs: [
{
target: 1,
render: DataTable.render.date(),
}
],
"order": [[1, "desc"]]
});
});

View File

@ -1,12 +1,13 @@
$(document).ready(function() {
$('#tab_progetti').DataTable({
responsive: true,
fields: [
{
label:"Data",
type: "datetime"
}
]
"responsive": true,
columnDefs: [
{
target: 0,
render: DataTable.render.date(),
}
],
"order": [[0, "desc"]]
});
});
$('#form').click(function() {

0
public/js/momentjs.js vendored Normal file
View File

View File

@ -7,7 +7,7 @@
<meta name="description" content="">
<meta name="author" content="">
<title>BuBo Family - made with <3 - </title>
<title>{{env('APP_NAME')}}</title>
<!-- Bootstrap Core CSS -->
<link href="/css/bootstrap.min.css" rel="stylesheet">
@ -20,22 +20,9 @@
<!-- Custom Fonts -->
<link href="/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<!-- Latest compiled and minified CSS
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.14/dist/css/bootstrap-select.min.css">
-->
<!-- Latest compiled and minified JavaScript
<script src="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.14/dist/js/bootstrap-select.min.js"></script>-->
<!-- (Optional) Latest compiled and minified JavaScript translation files
<script src="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.14/dist/js/i18n/defaults-*.min.js"></script>-->
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<!-- Datatables with datetime and locales -->
<link href="https://cdn.datatables.net/v/dt/dt-1.13.4/date-1.4.1/r-2.4.1/sb-1.4.2/sp-2.1.2/datatables.min.css" rel="stylesheet"/>
@section('head_additional')
@show
</head>
@ -71,7 +58,7 @@
<div class="sidebar-nav navbar-collapse">
<ul class="nav" id="side-menu">
<li class="sidebar-search">
<!-- input group
<!-- input group
<!--<div class="input-group custom-search-form">
<input type="text" class="form-control" placeholder="Search...">
<span class="input-group-btn">
@ -83,7 +70,7 @@
<!-- /input-group -->
</li>
<!-- MENU -->
@include('components.menu')
@include('components.menu')
<!-- / Menu -->
</ul>
</div>
@ -98,7 +85,7 @@
@section('content')
Contenuto
@show
</div>
<!-- /.container-fluid -->
</div>
@ -115,12 +102,14 @@
<!-- Metis Menu Plugin JavaScript -->
<script src="/js/metisMenu.min.js"></script>
<!-- DataTables JavaScript -->
<!-- DataTables JavaScript
<script src="/js/dataTables/jquery.dataTables.min.js"></script>
<script src="/js/dataTables/dataTables.bootstrap.min.js"></script>
<script src="/js/dataTables/dataTables.bootstrap.min.js"></script>-->
<!-- Custom Theme JavaScript -->
<script src="https://cdn.datatables.net/v/dt/dt-1.13.4/date-1.4.1/r-2.4.1/sb-1.4.2/sp-2.1.2/datatables.min.js"></script>
<script src="/js/momentjs.js"></script>
<script src="/js/startmin.js"></script>
@section('script')
@show

View File

@ -49,7 +49,10 @@
@endcan @can('progetti')
<li><a href="{{ route('progetti'); }}"><i class="fa fa-list fa-fw"></i>
Progetti <span class="fa arrow"></span></a></li>
@endcan @can('amministrazione')
@endcan
@can('amministrazione')
<li><a href="#"><i class="fa fa-gears fa-fw"></i>Amministrazione<span
class="fa arrow"></span></a>
<ul class="nav nav-second-level">
@ -59,8 +62,8 @@
<li><a class="active" href="/admin/users/newPermission">Permessi</a></li>
-->
<li><a class="active" href="/admin/users/givepermission">Assegna Permessi</a></li>
<!--
<li><a href="/login">Login Page</a></li>
<!--
<li><a href="/login">Login Page</a></li>
-->
</ul> <!-- /.nav-second-level --></li>
@endcan

View File

@ -31,8 +31,9 @@
<tbody>
@foreach( $movimenti as $movimento )
<tr>
<td>{{ date_format(date_create($movimento->mov_data),'d/m/Y'); }}</td>
<td>{{ $movimento->cat_name; }}</td>
<!-- <td>{{ date_format(date_create($movimento->mov_data),'d/m/Y'); }}</td>-->
<td>{{$movimento->mov_data}}</td>
<td>{{ $movimento->cat_name; }}</td>
<td>{{ $movimento->mov_descrizione; }}</td>
<td>&euro; {{ $movimento->mov_importo; }}</td>
<td>

View File

@ -9,15 +9,15 @@
@hasanyrole('user|admin')
<!-- WIDGET Bilancio -->
<div class="col-lg-4 col-md-8">
<div class="panel panel-primary">
<div class="panel panel-success">
<div class="panel-heading">
<div class="row">
<div class="col-xs-3">
<i class="fa fa-balance-scale fa-5x"></i>
<i class="fa fa-plus-square fa-5x"></i>
</div>
<div class="col-xs-9 text-right">
<div class="huge">{{ $bilancio }}</div>
<div>Bilancio attuale anno {{ date('Y') }}</div>
<div class="huge">{{ $entrate }}</div>
<div>Entrate attuale anno {{ date('Y') }}</div>
</div>
</div>
</div>
@ -30,9 +30,55 @@
</a>
</div>
</div>
<!-- WIDGET Bilancio -->
<div class="col-lg-4 col-md-8">
<div class="panel panel-danger">
<div class="panel-heading">
<div class="row">
<div class="col-xs-3">
<i class="fa fa-minus-square fa-5x"></i>
</div>
<div class="col-xs-9 text-right">
<div class="huge">{{ $uscite }}</div>
<div>Uscite attuale anno {{ date('Y') }}</div>
</div>
</div>
</div>
<a href="{{ route('budget');}}">
<div class="panel-footer">
<span class="pull-left">Report annuo</span>
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
<div class="clearfix"></div>
</div>
</a>
</div>
</div>
<!-- WIDGET -->
<div class="col-lg-4 col-md-8">
<div class="panel panel-green">
<div class="panel panel-primary">
<div class="panel-heading">
<div class="row">
<div class="col-xs-3">
<i class="fa fa-balance-scale fa-5x"></i>
</div>
<div class="col-xs-9 text-right">
<div class="huge">{{ $entrate + $uscite }}</div>
<div>Saldo attuale nell'anno</div>
</div>
</div>
</div>
<a href="{{ route('budget'); }}">
<div class="panel-footer">
<span class="pull-left">Report annuo</span>
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
<div class="clearfix"></div>
</div>
</a>
</div>
</div>
<div class="col-lg-4 col-md-8">
<div class="panel panel-yellow">
<div class="panel-heading">
<div class="row">
<div class="col-xs-3">
@ -52,11 +98,11 @@
</div>
</a>
</div>
</div>
</div>
@endhasanyrole
</div>
@endsection
@section('script')
<script src="/js/app/dashboard.js"></script>
@endsection
@endsection

View File

@ -62,7 +62,7 @@
<tbody>
@foreach($lettureEnel as $lettura)
<tr>
<td>{{ date_format(date_create($lettura->enel_date),'d/m/Y'); }}</td>
<td>{{ $lettura->enel_date }}</td>
<td>{{ $lettura->enel_A; }}</td>
<td>{{ $lettura->enel_R; }}</td>
<td>{{ $lettura->enel_F1; }}</td>

View File

@ -71,7 +71,7 @@
}
@endphp
<tr>
<td>{{ date_format(date_create($lettura->gas_date),'d/m/Y'); }}</td>
<td>{{ $lettura->gas_date }}</td>
<td>{{ $lettura->gas_lettura; }}</td>
@if(!is_null($dateprec))
<td>{{ $diffdate ?? '' }}</td>

View File

@ -38,7 +38,7 @@
<tr>
<td><a href="progetti/detail/{{ $progetto->progetto }}">{{
$progetto->nome; }}</a></td>
<td>{{ date_format(date_create($progetto->data_creazione),'d/m/Y'); }}</td>
<td>{{ $progetto->data_creazione}}</td>
<td>{{ $progetto->stato; }}</td>
<td>{{ $progetto->name; }}</td>
<td>{{ $progetto->budget; }}</td>

View File

@ -148,7 +148,27 @@ Route::group(['middleware'=>['permission:progetti']], function(){
});
/// RIVISTA
Route::group(['middleware'=>['permission:rivista']], function(){
Route::get('rivista',[RivistaController::class,'rivistaHome'])->name('rivista');
Route::get('rivista/pubblica',[RivistaController::class,'rivistaDigCarica']);
Route::post('rivista/pubblica',[RivistaController::class,'rivistaDigPubblica']);
Route::get('rivista/abbonati',[RivistaController::class,'rivistaAbbonati']);
Route::get('rivista/abbonamenti',[RivistaController::class,'rivistaAbbonamenti']);
Route::get('rivista/abbonamenti/rinnovo',[RivistaController::class,'rivistaAbbonamentiRinnovo']);
Route::get('rivista/abbonamenti/nuovo',[RivistaController::class,'rivistaAbbonamentiNuovo']);
Route::get('rivista/abbonamenti/scadenza',[RivistaController::class,'rivistaAbbonamentiScadono']);
Route::get('rivista/new',[RivistaController::class,'rivistaNuova']);
Route::get('rivista/archivio',[RivistaController::class,'rivistaArchivio']);
});
/// ASSOCIAZIONE
Route::group(['middleware'=>['permission:associazione']], function(){
Route::get('associazione',[AssociazioneController::class,'assocHome'])->name('associazione');
});
/// GRUPPI
Route::group(['middleware'=>['permission:gruppi']], function(){
Route::get('gruppi',[GruppiController::class,'gruppiHome'])->name('gruppi');
});
/// TEST ROUTES
Route::get('test/fullcalendar', [FullCalenderController::class, 'index']);