Skip to content

Commit dd17733

Browse files
authored
Feature company api (#75)
* 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
1 parent 594733f commit dd17733

File tree

83 files changed

+5775
-354
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+5775
-354
lines changed

app/Enums/EnterpriseSize.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Enums;
6+
7+
use BenSampo\Enum\Enum;
8+
9+
final class EnterpriseSize extends Enum
10+
{
11+
const SEED = '1-10';
12+
13+
const SMALL = '11-50';
14+
15+
const MEDIUM = '51-200';
16+
17+
const LARGE = '201-500';
18+
19+
const VERY_LARGE = '501-1000';
20+
21+
const ENTERPRISE = '1001-5000';
22+
23+
const LARGE_ENTERPRISE = '5000+';
24+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
namespace App\Filters\Enterprise;
4+
5+
use App\Filters\AbstractFilters;
6+
7+
class EnterpriseFilters extends AbstractFilters
8+
{
9+
/**
10+
* Registered filters to operate upon.
11+
*
12+
* @var array
13+
*/
14+
protected array $filters = [
15+
16+
];
17+
}

app/Http/Controllers/Api/Auth/LoginController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public function login(LoginRequest $request): JsonResponse
2727
'password' => $request->input('password'),
2828
];
2929

30-
if (empty($user) || !Auth::attempt($sanitized)) {
30+
if (empty($user) || ! Auth::attempt($sanitized)) {
3131
throw ValidationException::withMessages([
3232
'email' => 'Les informations d\'identification fournies sont incorrectes.',
3333
]);

app/Http/Controllers/Api/Auth/RegisterController.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ public function register(RegisterRequest $request): JsonResponse
3030
//TODO: Send new company registration notification on Slack
3131
event(new ApiRegistered($user));
3232

33-
return response()->json(array_merge(
33+
return response()->json(
34+
array_merge(
3435
['message' => 'Votre compte a été créé avec succès. Un e-mail de vérification vous a été envoyé.'],
3536
$this->userMetaData($user)
3637
)

app/Http/Controllers/Api/Auth/VerifyEmailController.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
namespace App\Http\Controllers\Api\Auth;
44

55
use App\Http\Controllers\Controller;
6-
use Illuminate\Http\JsonResponse;
7-
use Illuminate\Http\Request;
6+
use App\Models\User;
87
use Illuminate\Auth\Events\Verified;
8+
use Illuminate\Http\JsonResponse;
99
use Illuminate\Http\RedirectResponse;
10-
use App\Models\User;
10+
use Illuminate\Http\Request;
1111

1212
class VerifyEmailController extends Controller
1313
{
@@ -17,14 +17,14 @@ public function verify(Request $request): RedirectResponse
1717
$user = User::find($request->route('id'));
1818

1919
if ($user->hasVerifiedEmail()) {
20-
return redirect(config('lcm.spa_url') . '/email/verify/already');
20+
return redirect(config('lcm.spa_url').'/email/verify/already');
2121
}
2222

2323
if ($user->markEmailAsVerified()) {
2424
event(new Verified($user));
2525
}
2626

27-
return redirect(config('lcm.spa_url') . '/email/verify/success');
27+
return redirect(config('lcm.spa_url').'/email/verify/success');
2828
}
2929

3030
public function resend(Request $request): JsonResponse
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Api\Enterprise;
4+
5+
use App\Http\Controllers\Controller;
6+
use App\Http\Resources\EnterpriseResource;
7+
use App\Http\Resources\EnterpriseResourceCollection;
8+
use App\Models\Enterprise;
9+
use Illuminate\Http\Request;
10+
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
11+
12+
class PublicController extends Controller
13+
{
14+
public function featured(): AnonymousResourceCollection
15+
{
16+
$enterprises = Enterprise::query()
17+
->scopes('featured')
18+
->limit(6)
19+
->get();
20+
21+
return EnterpriseResource::collection($enterprises);
22+
}
23+
24+
public function paginate(Request $request): EnterpriseResourceCollection
25+
{
26+
$filters = $request->query();
27+
28+
$enterprises = Enterprise::query()
29+
->filters($request)
30+
->latest()
31+
->paginate($request->query('per_page', 12));
32+
33+
return new EnterpriseResourceCollection($enterprises, $filters);
34+
}
35+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Api\Enterprise;
4+
5+
use App\Http\Controllers\Controller;
6+
use App\Http\Requests\Api\Enterprise\RegisterRequest;
7+
use App\Http\Resources\AuthenticateUserResource;
8+
use App\Http\Resources\EnterpriseResource;
9+
use App\Models\Enterprise;
10+
use App\Models\User;
11+
use Illuminate\Http\JsonResponse;
12+
13+
class RegisterController extends Controller
14+
{
15+
public function __invoke(RegisterRequest $request): JsonResponse
16+
{
17+
/** @var User $owner */
18+
$owner = $request->user();
19+
20+
if ($owner->hasEnterprise()) {
21+
return response()->json([
22+
'error' => 'Ce compte possède déjà une entreprise associée.',
23+
]);
24+
}
25+
26+
$enterprise = Enterprise::query()->create([
27+
'name' => $request->input('name'),
28+
'slug' => $request->input('name'),
29+
'website' => $request->input('website'),
30+
'user_id' => $request->input('user_id'),
31+
'is_public' => false,
32+
]);
33+
34+
return response()->json([
35+
'user' => new AuthenticateUserResource($owner),
36+
'enterprise' => new EnterpriseResource($enterprise),
37+
]);
38+
}
39+
}

app/Http/Controllers/Api/User/ProfileController.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
use App\Http\Resources\AuthenticateUserResource;
77
use App\Models\User;
88
use Illuminate\Http\JsonResponse;
9-
use Illuminate\Http\Request;
109

1110
class ProfileController extends Controller
1211
{

app/Http/Controllers/HomeController.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
use App\Models\Thread;
99
use GuzzleHttp\Client;
1010
use GuzzleHttp\Exception\GuzzleException;
11-
use Illuminate\Database\Eloquent\Builder;
1211
use Illuminate\Http\Request;
1312
use Illuminate\Support\Facades\Cache;
1413

@@ -57,8 +56,8 @@ public function index()
5756
->withUrl();
5857

5958
return view('home', compact(
60-
'latestArticles',
61-
'latestThreads',
59+
'latestArticles',
60+
'latestThreads',
6261
'latestDiscussions',
6362
'plans'
6463
));

app/Http/Livewire/Discussions/Create.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@ public function store()
4848

4949
givePoint(new DiscussionCreated($discussion));
5050

51-
Auth::user()->notify(new PostDiscussionToTelegram($discussion));
51+
if (app()->environment('production')) {
52+
Auth::user()->notify(new PostDiscussionToTelegram($discussion));
53+
}
5254

5355
$this->redirectRoute('discussions.show', $discussion);
5456
}

0 commit comments

Comments
 (0)