get(); foreach($ShoppingUsers as $shopping_user){ ShoppingUserMemberLog::create([ 'pre_member_id' => $shopping_user->member_id, 'shopping_user_id' => $shopping_user->id, 'new_member_id' => $new_member_id ]); $shopping_user->member_id = $new_member_id; $shopping_user->save(); } } public static function setNewSponsorToChilds($inactive_sponsor_id, $new_sponsor_id){ //alle User die diesen inaktivien Sponsor haben $child_users = User::where('m_sponsor', $inactive_sponsor_id)->get(); //auch deaktiverte foreach($child_users as $child_user){ UserCleanUpLog::create([ 'inactive_sponsor_id' => $inactive_sponsor_id, 'child_user_id' => $child_user->id, 'new_sponsor_id' => $new_sponsor_id, ]); $child_user->m_sponsor = $new_sponsor_id; $child_user->save(); } } public static function resetChildsToSponsor($re_sponsor_id){ //alle alten Childs vom re_sponsor_id / User wieder herstellen $UserCleanUpUsers = UserCleanUpLog::where('inactive_sponsor_id', $re_sponsor_id)->get(); foreach($UserCleanUpUsers as $UserCleanUpUser){ $child_user = User::find($UserCleanUpUser->child_user_id); if($child_user){ //delete Logs from user child where is newer then this $deleteUserCleanUpLogs = UserCleanUpLog::where('child_user_id', $UserCleanUpUser->child_user_id)->where('created_at', '>', $UserCleanUpUser->created_at)->get(); foreach($deleteUserCleanUpLogs as $deleteUserCleanUpLog){ $deleteUserCleanUpLog->delete(); } if($child_user->m_sponsor){ // child is active $child_user->m_sponsor = $re_sponsor_id; } if($child_user->pre_sponsor){ //child is inactive $child_user->pre_sponsor = $re_sponsor_id; } $child_user->save(); //delete this log $UserCleanUpUser->delete(); } } } public static function setUserToClient($user_id, $sponsor_id){ $user = User::find($user_id); if($user){ $data = [ 'member_id' => $sponsor_id, 'language' => $user->lang ? $user->lang : 'de', 'billing_salutation' => $user->account->salutation, 'billing_company' => $user->account->company, 'billing_firstname' => $user->account->first_name, 'billing_lastname' => $user->account->last_name, 'billing_address' => $user->account->address, 'billing_address_2' => $user->account->address_2, 'billing_zipcode' => $user->account->zipcode, 'billing_city' => $user->account->city, 'billing_country_id' => $user->account->country_id, 'billing_phone' => $user->account->getPhoneNumber(), 'billing_email' => $user->email, 'same_as_billing' => $user->account->same_as_billing, 'shipping_salutation' => $user->account->shipping_salutation, 'shipping_company' => $user->account->shipping_company, 'shipping_firstname' => $user->account->shipping_firstname, 'shipping_lastname' => $user->account->shipping_lastname, 'shipping_address' => $user->account->shipping_address, 'shipping_address_2' => $user->account->shipping_address_2, 'shipping_zipcode' => $user->account->shipping_zipcode, 'shipping_city' => $user->account->shipping_city, 'shipping_country_id' => $user->account->shipping_country_id, 'shipping_phone' => $user->account->getShippingPhoneFull(), ]; ShoppingUser::create($data); } } /* find next activ sponsor on user id first $sponsor_id can user_id, looks has m_sponsor or pre_sponsor. */ public static function findNextActiveSponsor($sponsor_id){ $user = User::withTrashed()->find($sponsor_id); if(!$user){ //kein User unter der ID - to root return User::find(6); } //user ist aktiv if($user->isActiveAccount()){ return $user; } if($user->m_sponsor){ //hat der User einen m_sponsor return self::findNextActiveSponsor($user->m_sponsor); } if($user->pre_sponsor){ //hat der User einen pre_sponsor - schon inaktiv return self::findNextActiveSponsor($user->pre_sponsor); } //dump('not sponsor'); return $user; } public static function deactiveUser($user){ $user->pre_sponsor = $user->m_sponsor; //den sponsor speichern für wiederherstellung $user->m_sponsor = null; $user->active = false; $user->save(); } public static function reactiveUser($user){ if($user->pre_sponsor){ $pre_sponsor = self::findNextActiveSponsor($user->pre_sponsor); $user->m_sponsor = $pre_sponsor->id; //den sponsor wiederherstellen $user->pre_sponsor = null; } $user->active = true; $user->save(); } public static function deleteUser(User $user, $complete = false) { //shop wird gelöscht if($user->shop){ $subdomain_name = $user->shop->slug.'.mivita.care'; $user->shop->name = "delete".$user->shop->id; $user->shop->slug = "delete".$user->shop->id; $user->shop->save(); $user->shop->delete(); //isset KAS - delete Subdomain if(!Util::isTestSystem()){ $kas = new KasController(); $pra = array( 'subdomain_name' => $subdomain_name, ); $kas->action('delete_subdomain', $pra); } } //user soll nicht komplett gelöscht werden $user->email = "delete-".$user->email; //password wird gelöscht $user->password = "delete".time(); $user->confirmed = 0; $user->confirmation_code = "delete".time(); $user->confirmation_date = null; $user->confirmation_code_to = null; $user->confirmation_code_remider = 2; // $user->agreement = null; $user->active = 0; $user->remember_token = ''; $user->active_date = null; $user->admin = 0; $user->deleted_at = now(); $user->pre_deleted_at = now(); //user soll komplett gelöscht werden if($complete){ $user->email = "delete-".time()."-".rand(1000, 9999); if($user->account){ $user->account->delete(); } $user->pre_deleted_at = null; } $user->save(); return true; } public static function reactiveUserResetChilds($user_id, $info = ''){ $user = User::find($user_id); if(!$user){ \Log::channel('cleanup')->error('reactiveUserResetChilds find no user by user_id:'.$user_id); return 0; } $data = [ 'user_id' => $user->id, 'email' => $user->email, 'm_account' => $user->account ? $user->account->m_account : '', 'm_first_name' => $user->account ? $user->account->m_first_name : '', 'm_last_name' => $user->account ? $user->account->m_last_name : '', ]; \Log::channel('cleanup')->info('reactiveUserResetChilds '.$info.' : '.json_encode($data)); self::reactiveUser($user); self::resetChildsToSponsor($user->id); } public static function deactiveUserNewSponsorChilds($user_id, $info = ''){ $user = User::find($user_id); if(!$user){ \Log::channel('cleanup')->error('deactiveUserNewSponsorChilds find no user by user_id:'.$user_id); return 0; } $data = [ 'user_id' => $user->id, 'email' => $user->email, 'm_account' => $user->account ? $user->account->m_account : '', 'm_first_name' => $user->account ? $user->account->m_first_name : '', 'm_last_name' => $user->account ? $user->account->m_last_name : '', ]; $active_sponsor = self::findNextActiveSponsor($user->m_sponsor); if($active_sponsor){ self::setNewSponsorToChilds($user->id, $active_sponsor->id); }else{ \Log::channel('cleanup')->error('cleanUpInActiveUser find no active_sponsor by inactive_user:'.$user->id); } \Log::channel('cleanup')->info('deactiveUserNewSponsorChilds '.$info.' : '.json_encode($data)); self::deactiveUser($user); } }