Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file.
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
<?php

namespace App\Http\Controllers;
namespace Modules\Category\Http\Controllers;

use App\Http\Requests\Categories\StoreCategoryRequest;
use App\Http\Requests\Categories\UpdateCategoryRequest;
use App\Models\Category;
use App\Services\Categories\DeleteCategory;
use App\Services\Categories\StoreCategory;
use App\Services\Categories\UpdateCategory;
use App\Services\Groups\IndexGroups;
use App\Http\Controllers\Controller;
use Modules\Category\Http\Requests\StoreCategoryRequest;
use Modules\Category\Http\Requests\UpdateCategoryRequest;
use Modules\Category\Services\DeleteCategory;
use Modules\Category\Services\StoreCategory;
use Modules\Category\Services\UpdateCategory;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Inertia\Inertia;
use Inertia\Response;
use Modules\Category\Models\Category;
use Modules\Category\Services\IndexGroups;

class CategoryController extends Controller
{
Expand Down
26 changes: 26 additions & 0 deletions Modules/Category/app/Http/Controllers/GroupController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?php

namespace Modules\Category\Http\Controllers;

use App\Http\Controllers\Controller;
use Modules\Category\Http\Requests\StoreGroupRequest;
use Modules\Category\Http\Requests\UpdateGroupRequest;
use Modules\Category\Models\Group;
use Modules\Category\Services\StoreGroup;
use Modules\Category\Services\UpdateGroup;
use Illuminate\Http\Request;

class GroupController extends Controller
{
public function store(StoreGroupRequest $request)
{
(new StoreGroup())->store($request);
return redirect()->back();
}

public function update(UpdateGroupRequest $request, Group $group)
{
(new UpdateGroup())->update($request, $group);
return redirect()->back();
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php

namespace App\Http\Requests\Categories;
namespace Modules\Category\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

Expand All @@ -15,7 +15,6 @@ public function rules(): array
{
return [
'name' => 'required|string',
'color' => 'required|string',
'group_id' => 'required|numeric'
];
}
Expand Down
27 changes: 27 additions & 0 deletions Modules/Category/app/Http/Requests/StoreGroupRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

namespace Modules\Category\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class StoreGroupRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'name' => 'required|string|max:255',
'color' => 'required|string|max:255',
];
}

/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php

namespace App\Http\Requests\Categories;
namespace Modules\Category\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

Expand All @@ -15,7 +15,6 @@ public function rules(): array
{
return [
'name' => 'sometimes|string',
'color' => 'sometimes|string',
'group_id' => 'sometimes|numeric'
];
}
Expand Down
27 changes: 27 additions & 0 deletions Modules/Category/app/Http/Requests/UpdateGroupRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

namespace Modules\Category\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class UpdateGroupRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'name' => 'required|string|max:255',
'color' => 'required|string|max:255',
];
}

/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
<?php

namespace App\Models;
namespace Modules\Category\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Modules\Category\Models\Group;

class Category extends Model
{
Expand All @@ -14,12 +15,11 @@ class Category extends Model
protected $fillable = [
'user_id',
'group_id',
'name',
'color'
'name'
];

public function group()
{
return $this->hasOne('App\Models\Group', 'id', 'group_id');
return $this->belongsTo(Group::class);
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
<?php

namespace App\Models;
namespace Modules\Category\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Modules\Category\Database\Factories\GroupFactory;

class Group extends Model
{
Expand All @@ -19,6 +20,6 @@ class Group extends Model

public function categories()
{
return $this->hasMany('App\Models\Category', 'group_id', 'id');
return $this->hasMany('Modules\Category\Models\Category', 'group_id', 'id');
}
}
Empty file.
120 changes: 120 additions & 0 deletions Modules/Category/app/Providers/CategoryServiceProvider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
<?php

namespace Modules\Category\Providers;

use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;

class CategoryServiceProvider extends ServiceProvider
{
protected string $moduleName = 'Category';

protected string $moduleNameLower = 'category';

/**
* Boot the application events.
*/
public function boot(): void
{
$this->registerCommands();
$this->registerCommandSchedules();
$this->registerTranslations();
$this->registerConfig();
$this->registerViews();
$this->loadMigrationsFrom(module_path($this->moduleName, 'database/migrations'));
}

/**
* Register the service provider.
*/
public function register(): void
{
$this->app->register(EventServiceProvider::class);
$this->app->register(RouteServiceProvider::class);
}

/**
* Register commands in the format of Command::class
*/
protected function registerCommands(): void
{
// $this->commands([]);
}

/**
* Register command Schedules.
*/
protected function registerCommandSchedules(): void
{
// $this->app->booted(function () {
// $schedule = $this->app->make(Schedule::class);
// $schedule->command('inspire')->hourly();
// });
}

/**
* Register translations.
*/
public function registerTranslations(): void
{
$langPath = resource_path('lang/modules/'.$this->moduleNameLower);

if (is_dir($langPath)) {
$this->loadTranslationsFrom($langPath, $this->moduleNameLower);
$this->loadJsonTranslationsFrom($langPath);
} else {
$this->loadTranslationsFrom(module_path($this->moduleName, 'lang'), $this->moduleNameLower);
$this->loadJsonTranslationsFrom(module_path($this->moduleName, 'lang'));
}
}

/**
* Register config.
*/
protected function registerConfig(): void
{
$this->publishes([module_path($this->moduleName, 'config/config.php') => config_path($this->moduleNameLower.'.php')], 'config');
$this->mergeConfigFrom(module_path($this->moduleName, 'config/config.php'), $this->moduleNameLower);
}

/**
* Register views.
*/
public function registerViews(): void
{
$viewPath = resource_path('views/modules/'.$this->moduleNameLower);
$sourcePath = module_path($this->moduleName, 'resources/views');

$this->publishes([$sourcePath => $viewPath], ['views', $this->moduleNameLower.'-module-views']);

$this->loadViewsFrom(array_merge($this->getPublishableViewPaths(), [$sourcePath]), $this->moduleNameLower);

$componentNamespace = str_replace('/', '\\', config('modules.namespace').'\\'.$this->moduleName.'\\'.ltrim(config('modules.paths.generator.component-class.path'), config('modules.paths.app_folder', '')));
Blade::componentNamespace($componentNamespace, $this->moduleNameLower);
}

/**
* Get the services provided by the provider.
*
* @return array<string>
*/
public function provides(): array
{
return [];
}

/**
* @return array<string>
*/
private function getPublishableViewPaths(): array
{
$paths = [];
foreach (config('view.paths') as $path) {
if (is_dir($path.'/modules/'.$this->moduleNameLower)) {
$paths[] = $path.'/modules/'.$this->moduleNameLower;
}
}

return $paths;
}
}
32 changes: 32 additions & 0 deletions Modules/Category/app/Providers/EventServiceProvider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

namespace Modules\Category\Providers;

use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;

class EventServiceProvider extends ServiceProvider
{
/**
* The event handler mappings for the application.
*
* @var array<string, array<int, string>>
*/
protected $listen = [];

/**
* Indicates if events should be discovered.
*
* @var bool
*/
protected static $shouldDiscoverEvents = true;

/**
* Configure the proper event listeners for email verification.
*
* @return void
*/
protected function configureEmailVerification(): void
{

}
}
49 changes: 49 additions & 0 deletions Modules/Category/app/Providers/RouteServiceProvider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<?php

namespace Modules\Category\Providers;

use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;

class RouteServiceProvider extends ServiceProvider
{
/**
* Called before routes are registered.
*
* Register any model bindings or pattern based filters.
*/
public function boot(): void
{
parent::boot();
}

/**
* Define the routes for the application.
*/
public function map(): void
{
$this->mapApiRoutes();

$this->mapWebRoutes();
}

/**
* Define the "web" routes for the application.
*
* These routes all receive session state, CSRF protection, etc.
*/
protected function mapWebRoutes(): void
{
Route::middleware('web')->group(module_path('Category', '/routes/web.php'));
}

/**
* Define the "api" routes for the application.
*
* These routes are typically stateless.
*/
protected function mapApiRoutes(): void
{
Route::middleware('api')->prefix('api')->name('api.')->group(module_path('Category', '/routes/api.php'));
}
}
Loading