|
@@ -1,32 +1,69 @@
|
|
|
package in.ocsf.these.days.app.service;/* kpmy 19.02.2017 */
|
|
|
|
|
|
-import com.google.common.base.Optional;
|
|
|
import com.pengrad.telegrambot.model.Update;
|
|
|
-import in.ocsf.these.days.app.object.Message;
|
|
|
+import in.ocsf.these.days.app.SM;
|
|
|
+import in.ocsf.these.days.app.messaging.UpdateHelper;
|
|
|
+import in.ocsf.these.days.app.object.ChatEvent;
|
|
|
+import in.ocsf.these.days.app.object.ChatState;
|
|
|
import in.ocsf.these.days.app.object.User;
|
|
|
+import in.ocsf.these.days.app.repo.CardRepositrory;
|
|
|
import in.ocsf.these.days.app.repo.MessageRepository;
|
|
|
import in.ocsf.these.days.app.repo.UserRepository;
|
|
|
+import org.apache.log4j.Logger;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.statemachine.StateMachine;
|
|
|
+import org.springframework.statemachine.config.StateMachineFactory;
|
|
|
+import org.springframework.statemachine.persist.DefaultStateMachinePersister;
|
|
|
+import org.springframework.statemachine.persist.StateMachinePersister;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
@Service
|
|
|
public class UpdateService {
|
|
|
|
|
|
+ private final Logger log = Logger.getLogger(getClass());
|
|
|
+
|
|
|
@Autowired
|
|
|
private UserRepository userRepo;
|
|
|
|
|
|
@Autowired
|
|
|
private MessageRepository msgRepo;
|
|
|
|
|
|
- public void update(Update upd) {
|
|
|
- com.pengrad.telegrambot.model.Message src = Optional.fromNullable(upd.message()).or(Optional.fromNullable(upd.editedMessage())).orNull();
|
|
|
- if (src == null) throw new RuntimeException();
|
|
|
+ @Autowired
|
|
|
+ private CardRepositrory cardRepo;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private StateMachineFactory<ChatState, ChatEvent> stateMachineFactory;
|
|
|
+
|
|
|
+ private void handleUpdate(UpdateHelper upd) throws Exception {
|
|
|
+ if (!upd.isEdit()) {
|
|
|
+ if (upd.hasText()) {
|
|
|
+ if (upd.isCommand()) {
|
|
|
+ List<String> cmd = upd.getSplitCommand();
|
|
|
+ switch (cmd.get(0)) {
|
|
|
+ case "/start":
|
|
|
+ User user = User.fromUser(upd.getUser());
|
|
|
+ StateMachine<ChatState, ChatEvent> state = stateMachineFactory.getStateMachine(Long.toHexString(user.getId()));
|
|
|
+ state.start();
|
|
|
+ StateMachinePersister<ChatState, ChatEvent, Long> persist = new DefaultStateMachinePersister<>(new SM.InMemoryStateMachinePersist());
|
|
|
+ persist.persist(state, user.getId());
|
|
|
+ log.info(Long.toHexString(user.getId()));
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
|
|
|
- User user = userRepo.save(User.fromUser(src.from()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- Message msg = new Message();
|
|
|
- msg.setId(Long.valueOf(src.messageId()));
|
|
|
- msg.setSender(user);
|
|
|
- msgRepo.save(msg);
|
|
|
+ public void handleUpdate(Update upd) {
|
|
|
+ try {
|
|
|
+ handleUpdate(UpdateHelper.from(upd));
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
}
|