BUB-16 Sviluppo iniziale della parte contatti. TODO: creazione nuovo contatto multiplo

This commit is contained in:
Amministratore 2023-04-06 14:44:13 +02:00
parent dedf651770
commit ac787c0da6
10 changed files with 379 additions and 8 deletions

View File

@ -2,9 +2,46 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Models\anagrafica;
use App\Models\contatto;
use Illuminate\Http\Request; use Illuminate\Http\Request;
class AnagraficaController extends Controller class AnagraficaController extends Controller
{ {
// //
public function newContact()
{
return view('anagrafica.form');
}
public function insContact(Request $request)
{
anagrafica::inserisci($request);
return view('anagrafica.list',['anagrafiche'=>anagrafica::getList()]);
}
public function schedaContact(Request $request)
{
$dati = anagrafica::getById($request['id']);
return view('anagrafica.scheda',['anagrafiche'=>$dati]);
}
public function listContact()
{
return view('anagrafica.list',['anagrafiche'=>anagrafica::getList()]);
}
public function modifica(Request $request)
{
return view('anagrafica.form',['anagrafiche'=>anagrafica::getById($request['id'])]);
}
public function getScheda(Request $request)
{
$id=$request['id'];
$anagrafica = anagrafica::getById($id);
$contatto=contatto::listContactsById($id);
return view('anagrafica.dettagli',['anagrafiche'=>$anagrafica,'contatti'=>$contatto['contatti'],'tipo'=>$contatto['tipo']]);
}
} }

View File

@ -4,20 +4,35 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
class anagrafica extends Model class anagrafica extends Model
{ {
use HasFactory; use HasFactory;
public static function inserisci($param) { public static function inserisci($param) {
; DB::table('anagraficas')->insert([
'ang_cognome'=>$param['ang_cognome'],
'ang_nome'=>$param['ang_nome'],
'ang_ragioneSociale'=>$param['ang_ragioneSociale'],
'ang_codiceFiscale'=>$param['ang_codiceFiscale'],
'ang_partitaIva'=>$param['ang_partitaIva'],
'ang_indirizzo'=>$param['ang_indirizzo'],
'ang_CAP'=>$param['ang_CAP'],
'ang_Citta'=>$param['ang_Citta'],
'ang_Provincia'=>$param['ang_Provincia'],
'ang_telefono'=>$param['ang_telefono'],
'ang_note'=>$param['ang_note'],
]);
} }
public static function getList($param) { public static function getList() {
; $lista = DB::table('anagraficas')->OrderBy('ang_cognome')->get();
return $lista;
} }
public static function getById($param) { public static function getById($param) {
;
return DB::table('anagraficas')->where('id','=',$param)->get();
} }
} }

View File

@ -4,8 +4,20 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
class contatto extends Model class contatto extends Model
{ {
use HasFactory; use HasFactory;
public static function listContactsById($id)
{
$type=[1=>'Telefono',2=>'Cellulare',3=>'Fax',4=>'Email','Website'];
$lista=DB::table('contattos')->where('cnt_fk_anagraficaId','=',$id)->get();
return ['tipo'=>$type,'contatti'=>$lista];
}
} }

View File

@ -19,10 +19,19 @@ class CreateAnagraficasTable extends Migration
$table->string('ang_cognome'); $table->string('ang_cognome');
$table->string('ang_nome'); $table->string('ang_nome');
$table->string('ang_ragioneSociale')->nullable(); $table->string('ang_ragioneSociale',255)->nullable();
$table->string('ang_codiceFiscale')->nullable(); $table->string('ang_codiceFiscale',255)->nullable();
$table->string('ang_partitaIva')->nullable(); $table->string('ang_partitaIva',255)->nullable();
$table->longText('ang_indirizzo')->nullable();
$table->string('ang_CAP',10)->nullable();
$table->string('ang_Citta',255)->nullable();
$table->string('ang_Provincia',255)->nullable();
//ALTER TABLE `bubofamily_db`.`anagraficas`
//ADD COLUMN `ang_telefono` VARCHAR(45) NOT NULL AFTER `ang_note`;
$table->string('ang_telefono',45);
$table->longText('ang_note')->nullable(); $table->longText('ang_note')->nullable();
}); });
} }

View File

@ -17,7 +17,7 @@ class CreateContattosTable extends Migration
$table->id(); $table->id();
$table->timestamps(); $table->timestamps();
$table->unsignedBigInteger('cnt_fk_anagraficaId'); $table->unsignedBigInteger('cnt_fk_anagraficaId');
$table->foreign('cnt_fk_anagraficaId')->references('id')->on('anagraficas'); $table->foreign('cnt_fk_anagraficaId')->references('id')->on('anagraficas')->onDelete('cascade');
$table->integer('cnt_tipo'); $table->integer('cnt_tipo');
$table->longText('cnt_valore'); $table->longText('cnt_valore');
$table->longText('cnt_note'); $table->longText('cnt_note');

View File

@ -0,0 +1,103 @@
@extends('admin')
@section('content')
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">Dettaglio Anagrafica</h1>
</div>
</div>
<div class="container">
<!-- Content here -->
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">
Contatto
</div>
<div class="panel-body">
<div class="table-responsive">
<table class="table table-striped table-bordered table-hover">
<tr>
<th>Cognome:</th>
<th>Nome:</th>
<th>Ragione Sociale:</th>
</tr>
<tr>
<td>{{ $anagrafiche[0]->ang_cognome }}</td>
<td>{{ $anagrafiche[0]->ang_nome }}</td>
<td>{{ $anagrafiche[0]->ang_ragioneSociale }}
</tr>
<tr>
<th colspan="2">Partita Iva:</th>
<th>Codice Fiscale:</th>
</tr>
<tr>
<td colspan="2">{{ $anagrafiche[0]->ang_partitaIva }}</td>
<td>{{ $anagrafiche[0]->ang_codiceFiscale }}</td>
</tr>
<tr>
<th colspan="3">Indirizzo:</th>
</tr>
<tr>
<td>{{ $anagrafiche[0]->ang_indirizzo }}</td>
</tr>
<tr>
<th>CAP</th>
<th>Citt&agrave;</th>
<th>Provincia</th>
</tr>
<tr>
<td>{{ $anagrafiche[0]->ang_CAP }}</td>
<td>{{ $anagrafiche[0]->ang_Citta }}</td>
<td>{{ $anagrafiche[0]->ang_Provincia }}</td>
</tr>
<tr>
<th colspan="3">Telefono principale:</th>
</tr>
<tr>
<td colspan="3">{{ $anagrafiche[0]->ang_telefono }}</td>
</tr>
<tr>
<th colspan="3">Note:</th>
</tr>
<tr>
<td colspan="3">{{ $anagrafiche[0]->ang_note }}</td>
</tr>
</table >
<table class="table table-striped table-bordered table-hover" id="contatti">
<thead>
<tr>
<th>Tipo</th>
<th>Valore</th>
<th>Annotazioni</th>
</tr>
</thead>
<tbody>
@foreach($contatti as $contatto)
<tr>
<td>{{ $tipo[$contatto->cnt_tipo] }}</td>
<td>{{ $contatto->cnt_valore }}</td>
<td>{{ $contatto->cnt_note }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- /.col-lg-12 -->
@endsection
@section('script')
<script>
$(document).ready(function() {
$('#contatti').DataTable({
responsive: true
});
});
</script>
@endsection

View File

@ -0,0 +1,105 @@
@extends('admin')
@section('content')
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">Inserisci Anagrafica</h1>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">
Nuova anagrafica
</div>
<div class="panel-body">
<!-- Form -->
<form action="" method="POST">
@csrf
<div class="row">
<div class="col-xs-6">
<label for="ang_nome" class="form-label">Nome:</label>
<input type="text" class="form-control" id="ang_nome" name="ang_nome" value="{{ $anagrafiche[0]->ang_nome ?? ''}}">
</div>
<div class="col-xs-6">
<label for="ang_cognome" class="form-label">Cognome:</label>
<input type="text" class="form-control" id="ang_cognome" name="ang_cognome" value="{{ $anagrafiche[0]->ang_cognome ?? ''}}">
</div>
</div>
<div class="row">
<div class="col-xs-6">
<label for="ang_ragioneSociale" class="form-label">Ragione Sociale:</label>
<input type="text" class="form-control" id="ang_ragioneSociale" name="ang_ragioneSociale" value="{{ $anagrafiche[0]->ang_ragioneSociale ?? ''}}">
</div>
<div class="col-xs-6">
<label for="ang_codiceFiscale" class="form-label">Codice Fiscale:</label>
<input type="text" class="form-control" id="ang_codiceFiscale" name="ang_codiceFiscale" value="{{ $anagrafiche[0]->ang_codiceFiscale ?? ''}}">
</div>
</div>
<div class="row">
<div class="col-xs-6">
<label for="ang_partitaIva" class="form-label">Partita Iva:</label>
<input type="text" class="form-control" id="ang_partitaIva" name="ang_partitaIva" value="{{ $anagrafiche[0]->ang_partitaIva ?? ''}}">
</div>
<div class="col-xs-6">
<label for="ang_telefono" class="form-label">Telefono:</label>
<input type="text" class="form-control" id="ang_telefono" name="ang_telefono" value="{{ $anagrafiche[0]->ang_telefono ?? ''}}">
</div>
</div>
<div class="row">
<div class="col-xs-12">
<label for="ang_indirizzo" class="form-label">Indirizzo:</label>
<textarea class="form-control" id="ang_indirizzo" name="ang_indirizzo">{{ $anagrafiche[0]->ang_indirizzo ?? ''}}</textarea>
</div>
<!--<div class="col-xs-6">
<label for="nmotore" class="form-label">Num. Motore</label>
<input type="text" class="form-control" id="nmotore" name="nmotore">
</div> -->
</div>
<div class="row">
<div class="col-xs-4">
<label for="ang_CAP" class="form-label">CAP:</label>
<input type="text" class="form-control" id="ang_CAP" name="ang_CAP" value="{{ $anagrafiche[0]->ang_CAP ?? ''}}">
</div>
<div class="col-xs-4">
<label for="ang_Citta" class="form-label">Citt&agrave;:</label>
<input type="text" class="form-control" id="ang_Citta" name="ang_Citta" value="{{ $anagrafiche[0]->ang_Citta ?? ''}}">
</div>
<div class="col-xs-4">
<label for="ang_Provincia" class="form-label">Provincia:</label>
<input type="text" class="form-control" id="ang_Provincia" name="ang_Provincia" value="{{ $anagrafiche[0]->ang_Provincia ?? ''}}">
</div>
</div>
<div class="row">
<div class="col-xs-12">
<label for="ang_note" class="form-label">Note:</label>
<textarea class="form-control" id="ang_note" name="ang_note">{{ $anagrafiche[0]->ang_note ?? ''}}</textarea>
</div>
</div>
<div class="row">
<div class="col-xs-6">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
<!-- /Form -->
</div>
</div>
</div>
</div>
</div>
<!-- /.col-lg-12 -->
@endsection
@section('script')
<script>
$(document).ready(function() {
$('#automobili').DataTable({
responsive: true
});
});
</script>
@endsection

View File

@ -0,0 +1,67 @@
@extends('admin')
@section('content')
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">Lista Anagrafiche</h1>
</div>
</div>
<div class="container">
<!-- Content here -->
<div class="row">
<div class="col-lg-12">
<a class="btn btn-primary" href="contatti/new">Nuovo Contatto</i></a>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">
Lista dei contatti
</div>
<div class="panel-body">
<div class="table-responsive">
<table class="table table-striped table-bordered table-hover" id="automobili">
<thead>
<tr>
<th>Cognome</th>
<th>Nome</th>
<th>Citt&agrave;</th>
<th>Telefono</th>
<th>Azioni</th>
</tr>
</thead>
<tbody>
@foreach($anagrafiche ?? '' as $anagrafica)
<tr>
<td><a href="contatti/scheda?id={{ $anagrafica->id; }}">{{ $anagrafica->ang_cognome; }}</a></td>
<td>{{ $anagrafica->ang_nome; }}</td>
<td>{{ $anagrafica->ang_Citta; }}</td>
<td>{{ $anagrafica->ang_telefono; }}</td>
<td>
<a class="btn btn-primary" href="contatti/modifica?id={{ $anagrafica->id; }}">Modifica</a>&nbsp;
<a class="btn btn-danger" href="contatti/cancella?id={{ $anagrafica->id; }}">Cancella</a>&nbsp;
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- /.col-lg-12 -->
@endsection
@section('script')
<script>
$(document).ready(function() {
$('#automobili').DataTable({
responsive: true
});
});
</script>
@endsection

View File

@ -64,6 +64,20 @@
</li> </li>
</ul> </ul>
</li> </li>
<li>
<a href="#"><i class="fa fa-card fa-fw"></i> Contatti <span class="fa arrow"></span></a>
<ul class="nav nav-second-level">
<li>
<a href="{{ route('contatti'); }}"><i class="fa fa-list fa-fw"></i>Gestione</a>
</li>
<li>
<a href="{{ route('newContact'); }}"><i class="fa fa-plus fa-fw"></i>Nuovo contatto</a>
</li>
</ul>
</li>
<!-- <li> <!-- <li>
<a href="forms.html"><i class="fa fa-edit fa-fw"></i> Forms</a> <a href="forms.html"><i class="fa fa-edit fa-fw"></i> Forms</a>
</li> </li>

View File

@ -11,6 +11,7 @@ use App\Http\Controllers\MovimentiController;
use App\Http\Controllers\TagController; use App\Http\Controllers\TagController;
use App\Http\Controllers\FullCalenderController; use App\Http\Controllers\FullCalenderController;
use App\Http\Controllers\AutoController; use App\Http\Controllers\AutoController;
use App\Http\Controllers\AnagraficaController;
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Web Routes | Web Routes
@ -82,6 +83,14 @@ Route::get('/', [MovimentiController::class,'dashboard']);
Route::get('auto/operazioni', [AutoController::class, 'getOperazioni']); Route::get('auto/operazioni', [AutoController::class, 'getOperazioni']);
Route::get('auto/operazioni/pdf', [AutoController::class, 'exportPdfOperazioni']); Route::get('auto/operazioni/pdf', [AutoController::class, 'exportPdfOperazioni']);
// CONTATTI
Route::get('contatti', [AnagraficaController::class, 'listContact'])->name('contatti');
Route::get('contatti/new', [AnagraficaController::class, 'newContact'])->name('newContact');
Route::post('contatti/new', [AnagraficaController::class, 'insContact']);
Route::get('contatti/modifica', [AnagraficaController::class, 'modifica']);
Route::get('contatti/scheda', [AnagraficaController::class, 'getScheda']);
/// TEST routes /// TEST routes
Route::get('fullcalender', [FullCalenderController::class, 'index']); Route::get('fullcalender', [FullCalenderController::class, 'index']);
Route::post('fullcalenderAjax', [FullCalenderController::class, 'ajax']); Route::post('fullcalenderAjax', [FullCalenderController::class, 'ajax']);