user = $user; $this->userSocialLogin = $userSocialLogin; $this->userDetail = $userDetail; $this->userWorkDetail = $userWorkDetail; $this->userQualification = $userQualification; $this->request = $request; $this->relationshipRepository = $relationshipRepository; $this->userRelation = $userRelation; } /** * @param array $data * @return array */ public function loginVerification(array $data) { $response = []; try { $emailHash = md5(strtolower($data['email'])); //converted to hash $verified = $data['verified'] ?? Constant::NULL; $via = $data['via']; $user = $this->user->query() ->where([ 'mobile' => $data['email'], 'country_code' => $data['country_code'], ])->first(); if ($verified == Constant::STATUS_ONE && !empty($user)) { $user->verification_confirmed = Constant::STATUS_TWO; $user->app_version = $data['app_version'] ?? Constant::STATUS_ZERO; $user->save(); } if (!empty($user)) { if ($via == Constant::OTP) { if ($user->verification_confirmed == Constant::STATUS_TWO && $verified != Constant::NULL) { //Creating token for authentication $token = $user->createToken('app-token'); //return logged user details $userData = loggedUserDetail($user); $response['token'] = $token->plainTextToken; $response['user'] = $userData; $response['status'] = Constant::CODE_200; $response['message'] = trans('auth.otp.verification_success'); $response['success'] = Constant::STATUS_TRUE; } else { //Delete existing records of this user removeUserMetaValue($user->id,'confirmation_code'); //Helper function to generate OTP $otp = generateOtp(); $dataConfirmationCode['user_id'] = $user->id; $dataConfirmationCode['meta_key'] = 'confirmation_code'; $dataConfirmationCode['meta_value'] = bcrypt($otp); $dataRegister['user_id'] = $user->id; $dataRegister['meta_key'] = 'registered_from'; $dataRegister['meta_value'] = 'Mobile'; $dataRegisterOs['user_id'] = $user->id; $dataRegisterOs['meta_key'] = 'registered_os'; $dataRegisterOs['meta_value'] = 'Android'; $dataRegisterWith['user_id'] = $user->id; $dataRegisterWith['meta_key'] = 'registered_with'; $dataRegisterWith['meta_value'] = 'Normal'; //Adding details to user meta addUserMultipleMetaValue([$dataConfirmationCode, $dataRegister, $dataRegisterOs, $dataRegisterWith]); //For email/mobile type $email = $data['email']; if (filter_var($email, FILTER_VALIDATE_EMAIL)) { $type = Constant::STATUS_ONE; event(new \App\Events\UserConfirmation($user, $otp)); //event for sending mail of email verification } else { $type = Constant::STATUS_TWO; } $response['user'] = [ 'type' => $type, 'email' => $user->email ?? '-', 'country_code' => $user->country_code ?? '-', 'mobile' => $user->mobile ?? '-', 'email_preview' => hideEmailAddress($user->email) ]; $response['message'] = trans('auth.check_otp'); $response['status'] = Constant::CODE_200; } } else { if (Hash::check($data['password'], $user->password)) { $token = $user->createToken('app-token'); //return logged user details $userData = loggedUserDetail($user); $response['token'] = $token->plainTextToken; $response['user'] = $userData; $response['status'] = Constant::CODE_200; $response['message'] = trans('auth.social_media.login_success'); $response['success'] = Constant::STATUS_TRUE; } else { $response['message'] = trans('auth.failed'); $response['status'] = Constant::CODE_422; } } } else { $response['message'] = trans('auth.provide_valid_contact'); $response['status'] = Constant::CODE_401; } return $response; } catch (\Exception $ex) { Log::error($ex); $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_401; } } /** * @param array $data * @param $emailHash * @return array */ public function createUser(array $data, $emailHash) { try { $userData['name'] = $data['name'] ?? Constant::NULL; $userData['username'] = generateUsername($data['name']); $userData['dharma_id'] = $data['dharma'] ?? Constant::NULL; $userData['birth_date'] = $data['birth_date'] ?? Constant::NULL; $userData['birth_date_privacy'] = Constant::STATUS_THREE; $userData['password'] = Hash::make(Str::random(10)); $userData['verification_confirmed'] = Constant::STATUS_TWO; $email = $data['email']; if (filter_var($email, FILTER_VALIDATE_EMAIL)) { $userData['email'] = $data['email'] ?? Constant::NULL; $userData['email_hash'] = $data['email'] ?? Constant::NULL; } else { $userData['country_code'] = $data['country_code'] ?? Constant::NULL; $userData['mobile'] = $data['email'] ?? Constant::NULL; } $userProfileCompletion = calculateActivity($data); $userData['profile_statistics'] = $userProfileCompletion; if ($user = $this->user->create($userData)) { // $user->assignRole('user'); $otp = generateOtp(); $dataConfirmationCode['user_id'] = $user->id; $dataConfirmationCode['meta_key'] = 'confirmation_code'; $dataConfirmationCode['meta_value'] = bcrypt($otp); $dataRegister['user_id'] = $user->id; $dataRegister['meta_key'] = 'registered_from'; $dataRegister['meta_value'] = 'Mobile'; $dataRegisterOs['user_id'] = $user->id; $dataRegisterOs['meta_key'] = 'registered_os'; $dataRegisterOs['meta_value'] = 'Android'; $dataRegisterWith['user_id'] = $user->id; $dataRegisterWith['meta_key'] = 'registered_with'; $dataRegisterWith['meta_value'] = 'Normal'; //Adding details to user meta addUserMultipleMetaValue([$dataConfirmationCode, $dataRegister, $dataRegisterOs, $dataRegisterWith]); if (filter_var($email, FILTER_VALIDATE_EMAIL)) { $response['type'] = Constant::STATUS_ONE; event(new \App\Events\UserConfirmation($user, $otp)); //event for sending mail of email verification } else { $response['type'] = Constant::STATUS_TWO; } $token = $user->createToken('app-token'); // Add karma points on success full register $user->addKarmaPoints($user, $user->id, config('config-variables.karma_points_message.platform_registration'), config('config-variables.karma_points.platform_registration'), config('config-variables.karma_points_key.platform_registration'), []); //Push notification to all users // $allUsers = User::where('id', '!=', Constant::STATUS_ONE) // ->where('verification_confirmed', Constant::STATUS_TWO) // ->pluck('id'); // dispatch(new SendNewSignUp($user, $allUsers)); //return logged user details $userData = loggedUserDetail($user); $responseData['token'] = $token->plainTextToken; $responseData['user'] = $userData; $responseData['message'] = trans('auth.otp.verification_success'); $responseData['status'] = Constant::CODE_200; } else { $responseData['message'] = trans('auth.something_went_wrong'); $responseData['status'] = Constant::CODE_403; } } catch (\Exception $ex) { Log::error($ex); $responseData['message'] = trans('auth.something_went_wrong'); $responseData['status'] = Constant::CODE_403; } return $responseData; } /** * @param array $data * @return array */ public function confirmOtp(array $data) { $response = []; try { $user = $this->findByEmail($data['email']); $originalOtp = getUserMetaValue($user->id, 'confirmation_code'); if ($user && !empty($originalOtp) && Hash::check($data['otp'], $originalOtp)) { $user->verification_confirmed = Constant::STATUS_TWO; $user->status = Constant::STATUS_TWO; $user->save(); removeUserMetaValue($user->id, 'confirmation_code'); //Remove confirmation code addUserSingleMetaValue($user->id,'confirmed_at',Carbon::now()->format(Constant::DATE_TIME_FORMAT)); //Adding confirmation time&date //Creating token for authentication $token = $user->createToken('app-token'); //return logged user details $userData = loggedUserDetail($user); $response['token'] = $token->plainTextToken; $response['user'] = $userData; $response['status'] = Constant::CODE_200; $response['message'] = trans('auth.otp.verification_success'); $response['success'] = Constant::STATUS_TRUE; } else { $response['status'] = Constant::CODE_403; $response['message'] = trans('auth.otp.invalid'); $response['success'] = Constant::STATUS_FALSE; } } catch (\Exception $ex) { Log::error($ex); $response['status'] = Constant::CODE_403; $response['message'] = trans('auth.something_went_wrong'); $response['success'] = Constant::STATUS_FALSE; } return $response; } /** * @param string $email * @return object */ public function findByEmail($email) { $emailHash = md5(strtolower($email)); //converted to hash return $this->user->query()->where('email_hash', $emailHash)->first(); } /** * * @param array $data * @return bool * * Social media login and adding user. */ public function findOrCreateSocial(array $data) { $responseData = []; try { if (env('SOCIAL_MEDIA_AUTH')) { //if social media login allows $provider = $data['provider']; // User email may not provided. $user_email = $data['email'] ?? "{$data['id']}@{$provider}.com"; // Check to see if there is a user with this email first. $account = $this->userSocialLogin->where('provider', $provider) ->where('provider_id', $data['id']) ->first(); //If already added in our system it will return values if ($account) { $user = $account->user; $token = $user->createToken('app-token'); //return logged user details $userData = loggedUserDetail($user); } else { // Insert as new user $user = $this->findByEmail($data['email']); //Checking email is registered or not if not then save it if (!$user) { $user = $this->user->create([ 'email' => $user_email, 'email_hash' => $data['email'], 'name' => $data['name'], 'username' => generateUsername($data['name']), 'email_verified_at' => date('Y-m-d H:i:s'), 'verification_confirmed' => Constant::STATUS_TWO, 'status' => Constant::STATUS_TWO, ]); $dataRegister['user_id'] = $user->id; $dataRegister['meta_key'] = 'registered_from'; $dataRegister['meta_value'] = 'Social media'; $dataRegisterOs['user_id'] = $user->id; $dataRegisterOs['meta_key'] = 'registered_os'; $dataRegisterOs['meta_value'] = 'Android'; $dataRegisterWith['user_id'] = $user->id; $dataRegisterWith['meta_key'] = 'registered_with'; $dataRegisterWith['meta_value'] = $provider; //Adding details to user meta addUserMultipleMetaValue([$dataRegister, $dataRegisterOs, $dataRegisterWith]); } //Store social media account id and provider $user->userSocialLogins()->create([ 'provider_id' => $data['id'], 'provider' => $provider, ]); //deleting previous generated tokens if (!empty($user)) { $user->tokens()->delete(); } //Generating new token $token = $user->createToken('app-token'); //return logged user details $userData = loggedUserDetail($user); } $responseData['token'] = $token->plainTextToken; $responseData['user'] = $userData; $responseData['message'] = trans('auth.social_media.login_success', ['provider' => $provider]); $responseData['status'] = Constant::CODE_200; } else { $responseData['message'] = trans('auth.social_media.not_allowed'); $responseData['status'] = Constant::CODE_403; } } catch (\Exception $ex) { Log::error($ex); $responseData['message'] = trans('auth.something_went_wrong'); $responseData['status'] = Constant::CODE_403; } return $responseData; } /** * @return array */ public function getUserList(array $data) { $response = []; try { $user = loggedInUser(); if (!empty($user)) { $alreadyTaggedId = []; if (isset($data['already_tagged']) && !empty($data['already_tagged'])) { $alreadyTaggedId = $data['already_tagged']; } if (!empty($data['name'])) { $users = $this->user->where('name','like','%'.$data['name'].'%') ->where('id','<>',$user->id) ->whereNotIn('id', $alreadyTaggedId) ->where('id','!=',Constant::STATUS_ONE) ->where('is_passive','!=',Constant::STATUS_ONE) ->get()->toArray(); } else { $users = $this->user->where('id','<>',$user->id) ->where('id','!=',Constant::STATUS_ONE) ->whereNotIn('id', $alreadyTaggedId) ->where('is_passive','!=',Constant::STATUS_ONE) ->get()->toArray(); } $response['data'] = $users; $response['status'] = Constant::CODE_200; } else { $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_401; } } catch (\Exception $ex) { Log::error($ex); $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_403; } return $response; } /** * @return array */ public function getUserDetail() { $response = []; $responseData = []; try { $user = loggedInUser(); $userData = $this->user->with(['userDetail', 'userWorkDetail', 'userRelationshipRequests.relationships', 'userRelationshipRequests.sentUsers', 'colleges', 'schools', 'passiveUser' => function ($q) { $q->select('id', 'name', 'parent_id', 'is_passive', 'relationship', 'about', 'school_name', 'avatar', 'birth_date'); }])->where('id', $user->id)->first()->toArray(); $sentRequests = $user->friendRequests()->with('userDetail')->select('users.id', 'users.name', 'users.avatar')->where('requests.status', Constant::STATUS_ONE)->count(); $receivedRequests = $user->myFriendRequests()->with('userDetail')->select('users.id', 'users.name', 'users.avatar')->where('requests.status', Constant::STATUS_ONE)->count(); $karmaPoints = KarmaPointsTransaction::whereNotIn('key', ['sangh_add_post_dharmik', 'add_new_sangh', 'new_sangh_member'])->where(function ($subQuery) use ($user) { $subQuery->where('user_id', $user->id); // ->orWhere('pointable_id', $user->id); })->sum('points'); $sanghMembersCount = $user->sanghMembers()->where('status', Constant::STATUS_ONE)->count(); if ($user && !empty($userData)) { $userData['user_qualification']['schools'] = $userData['schools'] ?? []; $userData['user_qualification']['colleges'] = $userData['colleges'] ?? []; $responseData['data'] = [ 'id' => $userData['id'] ?? "", 'uuid' => $userData['uuid'] ?? "", 'name' => $userData['name'] ?? "", 'email' => $userData['email'] ?? "", 'email_privacy' => $userData['email_privacy'] ?? Constant::STATUS_ONE, 'username' => $userData['username'] ?? "", 'country_code' => $userData['country_code'] ?? "", 'mobile' => $userData['mobile'] ?? "", 'mobile_privacy' => $userData['mobile_privacy'] ?? Constant::STATUS_THREE, 'dharma_id' => $userData['dharma_id'] ?? "", 'dharma_name' => $userData['dharma_id'] ? getDharmaName($userData['dharma_id']) : "", 'dharma_privacy' => $userData['dharma_privacy'] ?? Constant::STATUS_ONE, 'birth_date' => $userData['birth_date'] ?? "", 'birth_date_privacy' => $userData['birth_date_privacy'] ?? Constant::STATUS_THREE, 'gender_id' => $userData['gender'] ? $userData['gender'] : "", 'gender' => $userData['gender'] ? getGenderTypeName($userData['gender']) : "", 'gender_privacy' => $userData['gender_privacy'] ?? Constant::STATUS_ONE, 'email_verified_at' => $userData['email_verified_at'] ?? "", 'mobile_verified_at' => $userData['mobile_verified_at'] ?? "", 'avatar' => $userData['avatar'] ?? "", 'avatar_privacy' => $userData['avatar_privacy'] ?? Constant::STATUS_ONE, 'verification_confirmed' => $userData['verification_confirmed'] ?? "", 'is_profile_completed' => $userData['is_profile_completed'], 'status' => $userData['status'] ?? "", 'timezone' => $userData['timezone'] ?? "", 'last_login_at' => $userData['last_login_at'] ?? "", 'last_login_ip' => $userData['last_login_ip'] ?? "", 'created_at' => $userData['created_at'] ?? "", 'updated_at' => $userData['updated_at'] ?? "", 'deleted_at' => $userData['deleted_at'] ?? "", 'jati_id' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['jati_id'] : "", 'jati_name' => isset($userData['user_detail'][Constant::STATUS_ZERO]) ? getJatiName($userData['user_detail'][Constant::STATUS_ZERO]['jati_id']) : "", 'jati_privacy' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['jati_privacy'] : Constant::STATUS_ONE, 'location' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['location'] : "", 'location_privacy' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['location_privacy'] : Constant::STATUS_THREE, 'longitude' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['longitude'] : "", 'longitude' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['longitude'] : "", 'latitude' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['latitude'] : "", 'native_place' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['native_place'] : "", 'native_place_privacy' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['native_place_privacy'] : Constant::STATUS_ONE, 'native_longitude' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['native_longitude'] : "", 'native_latitude' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['native_latitude'] : "", 'mother_tongue_id' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['mother_tongue_id'] : "", 'mother_tongue' => isset($userData['user_detail'][Constant::STATUS_ZERO]) ? getMotherTongue($userData['user_detail'][Constant::STATUS_ZERO]['mother_tongue_id']) : "", 'mother_tongue_privacy' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['mother_tongue_privacy'] : Constant::STATUS_ONE, 'blood_group_id' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['blood_group_id'] : "", 'blood_group' => isset($userData['user_detail'][Constant::STATUS_ZERO]) ? getBloodGroup($userData['user_detail'][Constant::STATUS_ZERO]['blood_group_id']) : "", 'blood_group_privacy' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['blood_group_privacy'] : Constant::STATUS_ONE, 'marital_status' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['marital_status'] : "", 'marital_status_privacy' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['marital_status_privacy'] : Constant::STATUS_ONE, 'marriage_anniversary' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['marriage_anniversary'] : "", 'marriage_anniversary_privacy' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['marriage_anniversary_privacy'] : Constant::STATUS_THREE, 'family_members' => $userData['user_relationship_requests'] ?? [], 'passive_users' => $userData['passive_user'] ?? [], 'company_details' => $userData['user_work_detail'] ?? [], 'profession' => !empty($userData['user_work_detail']) ? $userData['user_work_detail'][Constant::STATUS_ZERO]['profession'] : "", 'profession_privacy' => !empty($userData['user_work_detail']) ? $userData['user_work_detail'][Constant::STATUS_ZERO]['profession_privacy'] : Constant::STATUS_ONE, 'qualificaion_details' => $userData['user_qualification'] ?? [], 'karma_dhan' => $karmaPoints ?? 0, 'friend_count' => ($sentRequests + $receivedRequests), 'sangh_member_count' => $sanghMembersCount, 'profile_statistics' => $userData['profile_statistics'] ?? [], 'is_working' => $userData['is_working'], 'share_content' => 'https://globaljain.focalat.com/' ]; $response = $responseData; $response['status'] = Constant::CODE_200; } else { $response['data'] = []; $response['status'] = Constant::CODE_200; } } catch (\Exception $ex) { Log::error($ex); $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_403; } return $response; } /** * @return array */ public function getUserDetailById($id) { $response = []; $responseData = []; try { $user = loggedInUser(); $userData = $this->user->withCount(['sanghMembers' => function ($query) { $query->where('sangh_members.status', Constant::STATUS_ONE); }])->with(['userDetail', 'userWorkDetail', 'userQualification', 'userRelationshipRequests' => function ($query) { $query->where('status', Constant::STATUS_ONE); }, 'userRelationshipRequests.sentUsers', 'colleges', 'schools', 'passiveUser' => function ($q) { $q->select('id', 'name', 'parent_id', 'is_passive', 'relationship', 'about', 'school_name', 'avatar', 'birth_date'); }])->where('id', $id)->first()->toArray(); //For friend requests $sentRequest = $this->request->where(['sender_id' => $user->id, 'receiver_id' => $id])->value('status'); $receivedRequest = $this->request->where(['sender_id' => $id, 'receiver_id' => $user->id])->value('status'); //For relationship requests $sentRelationRequest = $this->userRelation->where(['from_id' => $user->id, 'to_id' => $id])->value('status'); $receivedRelationRequest = $this->userRelation->where(['from_id' => $id, 'to_id' => $user->id])->value('status'); // Count of friend $currentUser = User::find($id); $sentRequests = $currentUser->friendRequests()->with('userDetail')->select('users.id', 'users.name', 'users.avatar')->where('requests.status', Constant::STATUS_ONE)->count(); $receivedRequests = $currentUser->myFriendRequests()->with('userDetail')->select('users.id', 'users.name', 'users.avatar')->where('requests.status', Constant::STATUS_ONE)->count(); $karmaPoints = KarmaPointsTransaction::whereNotIn('key', ['sangh_add_post_dharmik', 'add_new_sangh', 'new_sangh_member'])->where(function ($subQuery) use ($id) { $subQuery->where('user_id', $id); // ->orWhere('pointable_id', $id); })->sum('points'); if ($user && !empty($userData)) { $userData['user_qualification']['schools'] = $userData['schools'] ?? []; $userData['user_qualification']['colleges'] = $userData['colleges'] ?? []; // dd($userData['user_relationship_requests']); $responseData['data'] = [ 'id' => $userData['id'] ?? "", 'uuid' => $userData['uuid'] ?? "", 'name' => $userData['name'] ?? "", 'email' => $userData['email'] ? checkUserPrivacy($userData['email_privacy'],$userData['email'], $userData['is_friends']) : "", 'email_privacy' => $userData['email_privacy'] ?? "", 'username' => $userData['username'] ?? "", 'country_code' => $userData['country_code'] ?? "", 'mobile' => $userData['mobile'] ? checkUserPrivacy($userData['mobile_privacy'],$userData['mobile'], $userData['is_friends']) : "", 'mobile_privacy' => $userData['mobile_privacy'] ?? "", 'dharma_id' => $userData['dharma_id'] ?? "", 'dharma_name' => $userData['dharma_id'] ? checkUserPrivacy($userData['dharma_privacy'], getDharmaName($userData['dharma_id']), $userData['is_friends']) : "", 'dharma_privacy' => $userData['dharma_privacy'] ?? "", 'birth_date' => $userData['birth_date'] ? checkUserPrivacy($userData['birth_date_privacy'],$userData['birth_date'], $userData['is_friends']) : "", 'birth_date_privacy' => $userData['birth_date_privacy'] ?? "", 'gender_id' => $userData['gender'] ? $userData['gender'] : "", 'gender' => $userData['gender'] ? checkUserPrivacy($userData['gender_privacy'], getGenderTypeName($userData['gender']), $userData['is_friends']) : "", 'gender_privacy' => $userData['gender_privacy'] ?? "", 'email_verified_at' => $userData['email_verified_at'] ?? "", 'mobile_verified_at' => $userData['mobile_verified_at'] ?? "", 'avatar' => $userData['avatar'] ? checkUserPrivacy($userData['avatar_privacy'],$userData['avatar'], $userData['is_friends']) : "", 'avatar_privacy' => $userData['avatar_privacy'] ?? "", 'verification_confirmed' => $userData['verification_confirmed'] ?? "", 'status' => $userData['status'] ?? "", 'is_profile_completed' => $userData['is_profile_completed'], 'timezone' => $userData['timezone'] ?? "", 'last_login_at' => $userData['last_login_at'] ?? "", 'last_login_ip' => $userData['last_login_ip'] ?? "", 'created_at' => $userData['created_at'] ?? "", 'updated_at' => $userData['updated_at'] ?? "", 'deleted_at' => $userData['deleted_at'] ?? "", 'jati_id' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['jati_id'] : "", 'jati_name' => isset($userData['user_detail'][Constant::STATUS_ZERO]) ? checkUserPrivacy($userData['user_detail'][Constant::STATUS_ZERO]['jati_privacy'], getJatiName($userData['user_detail'][Constant::STATUS_ZERO]['jati_id']), $userData['is_friends']) : "", 'jati_privacy' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['jati_privacy'] : "", 'location' => !empty($userData['user_detail']) ? checkUserPrivacy($userData['user_detail'][Constant::STATUS_ZERO]['location_privacy'], $userData['user_detail'][Constant::STATUS_ZERO]['location'], $userData['is_friends']) : "", 'location_privacy' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['location_privacy'] : "", 'longitude' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['longitude'] : "", 'longitude' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['longitude'] : "", 'latitude' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['latitude'] : "", 'native_place' => !empty($userData['user_detail']) ? checkUserPrivacy($userData['user_detail'][Constant::STATUS_ZERO]['native_place_privacy'], $userData['user_detail'][Constant::STATUS_ZERO]['native_place'], $userData['is_friends']) : "", 'native_place_privacy' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['native_place_privacy'] : "", 'native_longitude' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['native_longitude'] : "", 'native_latitude' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['native_latitude'] : "", 'mother_tongue_id' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['mother_tongue_id'] : "", 'mother_tongue' => isset($userData['user_detail'][Constant::STATUS_ZERO]) ? checkUserPrivacy($userData['user_detail'][Constant::STATUS_ZERO]['mother_tongue_privacy'], getMotherTongue($userData['user_detail'][Constant::STATUS_ZERO]['mother_tongue_id']), $userData['is_friends']) : "", 'mother_tongue_privacy' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['mother_tongue_privacy'] : "", 'blood_group_id' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['blood_group_id'] : "", 'blood_group' => isset($userData['user_detail'][Constant::STATUS_ZERO]) ? checkUserPrivacy($userData['user_detail'][Constant::STATUS_ZERO]['blood_group_privacy'], getBloodGroup($userData['user_detail'][Constant::STATUS_ZERO]['blood_group_id']), $userData['is_friends']) : "", 'blood_group_privacy' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['blood_group_privacy'] : "", 'marital_status' => !empty($userData['user_detail']) ? checkUserPrivacy($userData['user_detail'][Constant::STATUS_ZERO]['marital_status_privacy'], $userData['user_detail'][Constant::STATUS_ZERO]['marital_status'], $userData['is_friends']) : "", 'marital_status_privacy' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['marital_status_privacy'] : "", 'marriage_anniversary' => !empty($userData['user_detail']) ? checkUserPrivacy($userData['user_detail'][Constant::STATUS_ZERO]['marriage_anniversary_privacy'], $userData['user_detail'][Constant::STATUS_ZERO]['marriage_anniversary'], $userData['is_friends']) : "", 'marriage_anniversary_privacy' => !empty($userData['user_detail']) ? $userData['user_detail'][Constant::STATUS_ZERO]['marriage_anniversary_privacy'] : "", 'family_members' => checkRelationPrivacy($userData['user_relationship_requests'], $userData['is_friends']) ?? [], 'passive_users' => $userData['passive_user'] ?? [], 'company_details' => checkWorkPrivacy($userData['user_work_detail'], $userData['is_friends']) ?? [], 'profession' => !empty($userData['user_work_detail']) ? checkUserPrivacy($userData['user_work_detail'][Constant::STATUS_ZERO]['profession_privacy'], $userData['user_work_detail'][Constant::STATUS_ZERO]['profession'], $userData['is_friends']) : "", 'profession_privacy' => !empty($userData['user_work_detail']) ? $userData['user_work_detail'][Constant::STATUS_ZERO]['profession_privacy'] : "", 'qualificaion_details' => checkQualificationPrivacy($userData['user_qualification'], $userData['is_friends']) ?? [], 'karma_dhan' => $karmaPoints ?? 0, 'is_friends' => $userData['is_friends'] ?? "", 'is_blocked' => $userData['is_blocked'] ?? "", 'friend_count' => ($sentRequests + $receivedRequests), 'is_working' => $userData['is_working'], 'sangh_member_count' => isset($userData['sangh_members_count']) ? $userData['sangh_members_count'] : 0, 'share_content' => 'https://globaljain.focalat.com/' ]; //Friend request status if ($sentRequest === Constant::STATUS_ZERO && $receivedRequest === Constant::NULL) { $responseData['data']['request_status'] = Constant::STATUS_ZERO; } elseif ($id == loggedInUser()->id || $sentRequest === Constant::STATUS_ONE || $receivedRequest === Constant::STATUS_ONE) { $responseData['data']['request_status'] = Constant::STATUS_ONE; } elseif ($sentRequest === Constant::NULL && $receivedRequest === Constant::STATUS_ZERO) { $responseData['data']['request_status'] = Constant::STATUS_THREE; } else { $responseData['data']['request_status'] = Constant::STATUS_FOUR; } //Relationship request status if ($sentRelationRequest == Constant::STATUS_ZERO && $receivedRelationRequest != Constant::STATUS_ONE && $receivedRelationRequest != Constant::STATUS_ZERO && $receivedRelationRequest != Constant::NULL) { $responseData['data']['relation_request_status'] = Constant::STATUS_ZERO; } elseif ($sentRelationRequest == Constant::STATUS_ONE || $receivedRelationRequest == Constant::STATUS_ONE) { $responseData['data']['relation_request_status'] = Constant::STATUS_ONE; } elseif ($receivedRelationRequest == Constant::STATUS_ZERO || $receivedRelationRequest != Constant::NULL) { $responseData['data']['relation_request_status'] = Constant::STATUS_THREE; } else { $responseData['data']['relation_request_status'] = Constant::STATUS_FOUR; } $response = $responseData; $response['status'] = Constant::CODE_200; } else { $response['data'] = []; $response['status'] = Constant::CODE_200; } } catch (\Exception $ex) { Log::error($ex); $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_403; } return $response; } /** * @param object $data * @return array */ public function updateUser($data) { $response = []; try { $loggedInUser = loggedInUser(); if ($loggedInUser) { $userDeatilExists = $this->userDetail->query()->where([ 'user_id' => $loggedInUser->id ])->first(); if ($userDeatilExists) { $userDeatilExists->native_place = $data['native_place'] ?? $userDeatilExists->native_place; $userDeatilExists->native_longitude = $data['native_longitude'] ?? $userDeatilExists->native_longitude; $userDeatilExists->native_latitude = $data['native_latitude'] ?? $userDeatilExists->native_latitude; $userDeatilExists->location = $data['location'] ?? $userDeatilExists->location; $userDeatilExists->longitude = $data['longitude'] ?? $userDeatilExists->longitude; $userDeatilExists->latitude = $data['latitude'] ?? $userDeatilExists->latitude; $userDeatilExists->mother_tongue_id = $data['mother_tongue'] ?? $userDeatilExists->mother_tongue_id; $userDeatilExists->blood_group_id = $data['blood_group'] ?? $userDeatilExists->blood_group_id; $userDeatilExists->marital_status = $data['marital_status'] ?? $userDeatilExists->marital_status; $userDeatilExists->marriage_anniversary = $data['marriage_anniversary'] ?? $userDeatilExists->marriage_anniversary; $userDeatilExists->mother_tongue_privacy = $data['mother_tongue_privacy'] ?? $userDeatilExists->mother_tongue_privacy; $userDeatilExists->blood_group_privacy = $data['blood_group_privacy'] ?? $userDeatilExists->blood_group_privacy; $userDeatilExists->jati_privacy = $data['jati_privacy'] ?? $userDeatilExists->jati_privacy; $userDeatilExists->marital_status_privacy = $data['marital_status_privacy'] ?? $userDeatilExists->marital_status_privacy; $userDeatilExists->marriage_anniversary_privacy = $data['marriage_anniversary_privacy'] ?? $userDeatilExists->marriage_anniversary_privacy; $userDeatilExists->location_privacy = $data['location_privacy'] ?? $userDeatilExists->location_privacy; $userDeatilExists->native_place_privacy = $data['native_place_privacy'] ?? $userDeatilExists->native_place_privacy; if (!empty($data['jati'])) { $userDeatilExists->jati_id = $data['jati']; } else if (isset($data['jati']) === true) { $userDeatilExists->jati_id = Constant::NULL; } else { $userDeatilExists->jati_id = $userDeatilExists->jati_id; } $userDeatilExists->save(); } else { $this->userDetail->create([ 'user_id' => $loggedInUser->id, 'jati_id' => $data['jati'] ?? Constant::NULL, 'native_place' => $data['native_place'] ?? Constant::NULL, 'native_longitude' => $data['native_longitude'] ?? Constant::NULL, 'native_latitude' => $data['native_latitude'] ?? Constant::NULL, 'location' => $data['location'] ?? Constant::NULL, 'longitude' => $data['longitude'] ?? Constant::NULL, 'latitude' => $data['latitude'] ?? Constant::NULL, 'mother_tongue_id' => $data['mother_tongue'] ?? Constant::NULL, 'blood_group_id' => $data['blood_group'] ?? Constant::NULL, 'marital_status' => $data['marital_status'] ?? Constant::NULL, 'marriage_anniversary' => $data['marriage_anniversary'] ?? Constant::NULL, 'mother_tongue_privacy' => $data['mother_tongue_privacy'] ?? Constant::STATUS_ONE, 'blood_group_privacy' => $data['blood_group_privacy'] ?? Constant::STATUS_ONE, 'jati_privacy' => $data['jati_privacy'] ?? Constant::STATUS_ONE, 'marital_status_privacy' => $data['marital_status_privacy'] ?? Constant::STATUS_ONE, 'marriage_anniversary_privacy' => $data['marriage_anniversary_privacy'] ?? Constant::STATUS_ONE, 'location_privacy' => $data['location_privacy'] ?? Constant::STATUS_ONE, 'native_place_privacy' => $data['native_place_privacy'] ?? Constant::STATUS_ONE ]); } //Storing/Updating data to user work details table if (isset($data['company_details']) && !empty(array_values(($data['company_details'])))) { $this->updateWorkDetail($data->toArray()); } //Storing/Updating data to user qualifications table if (isset($data['qualification_details']) && !empty(array_values($data['qualification_details']))) { $this->updateQualificationDetail($data->toArray()); } //Updating relation privacy if (isset($data['family_members']) && !empty(array_values($data['family_members']))) { $this->relationshipRepository->updateRelationPrivacy($data->toArray()); } //Storing data to users table $user = $this->user->with('userDetail', 'userWorkDetail', 'userQualification')->where('id', $loggedInUser->id)->first(); $user->name = $data['name'] ?? $user->name; $user->birth_date = $data['birth_date'] ?? $user->birth_date; $user->dharma_id = $data['dharma'] ?? $user->dharma_id; $user->gender = $data['gender'] ?? $user->gender; $user->country_code = $data['country_code'] ?? $user->country_code; $user->mobile = $data['mobile'] ?? $user->mobile; $user->mobile_privacy = $data['mobile_privacy'] ?? $user->mobile_privacy; $user->email_privacy = $data['email_privacy'] ?? $user->email_privacy; $user->avatar_privacy = $data['avatar_privacy'] ?? $user->avatar_privacy; $user->birth_date_privacy = $data['birth_date_privacy'] ?? $user->birth_date_privacy; $user->dharma_privacy = $data['dharma_privacy'] ?? $user->dharma_privacy; $user->gender_privacy = $data['gender_privacy'] ?? $user->gender_privacy; if (!empty($data['avatar'])) { $imageName = uploadImage($data, 'avatar', Constant::USER_IMAGE_UPLOAD_PATH . Constant::SLASH, $user->getRawOriginal('avatar')); $user->avatar = $imageName['image_name'] ?? $user->avatar; } if (!empty($data['email'])) { $user->email = $data['email']; $user->email_hash = $data['email']; } else if (isset($data['email']) === false) { $user->email = $user->email; $user->email_hash = $user->email_hash; } else { $user->email = Constant::NULL; $user->email_hash = Constant::NULL; } $userProfileCompletion = calculateActivity($user->toArray()); $user->profile_statistics = $userProfileCompletion; $checkUser = User::where([ 'mobile' => $user->mobile, 'country_code' => $user->country_code, 'deleted_at' => Constant::NULL ])->where('id', '!=', $user->id)->first(); if (!empty($checkUser)) { $response['status'] = Constant::CODE_403; $response['message'] = trans('auth.contact_exists'); } else { $emailHash = md5(strtolower($data['email'])); $checkEmail = User::where('email_hash', $emailHash)->where('id', '!=', $loggedInUser->id)->first(); if (!empty($checkEmail)) { $response['message'] = trans('auth.email_exists'); $response['status'] = Constant::CODE_403; } else { $user->email = $data['email'] ?? $user->email; $user->email_hash = $data['email'] ?? $user->email_hash; if ($user->profile_statistics['profile_completion_percentage'] != 100 && $loggedInUser->is_profile_completed === 1) { $user->is_profile_completed = Constant::STATUS_TWO; //Remove karma points $karmaPoints = KarmaPointsTransaction::where('key', 'profile_complition')->where('user_id', $loggedInUser->id)->delete(); if ($karmaPoints) { //Adds 50 karma points $user->addKarmaPoints($user, $user->id, config('config-variables.karma_points_message.shravak_revert_half'), config('config-variables.karma_points.shravak_revert_half'), config('config-variables.karma_points_key.shravak_revert_half'), []); } } // Add karma points on profile complition if ($user->profile_statistics['profile_completion_percentage'] == 100 && $loggedInUser->is_profile_completed == 0) { $user->addKarmaPoints($user, $user->id, config('config-variables.karma_points_message.profile_complition'), config('config-variables.karma_points.profile_complition'), config('config-variables.karma_points_key.profile_complition'), []); } // Add karma points on profile complition if ($user->profile_statistics['profile_completion_percentage'] == 100 && $loggedInUser->is_profile_completed == 2) { //Remove karma points $karmaPoints = KarmaPointsTransaction::where('key', 'shravak_revert_half')->where('user_id', $loggedInUser->id)->delete(); if ($karmaPoints) { $user->addKarmaPoints($user, $user->id, config('config-variables.karma_points_message.profile_complition'), config('config-variables.karma_points.profile_complition'), config('config-variables.karma_points_key.profile_complition'), []); } } if ($user->profile_statistics['profile_completion_percentage'] === 100) { $user->is_profile_completed = Constant::STATUS_ONE; } $user->save(); $response['message'] = trans('auth.user.update_profile'); $response['status'] = Constant::CODE_200; } // $user->save(); // $response['message'] = trans('auth.user.update_profile'); // $response['status'] = Constant::CODE_200; } } else { $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_403; } } catch (\Exception $ex) { Log::error($ex); $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_403; } return $response; } /** * @param array $data * @return array */ public function updateWorkDetail(array $data) { $response = []; try { $loggedInUser = loggedInUser(); if ($loggedInUser) { foreach ($data['company_details'] as $workDetail) { $userWorkDetailExists = $this->userWorkDetail->where([ 'user_id' => $loggedInUser->id, 'id' => $workDetail['work_id'] ])->first(); //Updating data to user work details table if ($userWorkDetailExists) { $userWorkDetailExists->company_name = $workDetail['company_name'] ?? $userWorkDetailExists->company_name; $userWorkDetailExists->company_name_privacy = $workDetail['company_name_privacy'] ?? $userWorkDetailExists->company_name_privacy; $userWorkDetailExists->profession_id = $workDetail['profession_id'] ?? $userWorkDetailExists->profession_id; $userWorkDetailExists->profession = $workDetail['profession'] ?? $userWorkDetailExists->profession; $userWorkDetailExists->profession_privacy = $workDetail['profession_privacy'] ?? $userWorkDetailExists->profession_privacy; $userWorkDetailExists->profession_speciality = $workDetail['profession_speciality'] ?? $userWorkDetailExists->profession_speciality; $userWorkDetailExists->profession_speciality_privacy = $workDetail['profession_speciality_privacy'] ?? $userWorkDetailExists->profession_speciality_privacy; $userWorkDetailExists->position = $workDetail['position'] ?? Constant::NULL; $userWorkDetailExists->position_privacy = $workDetail['position_privacy'] ?? $userWorkDetailExists->position_privacy; $userWorkDetailExists->city = $workDetail['city'] ?? Constant::NULL; $userWorkDetailExists->city_privacy = $workDetail['city_privacy'] ?? $userWorkDetailExists->city_privacy; $userWorkDetailExists->about = $workDetail['about'] ?? Constant::NULL; $userWorkDetailExists->about_privacy = $workDetail['about_privacy'] ?? $userWorkDetailExists->about_privacy; $userWorkDetailExists->is_working = $workDetail['is_working'] ?? $userWorkDetailExists->is_working; $userWorkDetailExists->website = $workDetail['website'] ?? Constant::NULL; $userWorkDetailExists->website_privacy = $workDetail['website_privacy'] ?? $userWorkDetailExists->website_privacy; $userWorkDetailExists->start_year = $workDetail['start_year'] ?? $userWorkDetailExists->start_year; $userWorkDetailExists->end_year = $workDetail['end_year'] ?? $userWorkDetailExists->end_year; $userWorkDetailExists->work_duration_privacy = $workDetail['work_duration_privacy'] ?? $userWorkDetailExists->work_duration_privacy; $userWorkDetailExists->save(); } //Storing data to user work details table if (!$userWorkDetailExists && $workDetail['work_id'] == Constant::NULL) { $this->userWorkDetail->create([ 'user_id' => $loggedInUser->id, 'company_name' => $workDetail['company_name'] ?? Constant::NULL, 'company_name_privacy' => $workDetail['company_name_privacy'] ?? Constant::STATUS_ONE, 'profession_id' => $workDetail['profession_id'] ?? Constant::NULL, 'profession' => $workDetail['profession'] ?? Constant::NULL, 'profession_privacy' => $workDetail['profession_privacy'] ?? Constant::STATUS_ONE, 'profession_speciality' => $workDetail['profession_speciality'] ?? Constant::NULL, 'profession_speciality_privacy' => $workDetail['profession_speciality_privacy'] ?? Constant::STATUS_ONE, 'position' => $workDetail['position'] ?? Constant::STATUS_ONE, 'position_privacy' => $workDetail['position_privacy'] ?? Constant::STATUS_ONE, 'city' => $workDetail['city'] ?? Constant::NULL, 'city_privacy' => $workDetail['city_privacy'] ?? Constant::STATUS_ONE, 'about' => $workDetail['about'] ?? Constant::NULL, 'about_privacy' => $workDetail['about_privacy'] ?? Constant::STATUS_ONE, 'is_working' => $workDetail['is_working'] ?? Constant::NULL, 'website' => $workDetail['website'] ?? Constant::NULL, 'website_privacy' => $workDetail['website_privacy'] ?? Constant::STATUS_ONE, 'start_year' => $workDetail['start_year'] ?? Constant::NULL, 'end_year' => $workDetail['end_year'] ?? Constant::NULL, 'work_duration_privacy' => $workDetail['work_duration_privacy'] ?? Constant::STATUS_ONE, ]); } } } else { $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_403; } } catch (\Exception $ex) { Log::error($ex); $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_403; } return $response; } /** * @param array $data * @return array */ public function updateQualificationDetail(array $data) { $response = []; try { $loggedInUser = loggedInUser(); if ($loggedInUser) { foreach ($data['qualification_details'] as $qualificationDetail) { $userQualificationExists = $this->userQualification->where([ 'user_id' => $loggedInUser->id, 'id' => $qualificationDetail['qualification_id'] ])->first(); //Updating data to user qualifications table if ($userQualificationExists) { $userQualificationExists->qualification = $qualificationDetail['qualification'] ?? $userQualificationExists->qualification; // $userQualificationExists->qualification_privacy = $qualificationDetail['qualification_privacy'] ?? $userQualificationExists->qualification_privacy; $userQualificationExists->university = $qualificationDetail['university'] ?? $userQualificationExists->university; // $userQualificationExists->university_privacy = $qualificationDetail['university_privacy'] ?? $userQualificationExists->university_privacy; $userQualificationExists->highschool = $qualificationDetail['highschool'] ?? $userQualificationExists->highschool; // $userQualificationExists->highschool_privacy = $qualificationDetail['highschool_privacy'] ?? $userQualificationExists->highschool_privacy; $userQualificationExists->is_graduate = $qualificationDetail['is_graduate'] ?? $userQualificationExists->is_graduate; $userQualificationExists->is_pursuing = $qualificationDetail['is_pursuing'] ?? $userQualificationExists->is_pursuing; $userQualificationExists->passing_year = $qualificationDetail['passing_year'] ?? $userQualificationExists->passing_year; $userQualificationExists->starting_year = $qualificationDetail['starting_year'] ?? $userQualificationExists->starting_year; $userQualificationExists->start_date = $qualificationDetail['start_date'] ?? $userQualificationExists->start_date; $userQualificationExists->end_date = $qualificationDetail['end_date'] ?? $userQualificationExists->end_date; $userQualificationExists->privacy = $qualificationDetail['privacy'] ?? $userQualificationExists->end_date; $userQualificationExists->type = $qualificationDetail['type'] ?? $userQualificationExists->end_date; $userQualificationExists->save(); } //Storing data to user qualifications table if (!$userQualificationExists && $qualificationDetail['qualification_id'] == Constant::NULL) { $this->userQualification->create([ 'user_id' => $loggedInUser->id, 'qualification' => $qualificationDetail['qualification'] ?? Constant::NULL, // 'qualification_privacy' => $qualificationDetail['qualification_privacy'] ?? Constant::STATUS_ONE, 'university' => $qualificationDetail['university'] ?? Constant::NULL, // 'university_privacy' => $qualificationDetail['university_privacy'] ?? Constant::NULL, 'highschool' => $qualificationDetail['highschool'] ?? Constant::NULL, // 'highschool_privacy' => $qualificationDetail['highschool_privacy'] ?? Constant::NULL, 'is_graduate' => $qualificationDetail['is_graduate'] ?? Constant::STATUS_ZERO, 'is_pursuing' => $qualificationDetail['is_pursuing'] ?? Constant::STATUS_ZERO, 'passing_year' => $qualificationDetail['passing_year'] ?? Constant::NULL, 'starting_year' => $qualificationDetail['starting_year'] ?? Constant::NULL, 'start_date' => $qualificationDetail['start_date'] ?? Constant::NULL, 'end_date' => $qualificationDetail['end_date'] ?? Constant::NULL, 'privacy' => $qualificationDetail['privacy'] ?? Constant::NULL, 'type' => $qualificationDetail['type'] ?? Constant::NULL, ]); } } } else { $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_403; } } catch (\Exception $ex) { Log::error($ex); $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_403; } return $response; } /** * @param array $data * @return array */ public function deleteWorkDetail(array $data) { $response = []; try { $loggedInUser = loggedInUser()->load(['userDetail', 'userWorkDetail', 'userQualification']); if ($loggedInUser && $data['work_id']) { $workData = $this->userWorkDetail->where('id', $data['work_id'])->first(); if ($workData->delete()) { $loggedInUser->refresh(); $userProfileCompletion = calculateActivity($loggedInUser->toArray()); $loggedInUser->profile_statistics = $userProfileCompletion; if ($loggedInUser->profile_statistics['work'] === 0 && $loggedInUser->is_profile_completed === 1) { $loggedInUser->is_profile_completed = Constant::STATUS_TWO; //Remove karma points $karmaPoints = KarmaPointsTransaction::where('key', 'profile_complition')->where('user_id', $loggedInUser->id)->delete(); if ($karmaPoints) { //Adds 50 karma points $loggedInUser->addKarmaPoints($loggedInUser, $loggedInUser->id, config('config-variables.karma_points_message.shravak_revert_half'), config('config-variables.karma_points.shravak_revert_half'), config('config-variables.karma_points_key.shravak_revert_half'), []); } } $loggedInUser->save(); $response['message'] = trans('auth.delete_work'); $response['status'] = Constant::CODE_200; } } else { $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_403; } } catch (\Exception $ex) { Log::error($ex); $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_403; } return $response; } /** * @param array $data * @return array */ public function deleteQualificationDetail(array $data) { $response = []; try { $loggedInUser = loggedInUser()->load(['userDetail', 'userWorkDetail', 'userQualification']); if ($loggedInUser && $data['qualification_id']) { $qualificationData = $this->userQualification->where('id',$data['qualification_id'])->first(); if ($qualificationData->delete()) { $loggedInUser->refresh(); $userProfileCompletion = calculateActivity($loggedInUser->toArray()); $loggedInUser->profile_statistics = $userProfileCompletion; if ($loggedInUser->profile_statistics['qualification'] === 0 && $loggedInUser->is_profile_completed === 1) { $loggedInUser->is_profile_completed = Constant::STATUS_TWO; //Remove karma points $karmaPoints = KarmaPointsTransaction::where('key', 'profile_complition')->where('user_id', $loggedInUser->id)->delete(); if ($karmaPoints) { //Adds 50 karma points $loggedInUser->addKarmaPoints($loggedInUser, $loggedInUser->id, config('config-variables.karma_points_message.shravak_revert_half'), config('config-variables.karma_points.shravak_revert_half'), config('config-variables.karma_points_key.shravak_revert_half'), []); } } $loggedInUser->save(); $response['message'] = trans('auth.delete_qualification'); $response['status'] = Constant::CODE_200; } } else { $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_403; } } catch (\Exception $ex) { Log::error($ex); $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_403; } return $response; } /** * @return array */ public function logoutUser($data) { $response = []; try { $user = loggedInUser(); if (!empty($user)) { $deviceID = $data['device_id'] ?? ''; $deviceToken = UserDeviceToken::where('device_id', $deviceID)->first(); if (!empty($deviceToken)) { $deviceToken->delete(); } $user->currentAccessToken()->delete(); $response['message'] = trans('auth.logout_success'); $response['status'] = Constant::CODE_200; } else { $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_401; } } catch (\Exception $ex) { Log::error($ex); $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_403; } return $response; } /** * Get following of sant */ public function userFollowing(array $data) { $response = [ 'status' => Constant::CODE_403, 'error' => trans('api.something_went_wrong'), 'success' => Constant::STATUS_FALSE ]; try { $sant = loggedInUser()->followings()->paginate($data['limit'] ?? 10, ['*'], 'page', $data['page'] ?? 1); $response['data'] = $sant->toArray(); $response['status'] = Constant::CODE_200; $response['success'] = Constant::STATUS_TRUE; $response['message'] = trans('api.sant.followlist'); unset($response['error']); } catch (\Exception $ex) { Log::error($ex); } return $response; } /** * Get following of sangh */ public function sanghFollowing(array $data) { $response = [ 'status' => Constant::CODE_403, 'error' => trans('api.something_went_wrong'), 'success' => Constant::STATUS_FALSE ]; try { $sanghIds = loggedInUser()->sanghMembers() ->where('sangh_members.status', Constant::STATUS_ONE) ->where('sangh_members.user_id', loggedInUser()->id) ->pluck('sangh_members.sangh_id'); $sangh = loggedInUser()->sanghFollowings() ->whereNotIn('sanghs.id', $sanghIds) ->paginate($data['limit'] ?? 10, ['*'], 'page', $data['page'] ?? 1); $response['data'] = $sangh->toArray(); $response['status'] = Constant::CODE_200; $response['success'] = Constant::STATUS_TRUE; $response['message'] = trans('api.sant.followlist'); unset($response['error']); } catch (\Exception $ex) { Log::error($ex); } return $response; } /** * Get following of sant */ public function storeChildUser($data) { $response = [ 'status' => Constant::CODE_403, 'error' => trans('api.something_went_wrong'), 'success' => Constant::STATUS_FALSE ]; try { $user = User::where('id', loggedInUser()->id)->with('userDetail')->first(); $passiveUserData = [ 'user_id' => $user->id, 'mother_tongue_id' => $user->mother_tongue ?? Constant::NULL, 'dharma_id' => $user->dharma_id ?? Constant::NULL, 'name' => $data['name'] ?? Constant::NULL, 'relationship' => $data['relationship'] ?? Constant::NULL, 'birth_date' => $data['birth_date'] ?? Constant::NULL, 'gender' => $data['gender'] ?? Constant::NULL, 'school_name' => $data['school_name'] ?? Constant::NULL, 'about' => $data['about'] ?? Constant::NULL, 'is_passive' => Constant::STATUS_ONE, 'parent_id' => $user->id, 'username' => generateUsername($data['name']), ]; if (!empty($data['avatar'])) { $imageName = uploadImage($data, 'avatar', Constant::USER_IMAGE_UPLOAD_PATH . Constant::SLASH); $passiveUserData['avatar'] = $imageName['image_name'] ?? Constant::NULL; } $passiveUser = $user->passiveUser()->create($passiveUserData); $passiveUser->userDetail()->create([ 'user_id' => $passiveUser->id, 'jati_id' => $user->userDetail[Constant::STATUS_ZERO]->jati_id ?? Constant::NULL, 'native_place' => $user->userDetail[Constant::STATUS_ZERO]->native_place ?? Constant::NULL, 'mother_tongue_id' => $user->userDetail[Constant::STATUS_ZERO]->mother_tongue_id ?? Constant::NULL, ]); $response['data'] = $passiveUser->toArray(); $response['status'] = Constant::CODE_200; $response['success'] = Constant::STATUS_TRUE; $response['message'] = trans('api.passive.store'); unset($response['error']); } catch (\Exception $ex) { Log::error($ex); } return $response; } /** * Get following of sant */ public function updateChildUser(object $passiveUser, $data) { $response = [ 'status' => Constant::CODE_403, 'error' => trans('api.something_went_wrong'), 'success' => Constant::STATUS_FALSE ]; try { $user = User::where('id', loggedInUser()->id)->with('userDetail')->first(); $passiveUserData = [ 'dharma_id' => $user->dharma_id ?? $passiveUser->dharma_id, 'name' => $data['name'] ?? $passiveUser->name, 'relationship' => $data['relationship'] ?? $passiveUser->relationship, 'birth_date' => $data['birth_date'] ?? $passiveUser->birth_date, 'gender' => $data['gender'] ?? $passiveUser->gender, 'school_name' => $data['school_name'] ?? Constant::NULL, 'about' => $data['about'] ?? Constant::NULL, 'is_passive' => Constant::STATUS_ONE, 'parent_id' => $user->id, ]; if (!empty($data['avatar'])) { $imageName = uploadImage($data, 'avatar', Constant::USER_IMAGE_UPLOAD_PATH, $passiveUser->getRawOriginal('avatar')); $passiveUserData['avatar'] = $imageName['image_name'] ?? Constant::NULL; } $user->passiveUser()->where('id', $passiveUser['id'])->update($passiveUserData); $passiveUser->userDetail()->where('user_id', $passiveUser['id'])->update([ 'user_id' => $passiveUser->id, 'jati_id' => $user->userDetail[Constant::STATUS_ZERO]->jati_id ?? $passiveUser->jati_id, 'native_place' => $user->userDetail[Constant::STATUS_ZERO]->native_place ?? $passiveUser->native_place, 'mother_tongue_id' => $user->userDetail[Constant::STATUS_ZERO]->mother_tongue_id ?? $passiveUser->mother_tongue_id, ]); $response['data'] = $passiveUser->select('id', 'name', 'parent_id', 'is_passive', 'relationship', 'about', 'school_name', 'avatar', 'birth_date')->where('id', $passiveUser->id)->first()->toArray(); $response['status'] = Constant::CODE_200; $response['success'] = Constant::STATUS_TRUE; $response['message'] = trans('api.passive.update'); unset($response['error']); } catch (\Exception $ex) { Log::error($ex); } return $response; } /** * Get following of sant */ public function destroyChildUser($passiveUser) { $response = [ 'status' => Constant::CODE_403, 'error' => trans('api.something_went_wrong'), 'success' => Constant::STATUS_FALSE ]; try { deleteFile(Constant::USER_IMAGE_UPLOAD_PATH, $passiveUser->getRawOriginal('avatar')); $passiveUser->userDetail()->delete(); $passiveUser->delete(); $response['status'] = Constant::CODE_200; $response['success'] = Constant::STATUS_TRUE; $response['message'] = trans('api.passive.destroy'); unset($response['error']); } catch (\Exception $ex) { Log::error($ex); } return $response; } /** * Get following of sant */ public function showChildUser($passiveUser) { $response = [ 'status' => Constant::CODE_403, 'error' => trans('api.something_went_wrong'), 'success' => Constant::STATUS_FALSE ]; try { $response['data'] = $passiveUser->select( 'id', 'name', 'parent_id', 'is_passive', 'relationship', 'about', 'school_name', 'avatar', 'birth_date', )->where('id', $passiveUser->id)->first()->toArray(); $response['status'] = Constant::CODE_200; $response['success'] = Constant::STATUS_TRUE; $response['message'] = trans('api.passive.show'); unset($response['error']); } catch (\Exception $ex) { Log::error($ex); } return $response; } /** * Update password for user */ public function resetPassword(array $request): array { $response = [ 'status' => Constant::CODE_403, 'error' => trans('api.something_went_wrong'), 'success' => Constant::STATUS_FALSE ]; try { $user = loggedInUser(); if (Hash::check($request['current_password'], $user->password)) { $user->password = Hash::make($request['new_password']); if ($user->save()) { $response['status'] = Constant::CODE_200; $response['success'] = Constant::STATUS_TRUE; $response['message'] = trans('account_setting.validate.change_password.message_1'); unset($response['error']); } } else { $response['status'] = Constant::CODE_200; $response['success'] = Constant::STATUS_TRUE; $response['message'] = trans('account_setting.validate.change_password.message_2'); unset($response['error']); } } catch (\Exception $ex) { Log::error($ex); } return $response; } /** * Update password for user */ public function setPassword(array $data): array { $response = [ 'status' => Constant::CODE_403, 'error' => trans('api.something_went_wrong'), 'success' => Constant::STATUS_FALSE ]; try { $user = User::where([ 'mobile' => $data['mobile'], 'country_code' => $data['country_code'] ])->first(); if(isset($user) && !empty($user)) { $user->password = Hash::make($data['new_password']); if ($user->save()) { $response['status'] = Constant::CODE_200; $response['success'] = Constant::STATUS_TRUE; $response['message'] = trans('account_setting.validate.change_password.message_1'); unset($response['error']); } } else { unset($response['error']); $response['message'] = trans('auth.provide_valid_contact'); $response['status'] = Constant::CODE_401; } } catch (\Exception $ex) { Log::error($ex); } return $response; } /** * @return array */ public function globalSearch(array $data) { $response = []; try { $user = loggedInUser(); if (!empty($user)) { // $result = DB::select("SELECT * FROM ((SELECT id, name, avatar, 'user' as type FROM users WHERE name LIKE '%".$data['name']."%' LIMIT 5) // UNION // (SELECT id, name, avatar, 'sant' as type FROM sants WHERE name LIKE '%".$data['name']."%' LIMIT 5) // UNION // (SELECT id, name, avatar, 'sangh' as type FROM sanghs WHERE name LIKE '%".$data['name']."%' LIMIT 5) // ) // AS combined_tables order by name LIMIT 15"); // if (!empty($data['name'])) { $users = $this->user->select( 'users.id', 'users.name', 'users.avatar', ) ->where('id','<>',$user->id) ->where('id','!=',Constant::STATUS_ONE) ->where('is_passive','!=',Constant::STATUS_ONE) ->addSelect(DB::raw("'user' as type")); if (isset($data['name']) && !empty($data['name'])) { $users = $users->where('users.name', 'LIKE', "%{$data['name']}%"); } $users = $users->limit(5)->get(); $sants = Sant::select('id', 'name', 'avatar') ->where('status', Constant::STATUS_TWO) ->where('verification_status', Constant::STATUS_ONE) ->addSelect(DB::raw("'sant' as type")); if (isset($data['name']) && !empty($data['name'])) { $sants = $sants->where('name', 'LIKE', "%{$data['name']}%"); } $sants = $sants->limit(5)->get(); $sants = $users->concat($sants); $sanghs = Sangh::select('id', 'name', 'avatar') ->addSelect(DB::raw("'sangh' as type")); if (isset($data['name']) && !empty($data['name'])) { $sanghs = $sanghs->where('name', 'LIKE', "%{$data['name']}%"); } $sanghs = $sanghs->limit(5)->get(); $result = $sanghs->concat($sants)->shuffle(); // } else { // $result = $this->user->select('id', 'name', 'avatar') // ->where('id','<>',$user->id) // ->where('id','!=',Constant::STATUS_ONE) // ->where('is_passive','!=',Constant::STATUS_ONE) // ->get(); // } $response['data'] = $result->toArray(); $response['status'] = Constant::CODE_200; } else { $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_401; } } catch (\Exception $ex) { Log::error($ex); $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_403; } return $response; } /** * Update password for user */ public function userExist(array $data): array { $response = [ 'status' => Constant::CODE_403, 'error' => trans('api.something_went_wrong'), 'success' => Constant::STATUS_FALSE ]; try { $user = User::where([ 'mobile' => $data['mobile'], 'country_code' => $data['country_code'] ])->first(); if(isset($user) && !empty($user)) { $response['status'] = Constant::CODE_409; $response['success'] = Constant::STATUS_FALSE; $response['message'] = trans('auth.contact_exists'); unset($response['error']); } else { $response['status'] = Constant::CODE_200; $response['message'] = trans('auth.check_otp'); $response['success'] = Constant::STATUS_TRUE; unset($response['error']); } } catch (\Exception $ex) { Log::error($ex); } return $response; } /** * @return array */ public function getGLobalUserlist(array $data) { $response = []; try { $user = loggedInUser(); if (!empty($user)) { $users = $this->user->with('dharma', 'userDetail.jati', 'blockedUser') ->select('users.*') ->where('users.id','<>',$user->id) ->where('users.id', '!=', Constant::STATUS_ONE) ->where('users.is_passive', '!=', Constant::STATUS_ONE); if (isset($data['name']) && !empty($data['name'])) { $users = $users->where('name', 'LIKE', "%{$data['name']}%"); } if (isset($data['dharma_id']) && count($data['dharma_id']) > 0) { $users = $users->whereIn('dharma_id', $data['dharma_id']); } if (isset($data['gender_id']) && count($data['gender_id']) > 0) { $users = $users->whereIn('gender', $data['gender_id']); } if (isset($data['jati_id']) && count($data['jati_id']) > 0) { $users = $users->orWhereHas('userDetail', function($query) use ($data) { $query->whereIn('user_details.jati_id', $data['jati_id']); }); } $users = $users->whereDoesntHave('blockedUser', function($query) use ($user) { $query->where('user_blocked.blocked_by', '=', $user->id); }); if (isset($data['latitude']) && !empty($data['latitude']) && isset($data['longitude']) && !empty($data['longitude'])) { $latitude = (float) $data['latitude']; $longitude = (float) $data['longitude']; $users = $users->whereHas('userDetail', function($query) use ($latitude, $longitude){ $query->select()->selectRaw('3959 * ACOS ( COS(RADIANS(?)) * COS(RADIANS(user_details.latitude)) * COS( RADIANS(user_details.longitude) - RADIANS(?) ) + SIN(RADIANS(?)) * SIN(RADIANS(user_details.latitude)) ) as distance', [$latitude, $longitude, $latitude])->having("distance", "<=", $data['range'] ?? 10); }); } if (isset($data['native_latitude']) && !empty($data['native_latitude']) && isset($data['native_longitude']) && !empty($data['native_longitude'])) { $nativeLatitude = (float) $data['native_latitude']; $nativeLongitude = (float) $data['native_longitude']; $users = $users->whereHas('userDetail', function($query) use ($nativeLatitude, $nativeLongitude){ $query->select()->selectRaw('3959 * ACOS ( COS(RADIANS(?)) * COS(RADIANS(user_details.native_latitude)) * COS( RADIANS(user_details.native_longitude) - RADIANS(?) ) + SIN(RADIANS(?)) * SIN(RADIANS(user_details.native_latitude)) ) as native_distance', [$nativeLatitude, $nativeLongitude, $nativeLatitude])->having("native_distance", "<=", $data['range'] ?? 10); }); } // $users->dd(); $response['data'] = $users->paginate($data['limit'] ?? 10, ['*'], 'page', $data['page'] ?? 1);; $response['status'] = Constant::CODE_200; } else { $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_401; } } catch (\Exception $ex) { Log::error($ex); $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_403; } return $response; } /** * @return array */ public function getGLobalSanghlist(array $data) { $response = []; try { $user = loggedInUser(); if (!empty($user)) { $sanghs = Sangh::with(['dharma', 'sampraday.gachadhipati:id,name,avatar']); if (isset($data['name']) && !empty($data['name'])) { $sanghs = $sanghs->where('name', 'LIKE', "%{$data['name']}%"); } if (isset($data['dharma_id']) && count($data['dharma_id']) > 0) { $sanghs = $sanghs->whereIn('dharma_id', $data['dharma_id']); } if (isset($data['sampraday_id']) && count($data['sampraday_id']) > 0) { $sanghs = $sanghs->whereIn('sampraday_id', $data['sampraday_id']); } // To search by miles instead of kilometers, replace 6371 with 3959. if (isset($data['latitude']) && !empty($data['latitude']) && isset($data['longitude']) && !empty($data['longitude'])) { $latitude = (float) $data['latitude']; $longitude = (float) $data['longitude']; $sanghs = $sanghs->select()->selectRaw('3959 * ACOS ( COS(RADIANS(?)) * COS(RADIANS(latitude)) * COS( RADIANS(longitude) - RADIANS(?) ) + SIN(RADIANS(?)) * SIN(RADIANS(latitude)) ) as distance', [$latitude, $longitude, $latitude])->having("distance", "<=", $data['range'] ?? 10); } $response['data'] = $sanghs->where('sangh_status',1)->paginate($data['limit'] ?? 10, ['*'], 'page', $data['page'] ?? 1);; $response['status'] = Constant::CODE_200; } else { $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_401; } } catch (\Exception $ex) { Log::error($ex); $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_403; } return $response; } /** * @return array */ public function getGLobalSantlist(array $data) { $response = []; try { $user = loggedInUser(); if (!empty($user)) { $sants = Sant::with(['dharm', 'sampraday.gachadhipati:id,name,avatar', 'editedLocation']) ->where('status',2) ->whereIn('verification_status', [1,4,5]); if (isset($data['name']) && !empty($data['name'])) { $sants = $sants->where('name', 'LIKE', "%{$data['name']}%"); } if (isset($data['dharma_id']) && count($data['dharma_id']) > 0) { $sants = $sants->whereIn('dharma_id', $data['dharma_id']); } if (isset($data['gender_id']) && count($data['gender_id']) > 0) { $sants = $sants->whereIn('gender', $data['gender_id']); } if (isset($data['sampraday_id']) && count($data['sampraday_id']) > 0) { $sants = $sants->whereIn('sampraday_id', $data['sampraday_id']); } if (isset($data['latitude']) && !empty($data['latitude']) && isset($data['longitude']) && !empty($data['longitude'])) { $latitude = (float) $data['latitude']; $longitude = (float) $data['longitude']; $sants = $sants->whereHas('editedLocation', function ($sants) use ($data, $latitude, $longitude) { return $sants->selectRaw('3959 * ACOS ( COS(RADIANS(?)) * COS(RADIANS(sant_locations.latitude)) * COS( RADIANS(sant_locations.longitude) - RADIANS(?) ) + SIN(RADIANS(?)) * SIN(RADIANS(sant_locations.latitude)) ) as distance', [$latitude, $longitude, $latitude])->having("distance", "<=", $data['range'] ?? 10); }); // $sants = $sants->select()->selectRaw('3959 * ACOS // ( // COS(RADIANS(?)) * COS(RADIANS(latitude)) // * COS( // RADIANS(longitude) - RADIANS(?) // ) + SIN(RADIANS(?)) * SIN(RADIANS(latitude)) // ) as distance', [$latitude, $longitude, $latitude])->having("distance", "<=", $data['range'] ?? 10); } $response['data'] = $sants->paginate($data['limit'] ?? 10, ['*'], 'page', $data['page'] ?? 1); $response['status'] = Constant::CODE_200; } else { $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_401; } } catch (\Exception $ex) { Log::error($ex); $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_403; } return $response; } /** * @return array */ public function getUserSangh(array $data) { $response = []; try { $user = loggedInUser(); if (isset($data['user_id']) && !empty($data['user_id'])) { $user = User::find($data['user_id']); $sanghs = $user->sanghMembers()->where('status', Constant::STATUS_ONE); } else { $sanghs = $user->sanghMembers()->where('status', Constant::STATUS_ONE); } $response['data'] = $sanghs->paginate($data['limit'] ?? 10, ['*'], 'page', $data['page'] ?? 1); $response['status'] = Constant::CODE_200; } catch (\Exception $ex) { Log::error($ex); $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_403; } return $response; } /** * @return array */ public function deleteUserAccount(array $data) { $response = []; try { $user = loggedInUser(); if (!empty($user)) { //Check if user is associated with any sangh $sangh = SanghMember::where(['user_id' => $user->id, 'role' => Constant::ADMIN, 'status' => Constant::STATUS_ONE ])->get()->toArray(); if (!empty($sangh)) { $response['message'] = trans('auth.sangh_exist_error'); $response['status'] = Constant::CODE_403; } else { //Null on sants table $sants = Sant::with('viharsCreatedBy', 'santTemp', 'createdBy.sentMessageThread.sentMessages', 'createdBy.receivedMessageThread.receivedMessages') ->where('user_id', $user->id) ->get() ?? []; if (!empty($sants)) { foreach ($sants as $sant) { //Set NULL in sent message thread and messages if (!empty($sant->createdBy->sentMessageThread)) { foreach ($sant->createdBy->sentMessageThread as $sentMessageThread) { $sentMessageThread->sender_id = Constant::NULL; if (!empty($sentMessageThread->sentMessages)) { foreach ($sentMessageThread->sentMessages as $sentMessage) { $sentMessage->user_id = Constant::NULL; $sentMessage->save(); } } $sentMessageThread->save(); } } //Set NULL in received message thread and messages if (!empty($sant->createdBy->receivedMessageThread)) { foreach ($sant->createdBy->receivedMessageThread as $receivedMessageThread) { $receivedMessageThread->sender_id = Constant::NULL; if (!empty($receivedMessageThread->receivedMessages)) { foreach ($receivedMessageThread->receivedMessages as $receivedMessage) { $receivedMessage->user_id = Constant::NULL; $receivedMessage->save(); } } $receivedMessageThread->save(); } } //Set NULL on vihaars if (!empty($sant->viharsCreatedBy)) { foreach ($sant->viharsCreatedBy as $vihar) { $vihar->user_id = Constant::NULL; $vihar->created_by = Constant::NULL; $vihar->updated_by = Constant::NULL; $vihar->activity()->whereJsonContains('properties->attributes->vihar_information->user_id', $user->id)->delete(); $vihar->save(); } } //Set NULL in Sants & Sant Temp data $sant->santTemp->user_id = Constant::NULL; $sant->santTemp->created_by = Constant::NULL; $sant->santTemp->updated_by = Constant::NULL; $sant->user_id = Constant::NULL; $sant->created_by = Constant::NULL; $sant->updated_by = Constant::NULL; $sant->santTemp->save(); $sant->save(); } } //Delete post mentions PostMention::where('mention_id', $user->id)->where('type', Constant::STATUS_ONE)->delete(); //Delete from friend lists Request::where('sender_id', $user->id)->orWhere('receiver_id', $user->id)->delete(); $deviceID = $data['device_id'] ?? ''; $deviceToken = UserDeviceToken::where('device_id', $deviceID)->first(); if (!empty($deviceToken)) { $deviceToken->delete(); } $user->currentAccessToken()->delete(); if ($user->delete()) { $response['message'] = trans('auth.account_delete_success'); $response['status'] = Constant::CODE_200; } } } else { $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_401; } } catch (\Exception $ex) { Log::error($ex); $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_403; } return $response; } /** * @return array */ public function blockUser(array $data) { $response = []; try { $user = loggedInUser(); $alreadyBlocked = UserBlocked::where(['user_id' => $data['id'], 'blocked_by' => $user->id])->first(); if (!empty($user)) { if (!$alreadyBlocked && isset($data['status']) && $data['status'] === Constant::STATUS_ONE) { UserBlocked::create([ 'user_id' => $data['id'], 'blocked_by' => $user->id ]); $requestExist = Request::where([ 'receiver_id' => $user->id, 'sender_id' => $data['id'], ])->first(); $senderId = Request::where([ 'receiver_id' => $data['id'], 'sender_id' => $user->id ])->first(); if (!empty($requestExist)) { $requestExist->delete(); } if (!empty($senderId)) { $senderId->delete(); } $response['message'] = trans('api.user.block'); $response['status'] = Constant::CODE_200; } else if ($alreadyBlocked && (isset($data['status']) && $data['status'] === Constant::STATUS_ZERO)) { $alreadyBlocked->delete(); $response['message'] = trans('api.user.unblock'); $response['status'] = Constant::CODE_200; } else if ($alreadyBlocked && isset($data['status']) && $data['status'] === Constant::STATUS_ONE) { $response['message'] = trans('api.user.already_blocked'); $response['status'] = Constant::CODE_403; } else if (!$alreadyBlocked && isset($data['status']) && $data['status'] === Constant::STATUS_ZERO) { $response['message'] = trans('api.user.already_unblocked'); $response['status'] = Constant::CODE_403; } } else { $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_401; } } catch (\Exception $ex) { Log::error($ex); $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_403; } return $response; } /** * @return array */ public function getblockedUserList(array $data) { $response = []; try { $user = loggedInUser(); if (!empty($user)) { $data = UserBlocked::with('user:id,name,avatar') ->where('blocked_by', $user->id) ->paginate($data['limit'] ?? 10, ['*'], 'page', $data['page'] ?? 1); $response['data'] = $data; $response['status'] = Constant::CODE_200; } else { $response['data'] = []; $response['status'] = Constant::CODE_200; } } catch (\Exception $ex) { Log::error($ex); $response['message'] = trans('auth.something_went_wrong'); $response['status'] = Constant::CODE_403; } return $response; } }