Compare commits

..

No commits in common. "7a85f2280afa53ac016b540da1f9b547b40b3e42" and "30cf03bd7de9448078170cf07d58b4ea2b7a5dea" have entirely different histories.

20 changed files with 92 additions and 422 deletions

View File

@ -1,23 +1,29 @@
# Gestionale Per le associazioni # Gestionale di Famiglia
Piccolo sistema di gestione. Piccolo sistema di gestione famigliare.
Al momento sono presenti: Al momento sono presenti:
- Gestione delle Entrate e uscite con possibilità di inserimento delle foto degli scontrini ed eventuali documenti in PDF. - 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. - 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 [Da rivedere] - 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. [Da rivedere] - Un sistema di gestione delle autovetture e relative operazioni effettuate su di esse.
- Una rubrica telefonica e degli indirizzi - Una rubrica telefonica e degli indirizzi
- Una gestione dei progetti (ancora in sviluppo) [Da rivedere] - Una gestione dei progetti (ancora in sviluppo)
- Una gestione degli utenti e dei gruppi e relativi permessi. [Da rivedere] - Una gestione degli utenti e dei gruppi e relativi permessi.
*Sviluppato in php, mysql, jquery su framework Laravel*. *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) ## Sviluppatori (attualmente)
Flavio Barachino <flavio.barachino@lavorain.cloud> Flavio Barachino <flavio.barachino@lavorain.cloud>
## Consulenza e richiesta
Mariano Benzi
### Vuoi partecipare? ### Vuoi partecipare?
Scrivici con le tue proposte, le tue critiche, i tuoi suggerimenti. Scrivimi con le tue proposte, le tue critiche, i tuoi suggerimenti.
AdimGest <adimgest@lavorain.cloud>

View File

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

View File

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

View File

@ -37,14 +37,10 @@ class MovimentiController extends Controller
public static function dashboard() 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(); $saldo=Movimenti::getSaldoTot();
return view('layouts.dashboard',[ return view('layouts.dashboard',[
'entrate'=>$entrate, 'bilancio'=>$bilancio,
'uscite'=>$uscite,
'saldo'=>$saldo, 'saldo'=>$saldo,
]); ]);
} }

View File

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

View File

@ -58,32 +58,5 @@ class Utenti extends Controller
return redirect('/admin/users/new'); return redirect('/admin/users/new');
} }
function givePermissionToUser()
{
$users=User::all();
$permissions=Permission::all();
return view('users.assignperm',['users'=>$users,'permissions'=>$permissions]);
}
function assignPermission(Request $request)
{
//$user=User::getUserbyId($request['user']);
$user=User::findOrFail($request['user']);
foreach($request['permesso'] as $key => $value){
if($value=='true')
{
$key=str_replace('\'','',$key);
$user->givePermissionTo($key);
// $permission['allowed'][]=$key;
}
else
{
$key=str_replace('\'','',$key);
$user->revokePermissionTo($key);
// $permission['denied'][]=$key;
}
} }
return redirect('/admin/users/givepermission');
}
}

View File

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

View File

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

View File

@ -226,24 +226,4 @@ 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);
}
} }

View File

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

View File

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

View File

@ -1,31 +0,0 @@
<?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

@ -1,31 +0,0 @@
<?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

@ -1,31 +0,0 @@
<?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');
}
}

View File

@ -7,7 +7,7 @@
<meta name="description" content=""> <meta name="description" content="">
<meta name="author" content=""> <meta name="author" content="">
<title>{{env('APP_NAME')}}</title> <title>BuBo Family - made with <3 - </title>
<!-- Bootstrap Core CSS --> <!-- Bootstrap Core CSS -->
<link href="/css/bootstrap.min.css" rel="stylesheet"> <link href="/css/bootstrap.min.css" rel="stylesheet">

View File

@ -49,21 +49,7 @@
@endcan @can('progetti') @endcan @can('progetti')
<li><a href="{{ route('progetti'); }}"><i class="fa fa-list fa-fw"></i> <li><a href="{{ route('progetti'); }}"><i class="fa fa-list fa-fw"></i>
Progetti <span class="fa arrow"></span></a></li> Progetti <span class="fa arrow"></span></a></li>
@endcan @can('amministrazione')
@endcan
@can('gruppi')
<li><a href="{{ route('gruppi'); }}"><i class="fa fa-group fa-fw"></i>
Gruppi <span class="fa arrow"></span></a></li>
@endcan
@can('rivista')
<li><a href="{{ route('rivista'); }}"><i class="fa fa-newspaper-o fa-fw"></i>
Rivista <span class="fa arrow"></span></a></li>
@endcan
@can('associazione')
<li><a href="{{ route('associazione'); }}"><i class="fa fa-black-tie fa-fw"></i>
Associazione <span class="fa arrow"></span></a></li>
@endcan
@can('amministrazione')
<li><a href="#"><i class="fa fa-gears fa-fw"></i>Amministrazione<span <li><a href="#"><i class="fa fa-gears fa-fw"></i>Amministrazione<span
class="fa arrow"></span></a> class="fa arrow"></span></a>
<ul class="nav nav-second-level"> <ul class="nav nav-second-level">
@ -72,7 +58,7 @@
<li><a class="active" href="/admin/users/newRole">Gruppi</a></li> <li><a class="active" href="/admin/users/newRole">Gruppi</a></li>
<li><a class="active" href="/admin/users/newPermission">Permessi</a></li> <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 class="active" href="/admin/users/assignRole">Assegna Ruoli</a></li>
<!-- <!--
<li><a href="/login">Login Page</a></li> <li><a href="/login">Login Page</a></li>
--> -->

View File

@ -8,53 +8,6 @@
<div class="row"> <div class="row">
@hasanyrole('user|admin') @hasanyrole('user|admin')
<!-- WIDGET Bilancio --> <!-- WIDGET Bilancio -->
<div class="col-lg-4 col-md-8">
<div class="panel panel-success">
<div class="panel-heading">
<div class="row">
<div class="col-xs-3">
<i class="fa fa-plus-square fa-5x"></i>
</div>
<div class="col-xs-9 text-right">
<div class="huge">{{ $entrate }}</div>
<div>Entrate 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 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="col-lg-4 col-md-8">
<div class="panel panel-primary"> <div class="panel panel-primary">
<div class="panel-heading"> <div class="panel-heading">
@ -63,8 +16,8 @@
<i class="fa fa-balance-scale fa-5x"></i> <i class="fa fa-balance-scale fa-5x"></i>
</div> </div>
<div class="col-xs-9 text-right"> <div class="col-xs-9 text-right">
<div class="huge">{{ $entrate + $uscite }}</div> <div class="huge">{{ $bilancio }}</div>
<div>Saldo attuale nell'anno</div> <div>Bilancio attuale anno {{ date('Y') }}</div>
</div> </div>
</div> </div>
</div> </div>
@ -77,8 +30,9 @@
</a> </a>
</div> </div>
</div> </div>
<!-- WIDGET -->
<div class="col-lg-4 col-md-8"> <div class="col-lg-4 col-md-8">
<div class="panel panel-yellow"> <div class="panel panel-green">
<div class="panel-heading"> <div class="panel-heading">
<div class="row"> <div class="row">
<div class="col-xs-3"> <div class="col-xs-3">

View File

@ -1,47 +0,0 @@
@extends('admin')
@section('content')
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">Assegnazione permessi</h1>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">
Nuova assegnazione permessi
</div>
<div class="panel-body">
<!-- Form -->
<form action="" method="POST">
<select name="user" class="form-control">
@foreach($users as $user)
<option value="{{$user->id}}"> {{$user->name}}</option>
@endforeach
</select>
<table>
<tr>
<th>Permesso</th>
<th>Azione</th>
</tr>
@foreach($permissions as $perm)
<tr>
<td>{{$perm->name}}</td>
<td>
Attiva<input type="radio" name="permesso['{{$perm->name}}']" value="true">
&nbsp;
Disattiva <input type="radio" name="permesso['{{$perm->name}}']" value="false">
</td>
</tr>
@endforeach
</table>
@csrf
<input type="Submit" name="submit" value="associa">
</form>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@ -128,8 +128,6 @@ Route::group(['middleware'=>['permission:amministrazione']], function(){
Route::post('users/new',[Utenti::class,'createUser']); Route::post('users/new',[Utenti::class,'createUser']);
Route::get('users/roles',[Utenti::class,'listRoles']); Route::get('users/roles',[Utenti::class,'listRoles']);
Route::get('users/delete/{id}',[Utenti::class,'deleteUser']); Route::get('users/delete/{id}',[Utenti::class,'deleteUser']);
Route::get('users/givepermission',[Utenti::class,'givePermissionToUser']);
Route::post('users/givepermission',[Utenti::class,'assignPermission']);
}); });
// PROGETTI // PROGETTI
Route::group(['middleware'=>['permission:progetti']], function(){ Route::group(['middleware'=>['permission:progetti']], function(){
@ -144,27 +142,7 @@ Route::group(['middleware'=>['permission:progetti']], function(){
Route::post('progetti/rigaupdate', [RigaProgettoController::class, 'updateRiga']); Route::post('progetti/rigaupdate', [RigaProgettoController::class, 'updateRiga']);
Route::get('progetti/coordinatori', [ProgettiController::class, 'getCoordinatori']); Route::get('progetti/coordinatori', [ProgettiController::class, 'getCoordinatori']);
}); });
/// 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 /// TEST ROUTES
Route::get('test/fullcalendar', [FullCalenderController::class, 'index']); Route::get('test/fullcalendar', [FullCalenderController::class, 'index']);