mivita/app/Repositories/UserRepository.php
2021-08-03 16:00:01 +02:00

175 lines
No EOL
4.8 KiB
PHP

<?php
namespace App\Repositories;
use App\Models\PaymentMethod;
use App\Models\UserAccount;
use App\User;
use Illuminate\Support\Facades\Hash;
class UserRepository extends BaseRepository {
public function __construct(User $model)
{
$this->model = $model;
}
public function update($data)
{
if($data['user_id'] === "new" || $data['user_id'] == 0){
$this->model = User::create([
'email' => $data['email'],
'password' => env('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;
$account->fill($data)->save();
if(!$this->model->account_id){
$this->model->account_id = $account->id;
$this->model->save();
}
return true;
}
public function create($data){
$this->model = User::create([
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
$account = UserAccount::create([
'm_salutation' => $data['salutation'],
'm_first_name' => $data['first_name'],
'm_last_name' => $data['last_name'],
'salutation' => $data['salutation'],
'first_name' => $data['first_name'],
'last_name' => $data['last_name'],
]);
$this->model->account_id = $account->id;
$this->model->payment_methods = PaymentMethod::getDefaultAsArray();
$this->model->save();
return $this->model;
}
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(array(' ', '.', '-', ',', ', '), '', 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_valid = now();
$user->account->save();
return 'valid';
} else {
return 'error';
}
}
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;
}
}