Compare commits
173 Commits
v0.1.0-alp
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 537a9f73f8 | |||
| 00a89f6b6d | |||
| 8928383f95 | |||
| 036981f16e | |||
| fafb02488e | |||
| 1bdc1b76c6 | |||
| 337504b127 | |||
| 53c984c315 | |||
| 0155be2654 | |||
| a6a64fd39a | |||
| dec89c2098 | |||
|
|
4120662b12 | ||
| 6163d8a5bd | |||
| 0330c1d0da | |||
| ec5b6c8b8b | |||
| cffdcce067 | |||
| a219553f4b | |||
| 5a3780ca85 | |||
| 1736f17d83 | |||
| d53e6ac581 | |||
| 085611cde1 | |||
| eafa0f270f | |||
| 62308e8daa | |||
| eef847e302 | |||
| cd5b57e909 | |||
| f9a28a3d0e | |||
| 1e1b319a6f | |||
| 4a2a17e32c | |||
| e4b3ab0a3c | |||
| a819ef01ff | |||
| 908d8f9328 | |||
| fbb0276055 | |||
| 1ed12d7f31 | |||
| 98b58b5bf7 | |||
| 0e777445e9 | |||
| cae02dfebf | |||
| 0ba070ba54 | |||
| d25fe1cef1 | |||
| cea9baa838 | |||
| b64d954309 | |||
| 11f819cfbc | |||
| b8b39f45e6 | |||
| e0c8491e45 | |||
| 7443d52215 | |||
| bf8bf40a1d | |||
| cbbaf0bf3e | |||
| 0fc166ebeb | |||
| 1a55a1d1e8 | |||
| c6f82a9c62 | |||
| 03900b5b61 | |||
| c0ce480235 | |||
| 2fe5027f8e | |||
| f32e57d3bc | |||
| 9f74c49b76 | |||
| 48ec4d62f3 | |||
| 0a166d75c9 | |||
| 72523344bc | |||
| 0121ed8381 | |||
| 67775716b8 | |||
| 21cc195ce4 | |||
| 0440bba9f4 | |||
| 4f5b745031 | |||
| 8a579a27fd | |||
| a965983b57 | |||
| b008787c61 | |||
| ac1ac587f9 | |||
| e22868bef5 | |||
| 40eb51f836 | |||
| 44c27a9520 | |||
| b852a8e753 | |||
| 8d3d56a219 | |||
| b6a5c99fb6 | |||
| d7fe1fcb81 | |||
| 8ff62254bf | |||
| fc675ce07b | |||
| 9cf1f9a388 | |||
| 109ead8daa | |||
| 60e9f77d2c | |||
| 2b8a9c0d4d | |||
| a174a31b0d | |||
| 717e1be95d | |||
| 0668026eb7 | |||
| bd6d7046db | |||
| d3629f1e75 | |||
| a827342a30 | |||
| 8381aa068d | |||
| 58e9344180 | |||
| b5eb6c383b | |||
| 48606856c4 | |||
| 9f0c93c921 | |||
| 8dff2e0853 | |||
| 0f382d4182 | |||
| 0050c3547e | |||
| 350c5737b7 | |||
| fabf85ffb5 | |||
| 4f9378899b | |||
| 031e4957b4 | |||
| 957cc88a3f | |||
| 6a26529bbf | |||
| ff39c80f27 | |||
| e4f3834488 | |||
| beec4b8dce | |||
| a773b825d0 | |||
| b3df3f0b47 | |||
| 8d0576099c | |||
| 69b93bc3f6 | |||
| 75761353ca | |||
| ea11579670 | |||
| 1e2b85910c | |||
| c020fe86f0 | |||
| 03449a5c27 | |||
| 1318b50fcc | |||
| d3f0695866 | |||
| 4850b5bbef | |||
| 0ee7d4d363 | |||
| 83ccd7ec19 | |||
| 920584d779 | |||
| 54b2dda9ea | |||
| f90974ba09 | |||
| 36a863eafd | |||
| 7f80290ff8 | |||
| 3dc54235c5 | |||
| 8f5ccad560 | |||
| 7a85f2280a | |||
| d5f4d5c827 | |||
| b82ec0adc0 | |||
| fcbe1e1a4e | |||
| 66157c3477 | |||
|
|
792d1a0580 | ||
|
|
84c0eaa48b | ||
| 30cf03bd7d | |||
| dd62afe67c | |||
| f22943403a | |||
| 2ed8ede5f0 | |||
| 20f050044b | |||
| dab7869fdf | |||
| 19ea72be6c | |||
| 7183e9d96c | |||
| d3729c6fe3 | |||
| a8a25063ac | |||
| 9952c06c71 | |||
| c78fa832a2 | |||
| 3ebca7bb4a | |||
| 91608dcb7d | |||
| 235508dd15 | |||
| b05d49b72b | |||
| d554066dd5 | |||
| f172afdfc8 | |||
| 2af799240c | |||
| d8a8e363d2 | |||
| a9136cb13f | |||
| ce5527ecde | |||
| 8fc2b6ae83 | |||
| 401a061aeb | |||
| 33f6d84f4f | |||
| ca4a7a9fc3 | |||
| 9f7bab7688 | |||
| d616b5c2e9 | |||
| 2f1678684e | |||
| 2fdb5ec721 | |||
| c865d6f205 | |||
| d036e2f0d9 | |||
| a03157062f | |||
| 11b62f5a44 | |||
| 27f74bd726 | |||
| 4ca2bc11d2 | |||
| 96f95220a1 | |||
| 4f44841e8a | |||
| 9a14f95ad7 | |||
| b7bf393f3b | |||
| 1504919945 | |||
| bebac2cd6d | |||
| 2021efb8b8 |
52
.env_new
Normal file
52
.env_new
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
APP_NAME=BuBoFamily
|
||||||
|
APP_ENV=local
|
||||||
|
APP_KEY=base64:YQ7wQmtsVJrAkX5v40lzXuJX03OA20NTQHcnDHsFOp0=
|
||||||
|
APP_DEBUG=true
|
||||||
|
APP_URL=http://bubofamily.mydomain.loc
|
||||||
|
|
||||||
|
LOG_CHANNEL=stack
|
||||||
|
LOG_DEPRECATIONS_CHANNEL=null
|
||||||
|
LOG_LEVEL=debug
|
||||||
|
|
||||||
|
DB_CONNECTION=mysql
|
||||||
|
DB_HOST=127.0.0.1
|
||||||
|
DB_PORT=3306
|
||||||
|
DB_DATABASE=bubofamily_db
|
||||||
|
DB_USERNAME=flavio
|
||||||
|
DB_PASSWORD=Portalnet3
|
||||||
|
|
||||||
|
BROADCAST_DRIVER=log
|
||||||
|
CACHE_DRIVER=file
|
||||||
|
FILESYSTEM_DRIVER=local
|
||||||
|
QUEUE_CONNECTION=sync
|
||||||
|
SESSION_DRIVER=file
|
||||||
|
SESSION_LIFETIME=120
|
||||||
|
|
||||||
|
MEMCACHED_HOST=127.0.0.1
|
||||||
|
|
||||||
|
REDIS_HOST=127.0.0.1
|
||||||
|
REDIS_PASSWORD=null
|
||||||
|
REDIS_PORT=6379
|
||||||
|
|
||||||
|
MAIL_MAILER=smtp
|
||||||
|
MAIL_HOST=mailhog
|
||||||
|
MAIL_PORT=1025
|
||||||
|
MAIL_USERNAME=null
|
||||||
|
MAIL_PASSWORD=null
|
||||||
|
MAIL_ENCRYPTION=null
|
||||||
|
MAIL_FROM_ADDRESS=null
|
||||||
|
MAIL_FROM_NAME="${APP_NAME}"
|
||||||
|
|
||||||
|
AWS_ACCESS_KEY_ID=
|
||||||
|
AWS_SECRET_ACCESS_KEY=
|
||||||
|
AWS_DEFAULT_REGION=us-east-1
|
||||||
|
AWS_BUCKET=
|
||||||
|
AWS_USE_PATH_STYLE_ENDPOINT=false
|
||||||
|
|
||||||
|
PUSHER_APP_ID=
|
||||||
|
PUSHER_APP_KEY=
|
||||||
|
PUSHER_APP_SECRET=
|
||||||
|
PUSHER_APP_CLUSTER=mt1
|
||||||
|
|
||||||
|
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
|
||||||
|
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
|
||||||
33
.gitea/workflows/compile.yaml
Normal file
33
.gitea/workflows/compile.yaml
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
name: Laravel
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "devel" ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ "devel" ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
laravel-tests:
|
||||||
|
|
||||||
|
runs-on: linux_amd64
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: shivammathur/setup-php@15c43e89cdef867065b0213be354c2841860869e
|
||||||
|
with:
|
||||||
|
php-version: '8.1'
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Copy .env
|
||||||
|
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
|
||||||
|
- name: Generate key
|
||||||
|
run: php artisan key:generate
|
||||||
|
- name: styles and js creation
|
||||||
|
run: npm install && npm prod
|
||||||
|
- name: Directory Permissions
|
||||||
|
run: chmod -R 777 storage bootstrap/cache
|
||||||
|
- name: Execute tests (Unit and Feature tests) via PHPUnit
|
||||||
|
env:
|
||||||
|
DB_CONNECTION: mysql
|
||||||
|
DB_DATABASE: bubofamily
|
||||||
|
run: vendor/bin/phpunit
|
||||||
20
.gitea/workflows/test.yaml
Normal file
20
.gitea/workflows/test.yaml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
name: Gitea Actions Demo
|
||||||
|
run-name: ${{ gitea.actor }} is testing out Gitea Actions
|
||||||
|
on: [push]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
Explore-Gitea-Actions:
|
||||||
|
runs-on: ubuntu_latest
|
||||||
|
steps:
|
||||||
|
- run: echo "The job was automatically triggered by a ${{ gitea.event_name }} event."
|
||||||
|
- run: echo "This job is now running on a ${{ runner.os }} server hosted by Gitea!"
|
||||||
|
- run: echo "The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
|
||||||
|
- run: echo "${{ GITHUB_WORKSPACE }}"
|
||||||
|
- name: Check out repository code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- run: echo "The ${{ gitea.repository }} repository has been cloned to the runner."
|
||||||
|
- run: echo "The workflow is now ready to test your code on the runner."
|
||||||
|
- name: List files in the repository
|
||||||
|
run: |
|
||||||
|
ls ${{ gitea.workspace }}
|
||||||
|
- run: echo "This job's status is ${{ job.status }}."
|
||||||
27
.gitignore
vendored
27
.gitignore
vendored
@@ -14,8 +14,27 @@ Homestead.json
|
|||||||
Homestead.yaml
|
Homestead.yaml
|
||||||
npm-debug.log
|
npm-debug.log
|
||||||
yarn-error.log
|
yarn-error.log
|
||||||
*.sql
|
|
||||||
/.idea
|
|
||||||
/.vscode
|
|
||||||
resources/views/tmp/*
|
|
||||||
|
|
||||||
|
# Laravel 4 specific
|
||||||
|
bootstrap/compiled.php
|
||||||
|
app/storage/
|
||||||
|
|
||||||
|
# Laravel 5 & Lumen specific
|
||||||
|
public/storage
|
||||||
|
public/hot
|
||||||
|
|
||||||
|
# Laravel 5 & Lumen specific with changed public path
|
||||||
|
public_html/storage
|
||||||
|
public_html/hot
|
||||||
|
|
||||||
|
storage/*.key
|
||||||
|
storage/app/*
|
||||||
|
storage/logs
|
||||||
|
.env
|
||||||
|
Homestead.yaml
|
||||||
|
Homestead.json
|
||||||
|
/.vagrant
|
||||||
|
.phpunit.result.cache
|
||||||
|
|
||||||
|
public/ovpn_config.ovpn
|
||||||
|
*.txt
|
||||||
40
README.md
40
README.md
@@ -1,37 +1,27 @@
|
|||||||
# Gestionale di Famiglia
|
# Gestionale per le famiglie
|
||||||
Piccolo sistema di gestione famigliare.
|
|
||||||
|
Questo progetto nasce sia come esercizio per utilizzare Laravel, che come esigenza personale.
|
||||||
|
Nato come sola gestione finanziaria per un utilizzo domestico, piano piano si sono aggiunte delle necessità e idee che hanno reso il "piccolo" gestionale di diventare ciò che è ora. L'obiettivo finale è di creare un sistema di gestione centrale per tutte le esigenze e necessità che si incontrano nel gestire una famiglia ( o almeno quelle parametrizzabili )
|
||||||
|
|
||||||
|
Piccolo sistema di gestione.
|
||||||
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
|
- 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.
|
- Un sistema di gestione delle autovetture e relative operazioni effettuate su di esse. [Da rivedere]
|
||||||
- Una rubrica telefonica e degli indirizzi
|
- Una rubrica telefonica e degli indirizzi
|
||||||
- Una gestione dei progetti (ancora in sviluppo)
|
- Una gestione dei progetti (ancora in sviluppo) [Da rivedere]
|
||||||
- Una gestione degli utenti e dei gruppi e relativi permessi.
|
- Una gestione degli utenti e dei gruppi e relativi permessi. [Da migliorare]
|
||||||
|
- Gestione dei documenti
|
||||||
|
- Gestione di un calendario condiviso
|
||||||
|
|
||||||
*Sviluppato in php, mysql, jquery su framework Laravel*.
|
*Sviluppato in php, mysql, jquery su framework Laravel*.
|
||||||
|
|
||||||
|
## Sviluppatori (attualmente)
|
||||||
## Installazione
|
|
||||||
- clonare il repository
|
|
||||||
- copiare il file .env.example
|
|
||||||
- inserire le informazioni del database (username,password,dbname)
|
|
||||||
- lanciare >composer install
|
|
||||||
- lanciare php artisan migrate
|
|
||||||
- lanciare i seeds (categorie e utenti di default)
|
|
||||||
|
|
||||||
|
|
||||||
## Sviluppatori
|
|
||||||
Flavio Barachino <flavio.barachino@lavorain.cloud>
|
Flavio Barachino <flavio.barachino@lavorain.cloud>
|
||||||
|
|
||||||
### Vuoi partecipare?
|
|
||||||
Scrivimi con le tue proposte, le tue critiche, i tuoi suggerimenti.
|
|
||||||
|
|
||||||
=======
|
|
||||||
## Sviluppatori
|
|
||||||
Flavio Barachino <flavio.barachino@lavorain.cloud>
|
|
||||||
|
|
||||||
### Vuoi partecipare?
|
### Vuoi partecipare?
|
||||||
Scrivimi con le tue proposte, le tue critiche, i tuoi suggerimenti.
|
Scrivici con le tue proposte, le tue critiche, i tuoi suggerimenti.
|
||||||
|
Gestionale <bubofamily@lavorain.cloud>
|
||||||
|
|||||||
@@ -5,10 +5,76 @@ namespace App\Http\Controllers;
|
|||||||
use App\Models\anagrafica;
|
use App\Models\anagrafica;
|
||||||
use App\Models\contatto;
|
use App\Models\contatto;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Google\Client;
|
||||||
|
Use Google\Service\PeopleService;
|
||||||
|
|
||||||
class AnagraficaController extends Controller
|
class AnagraficaController extends Controller
|
||||||
{
|
{
|
||||||
//
|
// GOOGLE CONTACTS PART
|
||||||
|
|
||||||
|
// private $google_client;
|
||||||
|
|
||||||
|
/* public function getToken()
|
||||||
|
{
|
||||||
|
$client = new Client();
|
||||||
|
$client->setApplicationName('gestionale.lavorain.cloud');
|
||||||
|
if(!is_null($client->getAccessToken())){}
|
||||||
|
elseif(!is_null(session('access_token'))) // is_null(Session::get('access_token', null))
|
||||||
|
{
|
||||||
|
$client->setAccessToken(session('access_token'));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$scope = array();
|
||||||
|
$scope[] = 'https://www.googleapis.com/auth/contacts';
|
||||||
|
// $client->
|
||||||
|
putenv('GOOGLE_APPLICATION_CREDENTIALS='.storage_path('app/google-calendar/service_key.json')); //this can be created with other ENV mode server side
|
||||||
|
$client->useApplicationDefaultCredentials();
|
||||||
|
$token = $client->getAccessToken();
|
||||||
|
session(['access_token' => $token]);
|
||||||
|
}
|
||||||
|
return $client;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
public function getGoogleContacts()
|
||||||
|
{
|
||||||
|
$client = $this->getToken();
|
||||||
|
$service = new PeopleService($client);
|
||||||
|
$profile = $service->people_connections->listPeopleConnections('people/me', array('personFields' => 'names,emailAddresses,phoneNumbers'));
|
||||||
|
}
|
||||||
|
public function getToken()
|
||||||
|
{
|
||||||
|
$configJson =storage_path('app/google-calendar/service_key.json');
|
||||||
|
// $configJson =storage_path('app/google-calendar/people.json');
|
||||||
|
// define an application name
|
||||||
|
$applicationName = 'gestionale-di-famiglia';
|
||||||
|
|
||||||
|
// create the client
|
||||||
|
$client = new \Google_Client();
|
||||||
|
$client->setApplicationName($applicationName);
|
||||||
|
$client->setAuthConfig($configJson);
|
||||||
|
$client->setAccessType('offline'); // necessary for getting the refresh token
|
||||||
|
$client->setApprovalPrompt ('force'); // necessary for getting the refresh token
|
||||||
|
// scopes determine what google endpoints we can access. keep it simple for now.
|
||||||
|
|
||||||
|
$client->setScopes(
|
||||||
|
[
|
||||||
|
/*
|
||||||
|
\Google\Service\Oauth2::USERINFO_PROFILE,
|
||||||
|
\Google\Service\Oauth2::USERINFO_EMAIL,
|
||||||
|
\Google\Service\Oauth2::OPENID,
|
||||||
|
*/
|
||||||
|
\Google\Service\PeopleService::CONTACTS // allows reading of google drive metadata
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$client->setIncludeGrantedScopes(true);
|
||||||
|
|
||||||
|
return $client;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function newContact()
|
public function newContact()
|
||||||
{
|
{
|
||||||
return view('anagrafica.form');
|
return view('anagrafica.form');
|
||||||
|
|||||||
10
app/Http/Controllers/AssociazioneController.php
Normal file
10
app/Http/Controllers/AssociazioneController.php
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class AssociazioneController extends Controller
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
16
app/Http/Controllers/AvvisoController.php
Normal file
16
app/Http/Controllers/AvvisoController.php
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Models\Avviso;
|
||||||
|
|
||||||
|
class AvvisoController extends Controller
|
||||||
|
{
|
||||||
|
//
|
||||||
|
public function saveAvviso(Request $request)
|
||||||
|
{
|
||||||
|
Avviso::newAvviso($request);
|
||||||
|
return redirect()->back();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -18,7 +18,7 @@ class CategorieController extends Controller
|
|||||||
|
|
||||||
public static function insCategorie(Request $request)
|
public static function insCategorie(Request $request)
|
||||||
{
|
{
|
||||||
Categorie::inserisci($request['cat_name']);
|
Categorie::inserisci($request);
|
||||||
return view('conti.categorie.list',['categorie'=>Categorie::list()]);
|
return view('conti.categorie.list',['categorie'=>Categorie::list()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,14 +32,14 @@ class CategorieController extends Controller
|
|||||||
|
|
||||||
public function updatePostCategorie(Request $request)
|
public function updatePostCategorie(Request $request)
|
||||||
{
|
{
|
||||||
Categorie::updateNameById($request['id'],$request['cat_name']);
|
Categorie::updateNameById($request);
|
||||||
return redirect(route('categorie'));
|
return redirect(route('categorie'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function apiList()
|
public function apiList()
|
||||||
{
|
{
|
||||||
$categorie=Categorie::list();
|
$categorie=Categorie::listCategorieAPI();
|
||||||
return json_encode($categorie);
|
return json_encode($categorie);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,4 +48,16 @@ class CategorieController extends Controller
|
|||||||
$categorie = Categorie::getById($id);
|
$categorie = Categorie::getById($id);
|
||||||
return json_encode($categorie);
|
return json_encode($categorie);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function apiListSpesa()
|
||||||
|
{
|
||||||
|
$categorie=Categorie::listSpesa();
|
||||||
|
return json_encode($categorie);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function apiListEntrata()
|
||||||
|
{
|
||||||
|
$categorie=Categorie::listEntrata();
|
||||||
|
return json_encode($categorie);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,4 +23,6 @@ class CondominioController extends Controller
|
|||||||
{
|
{
|
||||||
abort(403);
|
abort(403);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
65
app/Http/Controllers/ContrattiController.php
Normal file
65
app/Http/Controllers/ContrattiController.php
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Models\Contratti;
|
||||||
|
use App\Models\GenDoc;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
|
||||||
|
class ContrattiController extends Controller
|
||||||
|
{
|
||||||
|
//
|
||||||
|
public function contratti()
|
||||||
|
{
|
||||||
|
return view('contratti.lista',['data'=>Contratti::getAllContratto()]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function newContratto(Request $request)
|
||||||
|
{
|
||||||
|
// Contratti::storeContratto($request);
|
||||||
|
//dd($request);
|
||||||
|
if (isset($request['filename'])) {
|
||||||
|
$filename = $request->file('filename')->store('Contratti');
|
||||||
|
}else{
|
||||||
|
$filename=null;
|
||||||
|
}
|
||||||
|
Contratti::create([
|
||||||
|
'numero'=>$request['numero'],
|
||||||
|
'nome'=>$request['nome'],
|
||||||
|
'datainizio'=>date_format(date_create($request['datainizio']),'Y-m-d'),
|
||||||
|
'datatermine'=>date_format(date_create($request['datatermine']),'Y-m-d'),
|
||||||
|
'fornitore'=>$request['fornitore'],
|
||||||
|
'tipo'=>$request['tipo'],
|
||||||
|
'importo'=>$request['importo'],
|
||||||
|
'scadenzapagamento'=>date_format(date_create($request['scadenzapagamento']),'Y-m-d'),
|
||||||
|
'stato'=>$request['stato'],
|
||||||
|
'note'=>$request['note'],
|
||||||
|
'filename'=>$filename,
|
||||||
|
]);
|
||||||
|
return redirect()->back();
|
||||||
|
}
|
||||||
|
/* */
|
||||||
|
|
||||||
|
public function schedaContratto($id)
|
||||||
|
{
|
||||||
|
$contratto = Contratti::getContrattoById($id);
|
||||||
|
return view('contratti.detail',[
|
||||||
|
'contratto'=>$contratto,
|
||||||
|
'docs' => \App\Models\GenDoc::listDocument(1,$id)
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function documentDelete(Request $id)
|
||||||
|
{
|
||||||
|
// return dd($id);
|
||||||
|
// $entity=1;
|
||||||
|
$contratto=GenDoc::find($id['id']);
|
||||||
|
if(file_exists('/storage/'.$contratto->filename))
|
||||||
|
{
|
||||||
|
unlink('storage/'.$contratto->filename);
|
||||||
|
}
|
||||||
|
GenDoc::find($id['id'])->delete();
|
||||||
|
return redirect('/admin/contratti/'.$id['entity_id']);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -22,10 +22,25 @@ class DocumentiController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function fileForm(Request $request){
|
public function fileForm(Request $request){
|
||||||
$documenti = Documenti::getList($request->input('id'));
|
$documenti = Documenti::getList($request->input('entity_id'));
|
||||||
return view('conti.documenti.insert', [
|
|
||||||
'id'=>$request->input('id'),
|
return view('conti.documenti.insert', [
|
||||||
|
'id'=>$request->input('entity_id'),
|
||||||
'documenti'=>$documenti
|
'documenti'=>$documenti
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function newFolder(Request $req)
|
||||||
|
{
|
||||||
|
// crea una nuova caregoria per i documenti
|
||||||
|
Documenti::store($req);
|
||||||
|
return redirect(route('folders'));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public function listaDocumenti()
|
||||||
|
{
|
||||||
|
return view('documenti.lista',['data'=>Documenti::all()]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -4,6 +4,8 @@ namespace App\Http\Controllers;
|
|||||||
|
|
||||||
use App\Models\Event;
|
use App\Models\Event;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Spatie\GoogleCalendar\Event as Events;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
|
||||||
class FullCalenderController extends Controller
|
class FullCalenderController extends Controller
|
||||||
{
|
{
|
||||||
@@ -18,31 +20,14 @@ class FullCalenderController extends Controller
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
public function index(Request $request)
|
public function index(Request $request)
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if($request->ajax()) {
|
if($request->ajax()) {
|
||||||
|
$data = Event::whereDate('start', '>=', $request->start)
|
||||||
|
|
||||||
|
|
||||||
$data = Event::whereDate('start', '>=', $request->start)
|
|
||||||
|
|
||||||
->whereDate('end', '<=', $request->end)
|
->whereDate('end', '<=', $request->end)
|
||||||
|
|
||||||
->get(['id', 'title', 'start', 'end']);
|
->get(['id', 'title', 'start', 'end']);
|
||||||
|
return response()->json($data);
|
||||||
|
|
||||||
|
|
||||||
return response()->json($data);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
return view('calendario.fullcalendar');
|
||||||
|
|
||||||
|
|
||||||
return view('fullcalendar');
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -58,72 +43,55 @@ class FullCalenderController extends Controller
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
public function ajax(Request $request)
|
public function ajax(Request $request)
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
switch ($request->type) {
|
switch ($request->type) {
|
||||||
|
|
||||||
case 'add':
|
case 'add':
|
||||||
|
|
||||||
$event = Event::create([
|
$event = Event::create([
|
||||||
|
|
||||||
'title' => $request->title,
|
'title' => $request->title,
|
||||||
|
'description' => $request->description,
|
||||||
'start' => $request->start,
|
'start' => $request->start,
|
||||||
|
|
||||||
'end' => $request->end,
|
'end' => $request->end,
|
||||||
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return response()->json($event);
|
return response()->json($event);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
case 'update':
|
case 'update':
|
||||||
|
|
||||||
$event = Event::find($request->id)->update([
|
$event = Event::find($request->id)->update([
|
||||||
|
|
||||||
'title' => $request->title,
|
'title' => $request->title,
|
||||||
|
'description' => $request->description,
|
||||||
'start' => $request->start,
|
'start' => $request->start,
|
||||||
|
|
||||||
'end' => $request->end,
|
'end' => $request->end,
|
||||||
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return response()->json($event);
|
return response()->json($event);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
case 'delete':
|
case 'delete':
|
||||||
|
|
||||||
$event = Event::find($request->id)->delete();
|
$event = Event::find($request->id)->delete();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return response()->json($event);
|
return response()->json($event);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
||||||
# code...
|
# code...
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function showDemo()
|
||||||
|
{
|
||||||
|
return view('calendario.fullcalendar');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function saveEventToGoogle(Request $request){
|
||||||
|
$event = new Events;
|
||||||
|
$event->name = $request['title'];
|
||||||
|
$event->description=$request['descrizione'];
|
||||||
|
$tzStart = $request['DateStart'].'T'.$request['HourStart'].' +02:00';
|
||||||
|
$tzEnd = $request['DateEnd'].'T'.$request['HourEnd'].' +02:00';
|
||||||
|
$event->startDateTime = Carbon::parse($tzStart);
|
||||||
|
$event->endDateTime = Carbon::parse($tzEnd);
|
||||||
|
$event->save();
|
||||||
|
return view('calendario.fullcalendar');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
35
app/Http/Controllers/GenDocController.php
Normal file
35
app/Http/Controllers/GenDocController.php
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Models\GenDoc;
|
||||||
|
|
||||||
|
class GenDocController extends Controller
|
||||||
|
{
|
||||||
|
//
|
||||||
|
public function fileForm(Request $request){
|
||||||
|
$entity_id=$request->input('entity_id');
|
||||||
|
$entity=$request->input('entity');
|
||||||
|
|
||||||
|
if(!$request->input('entity_id'))
|
||||||
|
{
|
||||||
|
$entity_id=0;
|
||||||
|
}
|
||||||
|
$documenti = GenDoc::listDocument($entity,$entity_id);
|
||||||
|
return view('conti.documenti.gendoc', [
|
||||||
|
'id'=>$entity_id,
|
||||||
|
'entity'=>$entity,
|
||||||
|
'documenti'=>$documenti,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function storeFile(Request $request){
|
||||||
|
GenDoc::saveDocument($request);
|
||||||
|
return redirect()->back();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
10
app/Http/Controllers/GruppiController.php
Normal file
10
app/Http/Controllers/GruppiController.php
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class GruppiController extends Controller
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
24
app/Http/Controllers/HomeAssistantAPIController.php
Normal file
24
app/Http/Controllers/HomeAssistantAPIController.php
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Models\HomeAssistantAPI;
|
||||||
|
|
||||||
|
class HomeAssistantAPIController extends Controller
|
||||||
|
{
|
||||||
|
// Connessione RestAPI di HomeAssistant
|
||||||
|
|
||||||
|
public function getContatore()
|
||||||
|
{
|
||||||
|
$kwh = HomeAssistantAPI::getSensorState('sensor.contatore_casa');
|
||||||
|
return $kwh->state;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getStatoPompa()
|
||||||
|
{
|
||||||
|
$statoPompa = HomeAssistantAPI::getSensorState('switch.pompa_pozzo');
|
||||||
|
return $statoPompa->state;
|
||||||
|
//dd($statoPompa);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,8 +5,12 @@ namespace App\Http\Controllers;
|
|||||||
use App\Models\Categorie;
|
use App\Models\Categorie;
|
||||||
use App\Models\Movimenti;
|
use App\Models\Movimenti;
|
||||||
use App\Models\tag;
|
use App\Models\tag;
|
||||||
|
use App\Models\Task;
|
||||||
|
use App\Models\Avviso;
|
||||||
|
// use App\Http\Controllers\Auth;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Rap2hpoutre\FastExcel\FastExcel;
|
use Rap2hpoutre\FastExcel\FastExcel;
|
||||||
|
|
||||||
class MovimentiController extends Controller
|
class MovimentiController extends Controller
|
||||||
@@ -37,11 +41,22 @@ 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();
|
||||||
|
$mieiTasks=Task::getTaskAssignedToUser(Auth::id());
|
||||||
|
// $TasksAssegnati=Task::getTaskAssignedByUser(Auth::id());
|
||||||
|
// $avvisi=Avviso::getAvvisi();
|
||||||
|
$avvisi=Avviso::getActualAvvisi();
|
||||||
|
|
||||||
return view('layouts.dashboard',[
|
return view('layouts.dashboard',[
|
||||||
'bilancio'=>$bilancio,
|
'entrate'=>$entrate,
|
||||||
|
'uscite'=>$uscite,
|
||||||
'saldo'=>$saldo,
|
'saldo'=>$saldo,
|
||||||
|
'mieitask' => $mieiTasks,
|
||||||
|
// 'assegnati' => $TasksAssegnati,
|
||||||
|
'avvisi'=>$avvisi,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,7 +64,7 @@ class MovimentiController extends Controller
|
|||||||
{
|
{
|
||||||
Movimenti::insSpesa($request);
|
Movimenti::insSpesa($request);
|
||||||
$mov=Movimenti::getList();
|
$mov=Movimenti::getList();
|
||||||
$categorie=Categorie::list();
|
$categorie=Categorie::listSpesa();
|
||||||
$tags=tag::getList();
|
$tags=tag::getList();
|
||||||
return view('conti.movimenti.list',
|
return view('conti.movimenti.list',
|
||||||
[
|
[
|
||||||
@@ -64,7 +79,7 @@ class MovimentiController extends Controller
|
|||||||
{
|
{
|
||||||
Movimenti::insEntrata($request);
|
Movimenti::insEntrata($request);
|
||||||
$mov=Movimenti::getList();
|
$mov=Movimenti::getList();
|
||||||
$categorie=Categorie::list();
|
$categorie=Categorie::listEntrata();
|
||||||
$tags=tag::getList();
|
$tags=tag::getList();
|
||||||
return view('conti.movimenti.list',
|
return view('conti.movimenti.list',
|
||||||
[
|
[
|
||||||
@@ -81,7 +96,7 @@ class MovimentiController extends Controller
|
|||||||
foreach ($movimenti as $movimento)
|
foreach ($movimenti as $movimento)
|
||||||
{
|
{
|
||||||
$lista[]=[
|
$lista[]=[
|
||||||
'Data'=>$movimento->Data,
|
'Data'=> date_format(date_create($movimento->Data),'d/m/Y'),
|
||||||
'Categoria'=>$movimento->Categoria,
|
'Categoria'=>$movimento->Categoria,
|
||||||
'Tag'=>$movimento->Tag,
|
'Tag'=>$movimento->Tag,
|
||||||
'Descrizione'=>$movimento->Descrizione,
|
'Descrizione'=>$movimento->Descrizione,
|
||||||
@@ -119,30 +134,16 @@ class MovimentiController extends Controller
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*public function updateMovimenti(Request $request)
|
|
||||||
{
|
|
||||||
$id=$request['id'];
|
|
||||||
$mov=Movimenti::getMovimentoById($id);
|
|
||||||
$categorie=Categorie::list();
|
|
||||||
$tags=tag::getList();
|
|
||||||
return view('conti.movimenti.update',
|
|
||||||
[
|
|
||||||
'categorie'=> $categorie,
|
|
||||||
'movimenti'=> $mov,
|
|
||||||
'tags'=>$tags,
|
|
||||||
]);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
public function updatePostMovimenti(Request $request)
|
public function updatePostMovimenti(Request $request)
|
||||||
{
|
{
|
||||||
Movimenti::updateMovimenti($request);
|
Movimenti::updateMovimenti($request);
|
||||||
return redirect(route('movimenti'));
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function deleteMovimenti(Request $request)
|
public function deleteMovimenti(Request $request)
|
||||||
{
|
{
|
||||||
Movimenti::deleteMovimento($request['id']);
|
Movimenti::deleteMovimento($request['id']);
|
||||||
return redirect(route('movimenti'));
|
return redirect()->back();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,9 @@ use App\Models\Progetti;
|
|||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Models\RigaProgetto;
|
use App\Models\RigaProgetto;
|
||||||
|
use App\Models\GenDoc;
|
||||||
use function GuzzleHttp\json_encode;
|
use function GuzzleHttp\json_encode;
|
||||||
|
use Barryvdh\DomPDF\Facade\Pdf;
|
||||||
|
|
||||||
class ProgettiController extends Controller
|
class ProgettiController extends Controller
|
||||||
{
|
{
|
||||||
@@ -52,4 +54,62 @@ class ProgettiController extends Controller
|
|||||||
//dd($righe);
|
//dd($righe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function chiudiProgetto(Request $id)
|
||||||
|
{
|
||||||
|
Progetti::chiudiProgetto($id['id']);
|
||||||
|
return redirect(Route('progetti'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function riapriProgetto(Request $id)
|
||||||
|
{
|
||||||
|
Progetti::riapriProgetto($id['id']);
|
||||||
|
return redirect(Route('progetti'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function stampaPDFProgetto(Request $id)
|
||||||
|
{
|
||||||
|
$progetto_id=$id['id'];
|
||||||
|
$progetto = Progetti::getProgettoById($progetto_id);
|
||||||
|
$righe = RigaProgetto::getRigheProgetto($progetto_id);
|
||||||
|
$costo_tot=RigaProgetto::getCostoRighe($progetto_id);
|
||||||
|
$pdf=Pdf::loadview('progetti.PDF.scheda',['dettaglio'=>$progetto,'righe'=>$righe, 'tot'=>$costo_tot]);
|
||||||
|
return $pdf->stream();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function documentoProgetto(Request $request)
|
||||||
|
{
|
||||||
|
$documenti = GenDoc::listDocument(3,$request->input('entity_id'));
|
||||||
|
|
||||||
|
return view('conti.documenti.insert', [
|
||||||
|
'id'=>$request->input('entity_id'),
|
||||||
|
'entity'=>$request->input('entity'),
|
||||||
|
'documenti'=>$documenti
|
||||||
|
]);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function modificaProgetto(Request $data)
|
||||||
|
{
|
||||||
|
// funzione di modifica del progetto (form inserimento modificato in js)
|
||||||
|
Progetti::where('id', $data['id'])
|
||||||
|
->update([
|
||||||
|
'nome' => $data['nome'],
|
||||||
|
'descrizione' => $data['descrizione'],
|
||||||
|
//'data_creazione'=>$data['data_creazione'],
|
||||||
|
'data_inizio'=>$data['data_inizio'],
|
||||||
|
'data_fine'=>$data['data_fine'],
|
||||||
|
'fk_user'=>$data['coordinatore'],
|
||||||
|
'budget'=>$data['budget'],
|
||||||
|
'stato'=>$data['stato'],
|
||||||
|
'note' =>$data['note'],
|
||||||
|
]);
|
||||||
|
return redirect()->back();
|
||||||
|
/* dd($data);*/
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getProgettobyId(Request $id)
|
||||||
|
{
|
||||||
|
return json_encode(Progetti::getProgettoById($id['id']));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
10
app/Http/Controllers/RivistaController.php
Normal file
10
app/Http/Controllers/RivistaController.php
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class RivistaController extends Controller
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
@@ -39,7 +39,7 @@ class TagController extends Controller
|
|||||||
|
|
||||||
public function apiList()
|
public function apiList()
|
||||||
{
|
{
|
||||||
$tags=tag::getList();
|
$tags=tag::getApiList();
|
||||||
return json_encode($tags);
|
return json_encode($tags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
40
app/Http/Controllers/TaskController.php
Normal file
40
app/Http/Controllers/TaskController.php
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Models\Task;
|
||||||
|
|
||||||
|
class TaskController extends Controller
|
||||||
|
{
|
||||||
|
//
|
||||||
|
public function listTask()
|
||||||
|
{
|
||||||
|
return Task::where('termine_il','>=', now())->get();
|
||||||
|
// debug
|
||||||
|
// return get_class_methods($this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function Task()
|
||||||
|
{
|
||||||
|
return view('tasks.list',['tasks'=>$this->listTask()]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function newTask(Request $data)
|
||||||
|
{
|
||||||
|
Task::create([
|
||||||
|
'titolo'=>$data['titolo'],
|
||||||
|
'descrizione'=>$data['descrizione'],
|
||||||
|
'assegnato_a'=>$data['assegnato_a'],
|
||||||
|
'creato_da'=>$data['creato_da'],
|
||||||
|
'termine_il'=>$data['termine_il'],
|
||||||
|
'creato_il'=>$data['creato_il'],
|
||||||
|
'chiuso_il'=>$data['chiuso_il'],
|
||||||
|
'stato'=>$data['stato'],
|
||||||
|
]);
|
||||||
|
return redirect()->back();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -4,58 +4,106 @@ namespace App\Http\Controllers;
|
|||||||
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Junges\ACL\Models\Group;
|
// use Junges\ACL\Models\Group;
|
||||||
use Junges\ACL\Models\Permission;
|
// use Junges\ACL\Models\Permission;
|
||||||
|
use Spatie\Permission\Models\Role;
|
||||||
|
use Spatie\Permission\Models\Permission;
|
||||||
|
use App\Models\User;
|
||||||
|
|
||||||
class Utenti extends Controller
|
class Utenti extends Controller
|
||||||
{
|
{
|
||||||
//
|
|
||||||
public function nuovoGruppo()
|
public function createRole($ruolo)
|
||||||
{
|
{
|
||||||
return view('vendor.junges.form_addGroup',['gruppi'=>Utenti::getGruppi()]);
|
$role=Role::create(['name'=>$ruolo]);
|
||||||
|
return json_encode(Role::all()->pluck('name'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function saveNuovoGruppo(Request $request)
|
function createPermission($permesso){
|
||||||
{
|
$permission=Permission::create(['name'=>$permesso]);
|
||||||
$group=Group::create(['name' => $request['gruppo'],'description'=>$request['descrizione']]);
|
return json_encode(Permission::all()->pluck('name'));
|
||||||
return view('vendor.junges.form_addGroup',['gruppi'=>Utenti::getGruppi()]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function nuovoPermesso()
|
function userClass() {
|
||||||
{
|
$user=new User();
|
||||||
return view('vendor.junges.form_addPermission',['permessi'=>Utenti::getPermessi()]);
|
return get_class_methods($user);
|
||||||
}
|
|
||||||
public function saveNuovoPermesso(Request $request)
|
|
||||||
{
|
|
||||||
$group=Permission::create(['name' => $request['permesso'],'description'=>$request['descrizione']]);
|
|
||||||
return view('vendor.junges.form_addPermission',['permessi'=>Utenti::getPermessi()]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getPermessi()
|
// post del create user
|
||||||
{
|
function createUser(Request $params){
|
||||||
return DB::table('permissions')->orderBy('name')->get();
|
User::addUser($params);
|
||||||
|
return redirect('/admin/users/new');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getGruppi()
|
// mostra il form della creazione dell'utente
|
||||||
{
|
function addUser(){
|
||||||
return DB::table('groups')->orderBy('name')->get();
|
$roles = Role::all();
|
||||||
|
$users = User::all();
|
||||||
|
return view('users.create',['ruoli'=>$roles,'users'=>$users]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function vw_assignToGroup()
|
function listUser(){
|
||||||
{
|
$users = User::all();
|
||||||
return view('vendor.junges.assignPermissionToGroup',[
|
return view('users.list',['users'=>$users]);
|
||||||
'permessi'=>Utenti::getPermessi(),
|
|
||||||
'gruppi'=>Utenti::getGruppi(),
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function assignPermissionToGroup(Request $request)
|
function getUsers(){
|
||||||
|
return User::getUsers();
|
||||||
|
}
|
||||||
|
|
||||||
|
function listRoles(){
|
||||||
|
$roles = Role::all();
|
||||||
|
return $roles;
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteUser($id) {
|
||||||
|
User::destroy($id);
|
||||||
|
|
||||||
|
return redirect('/admin/users/new');
|
||||||
|
}
|
||||||
|
|
||||||
|
function givePermissionToUser()
|
||||||
{
|
{
|
||||||
$group=Group::findByName($request['gruppo']);
|
$users=User::all();
|
||||||
$group->assignPermission($request['permesso']);
|
$permissions=Permission::all();
|
||||||
return view('vendor.junges.assignPermissionToGroup',[
|
return view('users.assignperm',['users'=>$users,'permissions'=>$permissions]);
|
||||||
'permessi'=>Utenti::getPermessi(),
|
}
|
||||||
'gruppi'=>Utenti::getGruppi(),
|
|
||||||
]);
|
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');
|
||||||
|
}
|
||||||
|
|
||||||
|
function giveRoleToUser()
|
||||||
|
{
|
||||||
|
$users=User::all();
|
||||||
|
$roles=Role::all();
|
||||||
|
return view('users.assignrole',['users'=>$users,'roles'=>$roles]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function assignRole(Request $request)
|
||||||
|
{
|
||||||
|
//$user=User::getUserbyId($request['user']);
|
||||||
|
$user=User::findOrFail($request['user']);
|
||||||
|
$user->assignRole($request['role']);
|
||||||
|
return redirect('/admin/users/giverole');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -63,6 +63,8 @@ class Kernel extends HttpKernel
|
|||||||
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
|
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
|
||||||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
||||||
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
|
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
|
||||||
|
'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,
|
||||||
|
'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class,
|
||||||
|
'role_or_permission' => \Spatie\Permission\Middlewares\RoleOrPermissionMiddleware::class,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
39
app/Mail/myTestEmail.php
Normal file
39
app/Mail/myTestEmail.php
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Mail;
|
||||||
|
|
||||||
|
use Illuminate\Bus\Queueable;
|
||||||
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
|
use Illuminate\Mail\Mailable;
|
||||||
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
|
|
||||||
|
class myTestEmail extends Mailable
|
||||||
|
{
|
||||||
|
use Queueable, SerializesModels;
|
||||||
|
public $email;
|
||||||
|
/**
|
||||||
|
* Create a new message instance.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function __construct($email)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
$this->email=$email;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build the message.
|
||||||
|
*
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function build()
|
||||||
|
{
|
||||||
|
$name='none';
|
||||||
|
return $this
|
||||||
|
->subject('Email di Test')
|
||||||
|
->markdown('mail.test',['name' => $name]);
|
||||||
|
}
|
||||||
|
}
|
||||||
11
app/Models/Associazione.php
Normal file
11
app/Models/Associazione.php
Normal 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;
|
||||||
|
}
|
||||||
55
app/Models/Avviso.php
Normal file
55
app/Models/Avviso.php
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
|
||||||
|
class Avviso extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
protected $fillable=['avviso','creato_il', 'creato_da', 'urgente'];
|
||||||
|
|
||||||
|
public static function newAvviso($data)
|
||||||
|
{
|
||||||
|
self::create([
|
||||||
|
'avviso'=>$data['avviso'],
|
||||||
|
'creato_da'=>$data['creato_da'],
|
||||||
|
'creato_il'=>date('Y-m-d'),
|
||||||
|
'urgente'=>$data['urgente'],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getAvvisi()
|
||||||
|
{
|
||||||
|
return self::all();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getActualAvvisi()
|
||||||
|
{
|
||||||
|
return self::where('creato_il','>=', now()->subMonth())->get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getHAstatus()
|
||||||
|
{
|
||||||
|
/*$response = Http::withHeaders([
|
||||||
|
'Authorization'=>' Bearer '.env('HA_TOKEN'),
|
||||||
|
'Content-Type'=>' application/json',
|
||||||
|
])->get('https://ha.lavorain.cloud/api/services',['domain']);
|
||||||
|
return $response;
|
||||||
|
// return dd($response);*/
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getAnsaNews()
|
||||||
|
{
|
||||||
|
/*$xmlstring = Http::get('https://www.ansa.it/trentino/notizie/trentino_rss.xml');
|
||||||
|
$xml_file = simplexml_load_string($xmlstring);
|
||||||
|
$json = json_encode($xml_file );
|
||||||
|
$array = json_decode($json,TRUE);
|
||||||
|
dd($array); // return $array;*/
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,17 +17,53 @@ class Categorie extends Model
|
|||||||
|
|
||||||
public static function list()
|
public static function list()
|
||||||
{
|
{
|
||||||
return DB::table('categories')->orderBy('cat_name')->get();
|
return self::all();
|
||||||
|
}
|
||||||
|
public static function listCategorieAPI()
|
||||||
|
{
|
||||||
|
// return self::select('cat_name')->pluck('cat_name');
|
||||||
|
return Categorie::orderBy('cat_name')->get();
|
||||||
|
}
|
||||||
|
public static function listSpesa()
|
||||||
|
{
|
||||||
|
return DB::table('categories')->where('cat_uscita','=',1)->orderBy('cat_name')->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function inserisci($name){
|
public static function listEntrata()
|
||||||
return DB::table('categories')->insert(['cat_name'=> $name]);
|
{
|
||||||
|
return DB::table('categories')->where('cat_entrata','=',1)->orderBy('cat_name')->get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function inserisci($request){
|
||||||
|
if ($request['cat_entrata']==='on')
|
||||||
|
{
|
||||||
|
$entrata=1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$entrata=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($request['cat_uscita']==='on')
|
||||||
|
{
|
||||||
|
$uscita=1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$uscita=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return DB::table('categories')->insert([
|
||||||
|
'cat_name'=> $request['cat_name'],
|
||||||
|
'cat_entrata'=>$entrata,
|
||||||
|
'cat_uscita'=>$uscita
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function deleteById($id){
|
public static function deleteById($id){
|
||||||
DB::table('categories')
|
DB::table('categories')
|
||||||
->where('id','=', $id)
|
->where('id','=', $id)
|
||||||
->delete();
|
->delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getById($id) {
|
public static function getById($id) {
|
||||||
@@ -36,11 +72,31 @@ class Categorie extends Model
|
|||||||
->get();
|
->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function updateNameById($id,$name) {
|
public static function updateNameById($request) {
|
||||||
|
if ($request['cat_entrata']==='on')
|
||||||
|
{
|
||||||
|
$entrata=1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$entrata=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($request['cat_uscita']==='on')
|
||||||
|
{
|
||||||
|
$uscita=1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$uscita=0;
|
||||||
|
}
|
||||||
|
|
||||||
DB::table('categories')
|
DB::table('categories')
|
||||||
->where('id','=', $id)
|
->where('id','=', $request['id'])
|
||||||
->update([
|
->update([
|
||||||
'cat_name' => $name,
|
'cat_name' => $request['cat_name'],
|
||||||
|
'cat_entrata' => $entrata,
|
||||||
|
'cat_uscita'=>$uscita,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
43
app/Models/Contratti.php
Normal file
43
app/Models/Contratti.php
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
|
|
||||||
|
class Contratti extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
protected $fillable=[
|
||||||
|
'numero',
|
||||||
|
'nome',
|
||||||
|
'datainizio',
|
||||||
|
'datatermine',
|
||||||
|
'fornitore',
|
||||||
|
'tipo',
|
||||||
|
'importo',
|
||||||
|
'scadenzapagamento',
|
||||||
|
'stato',
|
||||||
|
'note',
|
||||||
|
'filename'
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
public static function storeContratto(Request $req){
|
||||||
|
/* dd($req); */
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getAllContratto(){
|
||||||
|
return self::all();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getContrattoById($id){
|
||||||
|
return DB::table('contrattis')->where('id','=',$id)->get();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -10,6 +10,12 @@ class Documenti extends Model
|
|||||||
{
|
{
|
||||||
use HasFactory;
|
use HasFactory;
|
||||||
|
|
||||||
|
|
||||||
|
protected $fillable = [
|
||||||
|
'descrizione',
|
||||||
|
'path',
|
||||||
|
];
|
||||||
|
|
||||||
public static function countDocument($id){
|
public static function countDocument($id){
|
||||||
$quanti=DB::table('documentis')
|
$quanti=DB::table('documentis')
|
||||||
->where('movimenti_id','=',$id)
|
->where('movimenti_id','=',$id)
|
||||||
@@ -17,22 +23,52 @@ class Documenti extends Model
|
|||||||
return $quanti;
|
return $quanti;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Proposta modifica {issue #5} gitea (generalizzazione del documento)
|
||||||
|
/*
|
||||||
|
public static function countDocument($id,$entity)
|
||||||
|
{
|
||||||
|
return self::where('entita','=',$entity)->where('entita_id','=',$id)->count();
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static function store($req) {
|
||||||
|
// $movimento_id=$req->input('id');
|
||||||
|
// $filename=$req->file('filename')->store('Documenti');
|
||||||
|
DB::table('documentis')
|
||||||
|
->insert([
|
||||||
|
// 'movimenti_id'=>$movimento_id,
|
||||||
|
'descrizione'=>$req->input('descrizione'),
|
||||||
|
'path'=>$req->input('path'),
|
||||||
|
// 'filename'=>$filename,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Proposta modifica {issue #5} gitea (generalizzazione del documento)
|
||||||
|
/*
|
||||||
public static function store($req) {
|
public static function store($req) {
|
||||||
$movimento_id=$req->input('id');
|
$movimento_id=$req->input('id');
|
||||||
$filename=$req->file('filename')->store('Documenti');
|
$filename=$req->file('filename')->store('Documenti');
|
||||||
DB::table('documentis')
|
self::create([
|
||||||
->insert([
|
'entità'=>$req['entita'], // aggiunto per determinare il tipo di entità a cui si riferisce il documento
|
||||||
'movimenti_id'=>$movimento_id,
|
'entita_id'=>$req['entita_id'], // aggiunto per identificare il record al quale associare il documento (al posto di id_movimento)
|
||||||
'descrizione'=>$req->input('descrizione'),
|
'descrizione'=>$req['descrizione'],
|
||||||
'filename'=>$filename,
|
'filename'=>$filename
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
public static function getList($id)
|
public static function getList($id)
|
||||||
{
|
{
|
||||||
return DB::table('documentis')
|
return DB::table('documentis')
|
||||||
->where('movimenti_id','=',$id)
|
->where('movimenti_id','=', $id)
|
||||||
->get();
|
->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Proposta modifica issue {#5 gitea} (generalizzazione del documento)
|
||||||
|
/*
|
||||||
|
public static function getList($id,$entity)
|
||||||
|
{
|
||||||
|
self::where('entita','=',$entity)->where('entita_id','=',$id)->get();
|
||||||
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ class Event extends Model
|
|||||||
|
|
||||||
|
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
'title', 'start', 'end'
|
'title','description', 'start', 'end'
|
||||||
];
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
51
app/Models/GenDoc.php
Normal file
51
app/Models/GenDoc.php
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use App\Models\Documenti;
|
||||||
|
|
||||||
|
class GenDoc extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
// DocumentiGenerali
|
||||||
|
|
||||||
|
public static function saveDocument($data){
|
||||||
|
|
||||||
|
$filename=$data->file('filename')->store(self::getEntityFolder($data['entity']));
|
||||||
|
DB::table('gen_docs')
|
||||||
|
->insert([
|
||||||
|
'entity'=>$data['entity'],
|
||||||
|
'entity_id'=>($data['entity_id'] ?? 0 ),
|
||||||
|
'descrizione'=>$data['descrizione'],
|
||||||
|
'filename'=>$filename,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function listDocument($entity,$entity_id = 0)
|
||||||
|
{
|
||||||
|
// Ritorna la lista dei documenti in base all'entità e al rispettivo id
|
||||||
|
return DB::table('gen_docs')->where('entity','=',$entity)->where('entity_id','=',$entity_id)->get(); //nuova funzione
|
||||||
|
// return DB::table('documentis')->where('movimenti_id','=', $entity_id)->get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function countDocument($entity,$entity_id = 0){
|
||||||
|
// Conta i documenti inseriti per la determinata entità e id
|
||||||
|
$quanti=DB::table('gen_docs')
|
||||||
|
->where('entity','=',$entity)
|
||||||
|
->andWhere('entity_id','=',$entity_id)
|
||||||
|
->count();
|
||||||
|
return $quanti;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function getEntityFolder($id)
|
||||||
|
{
|
||||||
|
$entita = Documenti::where('id',$id)->pluck('path');
|
||||||
|
|
||||||
|
return $entita[0];
|
||||||
|
//return $entita->path;
|
||||||
|
}
|
||||||
|
}
|
||||||
11
app/Models/Gruppi.php
Normal file
11
app/Models/Gruppi.php
Normal 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;
|
||||||
|
}
|
||||||
26
app/Models/HomeAssistantAPI.php
Normal file
26
app/Models/HomeAssistantAPI.php
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
|
||||||
|
class HomeAssistantAPI extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
public static function getSensorState($sensor)
|
||||||
|
{
|
||||||
|
$result=Http::withHeaders(
|
||||||
|
[
|
||||||
|
'Authorization'=>'Bearer '.env('HA_TOKEN'),
|
||||||
|
'Content-Type'=>'application/json',
|
||||||
|
]
|
||||||
|
)->get('https://ha.lavorain.cloud/api/states/'.$sensor);
|
||||||
|
|
||||||
|
return json_decode($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -10,15 +10,37 @@ use Rap2hpoutre\FastExcel\FastExcel;
|
|||||||
class Movimenti extends Model
|
class Movimenti extends Model
|
||||||
{
|
{
|
||||||
use HasFactory;
|
use HasFactory;
|
||||||
|
protected $dates = ['mov_data'];
|
||||||
|
protected $casts = [ 'mov_data'=>'datetime'];
|
||||||
|
|
||||||
|
public static $query='SELECT
|
||||||
|
a.id,
|
||||||
|
a.mov_data,
|
||||||
|
a.mov_importo,
|
||||||
|
a.mov_descrizione,
|
||||||
|
c.cat_name,
|
||||||
|
t.tag_name,
|
||||||
|
(SELECT Count(entity_id) as quanti FROM gen_docs WHERE entity=0 AND entity_id = a.id) as quanti
|
||||||
|
FROM movimentis as a
|
||||||
|
JOIN tags as t ON a.mov_fk_tags=t.id
|
||||||
|
JOIN categories as c ON a.mov_fk_categoria=c.id';
|
||||||
|
|
||||||
public static function getList() {
|
public static function getList() {
|
||||||
return DB::table('movimentis')
|
|
||||||
->join('categories','movimentis.mov_fk_categoria','=','categories.id')
|
|
||||||
->join('tags','movimentis.mov_fk_tags','=','tags.id')
|
return DB::select(DB::raw(
|
||||||
->leftJoin('documentis', 'movimenti_id','=','movimentis.id')
|
'SELECT
|
||||||
->select('movimentis.id','mov_data','mov_descrizione','mov_importo','cat_name','tag_name', DB::raw('Count(movimenti_id) as quanti'))
|
a.id,
|
||||||
->groupBy('movimentis.id','mov_data','mov_descrizione','mov_importo','cat_name','tag_name')
|
a.mov_data,
|
||||||
->get();
|
a.mov_importo,
|
||||||
|
a.mov_descrizione,
|
||||||
|
c.cat_name,
|
||||||
|
t.tag_name,
|
||||||
|
(SELECT Count(entity_id) as quanti FROM gen_docs WHERE entity=0 AND entity_id = a.id) as quanti
|
||||||
|
FROM movimentis as a
|
||||||
|
JOIN tags as t ON a.mov_fk_tags=t.id
|
||||||
|
JOIN categories as c ON a.mov_fk_categoria=c.id'
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getSaldo($date) {
|
public static function getSaldo($date) {
|
||||||
@@ -112,74 +134,101 @@ class Movimenti extends Model
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static function listByCatMonth($month,$cat,$year) {
|
public static function listByCatMonth($month,$cat,$year) {
|
||||||
return DB::table('movimentis')
|
return DB::select(DB::raw('SELECT
|
||||||
->join('categories','movimentis.mov_fk_categoria','=','categories.id')
|
a.id,
|
||||||
->join('tags','movimentis.mov_fk_tags','=','tags.id')
|
a.mov_data,
|
||||||
->where('movimentis.mov_fk_categoria','=',$cat)
|
a.mov_importo,
|
||||||
->whereMonth('mov_data','=',$month)
|
a.mov_descrizione,
|
||||||
->whereYear('mov_data', '=' , $year)
|
c.cat_name,
|
||||||
->leftJoin('documentis', 'movimenti_id','=','movimentis.id')
|
t.tag_name,
|
||||||
->select('movimentis.id','mov_data','mov_descrizione','mov_importo','cat_name','tag_name', DB::raw('Count(movimenti_id) as quanti'))
|
(SELECT Count(entity_id) as quanti FROM gen_docs WHERE entity=0 AND entity_id = a.id) as quanti
|
||||||
->groupBy('movimentis.id','mov_data','mov_descrizione','mov_importo','cat_name','tag_name')
|
FROM movimentis as a
|
||||||
->get();
|
JOIN tags as t ON a.mov_fk_tags=t.id
|
||||||
|
JOIN categories as c ON a.mov_fk_categoria=c.id
|
||||||
|
WHERE Month(a.mov_data)='.$month.' AND Year(a.mov_data)='.$year.' AND a.mov_fk_categoria='.$cat
|
||||||
|
));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function listByCategory($cat) {
|
public static function listByCategory($cat) {
|
||||||
return DB::table('movimentis')
|
return DB::select(DB::raw('SELECT
|
||||||
->join('categories','movimentis.mov_fk_categoria','=','categories.id')
|
a.id,
|
||||||
->join('tags','movimentis.mov_fk_tags','=','tags.id')
|
a.mov_data,
|
||||||
->where('movimentis.mov_fk_categoria','=',$cat)
|
a.mov_importo,
|
||||||
->leftJoin('documentis', 'movimenti_id','=','movimentis.id')
|
a.mov_descrizione,
|
||||||
->select('movimentis.id','mov_data','mov_descrizione','mov_importo','cat_name','tag_name', DB::raw('Count(movimenti_id) as quanti'))
|
c.cat_name,
|
||||||
->groupBy('movimentis.id','mov_data','mov_descrizione','mov_importo','cat_name','tag_name')
|
t.tag_name,
|
||||||
->get();
|
(SELECT Count(entity_id) as quanti FROM gen_docs WHERE entity=0 AND entity_id = a.id) as quanti
|
||||||
|
FROM movimentis as a
|
||||||
|
JOIN tags as t ON a.mov_fk_tags=t.id
|
||||||
|
JOIN categories as c ON a.mov_fk_categoria=c.id
|
||||||
|
WHERE a.mov_fk_categoria = '.$cat ));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getByTag($tag) {
|
public static function getByTag($tag) {
|
||||||
return DB::table('movimentis')
|
return DB::select(DB::raw('SELECT
|
||||||
->where('mov_fk_tags','=',$tag)
|
a.id,
|
||||||
->join('categories','movimentis.mov_fk_categoria','=','categories.id')
|
a.mov_data,
|
||||||
->join('tags','movimentis.mov_fk_tags','=','tags.id')
|
a.mov_importo,
|
||||||
->leftJoin('documentis', 'movimenti_id','=','movimentis.id')
|
a.mov_descrizione,
|
||||||
->select('movimentis.id','mov_data','mov_descrizione','mov_importo','cat_name','tag_name', DB::raw('Count(movimenti_id) as quanti'))
|
c.cat_name,
|
||||||
->groupBy('movimentis.id','mov_data','mov_descrizione','mov_importo','cat_name','tag_name')
|
t.tag_name,
|
||||||
->get();
|
(SELECT Count(entity_id) as quanti FROM gen_docs WHERE entity=0 AND entity_id = a.id) as quanti
|
||||||
|
FROM movimentis as a
|
||||||
|
JOIN tags as t ON a.mov_fk_tags=t.id
|
||||||
|
JOIN categories as c ON a.mov_fk_categoria=c.id
|
||||||
|
WHERE a.mov_fk_tags = '.$tag ));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function importEstrattoIng($filename)
|
public static function importEstrattoIng($filename)
|
||||||
{
|
{
|
||||||
$inputPath='/var/www/html/bubofamily/public/storage/'.$filename;
|
$inputPath='/var/www/html/bubofamily/public/storage/'.$filename;
|
||||||
$outputPath='/var/www/html/bubofamily/public/'.$filename;
|
// $outputPath='/var/www/html/bubofamily/public/'.$filename.'.csv';
|
||||||
|
$outputPath = $inputPath.'.csv';
|
||||||
rename($inputPath,$outputPath);
|
rename($inputPath,$outputPath);
|
||||||
|
$collection = (new FastExcel)->configureCsv(";")->import($outputPath, function ($line){
|
||||||
$collection = (new FastExcel)->import($filename, function ($line){
|
if($line['DATA VALUTA'])
|
||||||
if($line['Data valuta'])
|
|
||||||
{
|
{
|
||||||
|
if($line['ENTRATE']!=null)
|
||||||
|
{
|
||||||
|
$importo = $line['ENTRATE'];
|
||||||
|
} elseif($line['USCITE']!=null)
|
||||||
|
{
|
||||||
|
$importo = $line['USCITE'];
|
||||||
|
}
|
||||||
|
$euro=str_replace(',','.',str_replace('+','',str_replace('.','', $importo)));
|
||||||
|
list($giorno,$mese,$anno) = explode('/',$line['DATA VALUTA']);
|
||||||
|
$data="$anno-$mese-$giorno";
|
||||||
self::insEntrata([
|
self::insEntrata([
|
||||||
'mov_data'=>self::dateFormat(0,$line['Data valuta']),
|
'mov_data'=>self::dateFormat(0,$line['DATA VALUTA']),
|
||||||
'mov_fk_categoria'=>1,
|
'mov_fk_categoria'=>1,
|
||||||
'mov_descrizione'=>$line['Descrizione operazione'],
|
'mov_descrizione'=>$line['DESCRIZIONE OPERAZIONE'],
|
||||||
'mov_importo'=>trim(str_replace(',','.',(str_replace('.','',str_replace('€', '', $line['Importo']))))),
|
'mov_importo'=>$euro,
|
||||||
'mov_fk_tags'=>1,
|
'mov_fk_tags'=>1,
|
||||||
'userid'=>1,
|
'userid'=>1,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
unlink($outputPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function importEstrattoCR($filename)
|
public static function importEstrattoCR($filename)
|
||||||
{
|
{
|
||||||
$inputPath='/var/www/html/bubofamily/public/storage/'.$filename;
|
$inputPath='/var/www/html/bubofamily/public/storage/'.$filename;
|
||||||
$outputPath='/var/www/html/bubofamily/public/'.$filename.'.csv';
|
// $outputPath='/var/www/html/bubofamily/public/'.$filename.'.csv';
|
||||||
|
$outputPath = $inputPath.'.csv';
|
||||||
rename($inputPath,$outputPath);
|
rename($inputPath,$outputPath);
|
||||||
|
|
||||||
$collection = (new FastExcel)->configureCsv(';')->import($filename.'.csv', function ($line){
|
$collection = (new FastExcel)->configureCsv(';')->import($outputPath, function ($line){
|
||||||
if($line['VALUTA'])
|
if($line['VALUTA'])
|
||||||
{
|
{
|
||||||
if($line['DARE']<>'')
|
if($line['DARE']<>'')
|
||||||
{
|
{
|
||||||
$dati=[
|
$dati=[
|
||||||
'mov_data'=>self::dateFormat(0,$line['VALUTA']),
|
'mov_data'=>self::dateFormat(0,$line['VALUTA']),
|
||||||
|
// date_format(date_create($movimento->mov_data),'d/m/Y'
|
||||||
|
// 'mov_data'=>date_format(date_create($line['VALUTA']),'Y-m-d'),
|
||||||
'mov_fk_categoria'=>1,
|
'mov_fk_categoria'=>1,
|
||||||
'mov_descrizione'=>$line['DESCRIZIONE OPERAZIONE'],
|
'mov_descrizione'=>$line['DESCRIZIONE OPERAZIONE'],
|
||||||
'mov_importo'=>'-'.trim(str_replace(',','.',(str_replace('.','',$line['DARE'])))),
|
'mov_importo'=>'-'.trim(str_replace(',','.',(str_replace('.','',$line['DARE'])))),
|
||||||
@@ -191,6 +240,7 @@ class Movimenti extends Model
|
|||||||
{
|
{
|
||||||
$dati=[
|
$dati=[
|
||||||
'mov_data'=>self::dateFormat(0,$line['VALUTA']),
|
'mov_data'=>self::dateFormat(0,$line['VALUTA']),
|
||||||
|
//'mov_data'=>date_format(date_create($line['VALUTA']),'Y-m-d'),
|
||||||
'mov_fk_categoria'=>1,
|
'mov_fk_categoria'=>1,
|
||||||
'mov_descrizione'=>$line['DESCRIZIONE OPERAZIONE'],
|
'mov_descrizione'=>$line['DESCRIZIONE OPERAZIONE'],
|
||||||
'mov_importo'=>trim(str_replace(',','.',(str_replace('.','',$line['AVERE'])))),
|
'mov_importo'=>trim(str_replace(',','.',(str_replace('.','',$line['AVERE'])))),
|
||||||
@@ -201,6 +251,7 @@ class Movimenti extends Model
|
|||||||
self::insEntrata($dati);
|
self::insEntrata($dati);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
unlink($outputPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getYearsFromMovimenti()
|
public static function getYearsFromMovimenti()
|
||||||
@@ -213,17 +264,37 @@ class Movimenti extends Model
|
|||||||
|
|
||||||
private static function dateFormat($type,$string)
|
private static function dateFormat($type,$string)
|
||||||
{
|
{
|
||||||
|
// $string=(string)$string;
|
||||||
if($type)
|
if($type)
|
||||||
{
|
{
|
||||||
$string=$string->format('Y-m-d');
|
// $string=$string->format('Y-m-d');
|
||||||
list($year,$month,$day) = explode('-',$string);
|
list($year,$month,$day) = explode('-',$string);
|
||||||
return $day.'/'.$month.'/'.$year;
|
return $day.'/'.$month.'/'.$year;
|
||||||
} else {
|
} else {
|
||||||
$string=$string->format('d/m/Y');
|
// $string=$string->format('d/m/Y');
|
||||||
list($day,$month,$year) =explode('/',$string);
|
list($day,$month,$year) =explode('/',$string);
|
||||||
return $year.'-'.$month.'-'.$day;
|
return $year.'-'.$month.'-'.$day;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,4 +54,27 @@ class Progetti extends Model
|
|||||||
DB::table('progettis')->delete($progetto_id);
|
DB::table('progettis')->delete($progetto_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function chiudiProgetto($progetto_id)
|
||||||
|
{
|
||||||
|
// chiude il progetto e lo rende non cancellabile e non più editabile
|
||||||
|
// potrà solo essere esportato in PDF
|
||||||
|
DB::table('progettis')
|
||||||
|
->where('id','=', $progetto_id)
|
||||||
|
->update([
|
||||||
|
'stato'=>'chiuso',
|
||||||
|
'data_fine'=>date('Y-m-d'),
|
||||||
|
]);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function riapriProgetto($progetto_id)
|
||||||
|
{
|
||||||
|
DB::table('progettis')
|
||||||
|
->where('id','=', $progetto_id)
|
||||||
|
->update([
|
||||||
|
'stato'=>'aperto',
|
||||||
|
'data_fine'=>null,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
11
app/Models/Rivista.php
Normal file
11
app/Models/Rivista.php
Normal 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;
|
||||||
|
}
|
||||||
46
app/Models/Task.php
Normal file
46
app/Models/Task.php
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class Task extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
protected $fillable=['titolo','descrizione','creato_da','assegnato_a','creato_il','termine_il','chiuso_il','stato'];
|
||||||
|
|
||||||
|
public function getAllTasks()
|
||||||
|
{
|
||||||
|
return self::all();
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public static function getTaskAssignedToUser($userid)
|
||||||
|
{
|
||||||
|
return self::where('assegnato_a',$userid)->where('termine_il','>=', now())->get();
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public static function getTaskAssignedByUser($userid)
|
||||||
|
{
|
||||||
|
return self::where('creato_da',$userid)->get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function saveTask($collection)
|
||||||
|
{
|
||||||
|
self::create(
|
||||||
|
[
|
||||||
|
'titolo' => $collection['titolo'],
|
||||||
|
'descrizione'=>$collection['descrizione'],
|
||||||
|
'creato_da'=>$collection['creato_da'],
|
||||||
|
'assegnato_a'=>$collection['assegnato_a'],
|
||||||
|
'creato_il'=>date('Y-m-d'),
|
||||||
|
'termine_il'=>$collection['termine_il'],
|
||||||
|
'stato'=>'Aperto',
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -2,21 +2,18 @@
|
|||||||
|
|
||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
use Illuminate\Contracts\Auth\MustVerifyEmail;
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
|
||||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||||
use Illuminate\Notifications\Notifiable;
|
use Illuminate\Notifications\Notifiable;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Facades\Hash;
|
||||||
use Laravel\Sanctum\HasApiTokens;
|
use Laravel\Sanctum\HasApiTokens;
|
||||||
//use LdapRecord\Laravel\Auth\Authenticatable;
|
use Spatie\Permission\Traits\HasRoles;
|
||||||
use LdapRecord\Laravel\Auth\AuthenticatesWithLdap;
|
use Illuminate\Foundation\Auth\Access\Authorizable;
|
||||||
use Junges\ACL\Concerns\HasGroups;
|
|
||||||
|
|
||||||
|
|
||||||
class User extends Authenticatable
|
class User extends Authenticatable
|
||||||
{
|
{
|
||||||
use HasApiTokens, HasFactory, Notifiable, AuthenticateswithLdap, HasGroups, SoftDeletes;
|
use HasApiTokens, HasFactory, Notifiable, HasRoles,Authorizable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The attributes that are mass assignable.
|
* The attributes that are mass assignable.
|
||||||
@@ -27,6 +24,7 @@ class User extends Authenticatable
|
|||||||
'name',
|
'name',
|
||||||
'email',
|
'email',
|
||||||
'password',
|
'password',
|
||||||
|
'user_role',
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -48,6 +46,8 @@ class User extends Authenticatable
|
|||||||
'email_verified_at' => 'datetime',
|
'email_verified_at' => 'datetime',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
protected $guard_name = 'web';
|
||||||
|
|
||||||
public function getLdapDomainColumn()
|
public function getLdapDomainColumn()
|
||||||
{
|
{
|
||||||
return 'domain';
|
return 'domain';
|
||||||
@@ -66,13 +66,22 @@ class User extends Authenticatable
|
|||||||
|
|
||||||
public static function getUserById($id)
|
public static function getUserById($id)
|
||||||
{
|
{
|
||||||
return DB::table('users')->where('id','=',$id)->get();
|
return DB::table('users')->where('id','=',$id)->first();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getUsers()
|
public static function getUsers()
|
||||||
{
|
{
|
||||||
return DB::table('users')->orderBy('name')->get();
|
return DB::table('users')->orderBy('name')->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Aggiunge un utente e assegna un ruolo
|
||||||
|
public static function addUser($params)
|
||||||
|
{
|
||||||
|
self::create([
|
||||||
|
'name'=>$params['name'],
|
||||||
|
'email'=>$params['email'],
|
||||||
|
'password'=>Hash::make($params['password']),
|
||||||
|
])->assignRole($params['role']);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,4 +30,5 @@ class contatto extends Model
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,13 @@ class tag extends Model
|
|||||||
return DB::table('tags')->orderBy('tag_name')->get();
|
return DB::table('tags')->orderBy('tag_name')->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function getApiList()
|
||||||
|
{
|
||||||
|
//return self::select('tag_name')->pluck('tag_name');
|
||||||
|
return tag::orderBy('tag_name')->get();
|
||||||
|
// return self::select('tag_name');
|
||||||
|
}
|
||||||
|
|
||||||
public static function inserisci($param) {
|
public static function inserisci($param) {
|
||||||
DB::table('tags')->insert(['tag_name'=> $param['tag_name']]);
|
DB::table('tags')->insert(['tag_name'=> $param['tag_name']]);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,5 +26,10 @@ class AuthServiceProvider extends ServiceProvider
|
|||||||
$this->registerPolicies();
|
$this->registerPolicies();
|
||||||
|
|
||||||
//
|
//
|
||||||
|
Gate::before(function ($user, $ability) {
|
||||||
|
if ($user->hasRole('admin')) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
31
app/View/Components/Widget/Avvisi.php
Normal file
31
app/View/Components/Widget/Avvisi.php
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\View\Components\Widget;
|
||||||
|
|
||||||
|
use Illuminate\View\Component;
|
||||||
|
|
||||||
|
class Avvisi extends Component
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Create a new component instance.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
// public $avvisi ="";
|
||||||
|
|
||||||
|
public function __construct(public array $avvisi)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the view / contents that represent the component.
|
||||||
|
*
|
||||||
|
* @return \Illuminate\Contracts\View\View|\Closure|string
|
||||||
|
*/
|
||||||
|
public function render():View
|
||||||
|
{
|
||||||
|
return view('components.widget.avvisi', ['avvisi'=>$this->avvisi]);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,24 +8,30 @@
|
|||||||
],
|
],
|
||||||
"license" : "MIT",
|
"license" : "MIT",
|
||||||
"require" : {
|
"require" : {
|
||||||
"php": "^7.3|^8.0",
|
"php": "^7.3|^8.0|^8.3",
|
||||||
"barryvdh/laravel-dompdf": "^2.0",
|
"barryvdh/laravel-dompdf": "^2.0",
|
||||||
|
"creativeorange/gravatar": "^1.0",
|
||||||
"directorytree/ldaprecord": "^2.9",
|
"directorytree/ldaprecord": "^2.9",
|
||||||
"directorytree/ldaprecord-laravel": "^2.5",
|
|
||||||
"fruitcake/laravel-cors": "^2.0",
|
"fruitcake/laravel-cors": "^2.0",
|
||||||
|
"google/apiclient": "^2.15.0",
|
||||||
"guzzlehttp/guzzle": "^7.0.1",
|
"guzzlehttp/guzzle": "^7.0.1",
|
||||||
|
"jeroennoten/laravel-adminlte": "^3.9",
|
||||||
"laravel-notification-channels/telegram": "^2.0",
|
"laravel-notification-channels/telegram": "^2.0",
|
||||||
"laravel/framework": "^8.75",
|
"laravel/framework": "^8.75",
|
||||||
"laravel/sanctum": "^2.11",
|
"laravel/sanctum": "^2.11",
|
||||||
"laravel/tinker": "^2.5",
|
"laravel/tinker": "^2.5",
|
||||||
"laravel/ui": "^3.4",
|
"laravel/ui": "^3.4",
|
||||||
"laraveldaily/laravel-charts": "^0.1.29",
|
"laraveldaily/laravel-charts": "^0.1.29",
|
||||||
"mateusjunges/laravel-acl": "^4.2",
|
"milon/barcode": "^11.0",
|
||||||
|
"nesbot/carbon": "^2.71",
|
||||||
|
"pcloud/pcloud-php-sdk": "^3.0",
|
||||||
"rap2hpoutre/fast-excel": "^3.2",
|
"rap2hpoutre/fast-excel": "^3.2",
|
||||||
"secondtruth/startmin": "^1.1",
|
"secondtruth/startmin": "^1.1",
|
||||||
"sfneal/view-export": "^2.10",
|
"sfneal/view-export": "^2.10",
|
||||||
"snapappointments/bootstrap-select": "^1.13",
|
"snapappointments/bootstrap-select": "^1.13",
|
||||||
"spatie/laravel-backup": "^7.0",
|
"spatie/laravel-backup": "^7.0",
|
||||||
|
"spatie/laravel-google-calendar": "^3.7",
|
||||||
|
"spatie/laravel-permission": "^5.10",
|
||||||
"webklex/laravel-imap": "^2.4"
|
"webklex/laravel-imap": "^2.4"
|
||||||
},
|
},
|
||||||
"require-dev" : {
|
"require-dev" : {
|
||||||
|
|||||||
2877
composer.lock
generated
2877
composer.lock
generated
File diff suppressed because it is too large
Load Diff
106
config/acl.php
106
config/acl.php
@@ -1,106 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
return [
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Models
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| When using this package, we need to know which Eloquent Model should be used
|
|
||||||
| to retrieve your groups and permissions. Of course, it is just the basics models
|
|
||||||
| needed, but you can use whatever you like.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
'models' => [
|
|
||||||
/*
|
|
||||||
| The model you want to use as Permission model must use the MateusJunges\ACL\Traits\PermissionsTrait
|
|
||||||
*/
|
|
||||||
'permission' => Junges\ACL\Models\Permission::class,
|
|
||||||
|
|
||||||
/*
|
|
||||||
| The model you want to use as Group model must use the MateusJunges\ACL\Traits\GroupsTrait
|
|
||||||
*/
|
|
||||||
'group' => Junges\ACL\Models\Group::class,
|
|
||||||
],
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Route Model Binding
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| If you would like model binding to use a database column other than id when
|
|
||||||
| retrieving a given model class, you may override the getRouteKeyName method
|
|
||||||
| on the Eloquent model with yours. The default key used for route model binding
|
|
||||||
| in this package is the `id` database column. You can modify it by changing the
|
|
||||||
| following configuration:
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
'route_model_binding_keys' => [
|
|
||||||
'group_model' => 'id',
|
|
||||||
'permission_model' => 'id',
|
|
||||||
],
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Tables
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Specify the basics authentication tables that you are using.
|
|
||||||
| Once you required this package, the following tables are
|
|
||||||
| created by default when you run the command
|
|
||||||
|
|
|
||||||
| php artisan migrate
|
|
||||||
|
|
|
||||||
| If you want to change this tables, please keep the basic structure unchanged.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
'tables' => [
|
|
||||||
'groups' => 'groups',
|
|
||||||
'permissions' => 'permissions',
|
|
||||||
'users' => 'users',
|
|
||||||
'group_has_permissions' => 'group_has_permissions',
|
|
||||||
'model_has_permissions' => 'model_has_permissions',
|
|
||||||
'model_has_groups' => 'model_has_groups',
|
|
||||||
],
|
|
||||||
|
|
||||||
'column_names' => [
|
|
||||||
'group_pivot_key' => null,
|
|
||||||
'permission_pivot_key' => null,
|
|
||||||
'model_morph_key' => 'model_id',
|
|
||||||
'team_foreign_key' => 'team_id'
|
|
||||||
],
|
|
||||||
|
|
||||||
'teams' => false,
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Ignition Solution Suggestions
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| To enable the ignition solutions for laravel-acl, set this flag to true.
|
|
||||||
|
|
|
||||||
| The solutions will then be automatically registered with ignition if its installed.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
'offer_solutions' => false,
|
|
||||||
|
|
||||||
'register_permission_check_method' => true,
|
|
||||||
|
|
||||||
'cache' => [
|
|
||||||
/*
|
|
||||||
* All permissions are cached for 24 hours by default. If permissions or groups are updated,
|
|
||||||
* then the cache is flushed automatically.
|
|
||||||
*/
|
|
||||||
'expiration_time' => DateInterval::createFromDateString('24 hours'),
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The cache key used to store permissions.
|
|
||||||
*/
|
|
||||||
'key' => 'junges.acl.cache',
|
|
||||||
|
|
||||||
/*
|
|
||||||
* You can optionally specify a cache driver to use for permissions caching using
|
|
||||||
* store drivers listed in config/cache.php.
|
|
||||||
*/
|
|
||||||
'store' => 'default'
|
|
||||||
]
|
|
||||||
];
|
|
||||||
714
config/adminlte.php
Normal file
714
config/adminlte.php
Normal file
@@ -0,0 +1,714 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Title
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here you can change the default title of your admin panel.
|
||||||
|
|
|
||||||
|
| For detailed instructions you can look the title section here:
|
||||||
|
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Basic-Configuration
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'title' => 'Gestionale',
|
||||||
|
'title_prefix' => '',
|
||||||
|
'title_postfix' => '',
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Favicon
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here you can activate the favicon.
|
||||||
|
|
|
||||||
|
| For detailed instructions you can look the favicon section here:
|
||||||
|
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Basic-Configuration
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'use_ico_only' => false,
|
||||||
|
'use_full_favicon' => false,
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Google Fonts
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here you can allow or not the use of external google fonts. Disabling the
|
||||||
|
| google fonts may be useful if your admin panel internet access is
|
||||||
|
| restricted somehow.
|
||||||
|
|
|
||||||
|
| For detailed instructions you can look the google fonts section here:
|
||||||
|
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Basic-Configuration
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'google_fonts' => [
|
||||||
|
'allowed' => true,
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Admin Panel Logo
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here you can change the logo of your admin panel.
|
||||||
|
|
|
||||||
|
| For detailed instructions you can look the logo section here:
|
||||||
|
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Basic-Configuration
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'logo' => '<b>Gestionale</b>',
|
||||||
|
'logo_img' => 'vendor/adminlte/dist/img/AdminLTELogo.png',
|
||||||
|
'logo_img_class' => 'brand-image img-circle elevation-3',
|
||||||
|
'logo_img_xl' => null,
|
||||||
|
'logo_img_xl_class' => 'brand-image-xs',
|
||||||
|
'logo_img_alt' => 'Admin Logo',
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Authentication Logo
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here you can setup an alternative logo to use on your login and register
|
||||||
|
| screens. When disabled, the admin panel logo will be used instead.
|
||||||
|
|
|
||||||
|
| For detailed instructions you can look the auth logo section here:
|
||||||
|
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Basic-Configuration
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'auth_logo' => [
|
||||||
|
'enabled' => false,
|
||||||
|
'img' => [
|
||||||
|
'path' => 'vendor/adminlte/dist/img/AdminLTELogo.png',
|
||||||
|
'alt' => 'Auth Logo',
|
||||||
|
'class' => '',
|
||||||
|
'width' => 50,
|
||||||
|
'height' => 50,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Preloader Animation
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here you can change the preloader animation configuration.
|
||||||
|
|
|
||||||
|
| For detailed instructions you can look the preloader section here:
|
||||||
|
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Basic-Configuration
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'preloader' => [
|
||||||
|
'enabled' => false,
|
||||||
|
'img' => [
|
||||||
|
'path' => 'vendor/adminlte/dist/img/AdminLTELogo.png',
|
||||||
|
'alt' => 'AdminLTE Preloader Image',
|
||||||
|
'effect' => 'animation__shake',
|
||||||
|
'width' => 60,
|
||||||
|
'height' => 60,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| User Menu
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here you can activate and change the user menu.
|
||||||
|
|
|
||||||
|
| For detailed instructions you can look the user menu section here:
|
||||||
|
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Basic-Configuration
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'usermenu_enabled' => true,
|
||||||
|
'usermenu_header' => false,
|
||||||
|
'usermenu_header_class' => 'bg-primary',
|
||||||
|
'usermenu_image' => false,
|
||||||
|
'usermenu_desc' => false,
|
||||||
|
'usermenu_profile_url' => false,
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Layout
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here we change the layout of your admin panel.
|
||||||
|
|
|
||||||
|
| For detailed instructions you can look the layout section here:
|
||||||
|
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Layout-and-Styling-Configuration
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'layout_topnav' => null,
|
||||||
|
'layout_boxed' => null,
|
||||||
|
'layout_fixed_sidebar' => null,
|
||||||
|
'layout_fixed_navbar' => null,
|
||||||
|
'layout_fixed_footer' => null,
|
||||||
|
'layout_dark_mode' => null,
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Authentication Views Classes
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here you can change the look and behavior of the authentication views.
|
||||||
|
|
|
||||||
|
| For detailed instructions you can look the auth classes section here:
|
||||||
|
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Layout-and-Styling-Configuration
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'classes_auth_card' => 'card-outline card-primary',
|
||||||
|
'classes_auth_header' => '',
|
||||||
|
'classes_auth_body' => '',
|
||||||
|
'classes_auth_footer' => '',
|
||||||
|
'classes_auth_icon' => '',
|
||||||
|
'classes_auth_btn' => 'btn-flat btn-primary',
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Admin Panel Classes
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here you can change the look and behavior of the admin panel.
|
||||||
|
|
|
||||||
|
| For detailed instructions you can look the admin panel classes here:
|
||||||
|
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Layout-and-Styling-Configuration
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'classes_body' => '',
|
||||||
|
'classes_brand' => '',
|
||||||
|
'classes_brand_text' => '',
|
||||||
|
'classes_content_wrapper' => '',
|
||||||
|
'classes_content_header' => '',
|
||||||
|
'classes_content' => '',
|
||||||
|
'classes_sidebar' => 'sidebar-dark-primary elevation-4',
|
||||||
|
'classes_sidebar_nav' => '',
|
||||||
|
'classes_topnav' => 'navbar-white navbar-light',
|
||||||
|
'classes_topnav_nav' => 'navbar-expand',
|
||||||
|
'classes_topnav_container' => 'container',
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Sidebar
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here we can modify the sidebar of the admin panel.
|
||||||
|
|
|
||||||
|
| For detailed instructions you can look the sidebar section here:
|
||||||
|
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Layout-and-Styling-Configuration
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'sidebar_mini' => 'lg',
|
||||||
|
'sidebar_collapse' => false,
|
||||||
|
'sidebar_collapse_auto_size' => false,
|
||||||
|
'sidebar_collapse_remember' => false,
|
||||||
|
'sidebar_collapse_remember_no_transition' => true,
|
||||||
|
'sidebar_scrollbar_theme' => 'os-theme-light',
|
||||||
|
'sidebar_scrollbar_auto_hide' => 'l',
|
||||||
|
'sidebar_nav_accordion' => true,
|
||||||
|
'sidebar_nav_animation_speed' => 300,
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Control Sidebar (Right Sidebar)
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here we can modify the right sidebar aka control sidebar of the admin panel.
|
||||||
|
|
|
||||||
|
| For detailed instructions you can look the right sidebar section here:
|
||||||
|
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Layout-and-Styling-Configuration
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'right_sidebar' => false,
|
||||||
|
'right_sidebar_icon' => 'fas fa-cogs',
|
||||||
|
'right_sidebar_theme' => 'dark',
|
||||||
|
'right_sidebar_slide' => true,
|
||||||
|
'right_sidebar_push' => true,
|
||||||
|
'right_sidebar_scrollbar_theme' => 'os-theme-light',
|
||||||
|
'right_sidebar_scrollbar_auto_hide' => 'l',
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| URLs
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here we can modify the url settings of the admin panel.
|
||||||
|
|
|
||||||
|
| For detailed instructions you can look the urls section here:
|
||||||
|
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Basic-Configuration
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'use_route_url' => false,
|
||||||
|
'dashboard_url' => 'home',
|
||||||
|
'logout_url' => 'logout',
|
||||||
|
'login_url' => 'login',
|
||||||
|
'register_url' => 'register',
|
||||||
|
'password_reset_url' => 'password/reset',
|
||||||
|
'password_email_url' => 'password/email',
|
||||||
|
'profile_url' => false,
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Laravel Mix
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here we can enable the Laravel Mix option for the admin panel.
|
||||||
|
|
|
||||||
|
| For detailed instructions you can look the laravel mix section here:
|
||||||
|
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Other-Configuration
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'enabled_laravel_mix' => false,
|
||||||
|
'laravel_mix_css_path' => 'css/app.css',
|
||||||
|
'laravel_mix_js_path' => 'js/app.js',
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Menu Items
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here we can modify the sidebar/top navigation of the admin panel.
|
||||||
|
|
|
||||||
|
| For detailed instructions you can look here:
|
||||||
|
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Menu-Configuration
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'menu' => [
|
||||||
|
// Navbar items:
|
||||||
|
[
|
||||||
|
'type' => 'navbar-search',
|
||||||
|
'text' => 'search',
|
||||||
|
'topnav_right' => true,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'type' => 'fullscreen-widget',
|
||||||
|
'topnav_right' => true,
|
||||||
|
],
|
||||||
|
|
||||||
|
// Sidebar items:
|
||||||
|
[
|
||||||
|
'type' => 'sidebar-menu-search',
|
||||||
|
'text' => 'search',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Dashboard',
|
||||||
|
'url' => '/admin',
|
||||||
|
// 'can' => 'manage-blog',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Gestione Economica',
|
||||||
|
'url' => '#',
|
||||||
|
'icon' => 'fas fa-fw fa-money-bill', //<i class="fa-solid fa-money-bill"></i>
|
||||||
|
'can' => ['conti'],
|
||||||
|
'submenu' => [
|
||||||
|
[
|
||||||
|
'text' => 'Lista movimenti',
|
||||||
|
'route' => 'movimenti',
|
||||||
|
'icon' => 'fas fa-fw fa-list-check'
|
||||||
|
],
|
||||||
|
[ 'text' => 'Liste',
|
||||||
|
'url' => '#',
|
||||||
|
'icon' => 'fas fa-fw fa-gears',
|
||||||
|
'submenu' => [
|
||||||
|
[
|
||||||
|
'text' => 'Categorie',
|
||||||
|
'route' => 'categorie',
|
||||||
|
'icon' => 'fas fa-fw fa-wine-bottle'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Tags',
|
||||||
|
'route' => 'tags',
|
||||||
|
'icon' => 'fas fa-fw fa-tags'
|
||||||
|
],
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[ 'text' => 'Reports',
|
||||||
|
'url' => '#',
|
||||||
|
'icon' => 'fas fa-fw fa-file',
|
||||||
|
'submenu' => [
|
||||||
|
|
||||||
|
[
|
||||||
|
'text' => 'Report movimenti',
|
||||||
|
'route' => 'resoconto',
|
||||||
|
'icon' => 'fas fa-fw fa-piggy-bank',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Bilancio annuale',
|
||||||
|
'route' => 'budget',
|
||||||
|
'icon' => 'fas fa-fw fa-scale-balanced'
|
||||||
|
],
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Import/Export',
|
||||||
|
'url' => '#',
|
||||||
|
'icon' => 'fas fa-fw fa-file-arrow-down',
|
||||||
|
'submenu' => [
|
||||||
|
[
|
||||||
|
'text' => 'Esporta tutti i movimenti',
|
||||||
|
'route' => 'export',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Importa Estratto conto ING',
|
||||||
|
'route' => 'importING',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Importa Estratto conto Cassa Rurale',
|
||||||
|
'route' => 'importCR',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
['header' => 'GESTIONE DOCUMENTALE',
|
||||||
|
'can' => ['documenti','contratti','progetti'],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Documenti gen.',
|
||||||
|
'url' => '/admin/documenti',
|
||||||
|
'icon' => 'fas fa-fw fa-stop',
|
||||||
|
'can' => ['documenti'],
|
||||||
|
'color' => 'red',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Contratti',
|
||||||
|
'route' => 'contratti',
|
||||||
|
'icon' => 'fas fa-fw fa-newspaper',
|
||||||
|
'can' => ['contratti'],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Progetti',
|
||||||
|
'route' => 'progetti',
|
||||||
|
'icon' => 'fas fa-fw fa-diagram-project',
|
||||||
|
'can' => ['progetti'],
|
||||||
|
],
|
||||||
|
['header' => 'GESTIONE BENI',
|
||||||
|
'can' => ['automobili'],],
|
||||||
|
|
||||||
|
[
|
||||||
|
'text' => 'Automobili',
|
||||||
|
'url' => '/admin/auto',
|
||||||
|
'icon' => 'fas fa-fw fa-car',
|
||||||
|
'can' => ['automobili'],
|
||||||
|
],
|
||||||
|
|
||||||
|
['header' => 'GESTIONE PIM',
|
||||||
|
'can' => ['contatti','tasks','appuntamenti','meetingroom'],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Contatti',
|
||||||
|
'url' => '/admin/contatti',
|
||||||
|
'icon' => 'fas fa-fw fa-user',
|
||||||
|
'can' => ['contatti'],
|
||||||
|
'submenu' => [
|
||||||
|
[
|
||||||
|
'text' => 'Nuovo Contatto',
|
||||||
|
'route' => 'newContact',
|
||||||
|
'icon' => 'fas fa-fw fa-plus',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Rubrica',
|
||||||
|
'route' => 'contatti',
|
||||||
|
'icon' => 'fas fa-fw fa-mobile',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Attività',
|
||||||
|
'route' => 'tasks',
|
||||||
|
'icon' => 'fas fa-fw fa-circle-check',
|
||||||
|
'can' => ['tasks'],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Appuntamenti',
|
||||||
|
'route' => 'calendario',
|
||||||
|
'icon' => 'fas fa-fw fa-calendar',
|
||||||
|
'can' => ['appuntamenti'],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Meeting Room',
|
||||||
|
'route' => 'meeting',
|
||||||
|
'icon' => 'fas fa-fw fa-file-video',
|
||||||
|
'can' => ['meetingroom']
|
||||||
|
],
|
||||||
|
['header' => 'CONSUMI',
|
||||||
|
'can' => ['consumi'],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'GAS',
|
||||||
|
'route' => 'gas',
|
||||||
|
'icon' => 'fas fa-fw fa-fire',
|
||||||
|
'can' => ['consumi'],
|
||||||
|
],
|
||||||
|
['header' => 'AMMINISTRAZIONE',
|
||||||
|
'can' => ['amministrazione'],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Utenti',
|
||||||
|
'url' => '/admin/users/new',
|
||||||
|
'icon' => 'fas fa-fw fa-user',
|
||||||
|
'can' => ['amministrazione']
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Permessi',
|
||||||
|
'route' => 'permessi',
|
||||||
|
'icon' => 'fas fa-fw fa-solid fa-unlock-keyhole',
|
||||||
|
'can' => ['amministrazione']
|
||||||
|
],
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Menu Filters
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here we can modify the menu filters of the admin panel.
|
||||||
|
|
|
||||||
|
| For detailed instructions you can look the menu filters section here:
|
||||||
|
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Menu-Configuration
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'filters' => [
|
||||||
|
JeroenNoten\LaravelAdminLte\Menu\Filters\GateFilter::class,
|
||||||
|
JeroenNoten\LaravelAdminLte\Menu\Filters\HrefFilter::class,
|
||||||
|
JeroenNoten\LaravelAdminLte\Menu\Filters\SearchFilter::class,
|
||||||
|
JeroenNoten\LaravelAdminLte\Menu\Filters\ActiveFilter::class,
|
||||||
|
JeroenNoten\LaravelAdminLte\Menu\Filters\ClassesFilter::class,
|
||||||
|
JeroenNoten\LaravelAdminLte\Menu\Filters\LangFilter::class,
|
||||||
|
JeroenNoten\LaravelAdminLte\Menu\Filters\DataFilter::class,
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Plugins Initialization
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here we can modify the plugins used inside the admin panel.
|
||||||
|
|
|
||||||
|
| For detailed instructions you can look the plugins section here:
|
||||||
|
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Plugins-Configuration
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'plugins' => [
|
||||||
|
'Datatables' => [
|
||||||
|
'active' => true,
|
||||||
|
'files' => [
|
||||||
|
[
|
||||||
|
'type' => 'js',
|
||||||
|
'asset' => false,
|
||||||
|
'location' => '//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'type' => 'js',
|
||||||
|
'asset' => false,
|
||||||
|
'location' => '//cdn.datatables.net/1.10.19/js/dataTables.bootstrap4.min.js',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'type' => 'js',
|
||||||
|
'asset' => false,
|
||||||
|
'location' => '//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',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'type' => 'css',
|
||||||
|
'asset' => false,
|
||||||
|
'location' => '//cdn.datatables.net/1.10.19/css/dataTables.bootstrap4.min.css',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'type' => 'css',
|
||||||
|
'asset' => false,
|
||||||
|
'location' => '//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',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'DateRangePicker' => [
|
||||||
|
'active' => false,
|
||||||
|
'files' => [
|
||||||
|
[
|
||||||
|
'type' => 'js',
|
||||||
|
'asset' => false,
|
||||||
|
'location' => '//cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.min.js',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'type' => 'css',
|
||||||
|
'asset' => false,
|
||||||
|
'location' => '//cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.css',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'JqueryUi' =>[
|
||||||
|
'active' => false,
|
||||||
|
'files' =>[
|
||||||
|
[
|
||||||
|
'type' => 'js',
|
||||||
|
'asset' => false,
|
||||||
|
'location' => '//code.jquery.com/ui/1.13.1/jquery-ui.js',
|
||||||
|
/// https://code.jquery.com/ui/1.13.1/jquery-ui.js
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'type' => 'css',
|
||||||
|
'asset' => false,
|
||||||
|
'location' => '//code.jquery.com/ui/1.13.1/themes/smoothness/jquery-ui.css',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'Select2' => [
|
||||||
|
'active' => true,
|
||||||
|
'files' => [
|
||||||
|
[
|
||||||
|
'type' => 'js',
|
||||||
|
'asset' => false,
|
||||||
|
'location' => '//cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'type' => 'css',
|
||||||
|
'asset' => false,
|
||||||
|
'location' => '//cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.css',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'Chartjs' => [
|
||||||
|
'active' => false,
|
||||||
|
'files' => [
|
||||||
|
[
|
||||||
|
'type' => 'js',
|
||||||
|
'asset' => false,
|
||||||
|
'location' => '//cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.0/Chart.bundle.min.js',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'Sweetalert2' => [
|
||||||
|
'active' => false,
|
||||||
|
'files' => [
|
||||||
|
[
|
||||||
|
'type' => 'js',
|
||||||
|
'asset' => false,
|
||||||
|
'location' => '//cdn.jsdelivr.net/npm/sweetalert2@8',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'Pace' => [
|
||||||
|
'active' => false,
|
||||||
|
'files' => [
|
||||||
|
[
|
||||||
|
'type' => 'css',
|
||||||
|
'asset' => false,
|
||||||
|
'location' => '//cdnjs.cloudflare.com/ajax/libs/pace/1.0.2/themes/blue/pace-theme-center-radar.min.css',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'type' => 'js',
|
||||||
|
'asset' => false,
|
||||||
|
'location' => '//cdnjs.cloudflare.com/ajax/libs/pace/1.0.2/pace.min.js',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'Fullcalendar' => [
|
||||||
|
'active' => false,
|
||||||
|
'files' => [
|
||||||
|
[
|
||||||
|
'type' => 'css',
|
||||||
|
'asset' => true,
|
||||||
|
'location' => '/vendor/fullcalendar/main.min.css',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'type' => 'js',
|
||||||
|
'asset' => true,
|
||||||
|
'location' => '/vendor/fullcalendar/main.min.js',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'type' => 'js',
|
||||||
|
'asset' => true,
|
||||||
|
'location' => '/vendor/fullcalendar/locales-all.min.js',
|
||||||
|
],
|
||||||
|
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'FontAwesome' =>[
|
||||||
|
'active' => true,
|
||||||
|
'files' =>[
|
||||||
|
[
|
||||||
|
'type' => 'css',
|
||||||
|
'asset' => false,
|
||||||
|
'location' => '//cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'MomentJs' =>[
|
||||||
|
'active' => false,
|
||||||
|
'files' =>[
|
||||||
|
[
|
||||||
|
'type' => 'js',
|
||||||
|
'asset' => false,
|
||||||
|
'location' => '//cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/moment-with-locales.min.js',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| IFrame
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here we change the IFrame mode configuration. Note these changes will
|
||||||
|
| only apply to the view that extends and enable the IFrame mode.
|
||||||
|
|
|
||||||
|
| For detailed instructions you can look the iframe mode section here:
|
||||||
|
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/IFrame-Mode-Configuration
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'iframe' => [
|
||||||
|
'default_tab' => [
|
||||||
|
'url' => null,
|
||||||
|
'title' => null,
|
||||||
|
],
|
||||||
|
'buttons' => [
|
||||||
|
'close' => true,
|
||||||
|
'close_all' => true,
|
||||||
|
'close_all_other' => true,
|
||||||
|
'scroll_left' => true,
|
||||||
|
'scroll_right' => true,
|
||||||
|
'fullscreen' => true,
|
||||||
|
],
|
||||||
|
'options' => [
|
||||||
|
'loading_screen' => 1000,
|
||||||
|
'auto_show_new_tab' => true,
|
||||||
|
'use_navbar_items' => true,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Livewire
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Here we can enable the Livewire support.
|
||||||
|
|
|
||||||
|
| For detailed instructions you can look the livewire here:
|
||||||
|
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Other-Configuration
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'livewire' => false,
|
||||||
|
];
|
||||||
@@ -80,7 +80,7 @@ return [
|
|||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'locale' => 'en',
|
'locale' => 'it',
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
@@ -93,7 +93,7 @@ return [
|
|||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'fallback_locale' => 'en',
|
'fallback_locale' => 'it',
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
@@ -106,7 +106,7 @@ return [
|
|||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'faker_locale' => 'en_US',
|
'faker_locale' => 'it_IT',
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
@@ -161,6 +161,8 @@ return [
|
|||||||
Illuminate\Translation\TranslationServiceProvider::class,
|
Illuminate\Translation\TranslationServiceProvider::class,
|
||||||
Illuminate\Validation\ValidationServiceProvider::class,
|
Illuminate\Validation\ValidationServiceProvider::class,
|
||||||
Illuminate\View\ViewServiceProvider::class,
|
Illuminate\View\ViewServiceProvider::class,
|
||||||
|
Creativeorange\Gravatar\GravatarServiceProvider::class,
|
||||||
|
Milon\Barcode\BarcodeServiceProvider::class,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Package Service Providers...
|
* Package Service Providers...
|
||||||
@@ -174,6 +176,7 @@ return [
|
|||||||
// App\Providers\BroadcastServiceProvider::class,
|
// App\Providers\BroadcastServiceProvider::class,
|
||||||
App\Providers\EventServiceProvider::class,
|
App\Providers\EventServiceProvider::class,
|
||||||
App\Providers\RouteServiceProvider::class,
|
App\Providers\RouteServiceProvider::class,
|
||||||
|
Spatie\Permission\PermissionServiceProvider::class,
|
||||||
|
|
||||||
],
|
],
|
||||||
|
|
||||||
@@ -189,7 +192,6 @@ return [
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
'aliases' => [
|
'aliases' => [
|
||||||
|
|
||||||
'App' => Illuminate\Support\Facades\App::class,
|
'App' => Illuminate\Support\Facades\App::class,
|
||||||
'Arr' => Illuminate\Support\Arr::class,
|
'Arr' => Illuminate\Support\Arr::class,
|
||||||
'Artisan' => Illuminate\Support\Facades\Artisan::class,
|
'Artisan' => Illuminate\Support\Facades\Artisan::class,
|
||||||
@@ -218,7 +220,7 @@ return [
|
|||||||
'Queue' => Illuminate\Support\Facades\Queue::class,
|
'Queue' => Illuminate\Support\Facades\Queue::class,
|
||||||
'RateLimiter' => Illuminate\Support\Facades\RateLimiter::class,
|
'RateLimiter' => Illuminate\Support\Facades\RateLimiter::class,
|
||||||
'Redirect' => Illuminate\Support\Facades\Redirect::class,
|
'Redirect' => Illuminate\Support\Facades\Redirect::class,
|
||||||
// 'Redis' => Illuminate\Support\Facades\Redis::class,
|
// 'Redis' => Illuminate\Support\Facades\Redis::class,
|
||||||
'Request' => Illuminate\Support\Facades\Request::class,
|
'Request' => Illuminate\Support\Facades\Request::class,
|
||||||
'Response' => Illuminate\Support\Facades\Response::class,
|
'Response' => Illuminate\Support\Facades\Response::class,
|
||||||
'Route' => Illuminate\Support\Facades\Route::class,
|
'Route' => Illuminate\Support\Facades\Route::class,
|
||||||
@@ -230,7 +232,8 @@ return [
|
|||||||
'Validator' => Illuminate\Support\Facades\Validator::class,
|
'Validator' => Illuminate\Support\Facades\Validator::class,
|
||||||
'View' => Illuminate\Support\Facades\View::class,
|
'View' => Illuminate\Support\Facades\View::class,
|
||||||
'FastExcel' => Rap2hpoutre\FastExcel\Facades\FastExcel::class,
|
'FastExcel' => Rap2hpoutre\FastExcel\Facades\FastExcel::class,
|
||||||
|
'Gravatar' => Creativeorange\Gravatar\Facade\Gravatar::class,
|
||||||
|
'DNS1D' => Milon\Barcode\Facades\DNS1DFacade::class,
|
||||||
|
'DNS2D' => Milon\Barcode\Facades\DNS2DFacade::class,
|
||||||
],
|
],
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -60,26 +60,14 @@ return [
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
'providers' => [
|
'providers' => [
|
||||||
'ldap' => [
|
'users' => [
|
||||||
'driver' => 'ldap', //'eloquent',
|
'driver' => 'eloquent',
|
||||||
'model' => LdapRecord\Models\ActiveDirectory\User::class, //App\Models\User::class,
|
'model' => App\Models\User::class,
|
||||||
'rules' => [
|
|
||||||
App\Ldap\Rules\OnlyInGroupUsers::class,
|
|
||||||
],
|
|
||||||
'database' => [
|
|
||||||
'model' => App\Models\User::class,
|
|
||||||
'sync_passwords'=> false,
|
|
||||||
'sync_attributes' => [
|
|
||||||
'name' => 'displayname',
|
|
||||||
'email' => 'mail',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
|
/*'users' => [
|
||||||
'users' => [
|
|
||||||
'driver' => 'database',
|
'driver' => 'database',
|
||||||
'table' => 'users',
|
'table' => 'users',
|
||||||
],
|
],*/
|
||||||
],
|
],
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
5
config/barcode.php
Normal file
5
config/barcode.php
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
'store_path' => public_path("/"),
|
||||||
|
];
|
||||||
@@ -74,6 +74,7 @@ return [
|
|||||||
|
|
||||||
'links' => [
|
'links' => [
|
||||||
public_path('storage') => storage_path('app/public'),
|
public_path('storage') => storage_path('app/public'),
|
||||||
|
public_path('contratti') => storage_path('app/Contratti'),
|
||||||
],
|
],
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|||||||
44
config/google-calendar.php
Normal file
44
config/google-calendar.php
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
|
||||||
|
'default_auth_profile' => env('GOOGLE_CALENDAR_AUTH_PROFILE', 'service_account'),
|
||||||
|
|
||||||
|
'auth_profiles' => [
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Authenticate using a service account.
|
||||||
|
*/
|
||||||
|
'service_account' => [
|
||||||
|
/*
|
||||||
|
* Path to the json file containing the credentials.
|
||||||
|
*/
|
||||||
|
'credentials_json' => storage_path('app/google-calendar/service-account-credentials.json'),
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Authenticate with actual google user account.
|
||||||
|
*/
|
||||||
|
'oauth' => [
|
||||||
|
/*
|
||||||
|
* Path to the json file containing the oauth2 credentials.
|
||||||
|
*/
|
||||||
|
'credentials_json' => storage_path('app/google-calendar/oauth-credentials.json'),
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the json file containing the oauth2 token.
|
||||||
|
*/
|
||||||
|
'token_json' => storage_path('app/google-calendar/oauth-token.json'),
|
||||||
|
],
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The id of the Google Calendar that will be used by default.
|
||||||
|
*/
|
||||||
|
'calendar_id' => env('GOOGLE_CALENDAR_ID'),
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The email address of the user account to impersonate.
|
||||||
|
*/
|
||||||
|
'user_to_impersonate' => env('GOOGLE_CALENDAR_IMPERSONATE'),
|
||||||
|
];
|
||||||
199
config/imap.php
Normal file
199
config/imap.php
Normal file
@@ -0,0 +1,199 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* File: imap.php
|
||||||
|
* Category: config
|
||||||
|
* Author: M. Goldenbaum
|
||||||
|
* Created: 24.09.16 22:36
|
||||||
|
* Updated: -
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* -
|
||||||
|
*/
|
||||||
|
|
||||||
|
return [
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| IMAP default account
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| The default account identifier. It will be used as default for any missing account parameters.
|
||||||
|
| If however the default account is missing a parameter the package default will be used.
|
||||||
|
| Set to 'false' [boolean] to disable this functionality.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
'default' => env('IMAP_DEFAULT_ACCOUNT', 'default'),
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Default date format
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| The default date format is used to convert any given Carbon::class object into a valid date string.
|
||||||
|
| These are currently known working formats: "d-M-Y", "d-M-y", "d M y"
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
'date_format' => 'd-M-Y',
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Available IMAP accounts
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Please list all IMAP accounts which you are planning to use within the
|
||||||
|
| array below.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
'accounts' => [
|
||||||
|
|
||||||
|
'default' => [// account identifier
|
||||||
|
'host' => env('IMAP_HOST', 'localhost'),
|
||||||
|
'port' => env('IMAP_PORT', 993),
|
||||||
|
'protocol' => env('IMAP_PROTOCOL', 'imap'), //might also use imap, [pop3 or nntp (untested)]
|
||||||
|
'encryption' => env('IMAP_ENCRYPTION', 'ssl'), // Supported: false, 'ssl', 'tls', 'notls', 'starttls'
|
||||||
|
'validate_cert' => env('IMAP_VALIDATE_CERT', true),
|
||||||
|
'username' => env('IMAP_USERNAME', 'root@example.com'),
|
||||||
|
'password' => env('IMAP_PASSWORD', ''),
|
||||||
|
'authentication' => env('IMAP_AUTHENTICATION', null),
|
||||||
|
'proxy' => [
|
||||||
|
'socket' => null,
|
||||||
|
'request_fulluri' => false,
|
||||||
|
'username' => null,
|
||||||
|
'password' => null,
|
||||||
|
]
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
'gmail' => [ // account identifier
|
||||||
|
'host' => 'imap.gmail.com',
|
||||||
|
'port' => 993,
|
||||||
|
'encryption' => 'ssl',
|
||||||
|
'validate_cert' => true,
|
||||||
|
'username' => 'example@gmail.com',
|
||||||
|
'password' => 'PASSWORD',
|
||||||
|
'authentication' => 'oauth',
|
||||||
|
],
|
||||||
|
|
||||||
|
'another' => [ // account identifier
|
||||||
|
'host' => '',
|
||||||
|
'port' => 993,
|
||||||
|
'encryption' => false,
|
||||||
|
'validate_cert' => true,
|
||||||
|
'username' => '',
|
||||||
|
'password' => '',
|
||||||
|
'authentication' => null,
|
||||||
|
]
|
||||||
|
*/
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Available IMAP options
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Available php imap config parameters are listed below
|
||||||
|
| -Delimiter (optional):
|
||||||
|
| This option is only used when calling $oClient->
|
||||||
|
| You can use any supported char such as ".", "/", (...)
|
||||||
|
| -Fetch option:
|
||||||
|
| IMAP::FT_UID - Message marked as read by fetching the message body
|
||||||
|
| IMAP::FT_PEEK - Fetch the message without setting the "seen" flag
|
||||||
|
| -Fetch sequence id:
|
||||||
|
| IMAP::ST_UID - Fetch message components using the message uid
|
||||||
|
| IMAP::ST_MSGN - Fetch message components using the message number
|
||||||
|
| -Body download option
|
||||||
|
| Default TRUE
|
||||||
|
| -Flag download option
|
||||||
|
| Default TRUE
|
||||||
|
| -Message key identifier option
|
||||||
|
| You can choose between 'id', 'number' or 'list'
|
||||||
|
| 'id' - Use the MessageID as array key (default, might cause hickups with yahoo mail)
|
||||||
|
| 'number' - Use the message number as array key (isn't always unique and can cause some interesting behavior)
|
||||||
|
| 'list' - Use the message list number as array key (incrementing integer (does not always start at 0 or 1)
|
||||||
|
| 'uid' - Use the message uid as array key (isn't always unique and can cause some interesting behavior)
|
||||||
|
| -Fetch order
|
||||||
|
| 'asc' - Order all messages ascending (probably results in oldest first)
|
||||||
|
| 'desc' - Order all messages descending (probably results in newest first)
|
||||||
|
| -Disposition types potentially considered an attachment
|
||||||
|
| Default ['attachment', 'inline']
|
||||||
|
| -Common folders
|
||||||
|
| Default folder locations and paths assumed if none is provided
|
||||||
|
| -Open IMAP options:
|
||||||
|
| DISABLE_AUTHENTICATOR - Disable authentication properties.
|
||||||
|
| Use 'GSSAPI' if you encounter the following
|
||||||
|
| error: "Kerberos error: No credentials cache
|
||||||
|
| file found (try running kinit) (...)"
|
||||||
|
| or ['GSSAPI','PLAIN'] if you are using outlook mail
|
||||||
|
| -Decoder options (currently only the message subject and attachment name decoder can be set)
|
||||||
|
| 'utf-8' - Uses imap_utf8($string) to decode a string
|
||||||
|
| 'mimeheader' - Uses mb_decode_mimeheader($string) to decode a string
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
'options' => [
|
||||||
|
'delimiter' => '/',
|
||||||
|
'fetch' => \Webklex\PHPIMAP\IMAP::FT_PEEK,
|
||||||
|
'sequence' => \Webklex\PHPIMAP\IMAP::ST_MSGN,
|
||||||
|
'fetch_body' => true,
|
||||||
|
'fetch_flags' => true,
|
||||||
|
'message_key' => 'list',
|
||||||
|
'fetch_order' => 'asc',
|
||||||
|
'dispositions' => ['attachment', 'inline'],
|
||||||
|
'common_folders' => [
|
||||||
|
"root" => "INBOX",
|
||||||
|
"junk" => "INBOX/Junk",
|
||||||
|
"draft" => "INBOX/Drafts",
|
||||||
|
"sent" => "INBOX/Sent",
|
||||||
|
"trash" => "INBOX/Trash",
|
||||||
|
],
|
||||||
|
'open' => [
|
||||||
|
// 'DISABLE_AUTHENTICATOR' => 'GSSAPI'
|
||||||
|
],
|
||||||
|
'decoder' => [
|
||||||
|
'message' => 'utf-8', // mimeheader
|
||||||
|
'attachment' => 'utf-8' // mimeheader
|
||||||
|
]
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Available events
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
'events' => [
|
||||||
|
"message" => [
|
||||||
|
'new' => \Webklex\IMAP\Events\MessageNewEvent::class,
|
||||||
|
'moved' => \Webklex\IMAP\Events\MessageMovedEvent::class,
|
||||||
|
'copied' => \Webklex\IMAP\Events\MessageCopiedEvent::class,
|
||||||
|
'deleted' => \Webklex\IMAP\Events\MessageDeletedEvent::class,
|
||||||
|
'restored' => \Webklex\IMAP\Events\MessageRestoredEvent::class,
|
||||||
|
],
|
||||||
|
"folder" => [
|
||||||
|
'new' => \Webklex\IMAP\Events\FolderNewEvent::class,
|
||||||
|
'moved' => \Webklex\IMAP\Events\FolderMovedEvent::class,
|
||||||
|
'deleted' => \Webklex\IMAP\Events\FolderDeletedEvent::class,
|
||||||
|
],
|
||||||
|
"flag" => [
|
||||||
|
'new' => \Webklex\IMAP\Events\FlagNewEvent::class,
|
||||||
|
'deleted' => \Webklex\IMAP\Events\FlagDeletedEvent::class,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Available masking options
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| By using your own custom masks you can implement your own methods for
|
||||||
|
| a better and faster access and less code to write.
|
||||||
|
|
|
||||||
|
| Checkout the two examples custom_attachment_mask and custom_message_mask
|
||||||
|
| for a quick start.
|
||||||
|
|
|
||||||
|
| The provided masks below are used as the default masks.
|
||||||
|
*/
|
||||||
|
'masks' => [
|
||||||
|
'message' => \Webklex\PHPIMAP\Support\Masks\MessageMask::class,
|
||||||
|
'attachment' => \Webklex\PHPIMAP\Support\Masks\AttachmentMask::class
|
||||||
|
]
|
||||||
|
];
|
||||||
161
config/permission.php
Normal file
161
config/permission.php
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
|
||||||
|
'models' => [
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When using the "HasPermissions" trait from this package, we need to know which
|
||||||
|
* Eloquent model should be used to retrieve your permissions. Of course, it
|
||||||
|
* is often just the "Permission" model but you may use whatever you like.
|
||||||
|
*
|
||||||
|
* The model you want to use as a Permission model needs to implement the
|
||||||
|
* `Spatie\Permission\Contracts\Permission` contract.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'permission' => Spatie\Permission\Models\Permission::class,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When using the "HasRoles" trait from this package, we need to know which
|
||||||
|
* Eloquent model should be used to retrieve your roles. Of course, it
|
||||||
|
* is often just the "Role" model but you may use whatever you like.
|
||||||
|
*
|
||||||
|
* The model you want to use as a Role model needs to implement the
|
||||||
|
* `Spatie\Permission\Contracts\Role` contract.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'role' => Spatie\Permission\Models\Role::class,
|
||||||
|
|
||||||
|
],
|
||||||
|
|
||||||
|
'table_names' => [
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When using the "HasRoles" trait from this package, we need to know which
|
||||||
|
* table should be used to retrieve your roles. We have chosen a basic
|
||||||
|
* default value but you may easily change it to any table you like.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'roles' => 'roles',
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When using the "HasPermissions" trait from this package, we need to know which
|
||||||
|
* table should be used to retrieve your permissions. We have chosen a basic
|
||||||
|
* default value but you may easily change it to any table you like.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'permissions' => 'permissions',
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When using the "HasPermissions" trait from this package, we need to know which
|
||||||
|
* table should be used to retrieve your models permissions. We have chosen a
|
||||||
|
* basic default value but you may easily change it to any table you like.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'model_has_permissions' => 'model_has_permissions',
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When using the "HasRoles" trait from this package, we need to know which
|
||||||
|
* table should be used to retrieve your models roles. We have chosen a
|
||||||
|
* basic default value but you may easily change it to any table you like.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'model_has_roles' => 'model_has_roles',
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When using the "HasRoles" trait from this package, we need to know which
|
||||||
|
* table should be used to retrieve your roles permissions. We have chosen a
|
||||||
|
* basic default value but you may easily change it to any table you like.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'role_has_permissions' => 'role_has_permissions',
|
||||||
|
],
|
||||||
|
|
||||||
|
'column_names' => [
|
||||||
|
/*
|
||||||
|
* Change this if you want to name the related pivots other than defaults
|
||||||
|
*/
|
||||||
|
'role_pivot_key' => null, //default 'role_id',
|
||||||
|
'permission_pivot_key' => null, //default 'permission_id',
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Change this if you want to name the related model primary key other than
|
||||||
|
* `model_id`.
|
||||||
|
*
|
||||||
|
* For example, this would be nice if your primary keys are all UUIDs. In
|
||||||
|
* that case, name this `model_uuid`.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'model_morph_key' => 'model_id',
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Change this if you want to use the teams feature and your related model's
|
||||||
|
* foreign key is other than `team_id`.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'team_foreign_key' => 'team_id',
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When set to true, the method for checking permissions will be registered on the gate.
|
||||||
|
* Set this to false, if you want to implement custom logic for checking permissions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'register_permission_check_method' => true,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When set to true the package implements teams using the 'team_foreign_key'. If you want
|
||||||
|
* the migrations to register the 'team_foreign_key', you must set this to true
|
||||||
|
* before doing the migration. If you already did the migration then you must make a new
|
||||||
|
* migration to also add 'team_foreign_key' to 'roles', 'model_has_roles', and
|
||||||
|
* 'model_has_permissions'(view the latest version of package's migration file)
|
||||||
|
*/
|
||||||
|
|
||||||
|
'teams' => false,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When set to true, the required permission names are added to the exception
|
||||||
|
* message. This could be considered an information leak in some contexts, so
|
||||||
|
* the default setting is false here for optimum safety.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'display_permission_in_exception' => false,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When set to true, the required role names are added to the exception
|
||||||
|
* message. This could be considered an information leak in some contexts, so
|
||||||
|
* the default setting is false here for optimum safety.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'display_role_in_exception' => false,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* By default wildcard permission lookups are disabled.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'enable_wildcard_permission' => false,
|
||||||
|
|
||||||
|
'cache' => [
|
||||||
|
|
||||||
|
/*
|
||||||
|
* By default all permissions are cached for 24 hours to speed up performance.
|
||||||
|
* When permissions or roles are updated the cache is flushed automatically.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'expiration_time' => \DateInterval::createFromDateString('24 hours'),
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The cache key used to store all permissions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'key' => 'spatie.permission.cache',
|
||||||
|
|
||||||
|
/*
|
||||||
|
* You may optionally indicate a specific cache driver to use for permission and
|
||||||
|
* role caching using any of the `store` drivers listed in the cache.php config
|
||||||
|
* file. Using 'default' here means to use the `default` set in cache.php.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'store' => 'default',
|
||||||
|
],
|
||||||
|
];
|
||||||
@@ -16,9 +16,11 @@ class CreateDocumentisTable extends Migration
|
|||||||
Schema::create('documentis', function (Blueprint $table) {
|
Schema::create('documentis', function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
$table->foreignId('movimenti_id');
|
|
||||||
$table->string('descrizione');
|
$table->string('descrizione');
|
||||||
$table->string('filename');
|
// $table->foreignId('movimenti_id');
|
||||||
|
// Aggiunto per definire il nome della cartella
|
||||||
|
$table->string('path');
|
||||||
|
// $table->string('filename');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
class CreatePermissionsTable extends Migration
|
|
||||||
{
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
$permissionsTable = config('acl.tables.permissions', 'permissions');
|
|
||||||
Schema::create($permissionsTable, function (Blueprint $table) {
|
|
||||||
$table->bigIncrements('id');
|
|
||||||
$table->string('name');
|
|
||||||
$table->string('guard_name');
|
|
||||||
$table->text('description')->nullable();
|
|
||||||
$table->softDeletes();
|
|
||||||
$table->timestamps();
|
|
||||||
|
|
||||||
$table->unique(['name', 'guard_name']);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down()
|
|
||||||
{
|
|
||||||
$tables = config('acl.tables');
|
|
||||||
Schema::dropIfExists($tables['permissions']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
class CreateGroupsTable extends Migration
|
|
||||||
{
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
$groupsTable = config('acl.tables.groups', 'groups');
|
|
||||||
$teams = config('acl.teams');
|
|
||||||
$columnNames = config('acl.column_names');
|
|
||||||
|
|
||||||
Schema::create($groupsTable, function (Blueprint $table) use ($teams, $columnNames) {
|
|
||||||
$table->bigIncrements('id');
|
|
||||||
|
|
||||||
if ($teams || config("acl.testing")) {
|
|
||||||
$table->unsignedBigInteger($columnNames['team_foreign_key'])->nullable();
|
|
||||||
$table->index($columnNames['team_foreign_key'], 'groups_team_foreign_key_index');
|
|
||||||
}
|
|
||||||
|
|
||||||
$table->string('name');
|
|
||||||
$table->string('guard_name');
|
|
||||||
$table->text('description')->nullable();
|
|
||||||
$table->softDeletes();
|
|
||||||
$table->timestamps();
|
|
||||||
|
|
||||||
if ($teams || config('acl.testing')) {
|
|
||||||
$table->unique([$columnNames['team_foreign_key'], 'name', 'guard_name']);
|
|
||||||
} else {
|
|
||||||
$table->unique(['name', 'guard_name']);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down()
|
|
||||||
{
|
|
||||||
$groupsTable = config('acl.tables.groups', 'groups');
|
|
||||||
Schema::dropIfExists($groupsTable);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
use Junges\ACL\AclRegistrar;
|
|
||||||
|
|
||||||
class CreateModelHasPermissionsTable extends Migration
|
|
||||||
{
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
$columnNames = config('acl.column_names');
|
|
||||||
|
|
||||||
$modelHasPermissions = config('acl.tables.model_has_permissions', 'model_has_permissions');
|
|
||||||
$permissionsTable = config('acl.tables.permissions', 'permissions');
|
|
||||||
$teams = config('acl.teams');
|
|
||||||
|
|
||||||
Schema::create($modelHasPermissions, function (Blueprint $table) use ($permissionsTable, $columnNames, $teams) {
|
|
||||||
$table->unsignedBigInteger(AclRegistrar::$pivotPermission);
|
|
||||||
$table->string('model_type');
|
|
||||||
$table->unsignedBigInteger($columnNames['model_morph_key']);
|
|
||||||
$table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_permissions_id_model_type_index');
|
|
||||||
|
|
||||||
$table->foreign(AclRegistrar::$pivotPermission)
|
|
||||||
->references('id')
|
|
||||||
->on($permissionsTable)
|
|
||||||
->cascadeOnDelete();
|
|
||||||
|
|
||||||
if ($teams) {
|
|
||||||
$table->unsignedBigInteger($columnNames['team_foreign_key']);
|
|
||||||
$table->index($columnNames['team_foreign_key'], 'model_has_permissions_team_foreign_key_index');
|
|
||||||
|
|
||||||
$table->primary([$columnNames['team_foreign_key'], AclRegistrar::$pivotPermission, $columnNames['model_morph_key'], 'model_type'],
|
|
||||||
'model_has_permissions_permission_model_type_primary');
|
|
||||||
} else {
|
|
||||||
$table->primary([AclRegistrar::$pivotPermission, $columnNames['model_morph_key'], 'model_type'],
|
|
||||||
'model_has_permissions_permission_model_type_primary');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down()
|
|
||||||
{
|
|
||||||
$modelHasPermissionTable = config('acl.tables.model_has_permissions', 'model_has_permissions');
|
|
||||||
Schema::dropIfExists($modelHasPermissionTable);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
use Junges\ACL\AclRegistrar;
|
|
||||||
|
|
||||||
class CreateModelHasGroupsTable extends Migration
|
|
||||||
{
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
$columnNames = config('acl.column_names');
|
|
||||||
$modelHasGroups = config('acl.tables.model_has_groups', 'model_has_groups');
|
|
||||||
$groupsTable = config('acl.tables.groups', 'groups');
|
|
||||||
$teams = config('acl.teams');
|
|
||||||
|
|
||||||
Schema::create($modelHasGroups, function (Blueprint $table) use ($groupsTable, $columnNames, $teams) {
|
|
||||||
$table->unsignedBigInteger(AclRegistrar::$pivotGroup);
|
|
||||||
|
|
||||||
$table->string('model_type');
|
|
||||||
$table->unsignedBigInteger($columnNames['model_morph_key']);
|
|
||||||
$table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_groups_model_id_model_type_index');
|
|
||||||
|
|
||||||
$table->foreign(AclRegistrar::$pivotGroup)
|
|
||||||
->references('id')
|
|
||||||
->on($groupsTable)
|
|
||||||
->cascadeOnDelete();
|
|
||||||
|
|
||||||
if ($teams) {
|
|
||||||
$table->unsignedBigInteger($columnNames['team_foreign_key']);
|
|
||||||
$table->index($columnNames['team_foreign_key'], 'model_has_groups_team_foreign_key_index');
|
|
||||||
|
|
||||||
$table->primary([$columnNames['team_foreign_key'], AclRegistrar::$pivotGroup, $columnNames['model_morph_key'], 'model_type'],
|
|
||||||
'model_has_groups_group_model_type_primary');
|
|
||||||
} else {
|
|
||||||
$table->primary([AclRegistrar::$pivotGroup, $columnNames['model_morph_key'], 'model_type'],
|
|
||||||
'model_has_groups_group_model_type_primary');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down()
|
|
||||||
{
|
|
||||||
$modelHasGroupsTable = config('acl.tables.model_has_groups', 'model_has_groups');
|
|
||||||
Schema::dropIfExists($modelHasGroupsTable);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
use Junges\ACL\AclRegistrar;
|
|
||||||
|
|
||||||
class CreateGroupHasPermissionsTable extends Migration
|
|
||||||
{
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
$groupHasPermissionTable = config('acl.tables.group_has_permissions', 'group_has_permissions');
|
|
||||||
$groupsTable = config('acl.tables.groups', 'groups');
|
|
||||||
$permissionsTable = config('acl.tables.permissions', 'permissions');
|
|
||||||
|
|
||||||
Schema::create($groupHasPermissionTable, function (Blueprint $table) use ($groupsTable, $permissionsTable) {
|
|
||||||
$table->unsignedBigInteger(AclRegistrar::$pivotPermission);
|
|
||||||
$table->unsignedBigInteger(AclRegistrar::$pivotGroup);
|
|
||||||
|
|
||||||
$table->foreign(AclRegistrar::$pivotPermission)
|
|
||||||
->references('id')
|
|
||||||
->on($permissionsTable)
|
|
||||||
->cascadeOnDelete();
|
|
||||||
|
|
||||||
$table->foreign(AclRegistrar::$pivotGroup)
|
|
||||||
->references('id')
|
|
||||||
->on($groupsTable)
|
|
||||||
->cascadeOnDelete();
|
|
||||||
|
|
||||||
$table->primary([AclRegistrar::$pivotPermission, AclRegistrar::$pivotGroup], 'group_has_permission_permission_id_group_id_primary');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down()
|
|
||||||
{
|
|
||||||
$groupHasPermissionsTable = config('acl.tables.group_has_permissions', 'group_has_permissions');
|
|
||||||
|
|
||||||
Schema::dropIfExists($groupHasPermissionsTable);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,141 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Spatie\Permission\PermissionRegistrar;
|
||||||
|
|
||||||
|
class CreatePermissionTables extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
$tableNames = config('permission.table_names');
|
||||||
|
$columnNames = config('permission.column_names');
|
||||||
|
$teams = config('permission.teams');
|
||||||
|
|
||||||
|
if (empty($tableNames)) {
|
||||||
|
throw new \Exception('Error: config/permission.php not loaded. Run [php artisan config:clear] and try again.');
|
||||||
|
}
|
||||||
|
if ($teams && empty($columnNames['team_foreign_key'] ?? null)) {
|
||||||
|
throw new \Exception('Error: team_foreign_key on config/permission.php not loaded. Run [php artisan config:clear] and try again.');
|
||||||
|
}
|
||||||
|
|
||||||
|
Schema::create($tableNames['permissions'], function (Blueprint $table) {
|
||||||
|
$table->bigIncrements('id'); // permission id
|
||||||
|
$table->string('name'); // For MySQL 8.0 use string('name', 125);
|
||||||
|
$table->string('guard_name'); // For MySQL 8.0 use string('guard_name', 125);
|
||||||
|
$table->timestamps();
|
||||||
|
|
||||||
|
$table->unique(['name', 'guard_name']);
|
||||||
|
});
|
||||||
|
|
||||||
|
Schema::create($tableNames['roles'], function (Blueprint $table) use ($teams, $columnNames) {
|
||||||
|
$table->bigIncrements('id'); // role id
|
||||||
|
if ($teams || config('permission.testing')) { // permission.testing is a fix for sqlite testing
|
||||||
|
$table->unsignedBigInteger($columnNames['team_foreign_key'])->nullable();
|
||||||
|
$table->index($columnNames['team_foreign_key'], 'roles_team_foreign_key_index');
|
||||||
|
}
|
||||||
|
$table->string('name'); // For MySQL 8.0 use string('name', 125);
|
||||||
|
$table->string('guard_name'); // For MySQL 8.0 use string('guard_name', 125);
|
||||||
|
$table->timestamps();
|
||||||
|
if ($teams || config('permission.testing')) {
|
||||||
|
$table->unique([$columnNames['team_foreign_key'], 'name', 'guard_name']);
|
||||||
|
} else {
|
||||||
|
$table->unique(['name', 'guard_name']);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Schema::create($tableNames['model_has_permissions'], function (Blueprint $table) use ($tableNames, $columnNames, $teams) {
|
||||||
|
$table->unsignedBigInteger(PermissionRegistrar::$pivotPermission);
|
||||||
|
|
||||||
|
$table->string('model_type');
|
||||||
|
$table->unsignedBigInteger($columnNames['model_morph_key']);
|
||||||
|
$table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_permissions_model_id_model_type_index');
|
||||||
|
|
||||||
|
$table->foreign(PermissionRegistrar::$pivotPermission)
|
||||||
|
->references('id') // permission id
|
||||||
|
->on($tableNames['permissions'])
|
||||||
|
->onDelete('cascade');
|
||||||
|
if ($teams) {
|
||||||
|
$table->unsignedBigInteger($columnNames['team_foreign_key']);
|
||||||
|
$table->index($columnNames['team_foreign_key'], 'model_has_permissions_team_foreign_key_index');
|
||||||
|
|
||||||
|
$table->primary([$columnNames['team_foreign_key'], PermissionRegistrar::$pivotPermission, $columnNames['model_morph_key'], 'model_type'],
|
||||||
|
'model_has_permissions_permission_model_type_primary');
|
||||||
|
} else {
|
||||||
|
$table->primary([PermissionRegistrar::$pivotPermission, $columnNames['model_morph_key'], 'model_type'],
|
||||||
|
'model_has_permissions_permission_model_type_primary');
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
Schema::create($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames, $columnNames, $teams) {
|
||||||
|
$table->unsignedBigInteger(PermissionRegistrar::$pivotRole);
|
||||||
|
|
||||||
|
$table->string('model_type');
|
||||||
|
$table->unsignedBigInteger($columnNames['model_morph_key']);
|
||||||
|
$table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_roles_model_id_model_type_index');
|
||||||
|
|
||||||
|
$table->foreign(PermissionRegistrar::$pivotRole)
|
||||||
|
->references('id') // role id
|
||||||
|
->on($tableNames['roles'])
|
||||||
|
->onDelete('cascade');
|
||||||
|
if ($teams) {
|
||||||
|
$table->unsignedBigInteger($columnNames['team_foreign_key']);
|
||||||
|
$table->index($columnNames['team_foreign_key'], 'model_has_roles_team_foreign_key_index');
|
||||||
|
|
||||||
|
$table->primary([$columnNames['team_foreign_key'], PermissionRegistrar::$pivotRole, $columnNames['model_morph_key'], 'model_type'],
|
||||||
|
'model_has_roles_role_model_type_primary');
|
||||||
|
} else {
|
||||||
|
$table->primary([PermissionRegistrar::$pivotRole, $columnNames['model_morph_key'], 'model_type'],
|
||||||
|
'model_has_roles_role_model_type_primary');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames) {
|
||||||
|
$table->unsignedBigInteger(PermissionRegistrar::$pivotPermission);
|
||||||
|
$table->unsignedBigInteger(PermissionRegistrar::$pivotRole);
|
||||||
|
|
||||||
|
$table->foreign(PermissionRegistrar::$pivotPermission)
|
||||||
|
->references('id') // permission id
|
||||||
|
->on($tableNames['permissions'])
|
||||||
|
->onDelete('cascade');
|
||||||
|
|
||||||
|
$table->foreign(PermissionRegistrar::$pivotRole)
|
||||||
|
->references('id') // role id
|
||||||
|
->on($tableNames['roles'])
|
||||||
|
->onDelete('cascade');
|
||||||
|
|
||||||
|
$table->primary([PermissionRegistrar::$pivotPermission, PermissionRegistrar::$pivotRole], 'role_has_permissions_permission_id_role_id_primary');
|
||||||
|
});
|
||||||
|
|
||||||
|
app('cache')
|
||||||
|
->store(config('permission.cache.store') != 'default' ? config('permission.cache.store') : null)
|
||||||
|
->forget(config('permission.cache.key'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
$tableNames = config('permission.table_names');
|
||||||
|
|
||||||
|
if (empty($tableNames)) {
|
||||||
|
throw new \Exception('Error: config/permission.php not found and defaults could not be merged. Please publish the package configuration before proceeding, or drop the tables manually.');
|
||||||
|
}
|
||||||
|
|
||||||
|
Schema::drop($tableNames['role_has_permissions']);
|
||||||
|
Schema::drop($tableNames['model_has_roles']);
|
||||||
|
Schema::drop($tableNames['model_has_permissions']);
|
||||||
|
Schema::drop($tableNames['roles']);
|
||||||
|
Schema::drop($tableNames['permissions']);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
|
|||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
class ColumnUsersRoles extends Migration
|
class ColumnsAnagrafica extends Migration
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Run the migrations.
|
* Run the migrations.
|
||||||
@@ -13,11 +13,14 @@ class ColumnUsersRoles extends Migration
|
|||||||
*/
|
*/
|
||||||
public function up()
|
public function up()
|
||||||
{
|
{
|
||||||
Schema::table('users', function (Blueprint $table) {
|
/*Schema::table('anagraficas', function (Blueprint $table) {
|
||||||
//
|
/* //
|
||||||
$table->softDeletes();
|
// $table->longText('ang_indirizzo');
|
||||||
$table->string('user_role',25)->default('user')->nullable(false);
|
$table->string('ang_CAP');
|
||||||
});
|
$table->string('ang_Citta');
|
||||||
|
$table->string('ang_Provincia');
|
||||||
|
$table->string('ang_telefono');
|
||||||
|
});*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -27,10 +30,8 @@ class ColumnUsersRoles extends Migration
|
|||||||
*/
|
*/
|
||||||
public function down()
|
public function down()
|
||||||
{
|
{
|
||||||
Schema::table('users', function (Blueprint $table) {
|
Schema::table('anagraficas', function (Blueprint $table) {
|
||||||
//
|
//
|
||||||
$table->dropColumn('user_role');
|
|
||||||
$table->dropSoftDeletes();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class UpdateCategoriesAddingSpesaEntrata extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Schema::table('categories', function (Blueprint $table) {
|
||||||
|
|
||||||
|
$table->smallInteger('cat_entrata')->after('cat_name')->default(0);
|
||||||
|
$table->smallInteger('cat_uscita')->after('cat_entrata')->default(0);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Schema::table('categories', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('cat_entrata');
|
||||||
|
$table->dropColumn('cat_uscita');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
39
database/migrations/2023_07_14_123253_create_tasks_table.php
Normal file
39
database/migrations/2023_07_14_123253_create_tasks_table.php
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateTasksTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create('tasks', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->timestamps();
|
||||||
|
$table->string('titolo',255);
|
||||||
|
$table->longText('descrizione')->nullable();
|
||||||
|
$table->bigInteger('creato_da');
|
||||||
|
$table->bigInteger('assegnato_a');
|
||||||
|
$table->date('creato_il');
|
||||||
|
$table->date('termine_il');
|
||||||
|
$table->date('chiuso_il');
|
||||||
|
$table->enum('stato', ['Aperto', 'Chiuso'])->nullable()->default('Aperto');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('tasks');
|
||||||
|
}
|
||||||
|
}
|
||||||
42
database/migrations/2023_07_14_123350_subtask.php
Normal file
42
database/migrations/2023_07_14_123350_subtask.php
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class Subtask extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Schema::create('subtasks', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->timestamps();
|
||||||
|
// $table->bigInteger('tasks_id');
|
||||||
|
$table->foreignId('tasks_id')->onDelete('cascade');
|
||||||
|
$table->string('titolo',255);
|
||||||
|
$table->longText('descrizione')->nullable();
|
||||||
|
$table->bigInteger('creato_da');
|
||||||
|
$table->bigInteger('assegnato_a');
|
||||||
|
$table->date('creato_il');
|
||||||
|
$table->date('termine_il');
|
||||||
|
$table->date('chiuso_il');
|
||||||
|
$table->enum('stato', ['Aperto', 'Chiuso'])->nullable()->default('Aperto');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateAvvisosTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create('avvisos', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->timestamps();
|
||||||
|
$table->longtext('avviso');
|
||||||
|
$table->date('creato_il')->nullable()->default(date('Y-m-d'));
|
||||||
|
$table->bigInteger('creato_da');
|
||||||
|
$table->boolean('urgente')->nullable()->default(false);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('avvisos');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateContrattisTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create('contrattis', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->timestamps();
|
||||||
|
$table->string('numero', 100)->nullable();
|
||||||
|
$table->string('nome', 100);
|
||||||
|
$table->date('datainizio');
|
||||||
|
$table->date('datatermine');
|
||||||
|
$table->string('fornitore', 100)->default('text');
|
||||||
|
$table->string('tipo', 100)->default('utenze');
|
||||||
|
$table->decimal('importo', 5, 2);
|
||||||
|
$table->date('scadenzapagamento');
|
||||||
|
$table->string('stato', 100)->default('attivo');
|
||||||
|
$table->longText('note')->nullable();
|
||||||
|
$table->string('filename',255)->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('contrattis');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateGenDocsTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create('gen_docs', function (Blueprint $table) {
|
||||||
|
// Documenti generali definibili agganciabili a diverse entità
|
||||||
|
$table->id();
|
||||||
|
$table->timestamps();
|
||||||
|
$table->integer('entity')->unsigned();
|
||||||
|
$table->bigInteger('entity_id');
|
||||||
|
$table->string('filename', 255);
|
||||||
|
$table->longText('descrizione');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('gen_docs');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,7 +16,23 @@ class CategorieSeeder extends Seeder
|
|||||||
{
|
{
|
||||||
// Inserisce le categorie necessarie
|
// Inserisce le categorie necessarie
|
||||||
DB::table('categories')->insert(
|
DB::table('categories')->insert(
|
||||||
['cat_name'=>'Automobili']
|
[
|
||||||
|
'cat_name'=>'Automobili',
|
||||||
|
'cat_uscita'=>1,
|
||||||
|
'cat_entrata'=>0,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
DB::table('categories')->insert(
|
||||||
|
[
|
||||||
|
'cat_name'=>'Stipendio',
|
||||||
|
'cat_uscita'=>0,
|
||||||
|
'cat_entrata'=>1]
|
||||||
|
);
|
||||||
|
DB::table('categories')->insert(
|
||||||
|
[
|
||||||
|
'cat_name'=>'Utenze',
|
||||||
|
'cat_uscita'=>1,
|
||||||
|
'cat_entrata'=>0]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ class DatabaseSeeder extends Seeder
|
|||||||
UserSeeder::class,
|
UserSeeder::class,
|
||||||
TagSeeder::class,
|
TagSeeder::class,
|
||||||
CategorieSeeder::class,
|
CategorieSeeder::class,
|
||||||
|
RoleSeeder::class,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
44
database/seeders/Documenti.php
Normal file
44
database/seeders/Documenti.php
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Database\Seeders;
|
||||||
|
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
use App\Models\Documenti as Doc;
|
||||||
|
|
||||||
|
class Documenti extends Seeder
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the database seeds.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Doc::create([
|
||||||
|
'id'=>0,
|
||||||
|
'descrizione' => 'Movimenti',
|
||||||
|
'path' => 'Movimenti',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 1,
|
||||||
|
'descrizione' => 'Contratti',
|
||||||
|
'path' => 'Contratti',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 2,
|
||||||
|
'descrizione' => 'Automobili',
|
||||||
|
'path' => 'Automobili',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 3,
|
||||||
|
'descrizione' => 'Progetti',
|
||||||
|
'path' => 'Progetti',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 4,
|
||||||
|
'descrizione' => 'Documenti',
|
||||||
|
'path' => 'Documenti',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
84
database/seeders/OnlySeeder.php
Normal file
84
database/seeders/OnlySeeder.php
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
<?php
|
||||||
|
namespace Database\Seeders;
|
||||||
|
|
||||||
|
use App\Models\User;
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
use Illuminate\Support\Facades\Hash;
|
||||||
|
use Spatie\Permission\Models\Permission;
|
||||||
|
use Spatie\Permission\Models\Role;
|
||||||
|
use Spatie\Permission\PermissionRegistrar;
|
||||||
|
|
||||||
|
class OnlySeeder extends Seeder
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run the database seeds.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
// Role Creation
|
||||||
|
$role_admin = Role::create([
|
||||||
|
'name' => 'admin'
|
||||||
|
]);
|
||||||
|
$role_user = Role::create([
|
||||||
|
'name' => 'user'
|
||||||
|
]);
|
||||||
|
$role_guest = Role::create([
|
||||||
|
'name' => 'guest'
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Permission Creation
|
||||||
|
Permission::create([
|
||||||
|
'name' => 'conti'
|
||||||
|
]);
|
||||||
|
Permission::create([
|
||||||
|
'name' => 'consumi'
|
||||||
|
]);
|
||||||
|
Permission::create([
|
||||||
|
'name' => 'automobili'
|
||||||
|
]);
|
||||||
|
Permission::create([
|
||||||
|
'name' => 'contatti'
|
||||||
|
]);
|
||||||
|
Permission::create([
|
||||||
|
'name' => 'affitti'
|
||||||
|
]);
|
||||||
|
Permission::create([
|
||||||
|
'name' => 'progetti'
|
||||||
|
]);
|
||||||
|
Permission::create([
|
||||||
|
'name' => 'amministrazione'
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Assegnazione permessi al ruolo user
|
||||||
|
$role_user->givePermissionTo('affitti');
|
||||||
|
$role_user->givePermissionTo('automobili');
|
||||||
|
$role_user->givePermissionTo('contatti');
|
||||||
|
$role_user->givePermissionTo('consumi');
|
||||||
|
$role_user->givePermissionTo('conti');
|
||||||
|
$role_user->givePermissionTo('progetti');
|
||||||
|
// Assegnazione permessi al ruolo guest
|
||||||
|
$role_guest->givePermissionTo('affitti');
|
||||||
|
// Il ruolo admin ha già tutti i permessi da middleware
|
||||||
|
|
||||||
|
$admin = User::create([
|
||||||
|
'name'=>'Amministratore',
|
||||||
|
'email'=>'admin@localhost.local',
|
||||||
|
'password'=>Hash::make('admin'),
|
||||||
|
])->assignRole('admin');
|
||||||
|
|
||||||
|
$user = User::create([
|
||||||
|
'name'=>'Utente',
|
||||||
|
'email'=>'user@localhost.local',
|
||||||
|
'password'=>Hash::make('user'),
|
||||||
|
])->assignRole('user');
|
||||||
|
|
||||||
|
$guest = User::create([
|
||||||
|
'name'=>'Guest',
|
||||||
|
'email'=>'guest@localhost.local',
|
||||||
|
'password'=>Hash::make('guest'),
|
||||||
|
])->assignRole('guest');
|
||||||
|
}
|
||||||
|
}
|
||||||
83
database/seeders/RoleSeeder.php
Normal file
83
database/seeders/RoleSeeder.php
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
<?php
|
||||||
|
namespace Database\Seeders;
|
||||||
|
|
||||||
|
use App\Models\User;
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
use Illuminate\Support\Facades\Hash;
|
||||||
|
use Spatie\Permission\Models\Permission;
|
||||||
|
use Spatie\Permission\Models\Role;
|
||||||
|
use Spatie\Permission\PermissionRegistrar;
|
||||||
|
|
||||||
|
class RoleSeeder extends Seeder
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run the database seeds.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
// Role Creation
|
||||||
|
$role_admin = Role::create([
|
||||||
|
'name' => 'admin'
|
||||||
|
]);
|
||||||
|
$role_user = Role::create([
|
||||||
|
'name' => 'user'
|
||||||
|
]);
|
||||||
|
$role_guest = Role::create([
|
||||||
|
'name' => 'guest'
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Permission Creation
|
||||||
|
Permission::create([
|
||||||
|
'name' => 'conti'
|
||||||
|
]);
|
||||||
|
Permission::create([
|
||||||
|
'name' => 'consumi'
|
||||||
|
]);
|
||||||
|
Permission::create([
|
||||||
|
'name' => 'automobili'
|
||||||
|
]);
|
||||||
|
Permission::create([
|
||||||
|
'name' => 'contatti'
|
||||||
|
]);
|
||||||
|
Permission::create([
|
||||||
|
'name' => 'affitti'
|
||||||
|
]);
|
||||||
|
Permission::create([
|
||||||
|
'name' => 'progetti'
|
||||||
|
]);
|
||||||
|
Permission::create([
|
||||||
|
'name' => 'amministrazione'
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Assegnazione permessi al ruolo user
|
||||||
|
$role_user->givePermissionTo('affitti');
|
||||||
|
$role_user->givePermissionTo('automobili');
|
||||||
|
$role_user->givePermissionTo('contatti');
|
||||||
|
$role_user->givePermissionTo('consumi');
|
||||||
|
$role_user->givePermissionTo('conti');
|
||||||
|
$role_user->givePermissionTo('progetti');
|
||||||
|
// Assegnazione permessi al ruolo guest
|
||||||
|
$role_guest->givePermissionTo('affitti');
|
||||||
|
|
||||||
|
$admin = User::create([
|
||||||
|
'name'=>'Amministratore',
|
||||||
|
'email'=>'admin@localhost.local',
|
||||||
|
'password'=>Hash::make('password'),
|
||||||
|
])->assignRole($role_admin);
|
||||||
|
|
||||||
|
$user = User::create([
|
||||||
|
'name'=>'Utente',
|
||||||
|
'email'=>'user@localhost.local',
|
||||||
|
'password'=>Hash::make('password'),
|
||||||
|
])->assignRole($role_user);
|
||||||
|
|
||||||
|
$guest = User::create([
|
||||||
|
'name'=>'Guest',
|
||||||
|
'email'=>'guest@localhost.local',
|
||||||
|
'password'=>Hash::make('password'),
|
||||||
|
])->assignRole($role_guest);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -18,5 +18,8 @@ class TagSeeder extends Seeder
|
|||||||
DB::table('tags')->insert(
|
DB::table('tags')->insert(
|
||||||
['tag_name'=>'System']
|
['tag_name'=>'System']
|
||||||
);
|
);
|
||||||
|
DB::table('tags')->insert(
|
||||||
|
['tag_name'=>'da verificare']
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,9 +20,11 @@ class UserSeeder extends Seeder
|
|||||||
DB::table('users')->insert(
|
DB::table('users')->insert(
|
||||||
[
|
[
|
||||||
'name'=>'SystemUser',
|
'name'=>'SystemUser',
|
||||||
'email'=>env('SYSADMIN_MAIL'),
|
'email'=>'system@localhost.local',
|
||||||
'password'=>Hash::make(Str::random(16)),
|
'password'=>Hash::make(Str::random(16)),
|
||||||
|
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
12291
package-lock.json
generated
12291
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -21,6 +21,7 @@
|
|||||||
"sass-loader": "^11.0.1"
|
"sass-loader": "^11.0.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@fullcalendar/google-calendar": "^6.1.9",
|
||||||
"bootstrap-select": "^1.13.18",
|
"bootstrap-select": "^1.13.18",
|
||||||
"fullcalendar": "^5.10.2"
|
"fullcalendar": "^5.10.2"
|
||||||
}
|
}
|
||||||
|
|||||||
1
public/contratti
Symbolic link
1
public/contratti
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
/var/www/html/bubofamily/storage/app/Contratti
|
||||||
152
public/css/Blog-Template.css
vendored
Normal file
152
public/css/Blog-Template.css
vendored
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
.u-section-1 .u-sheet-1 {
|
||||||
|
min-height: 561px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-repeater-1 {
|
||||||
|
margin-top: 60px;
|
||||||
|
margin-bottom: 60px;
|
||||||
|
min-height: 441px;
|
||||||
|
grid-template-columns: calc(33.3333% - 15px) calc(33.3333% - 15px) calc(33.3333% - 15px);
|
||||||
|
height: auto;
|
||||||
|
grid-gap: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-repeater-item-1 {
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-container-layout-1 {
|
||||||
|
padding: 30px 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-text-1 {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-image-1 {
|
||||||
|
height: 222px;
|
||||||
|
margin-top: 17px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-text-2 {
|
||||||
|
margin-top: 20px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-btn-1 {
|
||||||
|
background-image: none;
|
||||||
|
border-style: none none solid;
|
||||||
|
margin: 17px auto 0 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-container-layout-2 {
|
||||||
|
padding: 30px 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-text-3 {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-image-2 {
|
||||||
|
height: 222px;
|
||||||
|
margin-top: 17px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-text-4 {
|
||||||
|
margin-top: 20px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-btn-2 {
|
||||||
|
background-image: none;
|
||||||
|
border-style: none none solid;
|
||||||
|
margin: 17px auto 0 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-container-layout-3 {
|
||||||
|
padding: 30px 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-text-5 {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-image-3 {
|
||||||
|
height: 222px;
|
||||||
|
margin-top: 17px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-text-6 {
|
||||||
|
margin-top: 20px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-btn-3 {
|
||||||
|
background-image: none;
|
||||||
|
border-style: none none solid;
|
||||||
|
margin: 17px auto 0 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1199px) {
|
||||||
|
.u-section-1 .u-sheet-1 {
|
||||||
|
min-height: 484px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-repeater-1 {
|
||||||
|
min-height: 364px;
|
||||||
|
grid-template-columns: repeat(3, calc(33.333333333333336% - 15px));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 991px) {
|
||||||
|
.u-section-1 .u-sheet-1 {
|
||||||
|
min-height: 956px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-repeater-1 {
|
||||||
|
min-height: 836px;
|
||||||
|
grid-template-columns: repeat(2, calc(50% - 11.25px));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.u-section-1 .u-repeater-1 {
|
||||||
|
grid-template-columns: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-container-layout-1 {
|
||||||
|
padding-left: 10px;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-image-1 {
|
||||||
|
height: 278px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-container-layout-2 {
|
||||||
|
padding-left: 10px;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-image-2 {
|
||||||
|
height: 278px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-container-layout-3 {
|
||||||
|
padding-left: 10px;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-image-3 {
|
||||||
|
height: 278px;
|
||||||
|
}
|
||||||
|
}
|
||||||
186
public/css/Page-2.css
vendored
Normal file
186
public/css/Page-2.css
vendored
Normal file
@@ -0,0 +1,186 @@
|
|||||||
|
.u-section-1 {
|
||||||
|
background-image: url("/images/aw.jpg");
|
||||||
|
background-position: 50% 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-sheet-1 {
|
||||||
|
min-height: 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-layout-wrap-1 {
|
||||||
|
width: 1140px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-image-1 {
|
||||||
|
min-height: 691px;
|
||||||
|
background-image: url("/images/s-min.jpg");
|
||||||
|
background-position: 50% 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-container-layout-1 {
|
||||||
|
padding: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-layout-cell-2 {
|
||||||
|
min-height: 691px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-container-layout-2 {
|
||||||
|
padding: 30px 36px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-text-1 {
|
||||||
|
font-size: 1.25rem;
|
||||||
|
font-weight: 700;
|
||||||
|
line-height: 1.2;
|
||||||
|
background-image: none;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 5px;
|
||||||
|
font-family: "PT Sans", sans-serif;
|
||||||
|
margin: 110px 28px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-text-2 {
|
||||||
|
font-size: 4.5rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: normal;
|
||||||
|
font-weight: 700;
|
||||||
|
font-family: "Roboto Condensed", sans-serif;
|
||||||
|
margin: 0 28px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-text-3 {
|
||||||
|
font-size: 1.125rem;
|
||||||
|
font-style: italic;
|
||||||
|
margin: 20px 14px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-text-4 {
|
||||||
|
margin: 18px auto 0 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-btn-1 {
|
||||||
|
border-style: solid;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-btn-2 {
|
||||||
|
background-image: none;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 3px;
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 1rem;
|
||||||
|
border-style: none;
|
||||||
|
margin: 28px auto 0 0;
|
||||||
|
padding: 10px 52px 10px 51px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1199px) {
|
||||||
|
.u-section-1 .u-sheet-1 {
|
||||||
|
min-height: 291px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-layout-wrap-1 {
|
||||||
|
width: 940px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-image-1 {
|
||||||
|
min-height: 570px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-layout-cell-2 {
|
||||||
|
min-height: 570px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-text-1 {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-text-2 {
|
||||||
|
font-size: 3.75rem;
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-text-3 {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 991px) {
|
||||||
|
.u-section-1 .u-sheet-1 {
|
||||||
|
min-height: 158px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-layout-wrap-1 {
|
||||||
|
width: 720px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-image-1 {
|
||||||
|
min-height: 437px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-layout-cell-2 {
|
||||||
|
min-height: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-container-layout-2 {
|
||||||
|
padding-left: 30px;
|
||||||
|
padding-right: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-text-2 {
|
||||||
|
font-size: 3rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.u-section-1 .u-sheet-1 {
|
||||||
|
min-height: 477px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-layout-wrap-1 {
|
||||||
|
width: 540px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-image-1 {
|
||||||
|
min-height: 656px;
|
||||||
|
order: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-container-layout-1 {
|
||||||
|
padding-left: 10px;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-layout-cell-2 {
|
||||||
|
order: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-container-layout-2 {
|
||||||
|
padding-left: 10px;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-text-2 {
|
||||||
|
font-size: 4.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 575px) {
|
||||||
|
.u-section-1 .u-sheet-1 {
|
||||||
|
min-height: 234px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-layout-wrap-1 {
|
||||||
|
width: 340px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-image-1 {
|
||||||
|
min-height: 413px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-text-2 {
|
||||||
|
font-size: 2.25rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
87
public/css/Post-Template.css
vendored
Normal file
87
public/css/Post-Template.css
vendored
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
.u-section-1 .u-sheet-1 {
|
||||||
|
min-height: 835px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-post-details-1 {
|
||||||
|
min-height: 375px;
|
||||||
|
margin-top: 60px;
|
||||||
|
margin-bottom: -10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-container-layout-1 {
|
||||||
|
padding: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-image-1 {
|
||||||
|
height: 486px;
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-text-1 {
|
||||||
|
margin-top: 20px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-metadata-1 {
|
||||||
|
margin-top: 30px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-text-2 {
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-top: 20px;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1199px) {
|
||||||
|
.u-section-1 .u-image-1 {
|
||||||
|
margin-left: initial;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 991px) {
|
||||||
|
.u-section-1 .u-sheet-1 {
|
||||||
|
min-height: 782px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-post-details-1 {
|
||||||
|
margin-bottom: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-image-1 {
|
||||||
|
height: 423px;
|
||||||
|
margin-left: initial;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.u-section-1 .u-sheet-1 {
|
||||||
|
min-height: 722px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-container-layout-1 {
|
||||||
|
padding-left: 10px;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-image-1 {
|
||||||
|
height: 354px;
|
||||||
|
margin-top: 9px;
|
||||||
|
margin-left: initial;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 575px) {
|
||||||
|
.u-section-1 .u-sheet-1 {
|
||||||
|
min-height: 656px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-section-1 .u-image-1 {
|
||||||
|
height: 275px;
|
||||||
|
margin-left: initial;
|
||||||
|
}
|
||||||
|
}
|
||||||
1
public/css/app.css
vendored
1
public/css/app.css
vendored
@@ -1,5 +1,4 @@
|
|||||||
@import url(https://fonts.googleapis.com/css?family=Nunito);
|
@import url(https://fonts.googleapis.com/css?family=Nunito);
|
||||||
|
|
||||||
@charset "UTF-8";
|
@charset "UTF-8";
|
||||||
/*!
|
/*!
|
||||||
* Bootstrap v5.1.3 (https://getbootstrap.com/)
|
* Bootstrap v5.1.3 (https://getbootstrap.com/)
|
||||||
|
|||||||
48
public/css/calendaricon.css
vendored
Normal file
48
public/css/calendaricon.css
vendored
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
time.icon
|
||||||
|
{
|
||||||
|
font-size: 0.5em; /* change icon size */
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
|
width: 7em;
|
||||||
|
height: 7em;
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 0.6em;
|
||||||
|
box-shadow: 0 1px 0 #bdbdbd, 0 2px 0 #fff, 0 3px 0 #bdbdbd, 0 4px 0 #fff, 0 5px 0 #bdbdbd, 0 0 0 1px #bdbdbd;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
time.icon *
|
||||||
|
{
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
font-size: 1em;
|
||||||
|
font-weight: bold;
|
||||||
|
font-style: normal;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
time.icon strong
|
||||||
|
{
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
padding: 0.4em 0;
|
||||||
|
color: #fff;
|
||||||
|
background-color: #fd9f1b;
|
||||||
|
border-bottom: 1px dashed #f37302;
|
||||||
|
box-shadow: 0 2px 0 #fd9f1b;
|
||||||
|
}
|
||||||
|
|
||||||
|
time.icon em
|
||||||
|
{
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0.3em;
|
||||||
|
color: #fd9f1b;
|
||||||
|
}
|
||||||
|
|
||||||
|
time.icon span
|
||||||
|
{
|
||||||
|
font-size: 2.8em;
|
||||||
|
letter-spacing: -0.05em;
|
||||||
|
padding-top: 0.8em;
|
||||||
|
color: #2f2f2f;
|
||||||
|
}
|
||||||
41239
public/css/nicepage.css
vendored
Normal file
41239
public/css/nicepage.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
BIN
public/fontawesome-free-6.4.2-web.zip
Normal file
BIN
public/fontawesome-free-6.4.2-web.zip
Normal file
Binary file not shown.
165
public/fontawesome-free-6.4.2-web/LICENSE.txt
Normal file
165
public/fontawesome-free-6.4.2-web/LICENSE.txt
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
Fonticons, Inc. (https://fontawesome.com)
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Font Awesome Free License
|
||||||
|
|
||||||
|
Font Awesome Free is free, open source, and GPL friendly. You can use it for
|
||||||
|
commercial projects, open source projects, or really almost whatever you want.
|
||||||
|
Full Font Awesome Free license: https://fontawesome.com/license/free.
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
|
||||||
|
|
||||||
|
The Font Awesome Free download is licensed under a Creative Commons
|
||||||
|
Attribution 4.0 International License and applies to all icons packaged
|
||||||
|
as SVG and JS file types.
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Fonts: SIL OFL 1.1 License
|
||||||
|
|
||||||
|
In the Font Awesome Free download, the SIL OFL license applies to all icons
|
||||||
|
packaged as web and desktop font files.
|
||||||
|
|
||||||
|
Copyright (c) 2023 Fonticons, Inc. (https://fontawesome.com)
|
||||||
|
with Reserved Font Name: "Font Awesome".
|
||||||
|
|
||||||
|
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||||
|
This license is copied below, and is also available with a FAQ at:
|
||||||
|
http://scripts.sil.org/OFL
|
||||||
|
|
||||||
|
SIL OPEN FONT LICENSE
|
||||||
|
Version 1.1 - 26 February 2007
|
||||||
|
|
||||||
|
PREAMBLE
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font creation
|
||||||
|
efforts of academic and linguistic communities, and to provide a free and
|
||||||
|
open framework in which fonts may be shared and improved in partnership
|
||||||
|
with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply
|
||||||
|
to any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
"Font Software" refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
"Reserved Font Name" refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
"Original Version" refers to the collection of Font Software components as
|
||||||
|
distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||||
|
or substituting — in part or in whole — any of the components of the
|
||||||
|
Original Version, by changing formats or by porting the Font Software to a
|
||||||
|
new environment.
|
||||||
|
|
||||||
|
"Author" refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
PERMISSION & CONDITIONS
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||||
|
redistribute, and sell modified and unmodified copies of the Font
|
||||||
|
Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1) Neither the Font Software nor any of its individual components,
|
||||||
|
in Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2) Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3) No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the corresponding
|
||||||
|
Copyright Holder. This restriction only applies to the primary font name as
|
||||||
|
presented to the users.
|
||||||
|
|
||||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5) The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created
|
||||||
|
using the Font Software.
|
||||||
|
|
||||||
|
TERMINATION
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Code: MIT License (https://opensource.org/licenses/MIT)
|
||||||
|
|
||||||
|
In the Font Awesome Free download, the MIT license applies to all non-font and
|
||||||
|
non-icon files.
|
||||||
|
|
||||||
|
Copyright 2023 Fonticons, Inc.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in the
|
||||||
|
Software without restriction, including without limitation the rights to use, copy,
|
||||||
|
modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
|
||||||
|
and to permit persons to whom the Software is furnished to do so, subject to the
|
||||||
|
following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||||
|
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Attribution
|
||||||
|
|
||||||
|
Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font
|
||||||
|
Awesome Free files already contain embedded comments with sufficient
|
||||||
|
attribution, so you shouldn't need to do anything additional when using these
|
||||||
|
files normally.
|
||||||
|
|
||||||
|
We've kept attribution comments terse, so we ask that you do not actively work
|
||||||
|
to remove them from files, especially code. They're a great way for folks to
|
||||||
|
learn about Font Awesome.
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Brand Icons
|
||||||
|
|
||||||
|
All brand icons are trademarks of their respective owners. The use of these
|
||||||
|
trademarks does not indicate endorsement of the trademark holder by Font
|
||||||
|
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
|
||||||
|
to represent the company, product, or service to which they refer.**
|
||||||
7970
public/fontawesome-free-6.4.2-web/css/all.css
vendored
Normal file
7970
public/fontawesome-free-6.4.2-web/css/all.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
9
public/fontawesome-free-6.4.2-web/css/all.min.css
vendored
Normal file
9
public/fontawesome-free-6.4.2-web/css/all.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1537
public/fontawesome-free-6.4.2-web/css/brands.css
vendored
Normal file
1537
public/fontawesome-free-6.4.2-web/css/brands.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
6
public/fontawesome-free-6.4.2-web/css/brands.min.css
vendored
Normal file
6
public/fontawesome-free-6.4.2-web/css/brands.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
6372
public/fontawesome-free-6.4.2-web/css/fontawesome.css
vendored
Normal file
6372
public/fontawesome-free-6.4.2-web/css/fontawesome.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
9
public/fontawesome-free-6.4.2-web/css/fontawesome.min.css
vendored
Normal file
9
public/fontawesome-free-6.4.2-web/css/fontawesome.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
19
public/fontawesome-free-6.4.2-web/css/regular.css
vendored
Normal file
19
public/fontawesome-free-6.4.2-web/css/regular.css
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
/*!
|
||||||
|
* Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com
|
||||||
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||||
|
* Copyright 2023 Fonticons, Inc.
|
||||||
|
*/
|
||||||
|
:root, :host {
|
||||||
|
--fa-style-family-classic: 'Font Awesome 6 Free';
|
||||||
|
--fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; }
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Font Awesome 6 Free';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: block;
|
||||||
|
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }
|
||||||
|
|
||||||
|
.far,
|
||||||
|
.fa-regular {
|
||||||
|
font-weight: 400; }
|
||||||
6
public/fontawesome-free-6.4.2-web/css/regular.min.css
vendored
Normal file
6
public/fontawesome-free-6.4.2-web/css/regular.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
/*!
|
||||||
|
* Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com
|
||||||
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||||
|
* Copyright 2023 Fonticons, Inc.
|
||||||
|
*/
|
||||||
|
:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}
|
||||||
19
public/fontawesome-free-6.4.2-web/css/solid.css
vendored
Normal file
19
public/fontawesome-free-6.4.2-web/css/solid.css
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
/*!
|
||||||
|
* Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com
|
||||||
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||||
|
* Copyright 2023 Fonticons, Inc.
|
||||||
|
*/
|
||||||
|
:root, :host {
|
||||||
|
--fa-style-family-classic: 'Font Awesome 6 Free';
|
||||||
|
--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; }
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Font Awesome 6 Free';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 900;
|
||||||
|
font-display: block;
|
||||||
|
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
|
||||||
|
|
||||||
|
.fas,
|
||||||
|
.fa-solid {
|
||||||
|
font-weight: 900; }
|
||||||
6
public/fontawesome-free-6.4.2-web/css/solid.min.css
vendored
Normal file
6
public/fontawesome-free-6.4.2-web/css/solid.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
/*!
|
||||||
|
* Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com
|
||||||
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||||
|
* Copyright 2023 Fonticons, Inc.
|
||||||
|
*/
|
||||||
|
:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}
|
||||||
639
public/fontawesome-free-6.4.2-web/css/svg-with-js.css
vendored
Normal file
639
public/fontawesome-free-6.4.2-web/css/svg-with-js.css
vendored
Normal file
@@ -0,0 +1,639 @@
|
|||||||
|
/*!
|
||||||
|
* Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com
|
||||||
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||||
|
* Copyright 2023 Fonticons, Inc.
|
||||||
|
*/
|
||||||
|
:root, :host {
|
||||||
|
--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Solid';
|
||||||
|
--fa-font-regular: normal 400 1em/1 'Font Awesome 6 Regular';
|
||||||
|
--fa-font-light: normal 300 1em/1 'Font Awesome 6 Light';
|
||||||
|
--fa-font-thin: normal 100 1em/1 'Font Awesome 6 Thin';
|
||||||
|
--fa-font-duotone: normal 900 1em/1 'Font Awesome 6 Duotone';
|
||||||
|
--fa-font-sharp-solid: normal 900 1em/1 'Font Awesome 6 Sharp';
|
||||||
|
--fa-font-sharp-regular: normal 400 1em/1 'Font Awesome 6 Sharp';
|
||||||
|
--fa-font-sharp-light: normal 300 1em/1 'Font Awesome 6 Sharp';
|
||||||
|
--fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; }
|
||||||
|
|
||||||
|
svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {
|
||||||
|
overflow: visible;
|
||||||
|
box-sizing: content-box; }
|
||||||
|
|
||||||
|
.svg-inline--fa {
|
||||||
|
display: var(--fa-display, inline-block);
|
||||||
|
height: 1em;
|
||||||
|
overflow: visible;
|
||||||
|
vertical-align: -.125em; }
|
||||||
|
.svg-inline--fa.fa-2xs {
|
||||||
|
vertical-align: 0.1em; }
|
||||||
|
.svg-inline--fa.fa-xs {
|
||||||
|
vertical-align: 0em; }
|
||||||
|
.svg-inline--fa.fa-sm {
|
||||||
|
vertical-align: -0.07143em; }
|
||||||
|
.svg-inline--fa.fa-lg {
|
||||||
|
vertical-align: -0.2em; }
|
||||||
|
.svg-inline--fa.fa-xl {
|
||||||
|
vertical-align: -0.25em; }
|
||||||
|
.svg-inline--fa.fa-2xl {
|
||||||
|
vertical-align: -0.3125em; }
|
||||||
|
.svg-inline--fa.fa-pull-left {
|
||||||
|
margin-right: var(--fa-pull-margin, 0.3em);
|
||||||
|
width: auto; }
|
||||||
|
.svg-inline--fa.fa-pull-right {
|
||||||
|
margin-left: var(--fa-pull-margin, 0.3em);
|
||||||
|
width: auto; }
|
||||||
|
.svg-inline--fa.fa-li {
|
||||||
|
width: var(--fa-li-width, 2em);
|
||||||
|
top: 0.25em; }
|
||||||
|
.svg-inline--fa.fa-fw {
|
||||||
|
width: var(--fa-fw-width, 1.25em); }
|
||||||
|
|
||||||
|
.fa-layers svg.svg-inline--fa {
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
margin: auto;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0; }
|
||||||
|
|
||||||
|
.fa-layers-text, .fa-layers-counter {
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
text-align: center; }
|
||||||
|
|
||||||
|
.fa-layers {
|
||||||
|
display: inline-block;
|
||||||
|
height: 1em;
|
||||||
|
position: relative;
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: -.125em;
|
||||||
|
width: 1em; }
|
||||||
|
.fa-layers svg.svg-inline--fa {
|
||||||
|
-webkit-transform-origin: center center;
|
||||||
|
transform-origin: center center; }
|
||||||
|
|
||||||
|
.fa-layers-text {
|
||||||
|
left: 50%;
|
||||||
|
top: 50%;
|
||||||
|
-webkit-transform: translate(-50%, -50%);
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
-webkit-transform-origin: center center;
|
||||||
|
transform-origin: center center; }
|
||||||
|
|
||||||
|
.fa-layers-counter {
|
||||||
|
background-color: var(--fa-counter-background-color, #ff253a);
|
||||||
|
border-radius: var(--fa-counter-border-radius, 1em);
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: var(--fa-inverse, #fff);
|
||||||
|
line-height: var(--fa-counter-line-height, 1);
|
||||||
|
max-width: var(--fa-counter-max-width, 5em);
|
||||||
|
min-width: var(--fa-counter-min-width, 1.5em);
|
||||||
|
overflow: hidden;
|
||||||
|
padding: var(--fa-counter-padding, 0.25em 0.5em);
|
||||||
|
right: var(--fa-right, 0);
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
top: var(--fa-top, 0);
|
||||||
|
-webkit-transform: scale(var(--fa-counter-scale, 0.25));
|
||||||
|
transform: scale(var(--fa-counter-scale, 0.25));
|
||||||
|
-webkit-transform-origin: top right;
|
||||||
|
transform-origin: top right; }
|
||||||
|
|
||||||
|
.fa-layers-bottom-right {
|
||||||
|
bottom: var(--fa-bottom, 0);
|
||||||
|
right: var(--fa-right, 0);
|
||||||
|
top: auto;
|
||||||
|
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
||||||
|
transform: scale(var(--fa-layers-scale, 0.25));
|
||||||
|
-webkit-transform-origin: bottom right;
|
||||||
|
transform-origin: bottom right; }
|
||||||
|
|
||||||
|
.fa-layers-bottom-left {
|
||||||
|
bottom: var(--fa-bottom, 0);
|
||||||
|
left: var(--fa-left, 0);
|
||||||
|
right: auto;
|
||||||
|
top: auto;
|
||||||
|
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
||||||
|
transform: scale(var(--fa-layers-scale, 0.25));
|
||||||
|
-webkit-transform-origin: bottom left;
|
||||||
|
transform-origin: bottom left; }
|
||||||
|
|
||||||
|
.fa-layers-top-right {
|
||||||
|
top: var(--fa-top, 0);
|
||||||
|
right: var(--fa-right, 0);
|
||||||
|
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
||||||
|
transform: scale(var(--fa-layers-scale, 0.25));
|
||||||
|
-webkit-transform-origin: top right;
|
||||||
|
transform-origin: top right; }
|
||||||
|
|
||||||
|
.fa-layers-top-left {
|
||||||
|
left: var(--fa-left, 0);
|
||||||
|
right: auto;
|
||||||
|
top: var(--fa-top, 0);
|
||||||
|
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
||||||
|
transform: scale(var(--fa-layers-scale, 0.25));
|
||||||
|
-webkit-transform-origin: top left;
|
||||||
|
transform-origin: top left; }
|
||||||
|
|
||||||
|
.fa-1x {
|
||||||
|
font-size: 1em; }
|
||||||
|
|
||||||
|
.fa-2x {
|
||||||
|
font-size: 2em; }
|
||||||
|
|
||||||
|
.fa-3x {
|
||||||
|
font-size: 3em; }
|
||||||
|
|
||||||
|
.fa-4x {
|
||||||
|
font-size: 4em; }
|
||||||
|
|
||||||
|
.fa-5x {
|
||||||
|
font-size: 5em; }
|
||||||
|
|
||||||
|
.fa-6x {
|
||||||
|
font-size: 6em; }
|
||||||
|
|
||||||
|
.fa-7x {
|
||||||
|
font-size: 7em; }
|
||||||
|
|
||||||
|
.fa-8x {
|
||||||
|
font-size: 8em; }
|
||||||
|
|
||||||
|
.fa-9x {
|
||||||
|
font-size: 9em; }
|
||||||
|
|
||||||
|
.fa-10x {
|
||||||
|
font-size: 10em; }
|
||||||
|
|
||||||
|
.fa-2xs {
|
||||||
|
font-size: 0.625em;
|
||||||
|
line-height: 0.1em;
|
||||||
|
vertical-align: 0.225em; }
|
||||||
|
|
||||||
|
.fa-xs {
|
||||||
|
font-size: 0.75em;
|
||||||
|
line-height: 0.08333em;
|
||||||
|
vertical-align: 0.125em; }
|
||||||
|
|
||||||
|
.fa-sm {
|
||||||
|
font-size: 0.875em;
|
||||||
|
line-height: 0.07143em;
|
||||||
|
vertical-align: 0.05357em; }
|
||||||
|
|
||||||
|
.fa-lg {
|
||||||
|
font-size: 1.25em;
|
||||||
|
line-height: 0.05em;
|
||||||
|
vertical-align: -0.075em; }
|
||||||
|
|
||||||
|
.fa-xl {
|
||||||
|
font-size: 1.5em;
|
||||||
|
line-height: 0.04167em;
|
||||||
|
vertical-align: -0.125em; }
|
||||||
|
|
||||||
|
.fa-2xl {
|
||||||
|
font-size: 2em;
|
||||||
|
line-height: 0.03125em;
|
||||||
|
vertical-align: -0.1875em; }
|
||||||
|
|
||||||
|
.fa-fw {
|
||||||
|
text-align: center;
|
||||||
|
width: 1.25em; }
|
||||||
|
|
||||||
|
.fa-ul {
|
||||||
|
list-style-type: none;
|
||||||
|
margin-left: var(--fa-li-margin, 2.5em);
|
||||||
|
padding-left: 0; }
|
||||||
|
.fa-ul > li {
|
||||||
|
position: relative; }
|
||||||
|
|
||||||
|
.fa-li {
|
||||||
|
left: calc(var(--fa-li-width, 2em) * -1);
|
||||||
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
|
width: var(--fa-li-width, 2em);
|
||||||
|
line-height: inherit; }
|
||||||
|
|
||||||
|
.fa-border {
|
||||||
|
border-color: var(--fa-border-color, #eee);
|
||||||
|
border-radius: var(--fa-border-radius, 0.1em);
|
||||||
|
border-style: var(--fa-border-style, solid);
|
||||||
|
border-width: var(--fa-border-width, 0.08em);
|
||||||
|
padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); }
|
||||||
|
|
||||||
|
.fa-pull-left {
|
||||||
|
float: left;
|
||||||
|
margin-right: var(--fa-pull-margin, 0.3em); }
|
||||||
|
|
||||||
|
.fa-pull-right {
|
||||||
|
float: right;
|
||||||
|
margin-left: var(--fa-pull-margin, 0.3em); }
|
||||||
|
|
||||||
|
.fa-beat {
|
||||||
|
-webkit-animation-name: fa-beat;
|
||||||
|
animation-name: fa-beat;
|
||||||
|
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
-webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
||||||
|
animation-timing-function: var(--fa-animation-timing, ease-in-out); }
|
||||||
|
|
||||||
|
.fa-bounce {
|
||||||
|
-webkit-animation-name: fa-bounce;
|
||||||
|
animation-name: fa-bounce;
|
||||||
|
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
|
||||||
|
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); }
|
||||||
|
|
||||||
|
.fa-fade {
|
||||||
|
-webkit-animation-name: fa-fade;
|
||||||
|
animation-name: fa-fade;
|
||||||
|
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
||||||
|
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
|
||||||
|
|
||||||
|
.fa-beat-fade {
|
||||||
|
-webkit-animation-name: fa-beat-fade;
|
||||||
|
animation-name: fa-beat-fade;
|
||||||
|
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
||||||
|
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
|
||||||
|
|
||||||
|
.fa-flip {
|
||||||
|
-webkit-animation-name: fa-flip;
|
||||||
|
animation-name: fa-flip;
|
||||||
|
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
-webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
||||||
|
animation-timing-function: var(--fa-animation-timing, ease-in-out); }
|
||||||
|
|
||||||
|
.fa-shake {
|
||||||
|
-webkit-animation-name: fa-shake;
|
||||||
|
animation-name: fa-shake;
|
||||||
|
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
-webkit-animation-timing-function: var(--fa-animation-timing, linear);
|
||||||
|
animation-timing-function: var(--fa-animation-timing, linear); }
|
||||||
|
|
||||||
|
.fa-spin {
|
||||||
|
-webkit-animation-name: fa-spin;
|
||||||
|
animation-name: fa-spin;
|
||||||
|
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
-webkit-animation-duration: var(--fa-animation-duration, 2s);
|
||||||
|
animation-duration: var(--fa-animation-duration, 2s);
|
||||||
|
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
-webkit-animation-timing-function: var(--fa-animation-timing, linear);
|
||||||
|
animation-timing-function: var(--fa-animation-timing, linear); }
|
||||||
|
|
||||||
|
.fa-spin-reverse {
|
||||||
|
--fa-animation-direction: reverse; }
|
||||||
|
|
||||||
|
.fa-pulse,
|
||||||
|
.fa-spin-pulse {
|
||||||
|
-webkit-animation-name: fa-spin;
|
||||||
|
animation-name: fa-spin;
|
||||||
|
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
-webkit-animation-timing-function: var(--fa-animation-timing, steps(8));
|
||||||
|
animation-timing-function: var(--fa-animation-timing, steps(8)); }
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
.fa-beat,
|
||||||
|
.fa-bounce,
|
||||||
|
.fa-fade,
|
||||||
|
.fa-beat-fade,
|
||||||
|
.fa-flip,
|
||||||
|
.fa-pulse,
|
||||||
|
.fa-shake,
|
||||||
|
.fa-spin,
|
||||||
|
.fa-spin-pulse {
|
||||||
|
-webkit-animation-delay: -1ms;
|
||||||
|
animation-delay: -1ms;
|
||||||
|
-webkit-animation-duration: 1ms;
|
||||||
|
animation-duration: 1ms;
|
||||||
|
-webkit-animation-iteration-count: 1;
|
||||||
|
animation-iteration-count: 1;
|
||||||
|
-webkit-transition-delay: 0s;
|
||||||
|
transition-delay: 0s;
|
||||||
|
-webkit-transition-duration: 0s;
|
||||||
|
transition-duration: 0s; } }
|
||||||
|
|
||||||
|
@-webkit-keyframes fa-beat {
|
||||||
|
0%, 90% {
|
||||||
|
-webkit-transform: scale(1);
|
||||||
|
transform: scale(1); }
|
||||||
|
45% {
|
||||||
|
-webkit-transform: scale(var(--fa-beat-scale, 1.25));
|
||||||
|
transform: scale(var(--fa-beat-scale, 1.25)); } }
|
||||||
|
|
||||||
|
@keyframes fa-beat {
|
||||||
|
0%, 90% {
|
||||||
|
-webkit-transform: scale(1);
|
||||||
|
transform: scale(1); }
|
||||||
|
45% {
|
||||||
|
-webkit-transform: scale(var(--fa-beat-scale, 1.25));
|
||||||
|
transform: scale(var(--fa-beat-scale, 1.25)); } }
|
||||||
|
|
||||||
|
@-webkit-keyframes fa-bounce {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: scale(1, 1) translateY(0);
|
||||||
|
transform: scale(1, 1) translateY(0); }
|
||||||
|
10% {
|
||||||
|
-webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
||||||
|
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
|
||||||
|
30% {
|
||||||
|
-webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
|
||||||
|
transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
|
||||||
|
50% {
|
||||||
|
-webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
||||||
|
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
|
||||||
|
57% {
|
||||||
|
-webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
||||||
|
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
|
||||||
|
64% {
|
||||||
|
-webkit-transform: scale(1, 1) translateY(0);
|
||||||
|
transform: scale(1, 1) translateY(0); }
|
||||||
|
100% {
|
||||||
|
-webkit-transform: scale(1, 1) translateY(0);
|
||||||
|
transform: scale(1, 1) translateY(0); } }
|
||||||
|
|
||||||
|
@keyframes fa-bounce {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: scale(1, 1) translateY(0);
|
||||||
|
transform: scale(1, 1) translateY(0); }
|
||||||
|
10% {
|
||||||
|
-webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
||||||
|
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
|
||||||
|
30% {
|
||||||
|
-webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
|
||||||
|
transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
|
||||||
|
50% {
|
||||||
|
-webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
||||||
|
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
|
||||||
|
57% {
|
||||||
|
-webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
||||||
|
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
|
||||||
|
64% {
|
||||||
|
-webkit-transform: scale(1, 1) translateY(0);
|
||||||
|
transform: scale(1, 1) translateY(0); }
|
||||||
|
100% {
|
||||||
|
-webkit-transform: scale(1, 1) translateY(0);
|
||||||
|
transform: scale(1, 1) translateY(0); } }
|
||||||
|
|
||||||
|
@-webkit-keyframes fa-fade {
|
||||||
|
50% {
|
||||||
|
opacity: var(--fa-fade-opacity, 0.4); } }
|
||||||
|
|
||||||
|
@keyframes fa-fade {
|
||||||
|
50% {
|
||||||
|
opacity: var(--fa-fade-opacity, 0.4); } }
|
||||||
|
|
||||||
|
@-webkit-keyframes fa-beat-fade {
|
||||||
|
0%, 100% {
|
||||||
|
opacity: var(--fa-beat-fade-opacity, 0.4);
|
||||||
|
-webkit-transform: scale(1);
|
||||||
|
transform: scale(1); }
|
||||||
|
50% {
|
||||||
|
opacity: 1;
|
||||||
|
-webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
|
||||||
|
transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
|
||||||
|
|
||||||
|
@keyframes fa-beat-fade {
|
||||||
|
0%, 100% {
|
||||||
|
opacity: var(--fa-beat-fade-opacity, 0.4);
|
||||||
|
-webkit-transform: scale(1);
|
||||||
|
transform: scale(1); }
|
||||||
|
50% {
|
||||||
|
opacity: 1;
|
||||||
|
-webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
|
||||||
|
transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
|
||||||
|
|
||||||
|
@-webkit-keyframes fa-flip {
|
||||||
|
50% {
|
||||||
|
-webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
||||||
|
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
|
||||||
|
|
||||||
|
@keyframes fa-flip {
|
||||||
|
50% {
|
||||||
|
-webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
||||||
|
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
|
||||||
|
|
||||||
|
@-webkit-keyframes fa-shake {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: rotate(-15deg);
|
||||||
|
transform: rotate(-15deg); }
|
||||||
|
4% {
|
||||||
|
-webkit-transform: rotate(15deg);
|
||||||
|
transform: rotate(15deg); }
|
||||||
|
8%, 24% {
|
||||||
|
-webkit-transform: rotate(-18deg);
|
||||||
|
transform: rotate(-18deg); }
|
||||||
|
12%, 28% {
|
||||||
|
-webkit-transform: rotate(18deg);
|
||||||
|
transform: rotate(18deg); }
|
||||||
|
16% {
|
||||||
|
-webkit-transform: rotate(-22deg);
|
||||||
|
transform: rotate(-22deg); }
|
||||||
|
20% {
|
||||||
|
-webkit-transform: rotate(22deg);
|
||||||
|
transform: rotate(22deg); }
|
||||||
|
32% {
|
||||||
|
-webkit-transform: rotate(-12deg);
|
||||||
|
transform: rotate(-12deg); }
|
||||||
|
36% {
|
||||||
|
-webkit-transform: rotate(12deg);
|
||||||
|
transform: rotate(12deg); }
|
||||||
|
40%, 100% {
|
||||||
|
-webkit-transform: rotate(0deg);
|
||||||
|
transform: rotate(0deg); } }
|
||||||
|
|
||||||
|
@keyframes fa-shake {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: rotate(-15deg);
|
||||||
|
transform: rotate(-15deg); }
|
||||||
|
4% {
|
||||||
|
-webkit-transform: rotate(15deg);
|
||||||
|
transform: rotate(15deg); }
|
||||||
|
8%, 24% {
|
||||||
|
-webkit-transform: rotate(-18deg);
|
||||||
|
transform: rotate(-18deg); }
|
||||||
|
12%, 28% {
|
||||||
|
-webkit-transform: rotate(18deg);
|
||||||
|
transform: rotate(18deg); }
|
||||||
|
16% {
|
||||||
|
-webkit-transform: rotate(-22deg);
|
||||||
|
transform: rotate(-22deg); }
|
||||||
|
20% {
|
||||||
|
-webkit-transform: rotate(22deg);
|
||||||
|
transform: rotate(22deg); }
|
||||||
|
32% {
|
||||||
|
-webkit-transform: rotate(-12deg);
|
||||||
|
transform: rotate(-12deg); }
|
||||||
|
36% {
|
||||||
|
-webkit-transform: rotate(12deg);
|
||||||
|
transform: rotate(12deg); }
|
||||||
|
40%, 100% {
|
||||||
|
-webkit-transform: rotate(0deg);
|
||||||
|
transform: rotate(0deg); } }
|
||||||
|
|
||||||
|
@-webkit-keyframes fa-spin {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: rotate(0deg);
|
||||||
|
transform: rotate(0deg); }
|
||||||
|
100% {
|
||||||
|
-webkit-transform: rotate(360deg);
|
||||||
|
transform: rotate(360deg); } }
|
||||||
|
|
||||||
|
@keyframes fa-spin {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: rotate(0deg);
|
||||||
|
transform: rotate(0deg); }
|
||||||
|
100% {
|
||||||
|
-webkit-transform: rotate(360deg);
|
||||||
|
transform: rotate(360deg); } }
|
||||||
|
|
||||||
|
.fa-rotate-90 {
|
||||||
|
-webkit-transform: rotate(90deg);
|
||||||
|
transform: rotate(90deg); }
|
||||||
|
|
||||||
|
.fa-rotate-180 {
|
||||||
|
-webkit-transform: rotate(180deg);
|
||||||
|
transform: rotate(180deg); }
|
||||||
|
|
||||||
|
.fa-rotate-270 {
|
||||||
|
-webkit-transform: rotate(270deg);
|
||||||
|
transform: rotate(270deg); }
|
||||||
|
|
||||||
|
.fa-flip-horizontal {
|
||||||
|
-webkit-transform: scale(-1, 1);
|
||||||
|
transform: scale(-1, 1); }
|
||||||
|
|
||||||
|
.fa-flip-vertical {
|
||||||
|
-webkit-transform: scale(1, -1);
|
||||||
|
transform: scale(1, -1); }
|
||||||
|
|
||||||
|
.fa-flip-both,
|
||||||
|
.fa-flip-horizontal.fa-flip-vertical {
|
||||||
|
-webkit-transform: scale(-1, -1);
|
||||||
|
transform: scale(-1, -1); }
|
||||||
|
|
||||||
|
.fa-rotate-by {
|
||||||
|
-webkit-transform: rotate(var(--fa-rotate-angle, none));
|
||||||
|
transform: rotate(var(--fa-rotate-angle, none)); }
|
||||||
|
|
||||||
|
.fa-stack {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
height: 2em;
|
||||||
|
position: relative;
|
||||||
|
width: 2.5em; }
|
||||||
|
|
||||||
|
.fa-stack-1x,
|
||||||
|
.fa-stack-2x {
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
margin: auto;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
z-index: var(--fa-stack-z-index, auto); }
|
||||||
|
|
||||||
|
.svg-inline--fa.fa-stack-1x {
|
||||||
|
height: 1em;
|
||||||
|
width: 1.25em; }
|
||||||
|
|
||||||
|
.svg-inline--fa.fa-stack-2x {
|
||||||
|
height: 2em;
|
||||||
|
width: 2.5em; }
|
||||||
|
|
||||||
|
.fa-inverse {
|
||||||
|
color: var(--fa-inverse, #fff); }
|
||||||
|
|
||||||
|
.sr-only,
|
||||||
|
.fa-sr-only {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
padding: 0;
|
||||||
|
margin: -1px;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
white-space: nowrap;
|
||||||
|
border-width: 0; }
|
||||||
|
|
||||||
|
.sr-only-focusable:not(:focus),
|
||||||
|
.fa-sr-only-focusable:not(:focus) {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
padding: 0;
|
||||||
|
margin: -1px;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
white-space: nowrap;
|
||||||
|
border-width: 0; }
|
||||||
|
|
||||||
|
.svg-inline--fa .fa-primary {
|
||||||
|
fill: var(--fa-primary-color, currentColor);
|
||||||
|
opacity: var(--fa-primary-opacity, 1); }
|
||||||
|
|
||||||
|
.svg-inline--fa .fa-secondary {
|
||||||
|
fill: var(--fa-secondary-color, currentColor);
|
||||||
|
opacity: var(--fa-secondary-opacity, 0.4); }
|
||||||
|
|
||||||
|
.svg-inline--fa.fa-swap-opacity .fa-primary {
|
||||||
|
opacity: var(--fa-secondary-opacity, 0.4); }
|
||||||
|
|
||||||
|
.svg-inline--fa.fa-swap-opacity .fa-secondary {
|
||||||
|
opacity: var(--fa-primary-opacity, 1); }
|
||||||
|
|
||||||
|
.svg-inline--fa mask .fa-primary,
|
||||||
|
.svg-inline--fa mask .fa-secondary {
|
||||||
|
fill: black; }
|
||||||
|
|
||||||
|
.fad.fa-inverse,
|
||||||
|
.fa-duotone.fa-inverse {
|
||||||
|
color: var(--fa-inverse, #fff); }
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user