В моем приложении есть Клиенты и Курьеры. Клиент может отправить запрос на доставку курьеру только в том случае, если этот Курьер в настоящее время находится в сети, и оба пользователя находятся в одном месте.Я правильно использую свою Службу с моими сущностями и мапперами. Правильно ли моя бизнес-логика?
Когда Клиент хочет отправить запрос на доставку курьеру, мой DeliveryRequest
имеет метод sendDeliveryRequest(Request request)
, который вызывается из Controller
.
public function sendDeliveryRequest(Request $request) {
$customer = $this->recognitionService->getUser();
$courier = $this->entityFactory->build('Courier');
$courier->setId($request->post('courierId'));
$courierMapper = $this->mapperFactory->build('Courier');
$courierMapper->fetch($courier);
$deliveryRequest = $this->entityFactory->build('DeliveryRequest');
$someRequestedItems = array();
$deliveryRequest->sendRequest($customer, $courier, $someRequestedItems);
}
До сих пор в моем sendRequest(Customer $customer, Courier $courier, Array $items)
метод у меня есть:
public function sendRequest(Customer $customer, Courier $courier, Array $items) {
// Check if the couriers account is active
if(!$courier->isActive()) {
return 'courier not active';
}
// Check if the courier is online
if(!$courier->isOnline()) {
return 'courier not online';
}
// Check the status of the customers location, active/inactive
if(!$customer->getLocation()->isActive()) {
return 'customers location disabled';
}
// Check if the customer and the courier live in the same location
if(!$customer->sameLocationAs($courier)) {
return 'customer and courier in different locations';
}
// More checks
}
Для меня до сих пор это выглядит нормально, и работает хорошо, но я не уверен на 100%, если я правильно делать бизнес-логику, особенно !$customer->sameLocationAs($courier)
.
Этот метод использует поставляемый объект $courier
, чтобы получить это местоположение курьеров (которое является объектом с id
) и сравнивает его с местоположением Клиентов, чтобы проверить, находятся ли они в одном месте. Он работает отлично, но я не уверен, что это лучший способ проверить, находятся ли оба пользователя в одном месте или нет. Действительно ли это бизнес-логика?
Кроме того, элементы в $deliveryRequest
, их данные (id
, quantity
) будет в $request
объект передается от Controller
поэтому я буду создавать каждый Item
в Service
и поместить их в массив и передать массив $customer
и $courier
до sendRequest()
. Это означает, что я должен делать проверки (проверьте, не было ли введенное количество не больше значения базы данных количества и т. Д.) В этом методе, - это правильный путь или это плохо?
Я выполняю свои проверки/правильность и правильное место/слой в своем приложении?
Любая помощь будет большой благодарностью.