model = $model; } public function update($data) { if ($data['user_id'] === 'new' || $data['user_id'] == 0) { $this->model = User::create([ 'email' => $data['email'], 'password' => Hash::make(config('app.key')), ]); $this->model->payment_methods = PaymentMethod::getDefaultAsArray(); $this->model->save(); } else { $this->model = $this->getById($data['user_id']); } if (! $this->model->account_id) { $account = new UserAccount; } else { $account = $this->model->account; } $data['same_as_billing'] = ! isset($data['same_as_billing']) ? 0 : 1; $data['birthday_day'] = isset($data['birthday_day']) ? $data['birthday_day'] : 1; $data['birthday_month'] = isset($data['birthday_month']) ? $data['birthday_month'] : 1; $data['birthday_year'] = isset($data['birthday_year']) ? $data['birthday_year'] : 1900; $data['birthday'] = $data['birthday_day'].'.'.$data['birthday_month'].'.'.$data['birthday_year']; $data['birthday'] = $data['birthday'] == '1.1.1900' ? null : $data['birthday']; $account->fill($data)->save(); if (! $this->model->account_id) { $this->model->account_id = $account->id; $this->model->save(); } return true; } public function createUserRegister($data) { $obj = new stdClass; $obj->email = $data['email']; $obj->password = Hash::make($data['password']); $obj->m_salutation = $data['salutation']; $obj->m_first_name = $data['first_name']; $obj->m_last_name = $data['last_name']; $obj->salutation = $data['salutation']; $obj->first_name = $data['first_name']; $obj->last_name = $data['last_name']; $obj->data_protection = now()->toDateTimeString(); $obj->confirmation_code_to = date('Y-m-d H:i:s', strtotime('+1 week')); $obj->confirmation_code_remider = 0; $obj->m_sponsor = config('app.main_user_id'); if (isset($data['from_member_id'])) { $obj->m_sponsor = (int) str_replace('gs', '', $data['from_member_id']) - config('main.add_number_id'); } $confirmation_code = UserService::createConfirmationCode(); $obj->confirmation_code = $confirmation_code; UserRegister::create([ 'identifier' => $data['email'], 'instance' => $confirmation_code, 'content' => $obj, ]); return $obj; } public function clearUserRegister() { $cleartime = date('Y-m-d H:i:s', strtotime('-1 day')); // gestern -24h UserRegister::where('created_at', '<', $cleartime)->delete(); } public function create($UserRegister) { $userObj = $UserRegister->content; $user = User::create([ 'email' => $userObj->email, 'password' => $userObj->password, ]); $account = UserAccount::create([ 'm_salutation' => $userObj->salutation, 'm_first_name' => $userObj->first_name, 'm_last_name' => $userObj->last_name, 'salutation' => $userObj->salutation, 'first_name' => $userObj->first_name, 'last_name' => $userObj->last_name, 'data_protection' => $userObj->data_protection, ]); $user->confirmed = 1; $user->confirmation_code = null; $user->confirmation_code_to = null; $user->confirmation_code_remider = 0; $user->confirmation_date = now(); $user->lang = ! empty(\App::getLocale()) ? \App::getLocale() : 'de'; $user->m_sponsor = $userObj->m_sponsor; $user->account_id = $account->id; $user->payment_methods = PaymentMethod::getDefaultAsArray(); $user->save(); $user = User::find($user->id); // clear $identifier = $UserRegister->identifier; UserRegister::where('identifier', $identifier)->delete(); return $user; } public function deleteUser(User $user) { if ($user->account) { $user->account->delete(); } $user->email = 'delete'.time(); $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->save(); return true; } public function reverse_charge_validate($data, $user, $route) { if (isset($data['action']) && $data['action'] == 'reverse_charge_validate') { $rules = [ 'tax_identification_number' => 'required', ]; $validator = Validator::make($data, $rules); if ($validator->fails()) { $data = [ 'user' => $user, ]; return redirect($route)->withErrors($validator)->withInput($data); } $ret = $this->reverse_charge_activate($data, $user); if ($ret === 'error') { $validator = Validator::make($data, []); $validator->errors()->add('tax_identification_number_validated', __('msg.VATID_could_not_be_validated')); $data['reverse_charge'] = 0; $data = [ 'user' => $user, ]; return redirect($route.'#user-vat-validation')->withErrors($validator)->withInput($data); } if ($ret === 'valid') { \Session()->flash('alert-success', __('msg.VATID_successfully_entered')); return redirect($route.'#user-vat-validation')->withInput($data); return redirect($route.'#user-vat-validation')->withInput($data); } } } public function reverse_charge_delete($data, $user, $route) { if (isset($data['action']) && $data['action'] == 'reverse_charge_delete') { $user->account->tax_identification_number = ''; $user->account->reverse_charge = 0; $user->account->reverse_charge_code = null; $user->account->reverse_charge_valid = null; $user->account->save(); $data['tax_identification_number'] = ''; \Session()->flash('alert-success', __('msg.reverse_charge_procedure_and_VATID_deleted')); return redirect($route.'#user-vat-validation')->withInput($data); } } public function reverse_charge_activate($data, $user) { /* 'AT' => 'AT-Oesterreich', 'BE' => 'BE-Belgien', 'BG' => 'BG-Bulgarien', 'CY' => 'CY-Zypern', 'CZ' => 'CZ-Tschechische Republik', 'DE' => 'DE-Deutschland', 'DK' => 'DK-Dänemark', 'EE' => 'EE-Estland', 'EL' => 'EL-Griechenland', 'ES' => 'ES-Spanien', 'FI' => 'FI-Finnland', 'FR' => 'FR-Frankreich ', 'HR' => 'HR-Kroatien ', 'HU' => 'HU-Ungarn', 'IE' => 'IE-Irland', 'IT' => 'IT-Italien', 'LT' => 'LT-Litauen', 'LU' => 'LU-Luxemburg', 'LV' => 'LV-Lettland', 'MT' => 'MT-Malta', 'NL' => 'NL-Niederlande', 'PL' => 'PL-Polen', 'PT' => 'PT-Portugal', 'RO' => 'RO-Rumänien', 'SE' => 'SE-Schweden', 'SI' => 'SI-Slowenien', 'SK' => 'SK-Slowakei', 'XI' => 'XI-Nordirland', */ $countryCode = 'DE'; if ($user->account->country_id) { $countryCode = $user->account->country->code; } $vatid = str_replace([' ', '.', '-', ',', ', '], '', trim($data['tax_identification_number'])); $cc = substr($vatid, 0, 2); $vatNo = substr($vatid, 2); $options = [ 'cache_wsdl' => WSDL_CACHE_NONE, 'trace' => 1, 'stream_context' => stream_context_create( [ 'ssl' => [ 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true, ], ] ), ]; $client = new \SoapClient('https://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl', $options); $result = $client->checkVat(['countryCode' => $countryCode, 'vatNumber' => $vatNo]); if ($result->valid == true) { $user->account->tax_identification_number = $data['tax_identification_number']; $user->account->reverse_charge = 1; $user->account->reverse_charge_code = $countryCode; $user->account->reverse_charge_valid = now(); $user->account->save(); return 'valid'; } else { return 'error'; } } }