88 lines
2.9 KiB
PHP
Executable File
88 lines
2.9 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Deal;
|
|
use Illuminate\Http\Request;
|
|
use Symfony\Component\Finder\Iterator\RecursiveDirectoryIterator;
|
|
|
|
class HomeController extends Controller
|
|
{
|
|
/**
|
|
* Create a new controller instance.
|
|
*
|
|
*/
|
|
public function __construct()
|
|
{
|
|
$this->middleware('auth');
|
|
}
|
|
|
|
/**
|
|
* Show the application dashboard.
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function index()
|
|
{
|
|
return view('home');
|
|
}
|
|
|
|
public function list($type)
|
|
{
|
|
$deals = [];
|
|
$folder_path = sprintf('%s/%s', config('app.deals_dir'), $type);
|
|
if (file_exists($folder_path)) {
|
|
foreach (new \RecursiveDirectoryIterator($folder_path) as $folder) {
|
|
if (file_exists($folder->getPathname().'/data.json')) {
|
|
$deals[] = new Deal($folder_path, $folder->getBasename());
|
|
}
|
|
}
|
|
}
|
|
return view('list', ['deals' => $deals, 'type' => $type]);
|
|
}
|
|
|
|
public function view($type, $id)
|
|
{
|
|
$folder_path = sprintf('%s/%s/%s', config('app.deals_dir'), $type, $id);
|
|
if (file_exists($folder_path)) {
|
|
$deal = new Deal(sprintf('%s/%s', config('app.deals_dir'), $type), $id);
|
|
}
|
|
return view('view', ['deal' => $deal, 'type' => $type]);
|
|
}
|
|
|
|
public function update(Request $request, $type, $id)
|
|
{
|
|
$folder_path = sprintf('%s/%s/%s', config('app.deals_dir'), $type, $id);
|
|
if (file_exists($folder_path)) {
|
|
$deal = new Deal(sprintf('%s/%s', config('app.deals_dir'), $type), $id);
|
|
}
|
|
if ($request->isMethod('post')) {
|
|
// TODO filter
|
|
$updated_deal = \Shikiryu\LBCReposter\Deal::fromJSON($folder_path . '/data.json');
|
|
$result =
|
|
$updated_deal
|
|
->setSubject($request->subject)
|
|
->setBody($request->body)
|
|
->setCategory($request->category)
|
|
->setPrice($request->price)
|
|
->save(sprintf('%s/%s', config('app.deals_dir'), $type), false);
|
|
return redirect()->route('deals.list', ['type' => $type])->with('status', ($result ? 'Deal mis à jour': 'ERREUR'));
|
|
}
|
|
return view('update', ['deal' => $deal, 'type' => $type]);
|
|
}
|
|
|
|
public function delete($type, $id)
|
|
{
|
|
$result = false;
|
|
$folder = sprintf('%s/%s/%s', config('app.deals_dir'), $type, $id);
|
|
if (file_exists($folder)) {
|
|
$files = array_diff(scandir($folder), ['.','..']);
|
|
foreach ($files as $file) {
|
|
(is_dir(sprintf('%s/%s', $folder, $file))) ? delete_folder(sprintf('%s/%s', $folder, $file)) : unlink(sprintf('%s/%s', $folder, $file));
|
|
}
|
|
$result = rmdir($folder);
|
|
}
|
|
return redirect()->route('deals.list', ['type' => $type])->with('status', ($result ? 'Deal supprimé': 'ERREUR'));
|
|
}
|
|
}
|