Browse Source

rapportino

Roberto Santini 1 month ago
parent
commit
4234599b01

+ 11
- 0
GestioneManutenzioni.skipper View File

@@ -3954,6 +3954,17 @@
3954 3954
         <element action="delete" uuid="b7d2c9a4-1e58-4f6b-8c33-9a0e5d7f2b14" parent-uuid="43c9733c-5074-4c8d-9cb1-33867510c2fc" sibling-uuid="a1c4e8f2-6b19-4d3a-9e77-2f8c1b0d4e61" type="field"/>
3955 3955
         <element action="reorder" uuid="330f67c6-9da7-4130-8907-9c1339a62723" parent-uuid="43c9733c-5074-4c8d-9cb1-33867510c2fc" sibling-uuid="f305a718-29d3-4bd5-8da9-619db3671251" previous-sibling-uuid="b7d2c9a4-1e58-4f6b-8c33-9a0e5d7f2b14" type="field" helper="true"/>
3956 3956
       </revision>
3957
+      <revision uuid="62d685f9-58a3-4b22-88c6-9b058e57fcd8" date="2026-09-25 14:25:54.168278" exportable="true">
3958
+        <element action="add" uuid="0b98c6c7-a14d-4dcc-8638-9877415a0cce" parent-uuid="43c9733c-5074-4c8d-9cb1-33867510c2fc" sibling-uuid="f305a718-29d3-4bd5-8da9-619db3671251" type="field">
3959
+          <property name="name" value="tempo_inizio"/>
3960
+          <property name="type" value="string"/>
3961
+        </element>
3962
+        <element action="add" uuid="fe003121-9f9f-43fc-9dec-dd52f08ace93" parent-uuid="43c9733c-5074-4c8d-9cb1-33867510c2fc" sibling-uuid="0b98c6c7-a14d-4dcc-8638-9877415a0cce" type="field">
3963
+          <property name="name" value="tempo_fine"/>
3964
+          <property name="type" value="string"/>
3965
+        </element>
3966
+        <element action="reorder" uuid="330f67c6-9da7-4130-8907-9c1339a62723" parent-uuid="43c9733c-5074-4c8d-9cb1-33867510c2fc" sibling-uuid="fe003121-9f9f-43fc-9dec-dd52f08ace93" previous-sibling-uuid="f305a718-29d3-4bd5-8da9-619db3671251" type="field" helper="true"/>
3967
+      </revision>
3957 3968
     </migrations>
3958 3969
   </module>
3959 3970
   <visual-data>

+ 29
- 0
app/Http/Controllers/SegnalazioneController.php View File

@@ -905,6 +905,35 @@ class SegnalazioneController extends Controller implements HasMiddleware
905 905
       ]);
906 906
     }
907 907
 
908
+    public function admin_rapportino_annotazione(Request $request, $id, $annotazione, SegnalazioneRapportoService $rapporto)
909
+    {
910
+      $segnalazione = Segnalazione::find($id);
911
+      if (! $segnalazione) {
912
+        return redirect()->route('admin.segnalazione.index')->with('error', 'Segnalazione non trovata');
913
+      }
914
+
915
+      abort_unless(Segnalazione::authUserMayViewSegnalazione(Auth::user(), $segnalazione->assegnata_a_id, $segnalazione->user_id), 403);
916
+      abort_if(Segnalazione::isClienteVista(Auth::user()), 403);
917
+
918
+      $annotazione = Annotazione::query()
919
+        ->where('segnalazione_id', $segnalazione->id)
920
+        ->whereKey($annotazione)
921
+        ->first();
922
+
923
+      abort_if(! $annotazione, 404);
924
+
925
+      $firmato = (bool) $annotazione->has_firma_cliente;
926
+      $filename = 'rapportino_'.$segnalazione->id.'_'.$annotazione->id.($firmato ? '_firmato' : '').'_'.Str::slug($segnalazione->titolo).'.pdf';
927
+      $binary = $rapporto->generateRapportinoBinary($segnalazione, $annotazione);
928
+
929
+      return response()->stream(function () use ($binary) {
930
+        echo $binary;
931
+      }, 200, [
932
+        'Content-Type' => 'application/pdf',
933
+        'Content-Disposition' => 'inline; filename="'.$filename.'"',
934
+      ]);
935
+    }
936
+
908 937
     public function admin_list(Request $request){
909 938
           $input = $request->all();
910 939
           $list = array();

+ 8
- 0
resources/views/segnalazione/admin/show.blade.php View File

@@ -981,6 +981,14 @@ use App\Models\Config;
981 981
                     @endif
982 982
                   @endif
983 983
                   <span class="badge bg-label-{{ $evento['colore'] }}">{{ ucfirst($evento['tipo']) }}</span>
984
+                  @if(! $isVistaCliente && in_array($evento['tipo'], ['creazione', 'annotazione'], true) && !empty($evento['dati']['annotazione']))
985
+                    <a href="{{ route('admin.segnalazione.annotazione.rapportino', ['id' => $segnalazione->id, 'annotazione' => $evento['dati']['annotazione']->id]) }}"
986
+                       target="_blank"
987
+                       class="btn btn-sm btn-icon btn-label-secondary"
988
+                       title="{{ $evento['dati']['annotazione']->has_firma_cliente ? 'Stampa rapportino firmato' : 'Stampa rapportino' }}">
989
+                      <i class="bx bx-printer"></i>
990
+                    </a>
991
+                  @endif
984 992
                 </div>
985 993
               </div>
986 994
 

+ 1
- 0
routes/web.php View File

@@ -164,6 +164,7 @@ Route::middleware(['auth:sanctum', config('jetstream.auth_session')])->prefix('a
164 164
     Route::post('segnalazione/{id}/aggiorna', [SegnalazioneController::class, 'admin_aggiorna'])->name('admin.segnalazione.aggiorna');
165 165
     Route::delete('segnalazione/{id}/delete', [SegnalazioneController::class, 'admin_delete'])->name('admin.segnalazione.delete');
166 166
     Route::get('segnalazione/{id}/pdf', [SegnalazioneController::class, 'admin_pdf'])->name('admin.segnalazione.pdf');
167
+    Route::get('segnalazione/{id}/annotazione/{annotazione}/rapportino', [SegnalazioneController::class, 'admin_rapportino_annotazione'])->name('admin.segnalazione.annotazione.rapportino');
167 168
 
168 169
     // Dashboard
169 170
     Route::get('dashboard', [HomePageController::class, 'admin_dashboard'])->name('admin.dashboard');

Loading…
Cancel
Save