welcome back to dyb-tech

This commit is contained in:
Daniel Guzman
2024-05-18 02:28:01 +02:00
parent 9513cdba09
commit 9f30bc98c7
6149 changed files with 668407 additions and 0 deletions
+164
View File
@@ -0,0 +1,164 @@
<?php
namespace DMD\LaLigaApi\Dto;
use DMD\LaLigaApi\Entity\User;
class UserDto
{
public int $id;
public array $roles;
public string $email;
public string $password;
public string $firstName;
public string $lastName;
public string $phone;
public string $profilePicture;
public \DateTimeInterface $birthday;
public array $noteList;
public bool $active;
public array $notificationDtoList;
public array $validationErrors;
public function toArray(): array
{
if (!empty($this->notificationDtoList))
{
foreach ($this->notificationDtoList as $notificationDto)
{
$notificationArray[] = $notificationDto->toArray();
}
}
return [
'id' => $this->id ?? null,
'email' => $this->email ?? null,
'firstName' => $this->firstName ?? null,
'lastName' => $this->lastName ?? null,
'phone' => $this->phone,
'profilePicture' => $this->profilePicture ?? null,
'birthday' => $this->birthday->format('Y-m-d'),
'noteList' => $this->noteList ?? [],
'notificationList' => $notificationArray ?? []
];
}
public function fillFromObject(User $userObj): void
{
if ($userObj->getId() !== null)
{
$this->id = $userObj->getId();
}
if ($userObj->getEmail() !== null)
{
$this->email = $userObj->getEmail();
}
if ($userObj->getFirstName() !== null)
{
$this->firstName = $userObj->getFirstName();
}
if ($userObj->getLastName() !== null)
{
$this->lastName = $userObj->getLastName();
}
if ($userObj->getPhone() !== null)
{
$this->phone = $userObj->getPhone();
}
if ($userObj->getProfilePicture() !== null)
{
$this->profilePicture = $userObj->getProfilePicture();
}
if ($userObj->getBirthday() !== null)
{
$this->birthday = $userObj->getBirthday();
}
if ($userObj->getNoteList() !== null)
{
$this->noteList = $userObj->getNoteList();
}
}
public function fillFromArray(array $dataList): void
{
if (!empty($dataList['id']))
{
$this->id = $dataList['id'];
}
if (!empty($dataList['email']))
{
$this->email = trim($dataList['email']);
}
if (!empty($dataList['password']))
{
$this->password = trim($dataList['password']);
}
if (!empty($dataList['firstName']))
{
$this->firstName = $dataList['firstName'];
}
if (!empty($dataList['lastName']))
{
$this->lastName = $dataList['lastName'];
}
if (!empty($dataList['phone']))
{
$this->phone = $dataList['phone'];
}
if (!empty($dataList['profilePicture']))
{
$this->profilePicture = $dataList['profilePicture'];
}
if (!empty($dataList['birthday']))
{
$this->birthday = \DateTime::createFromFormat('Y-m-d', $dataList['birthday']);
}
if (!empty($dataList['notes']))
{
$this->noteList = $dataList['notes'];
}
if (isset($dataList['active']))
{
$this->active = $dataList['active'];
}
}
public function validate(): void
{
if (empty($this->email))
{
$this->validationErrors[] = 'El correo no puede estar vacío.';
}
if (!empty($this->email) && !(filter_var($this->email, FILTER_VALIDATE_EMAIL)))
{
$this->validationErrors[] = 'El correo no está en un formato válido.';
}
if (empty($this->firstName))
{
$this->validationErrors[] = 'El nombre no puede estar vacío';
}
if (empty($this->lastName))
{
$this->validationErrors[] = 'El apellido no puede estar vacío';
}
if (strlen($this->phone) !== 9)
{
$this->validationErrors[] = 'El número de teléfono debe tener 9 dígitos.';
}
if (!preg_match('@[A-Z]@', $this->password))
{
$this->validationErrors[] = 'La contraseña debe contener al menos una letra mayúscula.';
}
if (!preg_match('@[0-9]@', $this->password))
{
$this->validationErrors[] = 'La contraseña debe contener al menos un número.';
}
if (!preg_match('@\W@', $this->password))
{
$this->validationErrors[] = 'La contraseña debe contener al menos un caracter especial.';
}
if (strlen($this->password) < 8)
{
$this->validationErrors[] = 'La contraseña debe contener al menos 8 caracteres.';
}
}
}