Skip to content

Commit

Permalink
events
Browse files Browse the repository at this point in the history
  • Loading branch information
fgoldoni committed Dec 13, 2019
1 parent 964ea53 commit f56eb7c
Show file tree
Hide file tree
Showing 34 changed files with 936 additions and 114 deletions.
2 changes: 1 addition & 1 deletion Modules/Events/Config/config.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?php

return [
'name' => 'Events'
'name' => 'Events',
];
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ public function up()
{
Schema::create('events', function (Blueprint $table) {
$table->increments('id');
$table->string('title')->default('');
$table->string('title')->nullable();
$table->string('slug')->nullable();
$table->text('description')->nullable();
$table->longText('content')->nullable();
$table->string('address')->nullable();
Expand Down
15 changes: 14 additions & 1 deletion Modules/Events/Database/Seeders/EventsDatabaseSeeder.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Modules\Events\Entities\Event;

class EventsDatabaseSeeder extends Seeder
{
Expand All @@ -14,6 +16,17 @@ public function run()
{
Model::unguard();

// $this->call("OthersTableSeeder");
foreach (config('events.permissions', []) as $key => $value) {
if (!DB::table('permissions')->where('name', $value)->exists()) {
DB::table('permissions')->insertGetId([
'name' => $value,
'guard_name' => 'web',
'created_at' => now(),
'updated_at' => now()
]);
}
}

factory(Event::class, 10)->create();
}
}
18 changes: 10 additions & 8 deletions Modules/Events/Entities/Event.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@
use Modules\Attachments\Traits\AttachableTrait;
use Modules\Tags\Traits\TaggableTrait;
use Nicolaslopezj\Searchable\SearchableTrait;
use Rinvex\Categories\Traits\Categorizable;
use Spatie\Activitylog\Traits\LogsActivity;
use Spatie\Sluggable\HasSlug;
use Spatie\Sluggable\SlugOptions;
use willvincent\Rateable\Rateable;

class Event extends Model
Expand All @@ -19,7 +22,9 @@ class Event extends Model
use SearchableTrait;
use AttachableTrait;
use TaggableTrait;
use Categorizable;
use Rateable;
use HasSlug;

public $guarded = [];

Expand All @@ -34,7 +39,7 @@ class Event extends Model
'online' => 'boolean',
];

public $appends = ['slug', 'old', 'average_rating', 'user_average_rating'];
public $appends = ['old', 'average_rating', 'user_average_rating'];

/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
Expand Down Expand Up @@ -92,14 +97,11 @@ public function scopePublished($query, $published)
],
];

/**
* @param $value
*
* @return mixed
*/
public function getSlugAttribute()
public function getSlugOptions(): SlugOptions
{
return str_slug($this->title);
return SlugOptions::create()
->generateSlugsFrom('title')
->saveSlugsTo('slug');
}

/**
Expand Down
113 changes: 113 additions & 0 deletions Modules/Events/Http/Controllers/Api/EventsController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
<?php

namespace Modules\Events\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Modules\Events\Http\Requests\StoreEventRequest;
use Modules\Events\Http\Requests\UpdateEventRequest;
use Modules\Events\Services\Contracts\EventsServiceInterface;
use Modules\Events\Transformers\EventCollection;
use Modules\Events\Transformers\EventsCollection;

class EventsController extends Controller
{
/**
* @var \Modules\Events\Services\Contracts\EventsServiceInterface
*/
private $eventsService;

public function __construct(EventsServiceInterface $eventsService)
{
$this->eventsService = $eventsService;
}

public function getEvents()
{
try {
$data = EventsCollection::collection($this->eventsService->getEvents());

return $this->responseJson(['data' => $data]);
} catch (Exception $e) {
return $this->responseJsonError($e);
}
}

public function edit(int $id)
{
try {
$result['event'] = new EventCollection($this->eventsService->find($id));

return $this->responseJson($result);
} catch (Exception $e) {
return $this->responseJsonError($e);
}
}

public function store(StoreEventRequest $request)
{
try {
$result['event'] = new EventCollection(
$this->eventsService->storeEvent(
$request->only('title', 'description', 'content', 'address', 'start', 'end', 'url', 'color', 'online', 'user_id'),
$request->get('categories', []),
$request->get('tags', [])
)
);

return $this->responseJson($result);
} catch (Exception $e) {
return $this->responseJsonError($e);
}
}

public function update(UpdateEventRequest $request, int $id)
{
try {
$event = $this->eventsService->updateEvent(
$id,
$request->only('title', 'description', 'content', 'address', 'start', 'end', 'url', 'color', 'online', 'user_id'),
$request->get('categories', []),
$request->get('tags', [])
);

$result['data'] = new EventCollection($event);

return $this->responseJson($result);
} catch (Exception $e) {
return $this->responseJsonError($e);
}
}

public function destroy(int $id)
{
try {
$result['event'] = new EventCollection($this->eventsService->delete($id));

return $this->responseJson($result);
} catch (Exception $e) {
return $this->responseJsonError($e);
}
}

public function restore(int $id)
{
try {
$result['event'] = new EventCollection($this->eventsService->restore($id));

return $this->responseJson($result);
} catch (Exception $e) {
return $this->responseJsonError($e);
}
}

public function forceDelete(int $id)
{
try {
$result['event'] = new EventCollection($this->eventsService->forceDelete($id));

return $this->responseJson($result);
} catch (Exception $e) {
return $this->responseJsonError($e);
}
}
}
88 changes: 0 additions & 88 deletions Modules/Events/Http/Controllers/EventsController.php

This file was deleted.

38 changes: 38 additions & 0 deletions Modules/Events/Http/Requests/StoreEventRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?php

namespace Modules\Events\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class StoreEventRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'title' => 'required|string|min:4|max:255',
'description' => 'required|string|min:4',
'address' => 'required|string|min:4',
'start' => 'required|date',
'end' => 'required|date',
'color' => 'required|string',
'online' => 'required|boolean',
'categories' => 'required|array|min:1',
'tags' => 'array',
];
}

/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
}
39 changes: 39 additions & 0 deletions Modules/Events/Http/Requests/UpdateEventRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?php

namespace Modules\Events\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class UpdateEventRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'title' => 'required|string|min:4|max:255',
'description' => 'required|string|min:4',
'address' => 'required|string|min:4',
'user_id' => 'required|integer',
'start' => 'required|date',
'end' => 'required|date',
'color' => 'required|string',
'online' => 'required|boolean',
'categories' => 'required|array|min:1',
'tags' => 'array',
];
}

/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
}
Loading

0 comments on commit f56eb7c

Please sign in to comment.