- directory refactor (#32)

* - directory refactor

* - readme.md update

* Update readme.md

Co-authored-by: Adrian Hopek <adrian.hopek@blumilk.pl>

* Update readme.md

Co-authored-by: Ewelina Lasowy <56546832+EwelinaLasowy@users.noreply.github.com>

* Update readme.md

Co-authored-by: Ewelina Lasowy <56546832+EwelinaLasowy@users.noreply.github.com>

* Update readme.md

Co-authored-by: Ewelina Lasowy <56546832+EwelinaLasowy@users.noreply.github.com>

* Update readme.md

Co-authored-by: Adrian Hopek <adrian.hopek@blumilk.pl>
Co-authored-by: Ewelina Lasowy <56546832+EwelinaLasowy@users.noreply.github.com>
This commit is contained in:
Krzysztof Rewak 2022-01-26 12:31:26 +01:00 committed by GitHub
parent 026bfe485f
commit f6d59f8bfb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
73 changed files with 214 additions and 217 deletions

View File

@ -1,4 +1,4 @@
APP_NAME=Laravel APP_NAME="Toby HR applicaiton"
APP_ENV=local APP_ENV=local
APP_KEY= APP_KEY=
APP_DEBUG=true APP_DEBUG=true

View File

@ -2,11 +2,11 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Exceptions; namespace Toby\Architecture;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; use Illuminate\Foundation\Exceptions\Handler;
class Handler extends ExceptionHandler class ExceptionHandler extends Handler
{ {
protected $dontFlash = [ protected $dontFlash = [
"current_password", "current_password",

View File

@ -2,13 +2,13 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Providers; namespace Toby\Architecture\Providers;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use Toby\Models\Holiday; use Toby\Eloquent\Models\Holiday;
use Toby\Models\VacationLimit; use Toby\Eloquent\Models\VacationLimit;
use Toby\Scopes\SelectedYearPeriodScope; use Toby\Eloquent\Scopes\SelectedYearPeriodScope;
class AppServiceProvider extends ServiceProvider class AppServiceProvider extends ServiceProvider
{ {

View File

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Providers; namespace Toby\Architecture\Providers;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;

View File

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Providers; namespace Toby\Architecture\Providers;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;

View File

@ -2,13 +2,13 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Providers; namespace Toby\Architecture\Providers;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use Toby\Models\User; use Toby\Eloquent\Models\User;
use Toby\Models\YearPeriod; use Toby\Eloquent\Models\YearPeriod;
use Toby\Observers\UserObserver; use Toby\Eloquent\Observers\UserObserver;
use Toby\Observers\YearPeriodObserver; use Toby\Eloquent\Observers\YearPeriodObserver;
class ObserverServiceProvider extends ServiceProvider class ObserverServiceProvider extends ServiceProvider
{ {

View File

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Providers; namespace Toby\Architecture\Providers;
use Illuminate\Cache\RateLimiting\Limit; use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;

View File

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Providers; namespace Toby\Architecture\Providers;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use Laravel\Telescope\TelescopeApplicationServiceProvider; use Laravel\Telescope\TelescopeApplicationServiceProvider;

View File

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Enums; namespace Toby\Domain;
enum EmploymentForm: string enum EmploymentForm: string
{ {

View File

@ -2,11 +2,11 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Helpers; namespace Toby\Domain;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Toby\Models\YearPeriod; use Toby\Eloquent\Models\YearPeriod;
use Yasumi\Holiday; use Yasumi\Holiday;
use Yasumi\Yasumi; use Yasumi\Yasumi;

View File

@ -2,13 +2,13 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Helpers; namespace Toby\Eloquent\Helpers;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use LasseRafn\InitialAvatarGenerator\InitialAvatar; use LasseRafn\InitialAvatarGenerator\InitialAvatar;
use SVG\SVG; use SVG\SVG;
use Toby\Models\User; use Toby\Eloquent\Models\User;
class UserAvatarGenerator class UserAvatarGenerator
{ {

View File

@ -2,10 +2,10 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Helpers; namespace Toby\Eloquent\Helpers;
use Illuminate\Contracts\Session\Session; use Illuminate\Contracts\Session\Session;
use Toby\Models\YearPeriod; use Toby\Eloquent\Models\YearPeriod;
class YearPeriodRetriever class YearPeriodRetriever
{ {

View File

@ -2,8 +2,9 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Models; namespace Toby\Eloquent\Models;
use Database\Factories\HolidayFactory;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@ -29,4 +30,9 @@ class Holiday extends Model
{ {
return $this->belongsTo(YearPeriod::class); return $this->belongsTo(YearPeriod::class);
} }
protected static function newFactory(): HolidayFactory
{
return HolidayFactory::new();
}
} }

View File

@ -2,8 +2,9 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Models; namespace Toby\Eloquent\Models;
use Database\Factories\UserFactory;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
@ -12,7 +13,7 @@ use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable; use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Toby\Enums\EmploymentForm; use Toby\Domain\EmploymentForm;
/** /**
* @property int $id * @property int $id
@ -69,4 +70,9 @@ class User extends Authenticatable
{ {
return "{$this->first_name} {$this->last_name}"; return "{$this->first_name} {$this->last_name}";
} }
protected static function newFactory(): UserFactory
{
return UserFactory::new();
}
} }

View File

@ -2,8 +2,9 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Models; namespace Toby\Eloquent\Models;
use Database\Factories\VacationLimitFactory;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@ -42,4 +43,9 @@ class VacationLimit extends Model
return $query->orderBy($userQuery); return $query->orderBy($userQuery);
} }
protected static function newFactory(): VacationLimitFactory
{
return VacationLimitFactory::new();
}
} }

View File

@ -2,8 +2,9 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Models; namespace Toby\Eloquent\Models;
use Database\Factories\YearPeriodFactory;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
@ -44,4 +45,9 @@ class YearPeriod extends Model
{ {
return $this->hasMany(Holiday::class); return $this->hasMany(Holiday::class);
} }
protected static function newFactory(): YearPeriodFactory
{
return YearPeriodFactory::new();
}
} }

View File

@ -2,12 +2,12 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Observers; namespace Toby\Eloquent\Observers;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Toby\Helpers\UserAvatarGenerator; use Toby\Eloquent\Helpers\UserAvatarGenerator;
use Toby\Helpers\YearPeriodRetriever; use Toby\Eloquent\Helpers\YearPeriodRetriever;
use Toby\Models\User; use Toby\Eloquent\Models\User;
class UserObserver class UserObserver
{ {

View File

@ -2,12 +2,12 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Observers; namespace Toby\Eloquent\Observers;
use Toby\Helpers\PolishHolidaysRetriever; use Toby\Domain\PolishHolidaysRetriever;
use Toby\Helpers\UserAvatarGenerator; use Toby\Eloquent\Helpers\UserAvatarGenerator;
use Toby\Models\User; use Toby\Eloquent\Models\User;
use Toby\Models\YearPeriod; use Toby\Eloquent\Models\YearPeriod;
class YearPeriodObserver class YearPeriodObserver
{ {

View File

@ -2,12 +2,12 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Scopes; namespace Toby\Eloquent\Scopes;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope; use Illuminate\Database\Eloquent\Scope;
use Toby\Helpers\YearPeriodRetriever; use Toby\Eloquent\Helpers\YearPeriodRetriever;
class SelectedYearPeriodScope implements Scope class SelectedYearPeriodScope implements Scope
{ {

View File

@ -2,15 +2,14 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Console\Commands; namespace Toby\Infrastructure\Console\Commands;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Toby\Models\User; use Toby\Eloquent\Models\User;
class CreateUserCommand extends Command class CreateUserCommand extends Command
{ {
protected $signature = "user:create protected $signature = "user:create {email : an email for the user}";
{email : an email for the user}";
protected $description = "Creates a user"; protected $description = "Creates a user";
public function handle(): void public function handle(): void

View File

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Console; namespace Toby\Infrastructure\Console;
use Illuminate\Console\Scheduling\Schedule; use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel; use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

View File

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Http\Controllers; namespace Toby\Infrastructure\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Foundation\Bus\DispatchesJobs;

View File

@ -2,13 +2,13 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Http\Controllers; namespace Toby\Infrastructure\Http\Controllers;
use Illuminate\Contracts\Auth\Factory as AuthFactory; use Illuminate\Contracts\Auth\Factory as AuthFactory;
use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Database\Eloquent\ModelNotFoundException;
use Laravel\Socialite\SocialiteManager; use Laravel\Socialite\SocialiteManager;
use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\RedirectResponse;
use Toby\Models\User; use Toby\Eloquent\Models\User;
class GoogleController extends Controller class GoogleController extends Controller
{ {

View File

@ -2,14 +2,14 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Http\Controllers; namespace Toby\Infrastructure\Http\Controllers;
use Illuminate\Http\RedirectResponse; use Illuminate\Http\RedirectResponse;
use Inertia\Response; use Inertia\Response;
use Toby\Http\Requests\HolidayRequest; use Toby\Eloquent\Models\Holiday;
use Toby\Http\Resources\HolidayFormDataResource; use Toby\Infrastructure\Http\Requests\HolidayRequest;
use Toby\Http\Resources\HolidayResource; use Toby\Infrastructure\Http\Resources\HolidayFormDataResource;
use Toby\Models\Holiday; use Toby\Infrastructure\Http\Resources\HolidayResource;
class HolidayController extends Controller class HolidayController extends Controller
{ {

View File

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Http\Controllers; namespace Toby\Infrastructure\Http\Controllers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;

View File

@ -2,12 +2,12 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Http\Controllers; namespace Toby\Infrastructure\Http\Controllers;
use Illuminate\Http\RedirectResponse; use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Toby\Helpers\YearPeriodRetriever; use Toby\Eloquent\Helpers\YearPeriodRetriever;
use Toby\Models\YearPeriod; use Toby\Eloquent\Models\YearPeriod;
class SelectYearPeriodController extends Controller class SelectYearPeriodController extends Controller
{ {

View File

@ -2,16 +2,16 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Http\Controllers; namespace Toby\Infrastructure\Http\Controllers;
use Illuminate\Http\RedirectResponse; use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Inertia\Response; use Inertia\Response;
use Toby\Enums\EmploymentForm; use Toby\Domain\EmploymentForm;
use Toby\Http\Requests\UserRequest; use Toby\Eloquent\Models\User;
use Toby\Http\Resources\UserFormDataResource; use Toby\Infrastructure\Http\Requests\UserRequest;
use Toby\Http\Resources\UserResource; use Toby\Infrastructure\Http\Resources\UserFormDataResource;
use Toby\Models\User; use Toby\Infrastructure\Http\Resources\UserResource;
class UserController extends Controller class UserController extends Controller
{ {

View File

@ -2,13 +2,13 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Http\Controllers; namespace Toby\Infrastructure\Http\Controllers;
use Illuminate\Http\RedirectResponse; use Illuminate\Http\RedirectResponse;
use Inertia\Response; use Inertia\Response;
use Toby\Http\Requests\VacationLimitRequest; use Toby\Eloquent\Models\VacationLimit;
use Toby\Http\Resources\VacationLimitResource; use Toby\Infrastructure\Http\Requests\VacationLimitRequest;
use Toby\Models\VacationLimit; use Toby\Infrastructure\Http\Resources\VacationLimitResource;
class VacationLimitController extends Controller class VacationLimitController extends Controller
{ {

View File

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Http; namespace Toby\Infrastructure\Http;
use Fruitcake\Cors\HandleCors; use Fruitcake\Cors\HandleCors;
use Illuminate\Auth\Middleware\AuthenticateWithBasicAuth; use Illuminate\Auth\Middleware\AuthenticateWithBasicAuth;
@ -23,11 +23,11 @@ use Illuminate\Routing\Middleware\ValidateSignature;
use Illuminate\Session\Middleware\AuthenticateSession; use Illuminate\Session\Middleware\AuthenticateSession;
use Illuminate\Session\Middleware\StartSession; use Illuminate\Session\Middleware\StartSession;
use Illuminate\View\Middleware\ShareErrorsFromSession; use Illuminate\View\Middleware\ShareErrorsFromSession;
use Toby\Http\Middleware\Authenticate; use Toby\Infrastructure\Http\Middleware\Authenticate;
use Toby\Http\Middleware\HandleInertiaRequests; use Toby\Infrastructure\Http\Middleware\HandleInertiaRequests;
use Toby\Http\Middleware\RedirectIfAuthenticated; use Toby\Infrastructure\Http\Middleware\RedirectIfAuthenticated;
use Toby\Http\Middleware\TrimStrings; use Toby\Infrastructure\Http\Middleware\TrimStrings;
use Toby\Http\Middleware\TrustProxies; use Toby\Infrastructure\Http\Middleware\TrustProxies;
class Kernel extends HttpKernel class Kernel extends HttpKernel
{ {

View File

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Http\Middleware; namespace Toby\Infrastructure\Http\Middleware;
use Illuminate\Auth\Middleware\Authenticate as Middleware; use Illuminate\Auth\Middleware\Authenticate as Middleware;

View File

@ -2,12 +2,12 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Http\Middleware; namespace Toby\Infrastructure\Http\Middleware;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Inertia\Middleware; use Inertia\Middleware;
use Toby\Helpers\YearPeriodRetriever; use Toby\Eloquent\Helpers\YearPeriodRetriever;
use Toby\Http\Resources\UserResource; use Toby\Infrastructure\Http\Resources\UserResource;
class HandleInertiaRequests extends Middleware class HandleInertiaRequests extends Middleware
{ {

View File

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Http\Middleware; namespace Toby\Infrastructure\Http\Middleware;
use Closure; use Closure;
use Illuminate\Http\Request; use Illuminate\Http\Request;

View File

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Http\Middleware; namespace Toby\Infrastructure\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware; use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;

View File

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Http\Middleware; namespace Toby\Infrastructure\Http\Middleware;
use Illuminate\Http\Middleware\TrustProxies as Middleware; use Illuminate\Http\Middleware\TrustProxies as Middleware;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;

View File

@ -2,13 +2,13 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Http\Requests; namespace Toby\Infrastructure\Http\Requests;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Toby\Models\YearPeriod; use Toby\Eloquent\Models\YearPeriod;
use Toby\Rules\YearPeriodExists; use Toby\Infrastructure\Http\Rules\YearPeriodExists;
class HolidayRequest extends FormRequest class HolidayRequest extends FormRequest
{ {

View File

@ -2,12 +2,12 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Http\Requests; namespace Toby\Infrastructure\Http\Requests;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\Enum; use Illuminate\Validation\Rules\Enum;
use Toby\Enums\EmploymentForm; use Toby\Domain\EmploymentForm;
class UserRequest extends FormRequest class UserRequest extends FormRequest
{ {

View File

@ -2,11 +2,11 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Http\Requests; namespace Toby\Infrastructure\Http\Requests;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Toby\Models\VacationLimit; use Toby\Eloquent\Models\VacationLimit;
class VacationLimitRequest extends FormRequest class VacationLimitRequest extends FormRequest
{ {

View File

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Http\Resources; namespace Toby\Infrastructure\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;

View File

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Http\Resources; namespace Toby\Infrastructure\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;

View File

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Http\Resources; namespace Toby\Infrastructure\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;

View File

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Http\Resources; namespace Toby\Infrastructure\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;

View File

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Http\Resources; namespace Toby\Infrastructure\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;

View File

@ -2,11 +2,11 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Rules; namespace Toby\Infrastructure\Http\Rules;
use Illuminate\Contracts\Validation\Rule; use Illuminate\Contracts\Validation\Rule;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
use Toby\Models\YearPeriod; use Toby\Eloquent\Models\YearPeriod;
class YearPeriodExists implements Rule class YearPeriodExists implements Rule
{ {

View File

@ -2,13 +2,13 @@
declare(strict_types=1); declare(strict_types=1);
namespace Toby\Jobs; namespace Toby\Infrastructure\Jobs;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
use Toby\Models\YearPeriod; use Toby\Eloquent\Models\YearPeriod;
class CheckYearPeriod implements ShouldQueue class CheckYearPeriod implements ShouldQueue
{ {

52
artisan
View File

@ -1,52 +1,20 @@
#!/usr/bin/env php #!/usr/bin/env php
<?php <?php
define('LARAVEL_START', microtime(true)); use Illuminate\Contracts\Console\Kernel;
use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Console\Output\ConsoleOutput;
/* define("LARAVEL_START", microtime(true));
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader
| for our application. We just need to utilize it! We'll require it
| into the script here so that we do not have to worry about the
| loading of any of our classes manually. It's great to relax.
|
*/
require __DIR__.'/vendor/autoload.php'; require __DIR__ . "/vendor/autoload.php";
$app = require_once __DIR__.'/bootstrap/app.php'; $app = require_once __DIR__ . "/bootstrap/app.php";
/** @var Kernel $kernel */
$kernel = $app->make(Kernel::class);
/* $input = new ArgvInput();
|-------------------------------------------------------------------------- $status = $kernel->handle($input, new ConsoleOutput());
| Run The Artisan Application
|--------------------------------------------------------------------------
|
| When we run the console application, the current CLI command will be
| executed in this console and the response sent back to a terminal
| or another output device for the developers. Here goes nothing!
|
*/
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
$status = $kernel->handle(
$input = new Symfony\Component\Console\Input\ArgvInput,
new Symfony\Component\Console\Output\ConsoleOutput
);
/*
|--------------------------------------------------------------------------
| Shutdown The Application
|--------------------------------------------------------------------------
|
| Once Artisan has finished running, we will fire off the shutdown events
| so that any final work may be done by the application before we shut
| down the process. This is the last thing to happen to the request.
|
*/
$kernel->terminate($input, $status); $kernel->terminate($input, $status);

View File

@ -6,15 +6,15 @@ use Illuminate\Contracts\Console\Kernel as ConsoleKernelContract;
use Illuminate\Contracts\Debug\ExceptionHandler as HandlerContract; use Illuminate\Contracts\Debug\ExceptionHandler as HandlerContract;
use Illuminate\Contracts\Http\Kernel as HttpKernelContract; use Illuminate\Contracts\Http\Kernel as HttpKernelContract;
use Illuminate\Foundation\Application; use Illuminate\Foundation\Application;
use Toby\Console\Kernel as ConsoleKernel; use Toby\Architecture\ExceptionHandler;
use Toby\Exceptions\Handler; use Toby\Infrastructure\Console\Kernel as ConsoleKernel;
use Toby\Http\Kernel as HttpKernel; use Toby\Infrastructure\Http\Kernel as HttpKernel;
$basePath = $_ENV["APP_BASE_PATH"] ?? dirname(__DIR__); $basePath = $_ENV["APP_BASE_PATH"] ?? dirname(__DIR__);
$application = new Application($basePath); $application = new Application($basePath);
$application->singleton(HttpKernelContract::class, HttpKernel::class); $application->singleton(HttpKernelContract::class, HttpKernel::class);
$application->singleton(ConsoleKernelContract::class, ConsoleKernel::class); $application->singleton(ConsoleKernelContract::class, ConsoleKernel::class);
$application->singleton(HandlerContract::class, Handler::class); $application->singleton(HandlerContract::class, ExceptionHandler::class);
return $application; return $application;

View File

@ -37,11 +37,11 @@ return [
Illuminate\Translation\TranslationServiceProvider::class, Illuminate\Translation\TranslationServiceProvider::class,
Illuminate\Validation\ValidationServiceProvider::class, Illuminate\Validation\ValidationServiceProvider::class,
Illuminate\View\ViewServiceProvider::class, Illuminate\View\ViewServiceProvider::class,
Toby\Providers\AppServiceProvider::class, Toby\Architecture\Providers\AppServiceProvider::class,
Toby\Providers\AuthServiceProvider::class, Toby\Architecture\Providers\AuthServiceProvider::class,
Toby\Providers\EventServiceProvider::class, Toby\Architecture\Providers\EventServiceProvider::class,
Toby\Providers\RouteServiceProvider::class, Toby\Architecture\Providers\RouteServiceProvider::class,
Toby\Providers\TelescopeServiceProvider::class, Toby\Architecture\Providers\TelescopeServiceProvider::class,
Toby\Providers\ObserverServiceProvider::class, Toby\Architecture\Providers\ObserverServiceProvider::class,
], ],
]; ];

View File

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
use Toby\Models\User; use Toby\Eloquent\Models\User;
return [ return [
"defaults" => [ "defaults" => [

View File

@ -5,10 +5,13 @@ declare(strict_types=1);
namespace Database\Factories; namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Database\Eloquent\Factories\Factory;
use Toby\Models\YearPeriod; use Toby\Eloquent\Models\Holiday;
use Toby\Eloquent\Models\YearPeriod;
class HolidayFactory extends Factory class HolidayFactory extends Factory
{ {
protected $model = Holiday::class;
public function definition(): array public function definition(): array
{ {
return [ return [

View File

@ -7,10 +7,13 @@ namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Toby\Enums\EmploymentForm; use Toby\Domain\EmploymentForm;
use Toby\Eloquent\Models\User;
class UserFactory extends Factory class UserFactory extends Factory
{ {
protected $model = User::class;
public function definition(): array public function definition(): array
{ {
return [ return [

View File

@ -5,11 +5,14 @@ declare(strict_types=1);
namespace Database\Factories; namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Database\Eloquent\Factories\Factory;
use Toby\Models\User; use Toby\Eloquent\Models\User;
use Toby\Models\YearPeriod; use Toby\Eloquent\Models\VacationLimit;
use Toby\Eloquent\Models\YearPeriod;
class VacationLimitFactory extends Factory class VacationLimitFactory extends Factory
{ {
protected $model = VacationLimit::class;
public function definition(): array public function definition(): array
{ {
$hasVacation = $this->faker->boolean(75); $hasVacation = $this->faker->boolean(75);

View File

@ -5,9 +5,12 @@ declare(strict_types=1);
namespace Database\Factories; namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Database\Eloquent\Factories\Factory;
use Toby\Eloquent\Models\YearPeriod;
class YearPeriodFactory extends Factory class YearPeriodFactory extends Factory
{ {
protected $model = YearPeriod::class;
public function definition(): array public function definition(): array
{ {
return [ return [

View File

@ -1,27 +0,0 @@
<?php
declare(strict_types=1);
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class() extends Migration {
public function up(): void
{
Schema::create("personal_access_tokens", function (Blueprint $table): void {
$table->id();
$table->morphs("tokenable");
$table->string("name");
$table->string("token", 64)->unique();
$table->text("abilities")->nullable();
$table->timestamp("last_used_at")->nullable();
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists("personal_access_tokens");
}
};

View File

@ -5,8 +5,8 @@ declare(strict_types=1);
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
use Toby\Models\User; use Toby\Eloquent\Models\User;
use Toby\Models\YearPeriod; use Toby\Eloquent\Models\YearPeriod;
return new class() extends Migration { return new class() extends Migration {
public function up(): void public function up(): void

View File

@ -5,7 +5,7 @@ declare(strict_types=1);
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
use Toby\Models\YearPeriod; use Toby\Eloquent\Models\YearPeriod;
return new class() extends Migration { return new class() extends Migration {
public function up(): void public function up(): void

View File

@ -7,11 +7,11 @@ namespace Database\Seeders;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Toby\Helpers\PolishHolidaysRetriever; use Toby\Domain\PolishHolidaysRetriever;
use Toby\Helpers\UserAvatarGenerator; use Toby\Eloquent\Helpers\UserAvatarGenerator;
use Toby\Models\User; use Toby\Eloquent\Models\User;
use Toby\Models\VacationLimit; use Toby\Eloquent\Models\VacationLimit;
use Toby\Models\YearPeriod; use Toby\Eloquent\Models\YearPeriod;
class DatabaseSeeder extends Seeder class DatabaseSeeder extends Seeder
{ {

View File

@ -43,7 +43,7 @@ services:
- MYSQL_USER=${DOCKER_DEV_DB_USERNAME} - MYSQL_USER=${DOCKER_DEV_DB_USERNAME}
- MYSQL_PASSWORD=${DOCKER_DEV_DB_PASSWORD} - MYSQL_PASSWORD=${DOCKER_DEV_DB_PASSWORD}
ports: ports:
- ${DOCKER_DB_EXTERNAL_PORT:-3306}:3306 - ${DOCKER_DEV_DB_EXTERNAL_PORT:-3306}:3306
volumes: volumes:
- toby-mysql-data:/var/lib/mysql - toby-mysql-data:/var/lib/mysql
networks: networks:

2
package-lock.json generated
View File

@ -1,5 +1,5 @@
{ {
"name": "toby", "name": "application",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {

View File

@ -4,7 +4,15 @@
> HR software you love to hate > HR software you love to hate
## Architecture
Directory structure little differs from a standard Laravel tree. We decided to refactor main `app` directory to better suit our needs. All classes are grouped in four major categories:
* `app/Architecture` for all framework-related stuff like service providers, exception handler and more;
* `app/Domain` for all framework-agnostic services related to the business logic of the application;
* `app/Eloquent` for all database/ORM-related classes like models, observers and scopes;
* `app/Infrastructure` for entry points to the application: CLI, HTTP and async ones.
## Local setup ## Local setup
- run `sh setup` or:
> `dcr` is an alias to `docker-compose run --rm -u "$(id -u):$(id -g)"` > `dcr` is an alias to `docker-compose run --rm -u "$(id -u):$(id -g)"`
@ -95,4 +103,4 @@ Docker container:
``` ```
docker-compose run --rm -e XDEBUG_MODE=off php php artisan test docker-compose run --rm -e XDEBUG_MODE=off php php artisan test
``` ```

View File

@ -3,12 +3,12 @@
declare(strict_types=1); declare(strict_types=1);
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
use Toby\Http\Controllers\GoogleController; use Toby\Infrastructure\Http\Controllers\GoogleController;
use Toby\Http\Controllers\HolidayController; use Toby\Infrastructure\Http\Controllers\HolidayController;
use Toby\Http\Controllers\LogoutController; use Toby\Infrastructure\Http\Controllers\LogoutController;
use Toby\Http\Controllers\SelectYearPeriodController; use Toby\Infrastructure\Http\Controllers\SelectYearPeriodController;
use Toby\Http\Controllers\UserController; use Toby\Infrastructure\Http\Controllers\UserController;
use Toby\Http\Controllers\VacationLimitController; use Toby\Infrastructure\Http\Controllers\VacationLimitController;
Route::middleware("auth")->group(function (): void { Route::middleware("auth")->group(function (): void {
Route::get("/", fn() => inertia("Dashboard"))->name("dashboard"); Route::get("/", fn() => inertia("Dashboard"))->name("dashboard");

13
setup Normal file
View File

@ -0,0 +1,13 @@
#!/bin/bash
if [ ! -f ".env" ]; then
cp .env.example .env
fi
docker-compose build --no-cache --pull
docker-compose up -d
docker-compose run --rm -u "$(id -u):$(id -g)" php composer install
docker-compose run --rm -u "$(id -u):$(id -g)" php php artisan key:generate
docker-compose run --rm -u "$(id -u):$(id -g)" php php artisan migrate --seed
docker-compose run --rm -u "$(id -u):$(id -g)" node npm install
docker-compose run --rm -u "$(id -u):$(id -g)" node npm run dev

View File

@ -8,7 +8,7 @@ use Illuminate\Foundation\Testing\DatabaseMigrations;
use Laravel\Dusk\Browser; use Laravel\Dusk\Browser;
use Tests\Browser\Pages\HomePage; use Tests\Browser\Pages\HomePage;
use Tests\DuskTestCase; use Tests\DuskTestCase;
use Toby\Models\User; use Toby\Eloquent\Models\User;
class AuthenticationTest extends DuskTestCase class AuthenticationTest extends DuskTestCase
{ {

View File

@ -6,7 +6,7 @@ namespace Tests\Feature;
use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Foundation\Testing\DatabaseMigrations;
use Tests\FeatureTestCase; use Tests\FeatureTestCase;
use Toby\Models\User; use Toby\Eloquent\Models\User;
class AuthenticationTest extends FeatureTestCase class AuthenticationTest extends FeatureTestCase
{ {

View File

@ -8,9 +8,9 @@ use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
use Inertia\Testing\AssertableInertia as Assert; use Inertia\Testing\AssertableInertia as Assert;
use Tests\FeatureTestCase; use Tests\FeatureTestCase;
use Toby\Models\Holiday; use Toby\Eloquent\Models\Holiday;
use Toby\Models\User; use Toby\Eloquent\Models\User;
use Toby\Models\YearPeriod; use Toby\Eloquent\Models\YearPeriod;
class HolidayTest extends FeatureTestCase class HolidayTest extends FeatureTestCase
{ {

View File

@ -7,7 +7,7 @@ namespace Tests\Feature;
use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Foundation\Testing\DatabaseMigrations;
use Inertia\Testing\AssertableInertia as Assert; use Inertia\Testing\AssertableInertia as Assert;
use Tests\FeatureTestCase; use Tests\FeatureTestCase;
use Toby\Models\User; use Toby\Eloquent\Models\User;
class InertiaTest extends FeatureTestCase class InertiaTest extends FeatureTestCase
{ {

View File

@ -7,8 +7,8 @@ namespace Tests\Feature;
use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
use Tests\FeatureTestCase; use Tests\FeatureTestCase;
use Toby\Helpers\YearPeriodRetriever; use Toby\Eloquent\Helpers\YearPeriodRetriever;
use Toby\Models\User; use Toby\Eloquent\Models\User;
class SelectYearPeriodTest extends FeatureTestCase class SelectYearPeriodTest extends FeatureTestCase
{ {

View File

@ -8,8 +8,8 @@ use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
use Inertia\Testing\AssertableInertia as Assert; use Inertia\Testing\AssertableInertia as Assert;
use Tests\FeatureTestCase; use Tests\FeatureTestCase;
use Toby\Enums\EmploymentForm; use Toby\Domain\EmploymentForm;
use Toby\Models\User; use Toby\Eloquent\Models\User;
class UserTest extends FeatureTestCase class UserTest extends FeatureTestCase
{ {

View File

@ -7,8 +7,8 @@ namespace Tests\Feature;
use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Foundation\Testing\DatabaseMigrations;
use Inertia\Testing\AssertableInertia as Assert; use Inertia\Testing\AssertableInertia as Assert;
use Tests\FeatureTestCase; use Tests\FeatureTestCase;
use Toby\Models\User; use Toby\Eloquent\Models\User;
use Toby\Models\VacationLimit; use Toby\Eloquent\Models\VacationLimit;
class VacationLimitTest extends FeatureTestCase class VacationLimitTest extends FeatureTestCase
{ {

View File

@ -6,8 +6,8 @@ namespace Tests\Traits;
use Illuminate\Foundation\Testing\Concerns\InteractsWithSession; use Illuminate\Foundation\Testing\Concerns\InteractsWithSession;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
use Toby\Helpers\YearPeriodRetriever; use Toby\Eloquent\Helpers\YearPeriodRetriever;
use Toby\Models\YearPeriod; use Toby\Eloquent\Models\YearPeriod;
trait InteractsWithYearPeriods trait InteractsWithYearPeriods
{ {

View File

@ -8,7 +8,7 @@ use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Tests\TestCase; use Tests\TestCase;
use Tests\Traits\InteractsWithYearPeriods; use Tests\Traits\InteractsWithYearPeriods;
use Toby\Models\User; use Toby\Eloquent\Models\User;
class AvatarTest extends TestCase class AvatarTest extends TestCase
{ {

View File

@ -8,7 +8,7 @@ use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
use Tests\TestCase; use Tests\TestCase;
use Tests\Traits\InteractsWithYearPeriods; use Tests\Traits\InteractsWithYearPeriods;
use Toby\Jobs\CheckYearPeriod; use Toby\Infrastructure\Jobs\CheckYearPeriod;
class CheckYearPeriodTest extends TestCase class CheckYearPeriodTest extends TestCase
{ {

View File

@ -7,8 +7,8 @@ namespace Tests\Unit;
use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Foundation\Testing\DatabaseMigrations;
use Tests\TestCase; use Tests\TestCase;
use Tests\Traits\InteractsWithYearPeriods; use Tests\Traits\InteractsWithYearPeriods;
use Toby\Models\User; use Toby\Eloquent\Models\User;
use Toby\Models\YearPeriod; use Toby\Eloquent\Models\YearPeriod;
class VacationLimitTest extends TestCase class VacationLimitTest extends TestCase
{ {

View File

@ -9,8 +9,8 @@ use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
use Tests\TestCase; use Tests\TestCase;
use Tests\Traits\InteractsWithYearPeriods; use Tests\Traits\InteractsWithYearPeriods;
use Toby\Helpers\YearPeriodRetriever; use Toby\Eloquent\Helpers\YearPeriodRetriever;
use Toby\Models\YearPeriod; use Toby\Eloquent\Models\YearPeriod;
class YearPeriodRetrieverTest extends TestCase class YearPeriodRetrieverTest extends TestCase
{ {