162 lines
4.9 KiB
PHP
162 lines
4.9 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App\Http\Controllers;
|
||
|
|
|
||
|
|
use App\Enums\Environment;
|
||
|
|
use App\Enums\ServerType;
|
||
|
|
use App\Http\Requests\Projects\StoreProjectRequest;
|
||
|
|
use App\Http\Requests\Projects\UpdateProjectRequest;
|
||
|
|
use App\Http\Requests\ValidateOtpRequest;
|
||
|
|
use App\Models\Project;
|
||
|
|
use App\Models\Server;
|
||
|
|
use Ramsey\Uuid\Uuid;
|
||
|
|
|
||
|
|
class ProjectController extends Controller
|
||
|
|
{
|
||
|
|
/**
|
||
|
|
* Display a listing of the resource.
|
||
|
|
*
|
||
|
|
* @return \Illuminate\Http\Response
|
||
|
|
*/
|
||
|
|
public function index()
|
||
|
|
{
|
||
|
|
$projects = Project::orderBy('name')->get();
|
||
|
|
return view('projects.index', ['projects' => $projects]);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Show the form for creating a new resource.
|
||
|
|
*
|
||
|
|
* @return \Illuminate\Http\Response
|
||
|
|
*/
|
||
|
|
public function create()
|
||
|
|
{
|
||
|
|
$dev_db_server = Server::where([
|
||
|
|
['env', Environment::DEV()],
|
||
|
|
['type', ServerType::DB()]
|
||
|
|
])->get();
|
||
|
|
$dev_web_server = Server::where([
|
||
|
|
['env', Environment::DEV()],
|
||
|
|
['type', ServerType::WEB()]
|
||
|
|
])->get();
|
||
|
|
$prod_db_server = Server::where([
|
||
|
|
['env', Environment::PROD()],
|
||
|
|
['type', ServerType::DB()]
|
||
|
|
])->get();
|
||
|
|
$prod_web_server = Server::where([
|
||
|
|
['env', Environment::PROD()],
|
||
|
|
['type', ServerType::WEB()]
|
||
|
|
])->get();
|
||
|
|
return view('projects.create', \compact(
|
||
|
|
'dev_db_server',
|
||
|
|
'dev_web_server',
|
||
|
|
'prod_db_server',
|
||
|
|
'prod_web_server'
|
||
|
|
));
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Store a newly created resource in storage.
|
||
|
|
*
|
||
|
|
* @param \App\Http\Requests\Projects\StoreProjectRequest $request
|
||
|
|
* @return \Illuminate\Http\Response
|
||
|
|
*/
|
||
|
|
public function store(StoreProjectRequest $request)
|
||
|
|
{
|
||
|
|
$project = new Project();
|
||
|
|
$project->uuid = Uuid::uuid4();
|
||
|
|
$project->fill($request->validated());
|
||
|
|
$project->dev_login = \json_decode($project->dev_login);
|
||
|
|
$project->prod_login = \json_decode($project->prod_login);
|
||
|
|
if ($project->saveOrFail()) {
|
||
|
|
return redirect()->route('projects.edit', compact('project'))
|
||
|
|
->with('success', trans('Projet ajouté.'));
|
||
|
|
}
|
||
|
|
return \back();
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Show the form for editing the specified resource.
|
||
|
|
*
|
||
|
|
* @param \App\Models\Project $project
|
||
|
|
* @return \Illuminate\Http\Response
|
||
|
|
* @phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass
|
||
|
|
*/
|
||
|
|
public function edit(Project $project)
|
||
|
|
{
|
||
|
|
// phpcs:enable
|
||
|
|
$dev_db_server = Server::where([
|
||
|
|
['env', Environment::DEV()],
|
||
|
|
['type', ServerType::DB()]
|
||
|
|
])->get();
|
||
|
|
$dev_web_server = Server::where([
|
||
|
|
['env', Environment::DEV()],
|
||
|
|
['type', ServerType::WEB()]
|
||
|
|
])->get();
|
||
|
|
$prod_db_server = Server::where([
|
||
|
|
['env', Environment::PROD()],
|
||
|
|
['type', ServerType::DB()]
|
||
|
|
])->get();
|
||
|
|
$prod_web_server = Server::where([
|
||
|
|
['env', Environment::PROD()],
|
||
|
|
['type', ServerType::WEB()]
|
||
|
|
])->get();
|
||
|
|
return view('projects.edit', \compact(
|
||
|
|
'project',
|
||
|
|
'dev_db_server',
|
||
|
|
'dev_web_server',
|
||
|
|
'prod_db_server',
|
||
|
|
'prod_web_server'
|
||
|
|
));
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Update the specified resource in storage.
|
||
|
|
*
|
||
|
|
* @param \App\Http\Requests\Projects\UpdateProjectRequest $request
|
||
|
|
* @param \App\Models\Project $project
|
||
|
|
* @return \Illuminate\Http\Response
|
||
|
|
*/
|
||
|
|
public function update(UpdateProjectRequest $request, Project $project)
|
||
|
|
{
|
||
|
|
$project->fill($request->validated());
|
||
|
|
$project->dev_login = \json_decode($project->dev_login);
|
||
|
|
$project->prod_login = \json_decode($project->prod_login);
|
||
|
|
if ($project->saveOrFail()) {
|
||
|
|
return redirect()->route('projects.edit', compact('project'))
|
||
|
|
->with('success', trans('Projet mis à jour.'));
|
||
|
|
}
|
||
|
|
return \back();
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Remove the specified resource from storage.
|
||
|
|
*
|
||
|
|
* @param \App\Models\Project $project
|
||
|
|
* @return \Illuminate\Http\Response
|
||
|
|
*/
|
||
|
|
public function destroy(Project $project)
|
||
|
|
{
|
||
|
|
return view('projects.delete', ['project' => $project]);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Remove the specified resource from storage.
|
||
|
|
*
|
||
|
|
* @param \App\Http\Requests\ValidateOtpRequest $request
|
||
|
|
* @param \App\Models\Project $project
|
||
|
|
* @return \Illuminate\Http\Response
|
||
|
|
* @phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClassBeforeLastUsed
|
||
|
|
*/
|
||
|
|
public function destroySubmit(ValidateOtpRequest $request, Project $project)
|
||
|
|
{
|
||
|
|
// phpcs:enable
|
||
|
|
if ($project->deleteOrFail()) {
|
||
|
|
return redirect()->route('projects.index')
|
||
|
|
->with('warning', 'Projet supprimé !');
|
||
|
|
}
|
||
|
|
|
||
|
|
return back();
|
||
|
|
}
|
||
|
|
}
|