403Webshell
Server IP : 34.87.99.72  /  Your IP : 216.73.217.31
Web Server : Apache/2.4.46 (Unix) OpenSSL/1.1.1n
System : Linux zlock-bitnami-lamp-prod-v2-vm 4.19.0-16-cloud-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64
User : bitnami ( 1000)
PHP Version : 7.4.18
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : OFF
Directory :  /opt/bitnami/apache/htdocs/app/app/Http/Services/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/bitnami/apache/htdocs/app/app/Http/Services/UserService.php
<?php
namespace App\Http\Services;

use App\Models\User;
use App\Models\UserSocialize;
use App\Http\Services\UserCreditService;
use Auth;
use DB;
use Hash;
use Illuminate\Contracts\Auth\PasswordBroker;
use Illuminate\Validation\ValidationException;
use App\Notifications\AccountActivateNotification;
use Password;
use Queriplex;
use Pylon\Exceptions\BadRequestException;
use App\Exports\BasicExcelExport;
use Maatwebsite\Excel\Facades\Excel;
use App\Classes\GCSFileUploader;

class UserService
{
	public function __construct(
		UserCreditService $userCreditService
	)
	{
		$this->userCreditService = $userCreditService;
	}

	public function userQueriplex($query, Array $request)
	{
		$order_mode = ( $request['sortDesc'] ?? false )  ? 'DESC' : 'ASC';
		$search_by = $request['searchBy'] ?? null;
		
		$queriplex = Queriplex::make($query)
			->withFilters($request,[
				'id' => 'id',
				'activity' => fn($query, $value) => $query->whereActivity($value),
				'role_id' => 'role_id',
				'mobile_num' => 'mobile_num',
				'search' => ( fn($query, $value) => self::userSearchQuery($query,$value,$search_by) ),
			])
			->withSort($request['sortBy'] ?? null, [
				"id" => fn($query) => $query->orderBy('id', $order_mode),
				"register_time" => fn($query) => $query->orderBy('created_at', $order_mode),
				"total_credit" => fn($query) => $query->orderBy('total_credit', $order_mode)->orderBy('id'),
			]);

		return $queriplex->apply();
	}

	public function userSearchQuery($query, $value, $search_by)
	{
		$common_searchable = [
			'full_name',
			'unique_id',
			'mobile_num',
			'email',
			'created_at',
		];			
		if(in_array($search_by,$common_searchable)){
			if($search_by != "created_at")
				$query->search($search_by,$value);
			else
			{
				$query->where('created_at', '>=', $value[0]);
				if(sizeof($value)>1)
					$query->where('created_at', '<=', $value[1]);
			}
			
		}

		return null;
	}

	public function userList(Array $request)
	{
		$users = User::query()->withSum('credits as total_credit','amount');

		$users = self::userQueriplex($users, $request);

		$request['type'] = $request['type'] ?? null;

		if($request['type'] != 'find_mobile')
		{
			$result = $users->whereNotIn('role_id', [ User::ROLE_SUPER_ADMIN, User::ROLE_AA_ADMIN ])
				->with(['partnerPackage'])
				->paginate($request['itemsPerPage'] ?? null);
		}
		else
		{
			$result = $users->with(['partnerPackage'])
						->paginate($request['itemsPerPage'] ?? null);
		}

		$result->each(function($item){
			$item->total_credit = $item->total_credit ?: '0.00';
		});
		
		return $result;
	}

	public function exportUserList(Array $request) : GCSFileUploader
	{
		$users = User::query()->withSum('credits as total_credit','amount');

		$users = self::userQueriplex($users, $request);

		$result = $users->whereNotIn('role_id', [ User::ROLE_SUPER_ADMIN, User::ROLE_AA_ADMIN ])
			->get()
			->each(function($item){
				$item->total_credit = $item->total_credit ?: '0.00';
			});

		$export = new BasicExcelExport($result);
		$file_name = now()->format('Ymdhms')."-User-List.xlsx";
		Excel::store($export, $file_name);
		$fileUploader = new GCSFileUploader($file_name);
		$fileUploader->setDirectory('reports/user-list');
		$fileUploader->upload();

		return $fileUploader;
	}

	public function userInfo(Array $request)
	{
		$user = User::where('id',$request['id'])
			->firstOr( function(){
				throw ValidationException::withMessages(
					[ "id" => "The selected id is invalid." ]
				);
			});

		$user->getCreditAmount();
		$user->load('partnerPackage');
		$user['isPartner'] = $user->isPartner();
        $user['isSuperAdmin'] = $user->isSuperAdmin();
        $user['isCustomer'] = $user->isCustomer();

		return $user;
	}

	public function userCreate(Array $request)
	{
		$user = new User();
		$user->full_name = $request['full_name'];
		$user->unique_id = User::computedUniqueId($request['role_id']);
		$user->role_id = $request['role_id'];
		$user->email = $request['email'];
		$user->mobile_num = $request['mobile_num'];

		$user->gender = $request['gender'] ?? null;
		$user->address = $request['address']  ?? null;
		$user->city = $request['city']  ?? null;
		$user->postcode = $request['postcode']  ?? null;
		$user->state = $request['state']  ?? null;
		$user->partner_package_id = $request['partner_package_id']  ?? null;
		$user->commission_rate = $request['commission_rate']  ?? null;
		$user->company_name = $request['company_name']  ?? null;
		$user->business_reg_num = $request['business_reg_num']  ?? null;
		
		$user->password = "p@ssw0rd";
		$user->save();

		if( isset($request['send_email']) && $request['send_email'] == true ){
			$result = Password::broker()->sendResetLink( 
				[ 'email' => $user->email ], 
				function($user,$token){
					$user->notify(new AccountActivateNotification($token));
				}
			);
		}

        $this->userCreditService->userRegisterFreeCredit($user->id);

		return $user;
	}

	public function userUpdate(Array $request)
	{
		$user = User::where('id',$request['id'])
			->withTrashed()
			->firstOr( function(){
				throw ValidationException::withMessages(
					[ "id" => "The selected id is invalid." ]
				);
			});
	  
		$user->full_name = $request['full_name'] ?? $user->full_name;
		$user->role_id = $request['role_id'] ?? $user->role_id;
		$user->mobile_num = $request['mobile_num'] ?? $user->mobile_num;

		$user->gender = $request['gender'] ?? $user->gender;
		$user->address = $request['address'] ?? $user->address;
		$user->city = $request['city'] ?? $user->city;
		$user->postcode = $request['postcode'] ?? $user->postcode;
		$user->state = $request['state'] ?? $user->state;
		$user->partner_package_id = $request['partner_package_id'] ?? $user->partner_package_id;
		$user->commission_rate = $request['commission_rate'] ?? $user->commission_rate;
		$user->company_name = $request['company_name'] ?? $user->company_name;
		$user->business_reg_num = $request['business_reg_num'] ?? $user->business_reg_num;

		$user->password = isset($request['password']) ? Hash::make($request['password']) : $user->password;

		$user->save();

		return $user;
	}

	public function userDelete(Array $request)
	{
		$user = User::where('id',$request['id'])
			->firstOr( function(){
				throw ValidationException::withMessages(
					[ "id" => "The selected id is invalid." ]
				);
			});

		$user->full_name = $user->id . "_" . $user->full_name . "_deleted";
		$user->unique_id = $user->id . "_" . $user->unique_id . "_deleted";
		$user->email = $user->id . "_" . $user->email . "_deleted";
		$user->mobile_num = $user->id . "_" . $user->mobile_num . "_deleted";
		$user->ic_num = $user->id . "_" . $user->ic_num . "_deleted";
		$user->save();

		UserSocialize::where("user_id", $user->id)->delete();

		$user->tokens()->delete();

		$user->delete();

		return $user;
	}

	public function userRefs()
	{
		$refs = collect(User::ROLE_TYPES)->except([
			User::ROLE_SUPER_ADMIN,
			User::ROLE_AA_ADMIN
		]);

		$refs = $refs->mapKeyValue("value", "text");

		return $refs->values();
	}

	public function getGenderTypes()
	{
		$refs = collect(User::GENDER_TYPES);

		return $refs->values();
	}

	public function forgotPassword(Array $request)
	{
		if(isset($request['id'])){
			$user = User::where('id',$request['id'])
			->withTrashed()
			->firstOr( function(){
				throw ValidationException::withMessages(
					[ "id" => "The selected id is invalid." ]
				);
			});
			$email = $user->email;
		}else{
			$email = $request['email'];
		}

		$result = Password::broker()->sendResetLink( [ 'email' => $email ] );

		return $email;
	}

	public function resetPassword(Array $request)
	{
		$result = Password::broker()->reset( $request , function($user, $password){
			$user->password = Hash::make($password);
			$user->save();
		});

		switch ($result) {
			case PasswordBroker::INVALID_TOKEN:
				throw new BadRequestException("The token is invalid");
				break;

			case PasswordBroker::INVALID_USER:
				throw new BadRequestException("User is invalid");
				break;
			
			default:
				break;
		}

		return $result;
	}

	public function filterContactNumber(Array $request)
	{
		$user = User::all('mobile_num');

		$result = [];

		$number = [];

		foreach($request['mobile_num'] as $phone_num)
		{
			$phone_num_temp = $phone_num;

			if(!(substr( $phone_num, 0, 2 ) === "+6"))
				$phone_num_temp = "+6" . $phone_num;

			$hit = null;

			$hit = $user->filter(function($item) use($phone_num_temp, $phone_num,$number) {
				return $item->mobile_num == $phone_num_temp;
			})->first();

			$result[] = [
				'phone_num' => $phone_num,
				'hit' => $hit != null ? true : false
			];

			if($hit)
				$number[] = $phone_num;
		}

		if(isset($request['version_2']) && $request['version_2'])
			return $number;
		return $result;
	}

}

Youez - 2016 - github.com/yon3zu
LinuXploit