forked from Sanders/TelegaBot
feat: Add date editing functionality for books
This commit is contained in:
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user