Root Zanli
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
o5t6x7pgljbm
/
public_html
/
admin
/
app
/
Http
/
Controllers
/
Api
/
V2
/
Filename :
V2ChildManagementController.php
back
Copy
<?php namespace App\Http\Controllers\Api\V2; use App\Libraries\Helpers; use App\Models\CoinsForCollegeRole; use App\Models\DynamicContent; use App\Models\Group; use App\Models\Product; use App\Models\Role; use App\Models\Task; use App\Models\User; use App\V2\Dtos\FilterClaimDTO; use App\V2\Dtos\FilterRewardDTO; use App\V2\Dtos\FilterTaskDTO; use App\V2\Dtos\GetTaskDTO; use App\V2\Resources\AttendanceResource; use App\V2\Resources\ClaimResource; use App\V2\Resources\GroupResource; use App\V2\Resources\RewardResource; use App\V2\Resources\TaskResource; use App\V2\Resources\TUITTransactionResource; use App\V2\Resources\UserActivityHistoryResource; use App\V2\Services\AmazonProductService; use App\V2\Services\AttendanceService; use App\V2\Services\CalendarService; use App\V2\Services\ClaimService; use App\V2\Services\GoalService; use App\V2\Services\GroupService; use App\V2\Services\RewardService; use App\V2\Services\TaskService; use App\V2\Services\TUITService; use App\V2\Services\UserActivityService; use App\V2\Services\UserService; use Carbon\Carbon; use Exception; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; use Illuminate\Http\UploadedFile; use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; use Storage; class V2ChildManagementController extends V2BaseController { private $taskService; private $taskResource; private $goalService; private $rewardService; private $rewardResource; private $claimService; private $claimResource; private $groupService; private $tuitService; private $userActivityService; private $groupResource; private $tuitTransactionResource; private $userService; function __construct(){ parent::__construct(); $this->taskService = new TaskService(); $this->taskResource = new TaskResource(); $this->goalService = new GoalService(); $this->rewardService = new RewardService(); $this->rewardResource = new RewardResource(); $this->claimService = new ClaimService(); $this->claimResource = new ClaimResource(); $this->groupService = new GroupService(); $this->tuitService = new TUITService(); $this->groupResource = new GroupResource(); $this->tuitTransactionResource = new TUITTransactionResource(); $this->userActivityService = new UserActivityService(); $this->userService = new UserService(); } public function get_parent_management_dashboard(Request $request){ //retrive contextual details: [$currentUser, $currentStore, $currentGroup] = $this->getContextualDetails($request); $users = User::where('created_by_type', 'PARENT') ->where('created_by_id', $currentUser->user_id) ->latest() ->get(); $response_data = array(); $response_data['users'] = $users; return Helpers::successResponse(['data' => $response_data], 200, 'Data fetched successfully.'); } public function create_child_user(Request $request){ $path_params = []; //Input Validations - start $error_if_any = Helpers::validatorErrorResponse( $request, $path_params, [ 'full_name' => 'required', 'username' => 'required', 'password' => 'required', ]); if($error_if_any['flag'] != 0){ return $error_if_any['response']; } $user = null; if($request->has('email') && !empty($request->email)){ $user = User::where('email', $request->email)->first(); if($user) return Helpers::responseMessage(422, 'Email already exists.'); } if($request->has('username') && !empty($request->username)){ $user = User::where('username', $request->username)->first(); if($user) return Helpers::responseMessage(422, 'Username already exists.'); } $child_cfc_role = CoinsForCollegeRole::where('role_name', 'Child - <18 years old')->first(); $request['coins_for_college_role_id'] = $child_cfc_role->coins_for_college_role_id; $request['otp'] = sprintf("%05d", mt_rand(1, 99999)); //retrive contextual details: [$currentUser, $currentStore, $currentGroup] = $this->getContextualDetails($request); try{ $response = DB::transaction(function() use($request, $currentUser){ $user = $this->userService->create_account($request); $user->active_group_id = $this->userService->joinOrCreateGroup($request, $user); $user->created_by_type = 'PARENT'; $user->created_by_id = $currentUser->user_id; $user->save(); if($request->has('group_id')){ $group = Group::find($request->group_id); $child_role = Role::where('name', 'CHILD')->first(); if($group != null && $child_role != null){ $groupService = new GroupService(); $groupService->inviteUser($group, $user, $child_role); } else { throw new Exception('provided group or child role not found', 500); } } return Helpers::successResponse(['data' => $user], 200, 'User created successfully.'); }); return $response; }catch (Exception $e){ Log::error("exception occured while creating user: ". $e->getMessage()); Log::error($e->getTraceAsString()); return Helpers::responseMessage( $e->getCode(), $e->getMessage() ); } } public function update_child_user(Request $request, $child_user_id){ $path_params = ['child_user_id'=>$child_user_id]; //Input Validations - start $error_if_any = Helpers::validatorErrorResponse( $request, $path_params, [ 'child_user_id' => 'required' ]); if($error_if_any['flag'] != 0){ return $error_if_any['response']; } //retrive contextual details: [$currentUser, $currentStore, $currentGroup] = $this->getContextualDetails($request); $user = User::where('user_id', $child_user_id) ->where('created_by_type', 'PARENT') ->where('created_by_id', $currentUser->user_id) ->first(); if($user){ if( $request->has('email')){ $existing_user = User::where('email', $request->email)->first(); if($existing_user && $existing_user->user_id != $user->user_id){ return Helpers::responseMessage(422, 'Email already used by different user.'); } } $user->full_name = $request->has('full_name') ? $request->full_name : $user->full_name; $user->email = $request->has('email') && empty($user->email) ? $request->email : $user->email; $user->password = $request->has('password') ? Hash::make($request->password) : $user->password; $user->save(); $user = User::where('user_id', $child_user_id)->first(); $response_data = $user; return Helpers::successResponse(['data' => $response_data], 200, 'Data updated successfully.'); } else { return Helpers::responseMessage(404, 'Child user not found'); } } public function get_child_user(Request $request, $child_user_id){ $path_params = ['child_user_id' => $child_user_id]; //Input Validations - start $error_if_any = Helpers::validatorErrorResponse( $request, $path_params, [ 'child_user_id' => 'required' ]); if($error_if_any['flag'] != 0){ return $error_if_any['response']; } //retrive contextual details: [$currentUser, $currentStore, $currentGroup] = $this->getContextualDetails($request); $user = User::where('user_id', $child_user_id) ->where('created_by_type', 'PARENT') ->where('created_by_id', $currentUser->user_id) ->first(); if($user){ $response_data = $user; return Helpers::successResponse(['data' => $response_data], 200, 'Data fetched successfully.'); } else { return Helpers::responseMessage(404, 'Child user not found'); } } public function get_details_to_add_child(Request $request){ [$currentUser, $currentStore, $currentGroup] = $this->getContextualDetails($request); $owning_groups = $currentUser->owningGroups; $response_data = []; $response_data['groups'] = $this->groupResource->fromGroupsToArray($owning_groups, false, false); return Helpers::successResponse(['data' => $response_data], 200, 'Data fetched successfully.'); } } ?>