Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 39 |
|
0.00% |
0 / 6 |
CRAP | |
0.00% |
0 / 1 |
InstancyController | |
0.00% |
0 / 39 |
|
0.00% |
0 / 6 |
210 | |
0.00% |
0 / 1 |
__construct | |
0.00% |
0 / 4 |
|
0.00% |
0 / 1 |
12 | |||
createUser | |
0.00% |
0 / 10 |
|
0.00% |
0 / 1 |
12 | |||
updateUser | |
0.00% |
0 / 2 |
|
0.00% |
0 / 1 |
2 | |||
updateMembership | |
0.00% |
0 / 2 |
|
0.00% |
0 / 1 |
2 | |||
getUserMembershipDetails | |
0.00% |
0 / 2 |
|
0.00% |
0 / 1 |
2 | |||
authenticateUser | |
0.00% |
0 / 19 |
|
0.00% |
0 / 1 |
30 |
1 | <?php |
2 | |
3 | namespace App\Http\Controllers\v1; |
4 | |
5 | use Illuminate\Support\Str; |
6 | use Illuminate\Http\Request; |
7 | use Illuminate\Http\JsonResponse; |
8 | use App\Http\Controllers\Controller; |
9 | use App\Http\Models\Admin\Company; |
10 | use App\Http\Models\Admin\CompanyGroup; |
11 | use App\Http\Models\Auth\User; |
12 | use App\Http\Models\UserInfo; |
13 | use App\Http\Services\InstancyServiceV2; |
14 | use App\Services\FlyMsgAI\SecretsAWS; |
15 | use App\Traits\SubscriptionTrait; |
16 | use MongoDB\BSON\UTCDateTime; |
17 | |
18 | class InstancyController extends Controller |
19 | { |
20 | use SubscriptionTrait; |
21 | /** |
22 | * The instancy service implementation. |
23 | * |
24 | * @var InstancyServiceV2 |
25 | */ |
26 | protected $instancyService; |
27 | protected $instancyDomainUrl; |
28 | |
29 | /** |
30 | * Create a new controller instance. |
31 | * |
32 | * @return void |
33 | */ |
34 | public function __construct(InstancyServiceV2 $instancyService) |
35 | { |
36 | $this->instancyDomainUrl = "https://ondemand.vengreso.com"; |
37 | |
38 | if (!isProduction() && !isLocalProduction()) { |
39 | $this->instancyDomainUrl = "https://ondemand.instancy.net"; |
40 | } |
41 | $this->instancyService = $instancyService; |
42 | } |
43 | |
44 | /** |
45 | * Function to create a instancy user |
46 | */ |
47 | public function createUser(Request $request): JsonResponse |
48 | { |
49 | $user = User::firstWhere('email', $request->email); |
50 | $group = CompanyGroup::find($user->company_group_id); |
51 | $company = Company::find($user->company_id); |
52 | |
53 | $groupId = false; |
54 | if ($company) { |
55 | $groupId = $company->instancy_id; |
56 | } elseif ($group) { |
57 | $groupId = $group->instancy_id; |
58 | } |
59 | |
60 | $response = (new InstancyServiceV2())->createInstancyUser($request->email, $groupId); |
61 | return response()->json($response); |
62 | } |
63 | |
64 | /** |
65 | * Function to update a instancy user |
66 | */ |
67 | public function updateUser(Request $request): JsonResponse |
68 | { |
69 | $response = (new InstancyServiceV2())->updateMembership($request->email); |
70 | return response()->json($response); |
71 | } |
72 | |
73 | /** |
74 | * Function to update the membership details |
75 | */ |
76 | public function updateMembership(Request $request): JsonResponse |
77 | { |
78 | $response = (new InstancyServiceV2())->updateMembership($request->email, $request->end_date); |
79 | return response()->json($response); |
80 | } |
81 | |
82 | /** |
83 | * Function to get the user membership details |
84 | */ |
85 | public function getUserMembershipDetails(Request $request): JsonResponse |
86 | { |
87 | $response = (new InstancyServiceV2())->userMembershipDetails($request); |
88 | return response()->json($response); |
89 | } |
90 | |
91 | /** |
92 | * Function to autheniticate the user |
93 | */ |
94 | public function authenticateUser(Request $request): JsonResponse |
95 | { |
96 | $user = User::firstWhere('email', $request->Email); |
97 | $plan = $this->getCurrentPlan($user); |
98 | |
99 | if (!$plan->has_fly_learning) { |
100 | return response()->json([ |
101 | "message" => "User does not have access to fly learning" |
102 | ], 400); |
103 | } |
104 | |
105 | $instancyService = new InstancyServiceV2(); |
106 | $response = $instancyService->authenticateUser($request->Email); |
107 | if ($instancyService->hasError($response)) { |
108 | return response()->json($response, 400); |
109 | } |
110 | |
111 | $userInfo = UserInfo::firstWhere('email', $request->Email); |
112 | if ($userInfo) { |
113 | $userInfo->last_login_fly_learning = new UTCDateTime(now()->getTimestamp() * 1000); |
114 | } |
115 | |
116 | try { |
117 | $redirect_url = $response["UserDetails"][0]["LearnerSSOURL"][0]["value"]; |
118 | } catch (\Exception $e) { |
119 | $redirect_url = $this->instancyDomainUrl . '/SSO/SecureAuthKey/' . $response["UserDetails"][0]["UserSessionID"][0]['value']; |
120 | } |
121 | |
122 | return response()->json([ |
123 | "redirect_url" => $redirect_url |
124 | ]); |
125 | } |
126 | } |