event add store test

This commit is contained in:
2020-07-19 12:15:23 +02:00
parent 7b00dd2975
commit fe14127648
14 changed files with 472 additions and 2 deletions

View File

@@ -0,0 +1,85 @@
<?php
namespace App\Http\Controllers;
use App\Models\EventCategory;
use Illuminate\Http\Request;
class EventCategoryController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param \App\Models\EventCategory $eventCategory
* @return \Illuminate\Http\Response
*/
public function show(EventCategory $eventCategory)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\EventCategory $eventCategory
* @return \Illuminate\Http\Response
*/
public function edit(EventCategory $eventCategory)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\EventCategory $eventCategory
* @return \Illuminate\Http\Response
*/
public function update(Request $request, EventCategory $eventCategory)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\EventCategory $eventCategory
* @return \Illuminate\Http\Response
*/
public function destroy(EventCategory $eventCategory)
{
//
}
}

View File

@@ -0,0 +1,94 @@
<?php
namespace App\Http\Controllers;
use App\Http\Requests\EventRequest;
use App\Models\Event;
use App\Http\Resources\Event as EventResource;
use Illuminate\Http\Request;
class EventController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param EventRequest $request
* @return void
*/
public function store(EventRequest $request)
{
$validated = $request->validated();
$event = $request->user()->events()->create($validated);
$event->save();
//dd($event, $validated);
return (new EventResource($event))
->response()
->setStatusCode(201);
}
/**
* Display the specified resource.
*
* @param \App\Models\Event $event
* @return \Illuminate\Http\Response
*/
public function show(Event $event)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Event $event
* @return \Illuminate\Http\Response
*/
public function edit(Event $event)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Event $event
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Event $event)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Event $event
* @return \Illuminate\Http\Response
*/
public function destroy(Event $event)
{
//
}
}

View File

@@ -0,0 +1,63 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class EventRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return !!(auth()->user());
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required',
'description' => 'nullable|string',
'category_id' => 'required|exists:event_categories,id',
'start_date' => 'required|date',
'end_date' => 'date|after_or_equal:start_date',
'location' => 'string|nullable'
];
}
/**
* Get custom attributes for validator errors.
*
* @return array
*/
public function attributes()
{
return [
'name' => 'nom',
'start_date' => 'date de début',
'end_date' => 'date de fin',
'location' => 'lieu',
];
}
/**
* Get the error messages for the defined validation rules.
*
* @return array
*/
public function messages()
{
return [
'name.required' => 'A :attribute is required',
'start_date.required' => 'A :attribute is required',
];
}
}

View File

@@ -0,0 +1,41 @@
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class Event extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'data' => [
'type' => 'events',
'event_id' => $this->id,
'attributes' => [
'data' => [
'name' => $this->name,
'description' => $this->description,
'start_date' => $this->start_date,
'end_date' => $this->end_date,
'location' => $this->location,
'category' => [
'data' => [
'category_id' => $this->category_id
],
],
]
],
],
'links' => [
'self' => url('/events/'.$this->id),
]
];
}
}

10
app/Models/Event.php Normal file
View File

@@ -0,0 +1,10 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Event extends Model
{
protected $guarded = [];
}

View File

@@ -0,0 +1,10 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class EventCategory extends Model
{
protected $guarded = [];
}

View File

@@ -2,6 +2,7 @@
namespace App;
use App\Models\Event;
use App\Models\Image;
use App\Models\Memo;
use App\Models\ToDoList;
@@ -98,4 +99,9 @@ class User extends Authenticatable
$userImage->path = 'images/default-cover.jpg';
});
}
public function events(): HasMany
{
return $this->hasMany(Event::class);
}
}