ldc-jeusselin/app/Models/User.php
2021-03-31 17:30:11 +02:00

137 lines
3.7 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use App\Exceptions\CrmException;
use App\Http\Resources\UserCrmResource;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable
{
use HasFactory, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'crm_id',
'crm_hashcode',
'firstname',
'lastname',
'email',
'password',
'email_verify_token',
'email_verified',
'role',
'client_number',
'social_denomination',
'tech_commercial',
'eleveur_volailles',
'eleveur_porcs',
'eleveur_bovins',
'capacite_stockage',
'temps_chargement',
'stockage_aplat',
'stockage_cellule',
'adress_chargement',
'optional_contact',
'ok_cgv',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
'ok_cgv' => 'datetime',
];
/**
* Get the crm Data of a customer
*
* @throws CrmException
* @return object crm user
* @author Jérémy Munsch <jeremy.munsch@ldc.fr>
*/
public function getApiDataAttribute()
{
/** @var \LDCCRM\ApiV1 */
$crm = app('crmApi');
$response = (object)$crm->getCustomer($this->crm_id);
switch ($response->status) {
case 'KO':
throw new CrmException(sprintf('Api call error %s', $response->message));
case 'OK':
return $response->user;
default:
throw new CrmException('Unknown status');
}
}
/**
* Set the crm Data of a customer
*
* @throws CrmException
* @return object crm user
* @author Jérémy Munsch <jeremy.munsch@ldc.fr>
*/
public function updateApiData(UserCrmResource $resource)
{
/** @var \LDCCRM\ApiV1 */
$crm = app('crmApi');
$response = (object) \call_user_func_array([$crm, 'updateCustomer'], $resource->toArray(null));
switch ($response->status) {
case 'KO':
throw new CrmException(sprintf('Api call error %s', $response->message));
case 'OK':
return $response->user;
default:
throw new CrmException('Unknown status');
}
}
/**
* prend trop de temps pour afficher la liste des users
*/
// public function getFirstnameAttribute()
// {
// if ($this->attributes['role'] == 3 && !is_null($this->attributes['crm_id'])) {
// $crm = app('crmApi');
// $crm_result = $crm->getCustomer($this->attributes['crm_id']);
// $crm_user = $crm_result->user;
// return $crm_user->firstname;
// } else {
// return $this->attributes['firstname'];
// }
// }
// public function getLastnameAttribute()
// {
// if ($this->attributes['role'] == 3 && !is_null($this->attributes['crm_id'])) {
// $crm = app('crmApi');
// $crm_result = $crm->getCustomer($this->attributes['crm_id']);
// $crm_user = $crm_result->user;
// return $crm_user->lastname;
// } else {
// return $this->attributes['lastname'];
// }
// }
}