openclassify/addons/default/visiosoft/profile-module/src/Profile/Profile/ProfileFormHandler.php
2020-10-22 17:23:58 +03:00

64 lines
1.9 KiB
PHP

<?php namespace Visiosoft\ProfileModule\Profile\Profile;
use Anomaly\Streams\Platform\Message\MessageBag;
use Anomaly\UsersModule\User\UserModel;
use Visiosoft\ProfileModule\Events\UserUpdated;
class ProfileFormHandler
{
public function handle(
ProfileFormBuilder $builder,
MessageBag $messages,
UserModel $userModel
)
{
if (!$builder->canSave()) {
return;
}
$parameters = [
'gsm_phone' => $builder->getPostValue('gsm_phone'),
'office_phone' => $builder->getPostValue('office_phone'),
'land_phone' => $builder->getPostValue('land_phone'),
'identification_number' => $builder->getPostValue('identification_number'),
'birthday' => $builder->getPostValue('birthday'),
'register_type' => $builder->getPostValue('register_type'),
];
if ($builder->getPostValue('file') != null) {
$parameters['file_id'] = $builder->getPostValue('file');
} elseif (empty($builder->getPostValue('file'))) {
$parameters['file_id'] = null;
}
$user = $userModel->newQuery()->find(\auth()->id());
// Prevent removing already filled fields
foreach ($parameters as $field => $value) {
if ($user->$field && !$value) {
$messages->error('visiosoft.module.profile::message.can_not_remove_filled_fields');
return;
}
}
$oldCustomerInfo = $user->toArray();
$changes = $this->change($user, $parameters);
event(new UserUpdated($oldCustomerInfo, $changes));
$messages->success(trans('visiosoft.module.profile::message.success_update'));
}
public function change($user, $data)
{
$user->fill($data);
$changes = $user->getDirty();
$user->save();
if (!count($changes)) {
return false;
}
return $changes;
}
}