-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit dfc2ae7
Showing
506 changed files
with
68,854 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
root = true | ||
|
||
[*] | ||
charset = utf-8 | ||
end_of_line = lf | ||
indent_size = 4 | ||
indent_style = space | ||
insert_final_newline = true | ||
trim_trailing_whitespace = true | ||
|
||
[*.md] | ||
trim_trailing_whitespace = false | ||
|
||
[*.{yml,yaml}] | ||
indent_size = 2 | ||
|
||
[docker-compose.yml] | ||
indent_size = 4 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
APP_NAME=Laravel | ||
APP_ENV=local | ||
APP_KEY=base64:byd1I8tx+1S2konW0mA2zVgTfKIeOnUx5Rtnleg3mPw= | ||
APP_DEBUG=true | ||
APP_URL=http://localhost | ||
|
||
LOG_CHANNEL=stack | ||
LOG_DEPRECATIONS_CHANNEL=null | ||
LOG_LEVEL=debug | ||
|
||
DB_CONNECTION=mysql | ||
DB_HOST=mariadb | ||
DB_PORT=3306 | ||
DB_DATABASE=ingenious | ||
DB_USERNAME=user | ||
DB_PASSWORD=password | ||
|
||
BROADCAST_DRIVER=log | ||
CACHE_DRIVER=file | ||
FILESYSTEM_DISK=local | ||
QUEUE_CONNECTION=sync | ||
SESSION_DRIVER=file | ||
SESSION_LIFETIME=120 | ||
|
||
MEMCACHED_HOST=127.0.0.1 | ||
|
||
REDIS_HOST=127.0.0.1 | ||
REDIS_PASSWORD=null | ||
REDIS_PORT=6379 | ||
|
||
MAIL_MAILER=smtp | ||
MAIL_HOST=mailhog | ||
MAIL_PORT=1025 | ||
MAIL_USERNAME=null | ||
MAIL_PASSWORD=null | ||
MAIL_ENCRYPTION=null | ||
MAIL_FROM_ADDRESS="[email protected]" | ||
MAIL_FROM_NAME="${APP_NAME}" | ||
|
||
AWS_ACCESS_KEY_ID= | ||
AWS_SECRET_ACCESS_KEY= | ||
AWS_DEFAULT_REGION=us-east-1 | ||
AWS_BUCKET= | ||
AWS_USE_PATH_STYLE_ENDPOINT=false | ||
|
||
PUSHER_APP_ID= | ||
PUSHER_APP_KEY= | ||
PUSHER_APP_SECRET= | ||
PUSHER_HOST= | ||
PUSHER_PORT=443 | ||
PUSHER_SCHEME=https | ||
PUSHER_APP_CLUSTER=mt1 | ||
|
||
VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" | ||
VITE_PUSHER_HOST="${PUSHER_HOST}" | ||
VITE_PUSHER_PORT="${PUSHER_PORT}" | ||
VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" | ||
VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
* text=auto | ||
|
||
*.blade.php diff=html | ||
*.css diff=css | ||
*.html diff=html | ||
*.md diff=markdown | ||
*.php diff=php | ||
|
||
/.github export-ignore | ||
CHANGELOG.md export-ignore | ||
.styleci.yml export-ignore |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
/node_modules | ||
/public/build | ||
/public/hot | ||
/public/storage | ||
/storage/*.key | ||
/vendor | ||
/.env | ||
.env.backup | ||
.env.production | ||
.phpunit.result.cache | ||
Homestead.json | ||
Homestead.yaml | ||
auth.json | ||
npm-debug.log | ||
yarn-error.log | ||
/.fleet | ||
/.idea | ||
/.vscode |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
# Recruitment Task 🧑💻👩💻 | ||
|
||
### Invoice module with approve and reject system as a part of a bigger enterprise system. Approval module exists and you should use it. It is Backend task, no Frontend is needed. | ||
--- | ||
Please create your own repository and make it public or invite us to check it. | ||
|
||
|
||
<table> | ||
<tr> | ||
<td> | ||
|
||
- Invoice contains: | ||
- Invoice number | ||
- Invoice date | ||
- Due date | ||
- Company | ||
- Name | ||
- Street Address | ||
- City | ||
- Zip code | ||
- Phone | ||
- Billed company | ||
- Name | ||
- Street Address | ||
- City | ||
- Zip code | ||
- Phone | ||
- Email address | ||
- Products | ||
- Name | ||
- Quantity | ||
- Unit Price | ||
- Total | ||
- Total price | ||
</td> | ||
<td> | ||
Image just for visualization | ||
<img src="https://templates.invoicehome.com/invoice-template-us-classic-white-750px.png" style="width: auto"; height:100%" /> | ||
</td> | ||
</tr> | ||
</table> | ||
|
||
### TO DO: | ||
Simple Invoice module which is approving or rejecting single invoice using information from existing approval module which tells if the given resource is approvable / rejectable. Only 3 endpoints are required: | ||
``` | ||
- Show Invoice data, like in the list above | ||
- Approve Invoice | ||
- Reject Invoice | ||
``` | ||
* In this task you must save only invoices so don’t write repositories for every model/ entity. | ||
|
||
* You should be able to approve or reject each invoice just once (if invoice is approved you cannot reject it and vice versa. | ||
|
||
* You can assume that product quantity is integer and only currency is USD. | ||
|
||
* Proper seeder is located in Invoice module and it’s named DatabaseSeeder | ||
|
||
* In .env.example proper connection to database is established. | ||
|
||
* Using proper DDD structure is preferred (with elements like entity, value object, repository, mapper / proxy, DTO) but not mandatory. | ||
Unit tests in plus. | ||
|
||
* Docker is in docker catalog and you need only do | ||
``` | ||
./start.sh | ||
``` | ||
to make everything work | ||
|
||
docker container is in docker folder. To connect with it just: | ||
``` | ||
docker compose exec workspace bash | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace App\Domain\Enums; | ||
|
||
enum StatusEnum: string | ||
{ | ||
case DRAFT = 'draft'; | ||
case APPROVED = 'approved'; | ||
case REJECTED = 'rejected'; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
<?php | ||
|
||
namespace App\Infrastructure\Console; | ||
|
||
use Illuminate\Console\Scheduling\Schedule; | ||
use Illuminate\Foundation\Console\Kernel as ConsoleKernel; | ||
|
||
class Kernel extends ConsoleKernel | ||
{ | ||
/** | ||
* Define the application's command schedule. | ||
* | ||
* @param \Illuminate\Console\Scheduling\Schedule $schedule | ||
* @return void | ||
*/ | ||
protected function schedule(Schedule $schedule) | ||
{ | ||
// $schedule->command('inspire')->hourly(); | ||
} | ||
|
||
/** | ||
* Register the commands for the application. | ||
* | ||
* @return void | ||
*/ | ||
protected function commands() | ||
{ | ||
$this->load(__DIR__.'/Commands'); | ||
|
||
require base_path('routes/console.php'); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
<?php | ||
|
||
namespace App\Infrastructure; | ||
|
||
use Illuminate\Foundation\Auth\Access\AuthorizesRequests; | ||
use Illuminate\Foundation\Bus\DispatchesJobs; | ||
use Illuminate\Foundation\Validation\ValidatesRequests; | ||
use Illuminate\Routing\Controller as BaseController; | ||
|
||
class Controller extends BaseController | ||
{ | ||
use AuthorizesRequests, DispatchesJobs, ValidatesRequests; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
<?php | ||
|
||
namespace App\Infrastructure\Exceptions; | ||
|
||
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; | ||
use Throwable; | ||
|
||
class Handler extends ExceptionHandler | ||
{ | ||
/** | ||
* A list of exception types with their corresponding custom log levels. | ||
* | ||
* @var array<class-string<\Throwable>, \Psr\Log\LogLevel::*> | ||
*/ | ||
protected $levels = [ | ||
// | ||
]; | ||
|
||
/** | ||
* A list of the exception types that are not reported. | ||
* | ||
* @var array<int, class-string<\Throwable>> | ||
*/ | ||
protected $dontReport = [ | ||
// | ||
]; | ||
|
||
/** | ||
* A list of the inputs that are never flashed to the session on validation exceptions. | ||
* | ||
* @var array<int, string> | ||
*/ | ||
protected $dontFlash = [ | ||
'current_password', | ||
'password', | ||
'password_confirmation', | ||
]; | ||
|
||
/** | ||
* Register the exception handling callbacks for the application. | ||
* | ||
* @return void | ||
*/ | ||
public function register() | ||
{ | ||
$this->reportable(function (Throwable $e) { | ||
// | ||
}); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
<?php | ||
|
||
namespace App\Infrastructure\Http; | ||
|
||
use Illuminate\Foundation\Http\Kernel as HttpKernel; | ||
|
||
class Kernel extends HttpKernel | ||
{ | ||
/** | ||
* The application's global HTTP middleware stack. | ||
* | ||
* These middleware are run during every request to your application. | ||
* | ||
* @var array<int, class-string|string> | ||
*/ | ||
protected $middleware = [ | ||
// \App\Infrastructure\Middleware\TrustHosts::class, | ||
\App\Infrastructure\Middleware\TrustProxies::class, | ||
\Illuminate\Http\Middleware\HandleCors::class, | ||
\App\Infrastructure\Middleware\PreventRequestsDuringMaintenance::class, | ||
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, | ||
\App\Infrastructure\Middleware\TrimStrings::class, | ||
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, | ||
]; | ||
|
||
/** | ||
* The application's route middleware groups. | ||
* | ||
* @var array<string, array<int, class-string|string>> | ||
*/ | ||
protected $middlewareGroups = [ | ||
'web' => [ | ||
\App\Infrastructure\Middleware\EncryptCookies::class, | ||
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, | ||
\Illuminate\Session\Middleware\StartSession::class, | ||
\Illuminate\View\Middleware\ShareErrorsFromSession::class, | ||
\App\Infrastructure\Middleware\VerifyCsrfToken::class, | ||
\Illuminate\Routing\Middleware\SubstituteBindings::class, | ||
], | ||
|
||
'api' => [ | ||
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, | ||
'throttle:api', | ||
\Illuminate\Routing\Middleware\SubstituteBindings::class, | ||
], | ||
]; | ||
|
||
/** | ||
* The application's route middleware. | ||
* | ||
* These middleware may be assigned to groups or used individually. | ||
* | ||
* @var array<string, class-string|string> | ||
*/ | ||
protected $routeMiddleware = [ | ||
'auth' => \App\Infrastructure\Middleware\Authenticate::class, | ||
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, | ||
'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class, | ||
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, | ||
'can' => \Illuminate\Auth\Middleware\Authorize::class, | ||
'guest' => \App\Infrastructure\Middleware\RedirectIfAuthenticated::class, | ||
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, | ||
'signed' => \App\Infrastructure\Middleware\ValidateSignature::class, | ||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, | ||
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, | ||
]; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
<?php | ||
|
||
namespace App\Infrastructure\Middleware; | ||
|
||
use Illuminate\Auth\Middleware\Authenticate as Middleware; | ||
|
||
class Authenticate extends Middleware | ||
{ | ||
/** | ||
* Get the path the user should be redirected to when they are not authenticated. | ||
* | ||
* @param \Illuminate\Http\Request $request | ||
* @return string|null | ||
*/ | ||
protected function redirectTo($request) | ||
{ | ||
if (!$request->expectsJson()) { | ||
return route('login'); | ||
} | ||
} | ||
} |
Oops, something went wrong.