feat: Add date editing functionality for books

This commit is contained in:
2025-02-16 17:43:31 +03:00
parent 2d9cf5c892
commit ebf0357c59
2 changed files with 21 additions and 0 deletions
@@ -18,6 +18,7 @@ public class BookEditStateCache {
EDITING_TITLE,
EDITING_AUTHOR,
EDITING_RATING,
EDITING_DATE,
NONE
}
@@ -69,6 +69,11 @@ public class BookEditingServiceImpl implements BookEditingService {
handleEditField(user, BookEditStateCache.BookEditState.EDITING_RATING, "Введите рейтинг:");
}
@Override
public void handleEditDate(BotUser user) {
handleEditField(user, BookEditStateCache.BookEditState.EDITING_DATE, "Введите новую дату прочтения в формате ДД.ММ.ГГГГ:");
}
private void updateBookField(BotUser user, String newValue, String fieldName) {
var bookEditState = bookCacheService.getBookEditCache(user.getId());
Book book = bookRepository.findById(bookEditState.getBookId()).orElseThrow();
@@ -86,6 +91,16 @@ public class BookEditingServiceImpl implements BookEditingService {
book.setRating(Integer.parseInt(newValue));
telegramClientService.sendMessage(user, "Рейтинг успешно обновлен");
break;
case "date":
try {
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
Date parsedDate = new Date(sdf.parse(newValue).getTime());
book.setReadDate(parsedDate);
telegramClientService.sendMessage(user, "Дата прочтения обновлена ✅");
} catch (ParseException e) {
throw new IllegalArgumentException("Ошибка формата даты. Используйте ДД.ММ.ГГГГ");
}
break;
default:
throw new IllegalArgumentException("Invalid field name: " + fieldName);
}
@@ -108,6 +123,11 @@ public class BookEditingServiceImpl implements BookEditingService {
updateBookField(user, newRating, "rating");
}
@Override
public void updateBookDate(BotUser user, String newDate) {
updateBookField(user, newDate, "date");
}
@Override
public void handleRestartMessage(BotUser botUser) {
telegramClientService.sendMessageWithMarkdown(botUser, "Выберите действие \uD83D\uDCCB", KeyboardHelper.getBookMenuKeyboard());