-
-
Notifications
You must be signed in to change notification settings - Fork 14
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Ajout de la base de donnees pour le monde * 🗃️ creation des tables pour les entreprises * 🚧 wip * Mis a jour de la table entreprise et ajout de l'api de listing des entreprises * 👽 Ajout du filtre sur l'API des entreprises * ♻️ Refcatoring code * ✅ wip units tests * 🚧 wip * ✅ Update failed tests to warn status * ♻️ refactoring migration * 👽 Ajout de l'api de creation d'entreprise
- Loading branch information
1 parent
594733f
commit dd17733
Showing
83 changed files
with
5,775 additions
and
354 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,24 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace App\Enums; | ||
|
||
use BenSampo\Enum\Enum; | ||
|
||
final class EnterpriseSize extends Enum | ||
{ | ||
const SEED = '1-10'; | ||
|
||
const SMALL = '11-50'; | ||
|
||
const MEDIUM = '51-200'; | ||
|
||
const LARGE = '201-500'; | ||
|
||
const VERY_LARGE = '501-1000'; | ||
|
||
const ENTERPRISE = '1001-5000'; | ||
|
||
const LARGE_ENTERPRISE = '5000+'; | ||
} |
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,17 @@ | ||
<?php | ||
|
||
namespace App\Filters\Enterprise; | ||
|
||
use App\Filters\AbstractFilters; | ||
|
||
class EnterpriseFilters extends AbstractFilters | ||
{ | ||
/** | ||
* Registered filters to operate upon. | ||
* | ||
* @var array | ||
*/ | ||
protected array $filters = [ | ||
|
||
]; | ||
} |
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
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
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
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,35 @@ | ||
<?php | ||
|
||
namespace App\Http\Controllers\Api\Enterprise; | ||
|
||
use App\Http\Controllers\Controller; | ||
use App\Http\Resources\EnterpriseResource; | ||
use App\Http\Resources\EnterpriseResourceCollection; | ||
use App\Models\Enterprise; | ||
use Illuminate\Http\Request; | ||
use Illuminate\Http\Resources\Json\AnonymousResourceCollection; | ||
|
||
class PublicController extends Controller | ||
{ | ||
public function featured(): AnonymousResourceCollection | ||
{ | ||
$enterprises = Enterprise::query() | ||
->scopes('featured') | ||
->limit(6) | ||
->get(); | ||
|
||
return EnterpriseResource::collection($enterprises); | ||
} | ||
|
||
public function paginate(Request $request): EnterpriseResourceCollection | ||
{ | ||
$filters = $request->query(); | ||
|
||
$enterprises = Enterprise::query() | ||
->filters($request) | ||
->latest() | ||
->paginate($request->query('per_page', 12)); | ||
|
||
return new EnterpriseResourceCollection($enterprises, $filters); | ||
} | ||
} |
39 changes: 39 additions & 0 deletions
39
app/Http/Controllers/Api/Enterprise/RegisterController.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,39 @@ | ||
<?php | ||
|
||
namespace App\Http\Controllers\Api\Enterprise; | ||
|
||
use App\Http\Controllers\Controller; | ||
use App\Http\Requests\Api\Enterprise\RegisterRequest; | ||
use App\Http\Resources\AuthenticateUserResource; | ||
use App\Http\Resources\EnterpriseResource; | ||
use App\Models\Enterprise; | ||
use App\Models\User; | ||
use Illuminate\Http\JsonResponse; | ||
|
||
class RegisterController extends Controller | ||
{ | ||
public function __invoke(RegisterRequest $request): JsonResponse | ||
{ | ||
/** @var User $owner */ | ||
$owner = $request->user(); | ||
|
||
if ($owner->hasEnterprise()) { | ||
return response()->json([ | ||
'error' => 'Ce compte possède déjà une entreprise associée.', | ||
]); | ||
} | ||
|
||
$enterprise = Enterprise::query()->create([ | ||
'name' => $request->input('name'), | ||
'slug' => $request->input('name'), | ||
'website' => $request->input('website'), | ||
'user_id' => $request->input('user_id'), | ||
'is_public' => false, | ||
]); | ||
|
||
return response()->json([ | ||
'user' => new AuthenticateUserResource($owner), | ||
'enterprise' => new EnterpriseResource($enterprise), | ||
]); | ||
} | ||
} |
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
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
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
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,34 @@ | ||
<?php | ||
|
||
namespace App\Http\Requests\Api\Enterprise; | ||
|
||
use Illuminate\Foundation\Http\FormRequest; | ||
|
||
class RegisterRequest extends FormRequest | ||
{ | ||
/** | ||
* Determine if the user is authorized to make this request. | ||
* | ||
* @return bool | ||
*/ | ||
public function authorize(): bool | ||
{ | ||
return auth()->user()->isEnterprise(); | ||
} | ||
|
||
/** | ||
* Get the validation rules that apply to the request. | ||
* | ||
* @return array<string, mixed> | ||
*/ | ||
public function rules(): array | ||
{ | ||
$regex = '/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/'; | ||
|
||
return [ | ||
'name' => 'required', | ||
'website' => 'required|unique:enterprises,website|regex:'.$regex, | ||
'user_id' => 'required', | ||
]; | ||
} | ||
} |
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\Http\Resources; | ||
|
||
use Illuminate\Http\Resources\Json\JsonResource; | ||
|
||
class DateTimeResource extends JsonResource | ||
{ | ||
/** | ||
* Transform the resource into an array. | ||
* | ||
* @param \Illuminate\Http\Request $request | ||
*/ | ||
public function toArray($request): array | ||
{ | ||
return [ | ||
'human' => $this->diffForHumans(), | ||
'dateTime' => $this->toDateTimeString(), | ||
]; | ||
} | ||
} |
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,38 @@ | ||
<?php | ||
|
||
namespace App\Http\Resources; | ||
|
||
use App\Models\IdeHelperEnterprise; | ||
use Illuminate\Http\Resources\Json\JsonResource; | ||
|
||
/** | ||
* @mixin IdeHelperEnterprise | ||
*/ | ||
class EnterpriseResource extends JsonResource | ||
{ | ||
public function toArray($request): array | ||
{ | ||
return [ | ||
'id' => $this->id, | ||
'name' => $this->name, | ||
'slug' => $this->slug, | ||
'website' => $this->website, | ||
'description' => $this->description, | ||
'about' => $this->about, | ||
'foundedIn' => $this->founded_in, | ||
'ceo' => $this->ceo, | ||
'isCertified' => $this->is_certified, | ||
'isFeatured' => $this->is_featured, | ||
'isPublic' => $this->is_public, | ||
'size' => $this->size, | ||
'settings' => $this->settings, | ||
'images' => [ | ||
'logo' => $this->getFirstMediaUrl('logo'), | ||
'cover' => $this->getFirstMediaUrl('avatar'), | ||
], | ||
'owner' => UserResource::make($this->owner), | ||
'createdAt' => DateTimeResource::make($this->created_at), | ||
'updatedAt' => DateTimeResource::make($this->updated_at), | ||
]; | ||
} | ||
} |
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,15 @@ | ||
<?php | ||
|
||
namespace App\Http\Resources; | ||
|
||
class EnterpriseResourceCollection extends PaginationResourceCollection | ||
{ | ||
public function toArray($request): array | ||
{ | ||
return [ | ||
'data' => $this->collection->transform(fn ($enterprise) => new EnterpriseResource($enterprise)), | ||
'pagination' => $this->pagination, | ||
'filters' => $this->filters, | ||
]; | ||
} | ||
} |
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,28 @@ | ||
<?php | ||
|
||
namespace App\Http\Resources; | ||
|
||
use Illuminate\Http\Resources\Json\ResourceCollection; | ||
|
||
class PaginationResourceCollection extends ResourceCollection | ||
{ | ||
public function __construct($resource, public $filters = []) | ||
{ | ||
$this->pagination = [ | ||
'total' => $resource->total(), | ||
'perPage' => $resource->perPage(), | ||
'currentPage' => $resource->currentPage(), | ||
'nextPage' => $resource->nextPageUrl(), | ||
'prevPage' => $resource->previousPageUrl(), | ||
'firstPage' => $resource->url(1), | ||
'lastPage' => $resource->url($resource->lastPage()), | ||
'from' => $resource->firstItem(), | ||
'to' => $resource->lastItem(), | ||
'totalPages' => $resource->lastPage(), | ||
]; | ||
|
||
$resource = $resource->getCollection(); | ||
|
||
parent::__construct($resource); | ||
} | ||
} |
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
Oops, something went wrong.