From a819ef01ff6e41be6291aa01e9eb9c5f1e818046 Mon Sep 17 00:00:00 2001 From: FlavioBarachino Date: Tue, 24 Oct 2023 15:23:49 +0200 Subject: [PATCH] Creato evento con data e ora (start-end) per google-calendar --- .../Controllers/FullCalenderController.php | 19 +-- composer.json | 1 + composer.lock | 2 +- config/adminlte.php | 58 +++++++-- public/js/app/calendario.js | 120 ++---------------- .../views/calendario/fullcalendar.blade.php | 21 ++- routes/admin.php | 26 ++-- 7 files changed, 114 insertions(+), 133 deletions(-) diff --git a/app/Http/Controllers/FullCalenderController.php b/app/Http/Controllers/FullCalenderController.php index 1f0c7fb..65643bb 100644 --- a/app/Http/Controllers/FullCalenderController.php +++ b/app/Http/Controllers/FullCalenderController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers; use App\Models\Event; use Illuminate\Http\Request; use Spatie\GoogleCalendar\Event as Events; +use Carbon\Carbon; class FullCalenderController extends Controller { @@ -80,13 +81,15 @@ class FullCalenderController extends Controller return view('calendario.fullcalendar'); } - public function testCalendar() - { - $event = Events::get(); - //return json_encode($event); - foreach ($events as $evento) - { - - } + 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'); } } diff --git a/composer.json b/composer.json index 540fc23..d4d76af 100644 --- a/composer.json +++ b/composer.json @@ -21,6 +21,7 @@ "laravel/tinker": "^2.5", "laravel/ui": "^3.4", "laraveldaily/laravel-charts": "^0.1.29", + "nesbot/carbon": "^2.71", "pcloud/pcloud-php-sdk": "^3.0", "rap2hpoutre/fast-excel": "^3.2", "secondtruth/startmin": "^1.1", diff --git a/composer.lock b/composer.lock index 440f29f..194b19d 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d70c281bd37ad4883769ad206aee020c", + "content-hash": "fee26f6948b0082f65e8b7afbce9c24b", "packages": [ { "name": "almasaeed2010/adminlte", diff --git a/config/adminlte.php b/config/adminlte.php index 93ea9fb..cb88997 100644 --- a/config/adminlte.php +++ b/config/adminlte.php @@ -434,7 +434,13 @@ return [ 'text' => 'Appuntamenti', 'route' => 'calendario', 'icon' => 'fas fa-fw fa-calendar', - // 'can' => 'appuntamenti', + 'can' => ['appuntamenti'], + ], + [ + 'text' => 'Meeting Room', + 'route' => 'meeting', + 'icon' => 'fas fa-fw fa-file-video', + 'can' => ['meetingroom'] ], ['header' => 'CONSUMI'], [ @@ -450,13 +456,8 @@ return [ 'icon' => 'fas fa-fw fa-user', 'can' => ['amministrazione'] ], - ['header' => 'UTILI'], - [ - 'text' => 'Meeting Room', - 'route' => 'meeting', - 'icon' => 'fas fa-fw fa-file-video', - 'can' => ['meetingroom'] - ], + + ], @@ -525,6 +526,37 @@ return [ ], ], ], + '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' => [ @@ -606,6 +638,16 @@ return [ ], ], ], + 'MomentJs' =>[ + 'active' => false, + 'files' =>[ + [ + 'type' => 'js', + 'asset' => false, + 'location' => '//cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/moment-with-locales.min.js', + ], + ], + ], ], diff --git a/public/js/app/calendario.js b/public/js/app/calendario.js index d3a9bb1..e35a662 100644 --- a/public/js/app/calendario.js +++ b/public/js/app/calendario.js @@ -6,29 +6,32 @@ document.addEventListener('DOMContentLoaded', function() { var calendarEl = document.getElementById('calendar'); var calendar = new FullCalendar.Calendar(calendarEl, { - timeZone: 'UTC', + //timeZone: 'UTC', + timeZone: 'Europe/Rome', initialView: 'timeGridWeek', - // plugins: [ googleCalendarPlugin ], googleCalendarApiKey: 'AIzaSyClqRqDMqD4grSx5HeLq1lXMxan1-UjK_E', events: { googleCalendarId: 'brebar.family@gmail.com' }, - // events: 'admin/test/calendar/google', editable: true, selectable: true, - // plugins: [dayGridPlugin], - // initialView: 'dayGridWeek', headerToolbar: { left: 'prev,next', center: 'title', right: 'dayGridMonth,timeGridWeek,timeGridDay' // user can switch between the two }, + dateClick: function(info) { - // alert('Clicked on: ' + info.dateStr); - $('#start').val(info.dateStr); + var starttime =moment(info.dateStr); + var endtime = moment(info.dateStr).add(30,'m'); + $('#startDay').val(moment(starttime).format("Y-M-D")) ; + $('#startHour').val(moment(starttime).format("HH:mm")) ; + + $('#endDay').val(moment(endtime).format("Y-M-D")) ; + $('#endHour').val(moment(endtime).format("HH:mm")) ; $('#event').modal('show'); - console.log(info.dateStr); - //inserire qui richiamo a pagina modale di inserimento appuntamento. + console.log(info.dateStr); + console.log(endtime.dateStr); } }); calendar.setOption('locale', 'it'); @@ -44,101 +47,6 @@ $(document).ready(function () { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } }); -}); +}); + -/* - var calendar = $('#calendar').fullCalendar({ - - editable: true, - events: SITEURL + "/fullcalendar", - displayEventTime: true, - editable: true, - - eventRender: function (event, element, view) { - if (event.allDay === 'true') { - event.allDay = true; - } else { - event.allDay = false; - } - }, - selectable: true, - selectHelper: true, - - select: function (start, end, allDay) { - var title = prompt('Titolo evento:'); - if (title) { - var start = $.fullCalendar.formatDate(start, "Y-MM-DD"); - var end = $.fullCalendar.formatDate(end, "Y-MM-DD"); - - $.ajax({ - url: SITEURL + "/fullcalendar", - data: { - title: title, - start: start, - end: end, - type: 'add' - }, - type: "POST", - success: function (data) { - displayMessage("Evento creato con successo"); - calendar.fullCalendar('renderEvent', - { - id: data.id, - title: title, - start: start, - end: end, - allDay: allDay - },true); - calendar.fullCalendar('unselect'); - } - }); - } - }, - - eventDrop: function (event, delta) { - var start = $.fullCalendar.formatDate(event.start, "Y-MM-DD"); - var end = $.fullCalendar.formatDate(event.end, "Y-MM-DD"); - - $.ajax({ - url: SITEURL + '/fullcalendar', - data: { - title: event.title, - start: start, - end: end, - id: event.id, - type: 'update' - }, - type: "POST", - success: function (response) { - displayMessage("Event Updated Successfully"); - } - }); - }, - - eventClick: function (event) { - var deleteMsg = confirm("vuoi veramente cancellare?"); - if (deleteMsg) { - $.ajax({ - type: "POST", - url: SITEURL + '/fullcalendar', - data: { - id: event.id, - type: 'delete' - }, - success: function (response) { - calendar.fullCalendar('removeEvents', event.id); - displayMessage("Event Deleted Successfully"); - } - }); - } - } - - }); - - - }); - - function displayMessage(message) { - toastr.success(message, 'Event'); - } - /**/ \ No newline at end of file diff --git a/resources/views/calendario/fullcalendar.blade.php b/resources/views/calendario/fullcalendar.blade.php index d8877da..9b80b4e 100644 --- a/resources/views/calendario/fullcalendar.blade.php +++ b/resources/views/calendario/fullcalendar.blade.php @@ -1,5 +1,7 @@ @extends('adminlte::page') @section('plugins.Fullcalendar', true) +@section('plugins.MomentJs', true) +@section('plugins.JqueryUi', true) @section('content_header')

Appuntamenti

@endsection @@ -14,12 +16,29 @@ @endsection @section('js') + + + @endsection diff --git a/routes/admin.php b/routes/admin.php index fafbfcb..5bdd093 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -182,25 +182,33 @@ Route::group(['middleware'=>['permission:avvisi']], function(){ Route::group(['middleware'=>['permission:documenti']], function(){ Route::get('documenti', [DocumentiController::class, 'listaDocumenti'])->name('folders'); Route::post('documenti', [DocumentiController::class, 'newFolder']); - - +}); + +// APPUNTAMENTI +Route::group(['middleware'=>['permission:appuntamenti']], function(){ + Route::get('test/calendar',[FullCalenderController::class,'showDemo'])->name('calendario'); + Route::post('test/calendar',[FullCalenderController::class, 'saveEventToGoogle']); +}); + +// MEETING ROOM +Route::group(['middleware'=>['permission:meetingroom']], function(){ + Route::get('meeting', function() { return view('meetings.meeting'); })->name('meeting'); }); /// TEST ROUTES - Route::get('test/fullcalendar', [FullCalenderController::class, 'index']); + /*Route::get('test/fullcalendar', [FullCalenderController::class, 'index']); Route::post('test/fullcalendar', [FullCalenderController::class, 'ajax']); Route::get('test/calendar/google',[FullCalenderController::class, 'testcalendar']); + Route::get('test/condominio',[CondominioController::class,'testPdf']); Route::get('test/err403',[CondominioController::class,'err403'])->name('errore-403'); Route::get('test/user_role',[CondominioController::class,'user_role']); Route::get('test/userclass',[Utenti::class,'userClass']); - Route::get('test/calendar',[FullCalenderController::class,'showDemo'])->name('calendario'); - + + + Route::get('testmail',function(){ $name='Flavio'; Mail::to('flavio.barachino@lavorain.cloud')->send(new myTestEmail($name)); - }); -Route::group(['middleware'=>['permission:meetingroom']], function(){ - Route::get('meeting', function() { return view('meetings.meeting'); })->name('meeting'); -}); \ No newline at end of file + });*/ \ No newline at end of file