Merge branch 'develop' into issue-5

This commit is contained in:
noah.lancien 2023-04-12 07:01:36 +00:00
commit 32de7a50ab
15 changed files with 541 additions and 466 deletions

View file

@ -14,6 +14,7 @@ use Kwaadpepper\Enum\BaseEnumRoutable;
* @method static self projects()
* @method static self management()
* @method static self absence()
* @method static self leaddev()
*
*/
class ActivityType extends BaseEnumRoutable
@ -32,6 +33,7 @@ class ActivityType extends BaseEnumRoutable
'projects' => trans('Projets & Réunions'),
'management' => trans('Organisation management'),
'absence' => trans('Absence'),
'leaddev' => trans('Lead Dev')
];
}
@ -48,7 +50,8 @@ class ActivityType extends BaseEnumRoutable
'dev' => '#00b0f0',
'projects' => '#ffe699',
'management' => '#f4b084',
'absence' => '#aeaaaa'
'absence' => '#aeaaaa',
'leaddev' => '#ff7979'
];
}
}

View file

@ -14,6 +14,7 @@ use Kwaadpepper\Enum\BaseEnumRoutable;
* @method static self projects()
* @method static self management()
* @method static self absence()
* @method static self leaddev()
*/
class CellType extends BaseEnumRoutable
{
@ -30,7 +31,8 @@ class CellType extends BaseEnumRoutable
'dev' => '#00b0f0',
'projects' => '#ffe699',
'management' => '#f4b084',
'absence' => '#aeaaaa'
'absence' => '#aeaaaa',
'leaddev' => '#ff7979'
];
}
@ -48,6 +50,7 @@ class CellType extends BaseEnumRoutable
'projects' => trans('Projets & Réunions'),
'management' => trans('Organisation management'),
'absence' => trans('Absence'),
'leaddev' => trans('Lead Dev')
];
}
}

View file

@ -7,14 +7,9 @@ use Kwaadpepper\Enum\BaseEnumRoutable;
/**
* @method static self new()
* @method static self estimateTodo()
* @method static self estimateValidated()
* @method static self estimateDone()
* @method static self toPlan()
* @method static self planned()
* @method static self inprogress()
* @method static self takenInAccount()
* @method static self waiting()
* @method static self waitingValidation()
* @method static self processed()
* @method static self recette()
* @method static self production()
* @method static self archived()
@ -31,17 +26,12 @@ class TicketStatus extends BaseEnumRoutable
return [
'new' => 1,
'estimateTodo' => 2,
'estimateValidated' => 3,
'toPlan' => 4,
'planned' => 5,
'inprogress' => 7,
'waiting' => 9,
'processed' => 10,
'recette' => 12,
'production' => 13,
'archived' => 15,
'estimateDone' => 16,
'waitingValidation' => 17,
'takenInAccount' => 3,
'waiting' => 4,
'waitingValidation' => 5,
'recette' => 6,
'production' => 7,
'archived' => 8,
];
}
@ -55,14 +45,9 @@ class TicketStatus extends BaseEnumRoutable
return [
'new' => trans('Nouveau'),
'estimateTodo' => trans('Devis à faire'),
'estimateValidated' => trans('Devis validé'),
'estimateDone' => trans('Devis réalisé'),
'toPlan' => trans('À planifier'),
'planned' => trans('Planifié'),
'inprogress' => trans('En cours'),
'waiting' => trans('En attente'),
'waitingValidation' => trans('En attente validation'),
'processed' => trans('Traité'),
'takenInAccount' => trans('Pris en compte'),
'waiting' => trans('En attente de réponse'),
'waitingValidation' => trans('En attente de validation'),
'recette' => trans('En recettage'),
'production' => trans('En production'),
'archived' => trans('Archivé'),
@ -79,14 +64,9 @@ class TicketStatus extends BaseEnumRoutable
return [
'new' => 'text-danger',
'estimateTodo' => 'text-info',
'estimateValidated' => 'text-info',
'estimateDone' => 'text-info',
'toPlan' => 'text-info',
'planned' => 'text-info',
'inprogress' => 'text-dark',
'takenInAccount' => 'text-info',
'waiting' => 'text-white bg-danger',
'waitingValidation' => 'text-warning bg-danger',
'processed' => trans('Traité'),
'recette' => 'text-primary',
'production' => 'text-success',
'archived' => 'text-secondary',

View file

@ -9,6 +9,8 @@ use Kwaadpepper\Enum\BaseEnumRoutable;
* @method static self evolution()
* @method static self br()
* @method static self newsletter()
* @method static self qrcode()
* @method static self advice()
*/
class TicketType extends BaseEnumRoutable
{
@ -23,7 +25,9 @@ class TicketType extends BaseEnumRoutable
'bug' => 0,
'evolution' => 1,
'br' => 2,
'newsletter' => 3
'newsletter' => 3,
'qrcode' => 4,
'advice' => 5
];
}
@ -38,7 +42,9 @@ class TicketType extends BaseEnumRoutable
'bug' => trans('Bug'),
'evolution' => trans('Évolution'),
'br' => trans('Demande BR'),
'newsletter' => trans('Demande newsletter')
'newsletter' => trans('Demande newsletter'),
'qrcode' => trans('Demande de QR Code'),
'advice' => trans('Conseil - Accompagnement')
];
}
@ -53,7 +59,9 @@ class TicketType extends BaseEnumRoutable
'bug' => 'bg-danger',
'evolution' => 'bg-success',
'br' => 'bg-primary',
'newsletter' => 'bg-warning'
'newsletter' => 'bg-warning',
'qrcode' => 'bg-secondary',
'advice' => 'bg-info'
];
}

View file

@ -44,12 +44,10 @@ class Controller extends BaseController
[
TicketStatus::new(),
TicketStatus::estimateTodo(),
TicketStatus::estimateValidated(),
TicketStatus::toPlan(),
TicketStatus::planned(),
TicketStatus::waiting(),
TicketStatus::production(),
TicketStatus::archived()
TicketStatus::archived(),
TicketStatus::takenInAccount()
]
);

View file

@ -77,7 +77,7 @@ class EstimationController extends Controller
/** @var \App\Models\Credit\Estimation */
$estimation = $ticket->estimation;
if ($request->answer) {
$ticket->status = TicketStatus::toPlan();
$ticket->status = TicketStatus::takenInAccount();
$estimation->status = EstimationStatus::accepted();
} else {
$ticket->status = TicketStatus::archived();

View file

@ -2,9 +2,6 @@
namespace App\Http\Controllers;
use Illuminate\Support\Facades\File;
use Parsedown;
class HomeController extends Controller
{
/**
@ -14,8 +11,6 @@ class HomeController extends Controller
*/
public function home()
{
$Parsedown = new Parsedown();
$changelog = $Parsedown->text(File::get(\app_path('../CHANGELOG.md')));
return view('home', ['changelog' => $changelog]);
return view('home');
}
}

View file

@ -3,6 +3,7 @@
namespace App\Listeners;
use App\Enums\MessageType;
use App\Enums\TicketStatus;
use App\Events\TicketStatusChanged;
use App\Models\Message;
@ -21,11 +22,76 @@ class AddStatusMessages
if ($event->message) {
$message->message = $event->message;
} elseif ($event->user) {
// phpcs:ignore Generic.Files.LineLength.TooLong
$message->message = "<b>{$event->user->name}</b> a modifié le statut en <b>{$event->ticket->status->label}</b>";
$message->message = sprintf(
"<b>%s</b> %s <b>%s</b>",
$event->user->name,
__("a modifié le statut en"),
$event->ticket->status->label
);
} else {
$message->message = "Le statut est passé à : <b>{$event->ticket->status->label}</b>";
$message->message = sprintf(
"%s : <b>%s</b>",
__("Le statut est passé à"),
$event->ticket->status->label
);
}
switch ($event->ticket->status) {
case TicketStatus::new():
$message->message = sprintf(
"%s<br>%s<br>",
$message->message,
__("Votre ticket a été créé, nous allons en prendre connaissance.")
);
break;
case TicketStatus::estimateTodo():
$message->message = sprintf(
"%s<br>%s<br>",
$message->message,
__("Votre ticket nécessite une estimation, nous allons vous proposer un devis.")
);
break;
case TicketStatus::takenInAccount():
$message->message .= sprintf("<br>" .
__("Votre ticket est dans le processus de traitement.") . "<br>");
break;
case TicketStatus::waiting():
$message->message = sprintf(
"%s<br>%s<br>",
$message->message,
__("Nous attendons une réponse de votre part pour procéder à la suite du traitement.")
);
break;
case TicketStatus::waitingValidation():
$message->message = sprintf(
"%s<br>%s<br>",
$message->message,
__("Nous attendons une validation de votre part pour procéder au traitement.")
);
break;
case TicketStatus::recette():
$message->message = sprintf(
"%s<br>%s<br>",
$message->message,
__("Le traitement à été réalisé et mis à disposition sur la plateforme de recette.
Vous pouvez vérifier que la solution mise en œuvre correspond à la demande.")
);
break;
case TicketStatus::production():
$message->message = sprintf(
"%s<br>%s<br>",
$message->message,
__("La solution à été mise en ligne.
Vous pouvez vérifier sur le site de production que tout fonctionne comme attendu.")
);
break;
case TicketStatus::archived():
$message->message = sprintf(
"%s<br>%s<br>",
$message->message,
__("Ce ticket est clos.")
);
break;
} //end switch
$message->type = MessageType::public();
$message->save();
}

View file

@ -63,8 +63,10 @@ class Ticket extends Model
protected static function booted()
{
static::creating(function (Ticket $ticket) {
// If evolution force the ticket status on estimateTodo.
if ($ticket->type->equals(TicketType::evolution())) {
// If bug force the ticket status on new. All the others are estimateTodo.
if ($ticket->type->equals(TicketType::bug())) {
$ticket->status = TicketStatus::new();
} else {
$ticket->status = TicketStatus::estimateTodo();
}
});

View file

@ -12,7 +12,6 @@
"php": "^7.3|^8.0",
"carlos-meneses/laravel-mpdf": "^2.1",
"doctrine/dbal": "^3.1",
"erusev/parsedown": "^1.7",
"fideloper/proxy": "^4.4",
"fruitcake/laravel-cors": "^2.0",
"guzzlehttp/guzzle": "^7.0.1",
@ -41,8 +40,12 @@
"sort-packages": true,
"allow-plugins": {
"dealerdirect/phpcodesniffer-composer-installer": true,
"composer/package-versions-deprecated": true
}
"composer/package-versions-deprecated": true,
"php-http/discovery": true
},
"gitlab-domains": [
"lab.s-web.fr"
]
},
"extra": {
"laravel": {
@ -75,10 +78,10 @@
"@php artisan key:generate --ansi"
]
},
"repositories": [
{
"repositories": {
"lab.s-web.fr": {
"type": "composer",
"url": "https://gitlab.com/api/v4/group/16669037/-/packages/composer/packages.json"
"url": "https://lab.s-web.fr/api/v4/group/23/-/packages/composer/packages.json"
}
]
}
}

767
composer.lock generated

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,49 @@
<?php
use App\Models\Ticket;
use Illuminate\Database\Migrations\Migration;
class ChangeTicketsStatus extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Ticket::whereIn('status', [4, 5, 7, 10])
->update(['status' => 3]);
Ticket::where('status', 9)
->update(['status' => 4]);
Ticket::where('status', 17)
->update(['status' => 5]);
Ticket::where('status', 12)
->update(['status' => 6]);
Ticket::where('status', 13)
->update(['status' => 7]);
Ticket::where('status', 15)
->update(['status' => 8]);
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Ticket::where('status', 3)
->update(['status' => 10]);
Ticket::where('status', 4)
->update(['status' => 9]);
Ticket::where('status', 5)
->update(['status' => 17]);
Ticket::where('status', 6)
->update(['status' => 12]);
Ticket::where('status', 7)
->update(['status' => 13]);
Ticket::where('status', 8)
->update(['status' => 15]);
}
}

View file

@ -5,15 +5,13 @@
<div class="row">
<div class="col">
<h1>Bienvenue sur le support LDC WEB.</h1>
<p>Pour consulter vos tickets, merci de vous connecter : <a href="{{ route('login') }}">Connexion</a></p>
</div>
</div>
<div class="row mt-4">
<h3>Changements</h3>
</div>
<div class="row mt-3">
<div class="col">
{!! $changelog !!}
<a href="{{ route('ticket.create') }}" class="btn btn-primary">
{{ __('Créer un ticket') }}
</a>
</div>
</div>
</div>

View file

@ -55,6 +55,9 @@
.absence, .Sat, .Sun {
background-color: {{CellType::absence()->value}} !important;
}
.leaddev {
background-color: {{CellType::leaddev()->value}} !important;
}
.empty {
background-color: #FFF !important;
}

View file

@ -32,8 +32,6 @@ use Illuminate\Support\Facades\Route;
|
*/
Route::get('/', [HomeController::class, 'home'])->middleware('guest')->name('home');
Route::middleware(['throttle:credentials'])->group(function () {
// * guest:web middleware specified in AuthController
Auth::routes([
@ -58,6 +56,8 @@ Route::get('/ping', function () {
})->withoutMiddleware('auth');
Route::middleware('auth:web')->group(function () {
// * Home
Route::get('/', [HomeController::class, 'home'])->name('home');
// * Macro planning
Route::get('/macroplanning', [ScheduleMacroController::class, 'show'])->name('macroplanning.show');