diff --git a/src/main/java/org/lanit/service/JsonProcessingService.java b/src/main/java/org/lanit/service/JsonProcessingService.java new file mode 100644 index 0000000..62752f1 --- /dev/null +++ b/src/main/java/org/lanit/service/JsonProcessingService.java @@ -0,0 +1,63 @@ +package org.lanit.service; + +import org.lanit.models.*; +import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Optional; + +@Service +public class JsonProcessingService { + + public Info processAdd(AddRequest request) { + Info info = request.getInfo(); + Add add = request.getAdd(); + List tickers = info.getTickers(); + + // Ищем тикер + Optional existingTicker = tickers.stream() + .filter(t -> t.getTicker().equals(add.getName())) + .findFirst(); + + Ticker targetTicker; + if (existingTicker.isPresent()) { + targetTicker = existingTicker.get(); + } else { + // Создаем новый тикер + targetTicker = new Ticker(); + targetTicker.setTicker(add.getName()); + targetTicker.setAlerts(new java.util.ArrayList<>()); + tickers.add(targetTicker); + } + + // Создаем и добавляем оповещение + Alert newAlert = new Alert(); + newAlert.setTimeFrame(add.getTimeFrame()); + newAlert.setPercent(add.getPercent()); + targetTicker.getAlerts().add(newAlert); + + return info; + } + + public Info processDelete(DeleteRequest request) { + Info info = request.getInfo(); + Delete delete = request.getDelete(); + List tickers = info.getTickers(); + + // Ищем тикер + Ticker targetTicker = tickers.stream() + .filter(t -> t.getTicker().equals(delete.getTickerName())) + .findFirst() + .orElseThrow(() -> new RuntimeException("Передан некорректный тикер")); + + // Проверяем индекс + List alerts = targetTicker.getAlerts(); + int index = delete.getAlertIndex(); + if (index < 0 || index >= alerts.size()) { + throw new RuntimeException("Передан некорректный индекс"); + } + + // Удаляем оповещение + alerts.remove(index); + return info; + } +} \ No newline at end of file