Buenas tardes,
Tengo una duda en el momento de refactorizar, he observado que en el código se utiliza varias veces este patrón:
if (empty($customerId)) { return 'login'; } $customer = $this->customerRepository->find($customerId); $customerExist = count($customer) > 0; if (!$customerExist) { return 'register'; } if (!$this->customerHasLicense($customerId)) { return 'buy'; } return 'index';
- Hace una consulta a la BBDD en la tabla customer
- Hace una comprobación si el customer existe
- Crea unas condiciones a partir de la consulta
Así que lo encapsulé en una función llamada checkIfCustomerExistByCustomerId($customerId)
public function checkIfCustomerExistByCustomerId(string $customerId) { $customer = $this->customerRepository->find($customerId);return count($customer) > 0; }
Mi duda es donde tengo que encapsular está lógica, en el repositorio?
Por último, ¿las condiciones se podrían crear de otra forma?
- ÁLex Pérez publicó hace 3 años
- último editado hace 3 años
-
Hola Alex, no me queda claro que es lo que quieres conseguir con esta lógica. Me puedes detallar un poco que quiere hacer con este bloque de código. De esta manera podré darte una mejor solución.
- Debes iniciar sesión para publicar comentarios
Mi consulta es que estas condiciones están dentro por ejemplo en un caso de uso, y lo veo más como lógica de negocio, nosé si lo mejor es poner las condiciones en un middleware o en el repositorio customer?.
- ÁLex Pérez resuelto hace 3 años
-
Necesitaría más contexto para saber si esa lógica se debería encapsular en una entidad. Ya que, en un principio, parece ser que se está generando un tag (login, register, buy…) en función de unas condiciones y el repositorio. Con lo cual, tiene más sentido crear un servicio de dominio para encapsular esa lógica que se encarga de generar esos tags.
- Debes iniciar sesión para publicar comentarios
Gracias Agustin! Me sirve lo del servicio de dominio!
- ÁLex Pérez resuelto hace 3 años
- Debes iniciar sesión para publicar comentarios