/
JamQA
/
CargoTest
Обзор
Документация
Войти
/
JamQA
/
CargoTest
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main/java/LogisticsService.java
87 строк
4 KB
d.ikramov
Верно работающие тесты и код
02 июл 2025, 21:43
02 июл 2025, 21:43
58889c5
Код
Авторство
О чём код?
import models.CreateOrderRequest; import models.CreateOrderResponse; import java.util.*; public class LogisticsService { public CreateOrderResponse createOrder(int companyId, int userId, DataStore.Role role, CreateOrderRequest request) { DataStore.User user = DataStore.getUserById(userId); if (!canCreate(companyId, user, role)) throw new RuntimeException("Access denied"); validateOrderRequest(request); CreateOrderResponse order = new CreateOrderResponse( DataStore.nextOrderId++, request.getVehicle(), request.getDriver(), request.getFrom(), request.getTo(), request.getPrice() ); DataStore.orders.add(order); return order; } public List<CreateOrderResponse> getOrders(int companyId, int userId, DataStore.Role role) { DataStore.User user = DataStore.getUserById(userId); if (role == DataStore.Role.SUPER_ADMIN) { return new ArrayList<>(DataStore.orders); } else if (role == DataStore.Role.ADMIN) { return DataStore.orders; } else { return DataStore.orders; } } public CreateOrderResponse updateOrder(int companyId, int orderId, int userId, DataStore.Role role, CreateOrderRequest request) { DataStore.User user = DataStore.getUserById(userId); CreateOrderResponse order = DataStore.getOrderById(orderId); if (!canUpdate(companyId, user, role, order)) throw new RuntimeException("Access denied"); validateOrderRequest(request); if (order != null) { order.setVehicle(request.getVehicle()); order.setDriver(request.getDriver()); order.setFrom(request.getFrom()); order.setTo(request.getTo()); order.setPrice(request.getPrice()); } return order; } public boolean deleteOrder(int companyId, int orderId, int userId, DataStore.Role role) { DataStore.User user = DataStore.getUserById(userId); CreateOrderResponse order = DataStore.getOrderById(orderId); if (!canDelete(companyId, user, role, order)) throw new RuntimeException("Access denied"); return DataStore.orders.remove(order); } private void validateOrderRequest(CreateOrderRequest request) { if (request.getPrice() > 300000) throw new IllegalArgumentException("Длина price должна быть до 300000"); if (request.getVehicle() != null && request.getVehicle().length() > 20) throw new IllegalArgumentException("Длина vehicle должна быть до 20 символов"); if (request.getDriver() != null && request.getDriver().length() > 20) throw new IllegalArgumentException("Длина driver должна быть до 20 символов"); if (request.getFrom() != null && request.getFrom().length() > 50) throw new IllegalArgumentException("Длина from должна быть до 50 символов"); if (request.getTo() != null && request.getTo().length() > 50) throw new IllegalArgumentException("Длина to должна быть до 50 символов"); } private boolean canCreate(int companyId, DataStore.User user, DataStore.Role role) { if (role == DataStore.Role.SUPER_ADMIN) return true; if (role == DataStore.Role.ADMIN) return user.companyId == companyId; if (role == DataStore.Role.CLIENT) return user.companyId == companyId; return false; } private boolean canUpdate(int companyId, DataStore.User user, DataStore.Role role, CreateOrderResponse order) { if (role == DataStore.Role.SUPER_ADMIN) return true; if (role == DataStore.Role.ADMIN) return user.companyId == companyId; if (role == DataStore.Role.CLIENT) return user.companyId == companyId; // и order.userId == user.id (если добавить userId в order) return false; } private boolean canDelete(int companyId, DataStore.User user, DataStore.Role role, CreateOrderResponse order) { if (role == DataStore.Role.SUPER_ADMIN) return true; if (role == DataStore.Role.ADMIN) return user.companyId == companyId; if (role == DataStore.Role.CLIENT) return user.companyId == companyId; // и order.userId == user.id (если добавить userId в order) return false; } }