FreelanceBot

Форк
0
/
CommandValidation.java 
98 строк · 3.3 Кб
1
package telegramBot.validation;
2

3
import telegramBot.enums.Language;
4
import org.springframework.beans.factory.annotation.Autowired;
5
import org.springframework.stereotype.Component;
6
import org.telegram.telegrambots.meta.api.objects.Update;
7
import telegramBot.service.MessageService;
8
import telegramBot.service.UserService;
9

10
@Component
11
public class CommandValidation {
12

13
    @Autowired
14
    private UserService userService;
15
    private final MessageService messageService;
16

17
    public CommandValidation(MessageService service){
18
        this.messageService = service;
19
    }
20

21

22
    public boolean addCommand(Update update){
23
        String chatId = update.getMessage().getChatId().toString();
24
        String subsLanguage = update.getMessage().getText();
25

26
        if(subsLanguage.isEmpty()){
27
            this.messageService.sendResponse(chatId, ValidationMessage.EMPTY.getMessage());
28
            return false;
29
        }
30

31
        if(!languageSupports(subsLanguage)){
32
            this.messageService.sendResponse(chatId, ValidationMessage.NOT_SUPPORTS.getMessage());
33
            return false;
34
        }
35

36
        if(subscriptionExist(subsLanguage, chatId)){
37
            this.messageService.sendResponse(chatId, ValidationMessage.SUBSCRIPTION_EXIST.getMessage());
38
            return false;
39
        }
40

41
        return true;
42
    }
43

44
    private boolean languageSupports(String language){
45
        return Language.ignoreCaseValueOf(language) != Language.UNKNOWN;
46
    }
47

48
    private boolean subscriptionExist(String language, String chatId){
49
        Language lang = Language.ignoreCaseValueOf(language);
50
        return userService.getByChatId(chatId).getSubscriptions()
51
                .stream()
52
                .anyMatch(s -> s.getLanguage().equals(lang.getName()));
53
    }
54

55
    public boolean removeCommand(Update update) {
56
        String chatId = update.getMessage().getChatId().toString();
57
        String subLanguage = update.getMessage().getText();
58

59
        if(subLanguage.isEmpty()){
60
            this.messageService.sendResponse(chatId, ValidationMessage.EMPTY.getMessage());
61
            return false;
62
        }
63

64
        if(!languageSupports(subLanguage)){
65
            this.messageService.sendResponse(chatId, ValidationMessage.NOT_SUPPORTS.getMessage());
66
            return false;
67
        }
68

69
        if(!subscriptionExist(subLanguage, chatId)){
70
            this.messageService.sendResponse(chatId, ValidationMessage.SUBSCRIPTION_NOT_EXIST.getMessage());
71
            return false;
72
        }
73

74
        return true;
75

76
    }
77
    public boolean latestCommand(Update update) {
78
        String chatId = update.getMessage().getChatId().toString();
79
        String input = update.getMessage().getText().replaceAll("(\\(\\))", "");
80
        if(input.isEmpty()){
81
            this.messageService.sendResponse(chatId, ValidationMessage.EMPTY.getMessage());
82
            return false;
83
        }
84

85
        String[] inputs = input.split(",");
86

87
        if(inputs.length == 1 || !languageSupports(inputs[0].trim())){
88
            this.messageService.sendResponse(chatId, ValidationMessage.NOT_SUPPORTS.getMessage());
89
            return false;
90
        }
91

92
        if(!subscriptionExist(inputs[0].trim(), chatId)){
93
            this.messageService.sendResponse(chatId, ValidationMessage.SUBSCRIPTION_NOT_EXIST.getMessage());
94
            return false;
95
        }
96
        return true;
97
    }
98
}
99

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.