Creato Avvisi e terminato task (manca editing)

This commit is contained in:
Amministratore 2023-07-18 17:00:08 +02:00
parent 48606856c4
commit b5eb6c383b
14 changed files with 260 additions and 31 deletions

View File

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

View File

@ -20,9 +20,19 @@ class TaskController extends Controller
return view('tasks.list',['tasks'=>$this->listTask()]); return view('tasks.list',['tasks'=>$this->listTask()]);
} }
public function newTask() 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();
} }

View File

@ -47,6 +47,10 @@ class Utenti extends Controller
return view('users.list',['users'=>$users]); return view('users.list',['users'=>$users]);
} }
function getUsers(){
return User::getUsers();
}
function listRoles(){ function listRoles(){
$roles = Role::all(); $roles = Role::all();
return $roles; return $roles;

11
app/Models/Avviso.php Normal file
View File

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

View File

@ -66,7 +66,7 @@ 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()

View File

@ -10,6 +10,7 @@
"require" : { "require" : {
"php": "^7.3|^8.0", "php": "^7.3|^8.0",
"barryvdh/laravel-dompdf": "^2.0", "barryvdh/laravel-dompdf": "^2.0",
"creativeorange/gravatar": "^1.0",
"directorytree/ldaprecord": "^2.9", "directorytree/ldaprecord": "^2.9",
"fruitcake/laravel-cors": "^2.0", "fruitcake/laravel-cors": "^2.0",
"guzzlehttp/guzzle": "^7.0.1", "guzzlehttp/guzzle": "^7.0.1",

67
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "e6ac2be787f145ea140b72b55e302e90", "content-hash": "acd096c2d0a14521dd551b39dde1ef28",
"packages": [ "packages": [
{ {
"name": "asm89/stack-cors", "name": "asm89/stack-cors",
@ -350,6 +350,69 @@
], ],
"time": "2022-04-01T19:23:25+00:00" "time": "2022-04-01T19:23:25+00:00"
}, },
{
"name": "creativeorange/gravatar",
"version": "v1.0.23",
"source": {
"type": "git",
"url": "https://github.com/creativeorange/gravatar.git",
"reference": "3a1b227c48091b039b967265ec13c0800c70ac79"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/creativeorange/gravatar/zipball/3a1b227c48091b039b967265ec13c0800c70ac79",
"reference": "3a1b227c48091b039b967265ec13c0800c70ac79",
"shasum": ""
},
"require": {
"illuminate/support": "^5|^6|^7|^8|^9|^10.0",
"php": ">=5.4.0"
},
"require-dev": {
"nunomaduro/larastan": "^0.6.2|^2.4",
"orchestra/testbench": "^5.4|^8.0",
"php": ">=7.2"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Creativeorange\\Gravatar\\GravatarServiceProvider"
],
"aliases": {
"Gravatar": "Creativeorange\\Gravatar\\Facades\\Gravatar"
}
}
},
"autoload": {
"psr-4": {
"Creativeorange\\Gravatar\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jaco Tijssen",
"email": "jaco@creativeorange.nl",
"homepage": "https://www.creativeorange.nl",
"role": "Developer"
}
],
"description": "A Laravel Gravatar package for retrieving gravatar image URLs or checking the existance of an image.",
"keywords": [
"avatar",
"gravatar",
"laravel"
],
"support": {
"issues": "https://github.com/creativeorange/gravatar/issues",
"source": "https://github.com/creativeorange/gravatar/tree/v1.0.23"
},
"time": "2023-02-06T07:57:20+00:00"
},
{ {
"name": "dflydev/dot-access-data", "name": "dflydev/dot-access-data",
"version": "v3.0.2", "version": "v3.0.2",
@ -10285,5 +10348,5 @@
"php": "^7.3|^8.0" "php": "^7.3|^8.0"
}, },
"platform-dev": [], "platform-dev": [],
"plugin-api-version": "2.3.0" "plugin-api-version": "2.2.0"
} }

View File

@ -161,6 +161,7 @@ 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,
/* /*
@ -232,6 +233,7 @@ 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,
], ],

View File

@ -0,0 +1,33 @@
<?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');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('avvisos');
}
}

View File

@ -3,4 +3,12 @@ $(document).ready(function() {
$('#categorie').DataTable({ $('#categorie').DataTable({
responsive: true responsive: true
}); });
// Reload del div
$.ajaxSetup({ cache: false });
setInterval(function() {
$('#mieitask').load('/admin');
}, 8000);
}); });

33
public/js/app/task.js vendored
View File

@ -21,38 +21,35 @@ var strDate = d.getFullYear() + '-' +
(day<10 ? '0' : '') + day; (day<10 ? '0' : '') + day;
$(document).on('click', '.open_modal_spesa', function() { $(document).on('click', '.open_modal_new', function() {
console.log(strDate); console.log(strDate);
$("#categoria").empty(); $("#titolo").empty();
$("#tags").empty(); $("#descrizione").empty();
$('#form').find('input[type="text"], textarea, input[type="number"],input[type="date"],option').val(""); $('#form').find('input[type="text"], textarea, input[type="number"],input[type="date"],option').val("");
$('#form').find('input[type="date"]').val(strDate); $('#form').find('input[type="date"]').val(strDate);
$('#myModal').modal('show'); $('#myModal').modal('show');
$('.modal-title').text(' Nuovo movimento in uscita'); $('.modal-title').text(' Nuova attività');
$('#form').attr('action', '/admin/movimenti/spesa'); $('#form').attr('action', '/admin/task/new');
$.getJSON("/admin/service/catlistSpesa", {}, function(cats) { $.getJSON("/admin/service/getUsers", {}, function(users) {
$.each(cats, function(i, cat) { $.each(users, function(i, users) {
$("select[name='mov_fk_categoria']").append( $("select[name='assegnato_a']").append(
new Option(cat.cat_name, cat.id) new Option(users.name, users.id)
) )
} }
); );
}); });
$.getJSON("/admin/service/taglist", {}, function(tags) {
$.each(tags, function(i, tag) {
$("select[name='mov_fk_tags']").append(
new Option(tag.tag_name, tag.id)
)
});
});
}); });
/*
$(document).on('click', '.open_modal_entrata', function() { $(document).on('click', '.open_modal_entrata', function() {
console.log(strDate); console.log(strDate);
$("#categoria").empty(); $("#titolo").empty();
$("#tags").empty(); $("#tags").empty();
$('#form').find('input[type="text"], textarea, input[type="number"],option').val(""); $('#form').find('input[type="text"], textarea, input[type="number"],option').val("");
$('#form').find('input[type="date"]').val(strDate); $('#form').find('input[type="date"]').val(strDate);
$('#myModal').modal('show'); $('#myModal_new').modal('show');
$('.modal-title').text('Nuovo movimento in entrata'); $('.modal-title').text('Nuovo movimento in entrata');
$('#form').attr('action', '/admin/movimenti/entrata'); $('#form').attr('action', '/admin/movimenti/entrata');
$.getJSON("/admin/service/catlistEntrata", {}, function(data) { $.getJSON("/admin/service/catlistEntrata", {}, function(data) {

View File

@ -109,12 +109,28 @@
<div class="col-lg-6 col-md-8"> <div class="col-lg-6 col-md-8">
<div class="chat-panel panel panel-default"> <div class="chat-panel panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
Attività a me assegnate Attività da svolgere
</div> </div>
<div class="panel-body"> <div class="panel-body" id="mieitask">
<ul class="chat"> <ul class="chat">
@foreach($mieitask as $task) @foreach($mieitask as $task)
<li class="left" clearfix>{{ $task->titolo }}</li> <span class="chat-img pull-left">
<!-- rendere immagine dinamica -->
<img src="{{ Gravatar::get(App\Models\User::getUserById($task->assegnato_a)->email)}}" width="32" class="img-circle">
</span>
<div class="chat-body clearfix">
<li class="left clearfix">
@if($task->stato==='Chiuso')
<s>
<a href="#{{ $task->id }}"> {{ $task->titolo }}</a>
</s><br>
<h6>{{$task->descrizione}}</h6>
@else
<b><a href="#{{ $task->id }}"> {{ $task->titolo }}</a></b><br>
<h6>{{$task->descrizione}}</h6>
@endif
</li>
</div>
@endforeach @endforeach
</ul> </ul>
</div> </div>
@ -126,12 +142,28 @@
<div class="col-lg-6 col-md-8"> <div class="col-lg-6 col-md-8">
<div class="chat-panel panel panel-default"> <div class="chat-panel panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
Attività da me assegnate ad altri <i class="fa fa-arrow-circle-right"></i> Avvisi e informazioni
</div> </div>
<div class="panel-body"> <div class="panel-body">
<ul class="chat"> <ul class="chat">
@foreach($assegnati as $assegnato) @foreach($assegnati as $assegnato)
<li class="left" clearfix>{{ $assegnato->titolo }}</li> <span class="chat-img pull-left">
<!-- rendere immagine dinamica -->
<img src="{{ Gravatar::get(App\Models\User::getUserById($assegnato->assegnato_a)->email)}}" width="32" class="img-circle">
</span>
<div class="chat-body clearfix">
<li class="left clearfix">
@if($assegnato->stato==='Chiuso')
<s>
<a href="#{{ $assegnato->id }}"> {{ $assegnato->titolo }}</a>
{{$assegnato->descrizione}}</s>
@else
<b><a href="#{{ $assegnato->id }}"> {{ $assegnato->titolo }}</a></b>
<h6>{{$assegnato->descrizione}}</h6>
@endif
</li>
</div>
@endforeach @endforeach
</ul> </ul>
</div> </div>

View File

@ -25,7 +25,7 @@
<li class="left" clearfix> <li class="left" clearfix>
<span class="chat-img pull-left"> <span class="chat-img pull-left">
<!-- rendere immagine dinamica --> <!-- rendere immagine dinamica -->
<img src="/images/default-logo.png" width="32" class="img-circle"> <img src="{{ Gravatar::get(App\Models\User::getUserById($task->assegnato_a)->email)}}" width="32" class="img-circle">
</span> </span>
<div class="chat-body clearfix"> <div class="chat-body clearfix">
{{ $task->titolo}} {{ $task->titolo}}
@ -40,7 +40,64 @@
</div> </div>
</div> </div>
</div> </div>
</div>
<!-- HIDDEN -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Nuova Attività</h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-10">
<!-- FORM INSERIMENTO NUOVA CATEGORIA -->
<form action="" method="POST" id="form">
@csrf
<label for="titolo" class="form-label">Titolo:</label>
<input type="text" class="form-control" id="titolo"
name="titolo" size="50">
</div>
</div>
<div class="row">
<div class="col-md-10">
<label for="descrizione" class="form-label">Descrizione:</label>
<textarea class="form-control" name="descrizione" id="descrizione"></textarea>
</div>
</div>
<div class="row">
<div class="col-md-5">
<label for="assegnato_a" class="form-label">Assegna a:</label>
<!-- SELECT USER -->
<select name="assegnato_a" id="assegnato_a" class="form-control">
</select>
</div>
<div class="col-md-5">
<!-- Data termine datetimepicker -->
<label for="termine_il" class="form-label">Termine:</label>
<input type="date" name="termine_il" class="form-control" value="{{ date('Y-m-d'); }}" id="termine_il">
</div>
</div>
</div>
<div class="modal-footer">
<input type="hidden" name="creato_da" value="{{ Auth::user()->id}}">
<input type="hidden" name="stato" value="Aperto">
<input type="hidden" name="creato_il" value="{{ date('Y-m-d'); }}">
<input type="hidden" name="chiuso_il" value="{{ date('Y-m-d'); }}">
<button type="submit" class="btn btn-primary">Submit</button>
</form>
<!-- FINE FORM INSERIMENTO NUOVA CATEGORIA -->
</div>
</div>
</div>
</div>
@endsection @endsection
@section('script') @section('script')
<script src="/js/app/tasks.js"> <script src="/js/app/task.js"></script>
@endsection @endsection

View File

@ -150,7 +150,8 @@ Route::group(['middleware'=>['permission:progetti']], function(){
// TASKS // TASKS
Route::group(['middleware'=>['permission:tasks']], function(){ Route::group(['middleware'=>['permission:tasks']], function(){
Route::get('tasks', [TaskController::class, 'Task'])->name('tasks'); Route::get('tasks', [TaskController::class, 'Task'])->name('tasks');
Route::post('task/new',[TaskController::class, 'newTask']);
Route::get('service/getUsers', [Utenti::class,'getUsers']);
}); });
// -- ONLY FOR TEST -- TO BE REMOVED // // -- ONLY FOR TEST -- TO BE REMOVED //