diff --git a/bitbucket-app/pom.xml b/bitbucket-app/pom.xml
index 3756a8e..f09c5fc 100644
--- a/bitbucket-app/pom.xml
+++ b/bitbucket-app/pom.xml
@@ -59,6 +59,9 @@
org.springframework.boot
spring-boot-maven-plugin
+
+ bitbucketbot
+
diff --git a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/BitbucketbotApplication.java b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/BitbucketbotApplication.java
similarity index 93%
rename from bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/BitbucketbotApplication.java
rename to bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/BitbucketbotApplication.java
index d6392e5..cae8a5f 100644
--- a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/BitbucketbotApplication.java
+++ b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/BitbucketbotApplication.java
@@ -1,4 +1,4 @@
-package org.sadtech.bot.vcs.bitbucket;
+package org.sadtech.bot.vcs.bitbucket.app;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/exception/BitbucketAppException.java b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/exception/BitbucketAppException.java
similarity index 82%
rename from bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/exception/BitbucketAppException.java
rename to bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/exception/BitbucketAppException.java
index 65a1a72..1804b47 100644
--- a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/exception/BitbucketAppException.java
+++ b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/exception/BitbucketAppException.java
@@ -1,4 +1,4 @@
-package org.sadtech.bot.vcs.bitbucket.exception;
+package org.sadtech.bot.vcs.bitbucket.app.exception;
/**
* // TODO: 16.09.2020 Добавить описание.
diff --git a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/exception/ConvertException.java b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/exception/ConvertException.java
similarity index 81%
rename from bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/exception/ConvertException.java
rename to bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/exception/ConvertException.java
index 75d0591..240796a 100644
--- a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/exception/ConvertException.java
+++ b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/exception/ConvertException.java
@@ -1,4 +1,4 @@
-package org.sadtech.bot.vcs.bitbucket.exception;
+package org.sadtech.bot.vcs.bitbucket.app.exception;
/**
* // TODO: 16.09.2020 Добавить описание.
diff --git a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/scheduler/CommentAndTaskScheduler.java b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/scheduler/CommentAndTaskScheduler.java
similarity index 84%
rename from bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/scheduler/CommentAndTaskScheduler.java
rename to bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/scheduler/CommentAndTaskScheduler.java
index 14facbf..ac59a96 100644
--- a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/scheduler/CommentAndTaskScheduler.java
+++ b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/scheduler/CommentAndTaskScheduler.java
@@ -1,7 +1,7 @@
-package org.sadtech.bot.vcs.bitbucket.scheduler;
+package org.sadtech.bot.vcs.bitbucket.app.scheduler;
import lombok.RequiredArgsConstructor;
-import org.sadtech.bot.vcs.bitbucket.service.CommentAndTaskParser;
+import org.sadtech.bot.vcs.bitbucket.app.service.CommentAndTaskParser;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
diff --git a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/scheduler/PersonScheduler.java b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/scheduler/PersonScheduler.java
similarity index 76%
rename from bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/scheduler/PersonScheduler.java
rename to bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/scheduler/PersonScheduler.java
index e0d797d..667f3e1 100644
--- a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/scheduler/PersonScheduler.java
+++ b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/scheduler/PersonScheduler.java
@@ -1,7 +1,7 @@
-package org.sadtech.bot.vcs.bitbucket.scheduler;
+package org.sadtech.bot.vcs.bitbucket.app.scheduler;
import lombok.RequiredArgsConstructor;
-import org.sadtech.bot.vcs.bitbucket.service.parser.PersonBitbucketParser;
+import org.sadtech.bot.vcs.bitbucket.app.service.parser.PersonBitbucketParser;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
diff --git a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/scheduler/PullRequestParserScheduler.java b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/scheduler/PullRequestParserScheduler.java
similarity index 93%
rename from bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/scheduler/PullRequestParserScheduler.java
rename to bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/scheduler/PullRequestParserScheduler.java
index de4a84b..e8d40a9 100644
--- a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/scheduler/PullRequestParserScheduler.java
+++ b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/scheduler/PullRequestParserScheduler.java
@@ -1,4 +1,4 @@
-package org.sadtech.bot.vcs.bitbucket.scheduler;
+package org.sadtech.bot.vcs.bitbucket.app.scheduler;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
diff --git a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/CommentAndTaskParser.java b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/CommentAndTaskParser.java
similarity index 98%
rename from bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/CommentAndTaskParser.java
rename to bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/CommentAndTaskParser.java
index df997c0..911e2c7 100644
--- a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/CommentAndTaskParser.java
+++ b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/CommentAndTaskParser.java
@@ -1,12 +1,12 @@
-package org.sadtech.bot.vcs.bitbucket.service;
+package org.sadtech.bot.vcs.bitbucket.app.service;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import org.sadtech.basic.context.page.Sheet;
import org.sadtech.basic.core.page.PaginationImpl;
+import org.sadtech.bot.vcs.bitbucket.app.service.executor.DataScan;
import org.sadtech.bot.vcs.bitbucket.sdk.domain.CommentJson;
import org.sadtech.bot.vcs.bitbucket.sdk.domain.Severity;
-import org.sadtech.bot.vcs.bitbucket.service.executor.DataScan;
import org.sadtech.bot.vcs.core.config.properties.BitbucketProperty;
import org.sadtech.bot.vcs.core.config.properties.CommentSchedulerProperty;
import org.sadtech.bot.vcs.core.config.properties.InitProperty;
diff --git a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/ExecutorScanner.java b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/ExecutorScanner.java
similarity index 88%
rename from bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/ExecutorScanner.java
rename to bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/ExecutorScanner.java
index 4d78e30..da62712 100644
--- a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/ExecutorScanner.java
+++ b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/ExecutorScanner.java
@@ -1,12 +1,12 @@
-package org.sadtech.bot.vcs.bitbucket.service;
+package org.sadtech.bot.vcs.bitbucket.app.service;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.sadtech.bot.vcs.bitbucket.app.service.executor.DataScan;
+import org.sadtech.bot.vcs.bitbucket.app.service.executor.Executor;
+import org.sadtech.bot.vcs.bitbucket.app.service.executor.Seeker;
import org.sadtech.bot.vcs.bitbucket.sdk.domain.CommentJson;
-import org.sadtech.bot.vcs.bitbucket.service.executor.DataScan;
-import org.sadtech.bot.vcs.bitbucket.service.executor.Executor;
-import org.sadtech.bot.vcs.bitbucket.service.executor.Seeker;
import org.sadtech.bot.vcs.core.config.properties.BitbucketProperty;
import org.springframework.stereotype.Service;
diff --git a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/converter/CommentJsonToComment.java b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/converter/CommentJsonToComment.java
similarity index 95%
rename from bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/converter/CommentJsonToComment.java
rename to bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/converter/CommentJsonToComment.java
index 9c82295..5f37c89 100644
--- a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/converter/CommentJsonToComment.java
+++ b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/converter/CommentJsonToComment.java
@@ -1,4 +1,4 @@
-package org.sadtech.bot.vcs.bitbucket.service.converter;
+package org.sadtech.bot.vcs.bitbucket.app.service.converter;
import org.sadtech.bot.vcs.bitbucket.sdk.domain.CommentJson;
diff --git a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/converter/CommentJsonToTaskConvert.java b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/converter/CommentJsonToTaskConvert.java
similarity index 92%
rename from bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/converter/CommentJsonToTaskConvert.java
rename to bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/converter/CommentJsonToTaskConvert.java
index 3b167c8..60da80a 100644
--- a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/converter/CommentJsonToTaskConvert.java
+++ b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/converter/CommentJsonToTaskConvert.java
@@ -1,6 +1,6 @@
-package org.sadtech.bot.vcs.bitbucket.service.converter;
+package org.sadtech.bot.vcs.bitbucket.app.service.converter;
-import org.sadtech.bot.vcs.bitbucket.exception.ConvertException;
+import org.sadtech.bot.vcs.bitbucket.app.exception.ConvertException;
import org.sadtech.bot.vcs.bitbucket.sdk.domain.CommentJson;
import org.sadtech.bot.vcs.bitbucket.sdk.domain.CommentState;
import org.sadtech.bot.vcs.bitbucket.sdk.domain.Severity;
diff --git a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/converter/PullRequestJsonConverter.java b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/converter/PullRequestJsonConverter.java
similarity index 96%
rename from bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/converter/PullRequestJsonConverter.java
rename to bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/converter/PullRequestJsonConverter.java
index 4a67a97..92e7c1c 100644
--- a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/converter/PullRequestJsonConverter.java
+++ b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/converter/PullRequestJsonConverter.java
@@ -1,7 +1,7 @@
-package org.sadtech.bot.vcs.bitbucket.service.converter;
+package org.sadtech.bot.vcs.bitbucket.app.service.converter;
import lombok.RequiredArgsConstructor;
-import org.sadtech.bot.vcs.bitbucket.exception.ConvertException;
+import org.sadtech.bot.vcs.bitbucket.app.exception.ConvertException;
import org.sadtech.bot.vcs.bitbucket.sdk.domain.Outcome;
import org.sadtech.bot.vcs.bitbucket.sdk.domain.Properties;
import org.sadtech.bot.vcs.bitbucket.sdk.domain.PullRequestJson;
diff --git a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/converter/UserJsonConverter.java b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/converter/UserJsonConverter.java
similarity index 89%
rename from bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/converter/UserJsonConverter.java
rename to bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/converter/UserJsonConverter.java
index e8846c0..aa08972 100644
--- a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/converter/UserJsonConverter.java
+++ b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/converter/UserJsonConverter.java
@@ -1,4 +1,4 @@
-package org.sadtech.bot.vcs.bitbucket.service.converter;
+package org.sadtech.bot.vcs.bitbucket.app.service.converter;
import org.sadtech.bot.vcs.bitbucket.sdk.domain.UserJson;
import org.sadtech.bot.vcs.core.domain.entity.Person;
diff --git a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/executor/DataScan.java b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/executor/DataScan.java
similarity index 68%
rename from bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/executor/DataScan.java
rename to bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/executor/DataScan.java
index 7429399..1a32fbd 100644
--- a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/executor/DataScan.java
+++ b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/executor/DataScan.java
@@ -1,4 +1,4 @@
-package org.sadtech.bot.vcs.bitbucket.service.executor;
+package org.sadtech.bot.vcs.bitbucket.app.service.executor;
import lombok.Data;
diff --git a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/executor/Executor.java b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/executor/Executor.java
similarity index 73%
rename from bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/executor/Executor.java
rename to bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/executor/Executor.java
index 4bf8692..894c22f 100644
--- a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/executor/Executor.java
+++ b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/executor/Executor.java
@@ -1,4 +1,4 @@
-package org.sadtech.bot.vcs.bitbucket.service.executor;
+package org.sadtech.bot.vcs.bitbucket.app.service.executor;
import lombok.NonNull;
diff --git a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/executor/ResultScan.java b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/executor/ResultScan.java
similarity index 83%
rename from bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/executor/ResultScan.java
rename to bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/executor/ResultScan.java
index 8468cf6..fafadaa 100644
--- a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/executor/ResultScan.java
+++ b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/executor/ResultScan.java
@@ -1,4 +1,4 @@
-package org.sadtech.bot.vcs.bitbucket.service.executor;
+package org.sadtech.bot.vcs.bitbucket.app.service.executor;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
diff --git a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/executor/Seeker.java b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/executor/Seeker.java
similarity index 93%
rename from bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/executor/Seeker.java
rename to bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/executor/Seeker.java
index 82e27dd..a9fc1a8 100644
--- a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/executor/Seeker.java
+++ b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/executor/Seeker.java
@@ -1,4 +1,4 @@
-package org.sadtech.bot.vcs.bitbucket.service.executor;
+package org.sadtech.bot.vcs.bitbucket.app.service.executor;
import lombok.RequiredArgsConstructor;
import org.sadtech.bot.vcs.bitbucket.sdk.domain.CommentJson;
diff --git a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/parser/PersonBitbucketParser.java b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/parser/PersonBitbucketParser.java
similarity index 97%
rename from bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/parser/PersonBitbucketParser.java
rename to bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/parser/PersonBitbucketParser.java
index 1a57e4e..6194617 100644
--- a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/parser/PersonBitbucketParser.java
+++ b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/parser/PersonBitbucketParser.java
@@ -1,4 +1,4 @@
-package org.sadtech.bot.vcs.bitbucket.service.parser;
+package org.sadtech.bot.vcs.bitbucket.app.service.parser;
import lombok.RequiredArgsConstructor;
import org.sadtech.bot.vcs.bitbucket.sdk.domain.UserJson;
diff --git a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/parser/PullRequestBitbucketParser.java b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/parser/PullRequestBitbucketParser.java
similarity index 99%
rename from bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/parser/PullRequestBitbucketParser.java
rename to bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/parser/PullRequestBitbucketParser.java
index 7f6d226..f3b9003 100644
--- a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/service/parser/PullRequestBitbucketParser.java
+++ b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/service/parser/PullRequestBitbucketParser.java
@@ -1,4 +1,4 @@
-package org.sadtech.bot.vcs.bitbucket.service.parser;
+package org.sadtech.bot.vcs.bitbucket.app.service.parser;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
diff --git a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/utils/Converter.java b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/utils/Converter.java
similarity index 93%
rename from bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/utils/Converter.java
rename to bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/utils/Converter.java
index 4d272be..486d498 100644
--- a/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/utils/Converter.java
+++ b/bitbucket-app/src/main/java/org/sadtech/bot/vcs/bitbucket/app/utils/Converter.java
@@ -1,4 +1,4 @@
-package org.sadtech.bot.vcs.bitbucket.utils;
+package org.sadtech.bot.vcs.bitbucket.app.utils;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
diff --git a/bitbucket-app/src/main/resources/application-dev.yaml b/bitbucket-app/src/main/resources/application-dev.yaml
index 242ebbe..bf3e7ab 100644
--- a/bitbucket-app/src/main/resources/application-dev.yaml
+++ b/bitbucket-app/src/main/resources/application-dev.yaml
@@ -24,12 +24,10 @@ bitbucketbot:
no-comment-count: 20
comment-count: 100
init:
- start-comment-id: 7807
- use: true
- server-send:
- url: http://188.225.35.149:8080/api/send
+ start-comment-id: 7914
+ use: false
bitbucket:
- token: Nzg5NjUyNDQwMzk2OlA+6naQz02+GxOG0Q9li/jnsn7E
+ token: ${BITBUCKET_ADMIN_TOKEN}
url-pull-request-open: http://192.168.236.164:7990/rest/api/1.0/dashboard/pull-requests?limit=150&state=OPEN
url-pull-request-close: http://192.168.236.164:7990/rest/api/1.0/dashboard/pull-requests?limit=150&closedSince=86400
url-pull-request-comment: http://192.168.236.164:7990/rest/api/1.0/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/comments/{commentId}
diff --git a/bitbucket-app/src/main/resources/application-prod.yaml b/bitbucket-app/src/main/resources/application-prod.yaml
index 3e87a56..00a8b35 100644
--- a/bitbucket-app/src/main/resources/application-prod.yaml
+++ b/bitbucket-app/src/main/resources/application-prod.yaml
@@ -18,18 +18,16 @@ spring:
non_contextual_creation: true
bitbucketbot:
scheduler:
- person: 0 */1 * * * *
+ person: 0 0 0 */1 * *
comment:
settings:
no-comment-count: 20
comment-count: 100
init:
start-comment-id: 7807
- use: true
- server-send:
- url: http://188.225.35.149:8080/api/send
+ use: false
bitbucket:
- token: Nzg5NjUyNDQwMzk2OlA+6naQz02+GxOG0Q9li/jnsn7E
+ token: ${BITBUCKET_ADMIN_TOKEN}
url-pull-request-open: http://localhost:7990/rest/api/1.0/dashboard/pull-requests?limit=150&state=OPEN
url-pull-request-close: http://localhost:7990/rest/api/1.0/dashboard/pull-requests?limit=150&closedSince=86400
url-pull-request-comment: http://localhost:7990/rest/api/1.0/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/comments/{commentId}
diff --git a/bitbucket-app/src/main/resources/application.yaml b/bitbucket-app/src/main/resources/application.yaml
index d43e964..7ccb652 100644
--- a/bitbucket-app/src/main/resources/application.yaml
+++ b/bitbucket-app/src/main/resources/application.yaml
@@ -1,5 +1,5 @@
server:
port: 8018
telegram-config:
- bot-username: tsc_test_two_bot
- bot-token: 1304335862:AAFXGxRkTZBiL9Gjce_oFoP2cOn7j8qEwDI
\ No newline at end of file
+ bot-username: ${TELEGRAM_BOT_USERNAME}
+ bot-token: ${TELEGRAM_BOT_TOKEN}
\ No newline at end of file
diff --git a/bitbucket-app/src/main/resources/logback.xml b/bitbucket-app/src/main/resources/logback.xml
index e106cf3..0335154 100644
--- a/bitbucket-app/src/main/resources/logback.xml
+++ b/bitbucket-app/src/main/resources/logback.xml
@@ -18,7 +18,7 @@
-
+
\ No newline at end of file
diff --git a/bot-core/src/main/java/org/sadtech/bot/vcs/core/domain/ReviewerStatus.java b/bot-core/src/main/java/org/sadtech/bot/vcs/core/domain/ReviewerStatus.java
index cb96db2..f9b4c14 100644
--- a/bot-core/src/main/java/org/sadtech/bot/vcs/core/domain/ReviewerStatus.java
+++ b/bot-core/src/main/java/org/sadtech/bot/vcs/core/domain/ReviewerStatus.java
@@ -10,11 +10,11 @@ import lombok.Getter;
@Getter
public enum ReviewerStatus {
- NEEDS_WORK("'NEEDS WORK'"),
- APPROVED("'APPROVED'"),
- UNAPPROVED("'UNAPPROVED'");
+ NEEDS_WORK("NEEDS WORK"),
+ APPROVED("APPROVED"),
+ UNAPPROVED("UNAPPROVED");
- private String value;
+ private final String value;
ReviewerStatus(String value) {
this.value = value;
diff --git a/bot-core/src/main/java/org/sadtech/bot/vcs/core/domain/change/pullrequest/NewPrChange.java b/bot-core/src/main/java/org/sadtech/bot/vcs/core/domain/change/pullrequest/NewPrChange.java
index 9133201..9a5f2b1 100644
--- a/bot-core/src/main/java/org/sadtech/bot/vcs/core/domain/change/pullrequest/NewPrChange.java
+++ b/bot-core/src/main/java/org/sadtech/bot/vcs/core/domain/change/pullrequest/NewPrChange.java
@@ -31,12 +31,10 @@ public class NewPrChange extends PrChange {
@Override
public String generateMessage() {
return MessageFormat.format(
- "{0} *Новый Pull Request*\n" +
- "[{1}]({2})" +
- "{3}\n" +
- "{4}" +
- "{5}: {6}\n\n",
- Smile.FUN, title, url, Smile.HR,
+ "{0} *Новый Pull Request*{1}" +
+ "[{2}]({3})" +
+ "{4}{5}{6}: {7}\n\n",
+ Smile.FUN, Smile.HR, title, url, Smile.HR,
(description != null && !"".equals(description)) ? description + Smile.HR : "",
Smile.AUTHOR, author
);
diff --git a/bot-core/src/main/java/org/sadtech/bot/vcs/core/domain/change/pullrequest/StatusPrChange.java b/bot-core/src/main/java/org/sadtech/bot/vcs/core/domain/change/pullrequest/StatusPrChange.java
index 5ee5572..8e8a1db 100644
--- a/bot-core/src/main/java/org/sadtech/bot/vcs/core/domain/change/pullrequest/StatusPrChange.java
+++ b/bot-core/src/main/java/org/sadtech/bot/vcs/core/domain/change/pullrequest/StatusPrChange.java
@@ -33,9 +33,9 @@ public class StatusPrChange extends PrChange {
public String generateMessage() {
return MessageFormat.format(
"{0} *Изменился статус вашего ПР*{1}" +
- "[{2}]({3})\n" +
- "{4} -> {5}\n\n",
- Smile.PEN, Smile.HR, title, url, oldStatus.name(), newStatus.name()
+ "[{2}]({3}){4}" +
+ "{5} -> {6}\n\n",
+ Smile.PEN, Smile.HR, title, url, Smile.HR, oldStatus.name(), newStatus.name()
);
}
diff --git a/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/PersonRepository.java b/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/PersonRepository.java
index 0b1850b..9f12541 100644
--- a/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/PersonRepository.java
+++ b/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/PersonRepository.java
@@ -28,4 +28,6 @@ public interface PersonRepository {
Optional findByLogin(@NonNull String login);
+ Optional findByTelegramId(@NonNull Long telegramId);
+
}
diff --git a/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/TaskRepository.java b/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/TaskRepository.java
index 910d11c..afd0518 100644
--- a/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/TaskRepository.java
+++ b/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/TaskRepository.java
@@ -1,6 +1,8 @@
package org.sadtech.bot.vcs.core.repository;
+import lombok.NonNull;
import org.sadtech.basic.context.repository.SimpleManagerRepository;
+import org.sadtech.bot.vcs.core.domain.TaskStatus;
import org.sadtech.bot.vcs.core.domain.entity.Task;
import java.time.LocalDateTime;
@@ -13,4 +15,6 @@ public interface TaskRepository extends SimpleManagerRepository {
List findByCreateDateBetween(LocalDateTime dateFrom, LocalDateTime dateTo);
+ List findAllByResponsibleAndStatus(@NonNull String responsibleLogin, @NonNull TaskStatus status);
+
}
diff --git a/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/impl/PersonRepositoryImpl.java b/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/impl/PersonRepositoryImpl.java
index 3ead285..6888703 100644
--- a/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/impl/PersonRepositoryImpl.java
+++ b/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/impl/PersonRepositoryImpl.java
@@ -71,4 +71,9 @@ public class PersonRepositoryImpl implements PersonRepository {
return jpaRepository.findById(login);
}
+ @Override
+ public Optional findByTelegramId(@NonNull Long telegramId) {
+ return jpaRepository.findByTelegramId(telegramId);
+ }
+
}
diff --git a/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/impl/TaskRepositoryImpl.java b/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/impl/TaskRepositoryImpl.java
index 3a465b4..dd7a3ad 100644
--- a/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/impl/TaskRepositoryImpl.java
+++ b/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/impl/TaskRepositoryImpl.java
@@ -1,6 +1,8 @@
package org.sadtech.bot.vcs.core.repository.impl;
+import lombok.NonNull;
import org.sadtech.basic.database.repository.manager.AbstractSimpleManagerRepository;
+import org.sadtech.bot.vcs.core.domain.TaskStatus;
import org.sadtech.bot.vcs.core.domain.entity.Task;
import org.sadtech.bot.vcs.core.repository.TaskRepository;
import org.sadtech.bot.vcs.core.repository.jpa.TaskRepositoryJpa;
@@ -30,4 +32,9 @@ public class TaskRepositoryImpl extends AbstractSimpleManagerRepository findAllByResponsibleAndStatus(@NonNull String responsibleLogin, @NonNull TaskStatus status) {
+ return taskRepositoryJpa.findAllByResponsibleAndStatus(responsibleLogin, status);
+ }
+
}
diff --git a/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/jpa/PersonJpaRepository.java b/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/jpa/PersonJpaRepository.java
index 54bf16f..7d1b02c 100644
--- a/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/jpa/PersonJpaRepository.java
+++ b/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/jpa/PersonJpaRepository.java
@@ -6,6 +6,7 @@ import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
/**
@@ -28,4 +29,6 @@ public interface PersonJpaRepository extends JpaRepository {
@Query("SELECT u.telegramId FROM Person u WHERE u.login IN :logins AND u.telegramId IS NOT NULL")
Set findAllTelegramIdByLogin(Set logins);
+ Optional findByTelegramId(Long telegramId);
+
}
diff --git a/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/jpa/TaskRepositoryJpa.java b/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/jpa/TaskRepositoryJpa.java
index 85ee04a..90c9a1f 100644
--- a/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/jpa/TaskRepositoryJpa.java
+++ b/bot-core/src/main/java/org/sadtech/bot/vcs/core/repository/jpa/TaskRepositoryJpa.java
@@ -1,6 +1,7 @@
package org.sadtech.bot.vcs.core.repository.jpa;
import lombok.NonNull;
+import org.sadtech.bot.vcs.core.domain.TaskStatus;
import org.sadtech.bot.vcs.core.domain.entity.Task;
import org.springframework.data.jpa.repository.JpaRepository;
@@ -14,4 +15,6 @@ public interface TaskRepositoryJpa extends JpaRepository {
List findByCreateDateBetween(@NonNull LocalDateTime dateFrom, @NonNull LocalDateTime dateTo);
+ List findAllByResponsibleAndStatus(String login, TaskStatus taskStatus);
+
}
diff --git a/bot-core/src/main/java/org/sadtech/bot/vcs/core/service/PersonService.java b/bot-core/src/main/java/org/sadtech/bot/vcs/core/service/PersonService.java
index 0fa5f42..84d2172 100644
--- a/bot-core/src/main/java/org/sadtech/bot/vcs/core/service/PersonService.java
+++ b/bot-core/src/main/java/org/sadtech/bot/vcs/core/service/PersonService.java
@@ -28,4 +28,8 @@ public interface PersonService {
List createAll(Collection newUsers);
+ boolean existsByTelegram(Long telegramId);
+
+ Optional getByTelegramId(@NonNull Long telegramId);
+
}
diff --git a/bot-core/src/main/java/org/sadtech/bot/vcs/core/service/PullRequestsService.java b/bot-core/src/main/java/org/sadtech/bot/vcs/core/service/PullRequestsService.java
index d12992e..2b66e29 100644
--- a/bot-core/src/main/java/org/sadtech/bot/vcs/core/service/PullRequestsService.java
+++ b/bot-core/src/main/java/org/sadtech/bot/vcs/core/service/PullRequestsService.java
@@ -16,7 +16,13 @@ import java.util.Set;
public interface PullRequestsService extends SimpleManagerService, FilterService {
- @NonNull
+ /**
+ * Получить все пулреквесты ревьювера с определенным статусом.
+ *
+ * @param login Логин ревьювера
+ * @param reviewerStatus Статус ревьювера в ПР
+ * @param pullRequestStatuses Статус ПР
+ */
List getAllByReviewerAndStatuses(@NonNull String login, @NonNull ReviewerStatus reviewerStatus, @NonNull Set pullRequestStatuses);
List getAllByAuthorAndReviewerStatus(@NonNull String login, @NonNull ReviewerStatus status);
diff --git a/bot-core/src/main/java/org/sadtech/bot/vcs/core/service/TaskService.java b/bot-core/src/main/java/org/sadtech/bot/vcs/core/service/TaskService.java
index 1605b27..c1262e4 100644
--- a/bot-core/src/main/java/org/sadtech/bot/vcs/core/service/TaskService.java
+++ b/bot-core/src/main/java/org/sadtech/bot/vcs/core/service/TaskService.java
@@ -2,6 +2,7 @@ package org.sadtech.bot.vcs.core.service;
import lombok.NonNull;
import org.sadtech.basic.context.service.SimpleManagerService;
+import org.sadtech.bot.vcs.core.domain.TaskStatus;
import org.sadtech.bot.vcs.core.domain.entity.Comment;
import org.sadtech.bot.vcs.core.domain.entity.Task;
@@ -16,4 +17,6 @@ public interface TaskService extends SimpleManagerService {
List getAllBetweenDate(@NonNull LocalDateTime dateFrom, @NonNull LocalDateTime dateTo);
+ List getAllByResponsibleAndStatus(@NonNull String login, @NonNull TaskStatus open);
+
}
diff --git a/bot-core/src/main/java/org/sadtech/bot/vcs/core/service/impl/PersonServiceImpl.java b/bot-core/src/main/java/org/sadtech/bot/vcs/core/service/impl/PersonServiceImpl.java
index d537b5f..368ec8e 100644
--- a/bot-core/src/main/java/org/sadtech/bot/vcs/core/service/impl/PersonServiceImpl.java
+++ b/bot-core/src/main/java/org/sadtech/bot/vcs/core/service/impl/PersonServiceImpl.java
@@ -89,4 +89,14 @@ public class PersonServiceImpl implements PersonService {
return newPersons.stream().map(this::create).collect(Collectors.toList());
}
+ @Override
+ public boolean existsByTelegram(Long telegramId) {
+ return personRepository.existsByTelegramId(telegramId);
+ }
+
+ @Override
+ public Optional getByTelegramId(@NonNull Long telegramId) {
+ return personRepository.findByTelegramId(telegramId);
+ }
+
}
diff --git a/bot-core/src/main/java/org/sadtech/bot/vcs/core/service/impl/TaskServiceImpl.java b/bot-core/src/main/java/org/sadtech/bot/vcs/core/service/impl/TaskServiceImpl.java
index a551091..5d335ff 100644
--- a/bot-core/src/main/java/org/sadtech/bot/vcs/core/service/impl/TaskServiceImpl.java
+++ b/bot-core/src/main/java/org/sadtech/bot/vcs/core/service/impl/TaskServiceImpl.java
@@ -169,6 +169,11 @@ public class TaskServiceImpl extends AbstractSimpleManagerService im
return taskRepository.findByCreateDateBetween(dateFrom, dateTo);
}
+ @Override
+ public List getAllByResponsibleAndStatus(@NonNull String login, @NonNull TaskStatus status) {
+ return taskRepository.findAllByResponsibleAndStatus(login, status);
+ }
+
private void notifyNewTask(Task task) {
final PullRequest pullRequest = pullRequestsService.getById(task.getPullRequestId())
.orElseThrow(() -> new NotFoundException("ПР не найден"));
diff --git a/bot-core/src/main/java/org/sadtech/bot/vcs/core/utils/Smile.java b/bot-core/src/main/java/org/sadtech/bot/vcs/core/utils/Smile.java
index f0b50b7..2af8b6a 100644
--- a/bot-core/src/main/java/org/sadtech/bot/vcs/core/utils/Smile.java
+++ b/bot-core/src/main/java/org/sadtech/bot/vcs/core/utils/Smile.java
@@ -26,7 +26,7 @@ public enum Smile {
DAY_3("\uD83C\uDF18"),
DAY_4("\uD83C\uDF11"),
DAY_5("\uD83C\uDF1A"),
- TASK("\uD83E\uDD39\uD83C\uDFFB\u200D♂️"),
+ TASK("\uD83D\uDCBC"),
MEGA_FUN("\uD83D\uDE02"),
DANGEROUS("⚠️"),
BELL("\uD83D\uDECE"),
diff --git a/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/config/TelegramBotConfig.java b/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/config/TelegramBotConfig.java
index 3122411..3221cbc 100644
--- a/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/config/TelegramBotConfig.java
+++ b/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/config/TelegramBotConfig.java
@@ -2,7 +2,8 @@ package org.sadtech.bot.vcs.telegram.config;
import org.sadtech.autoresponder.repository.UnitPointerRepository;
import org.sadtech.autoresponder.repository.UnitPointerRepositoryMap;
-import org.sadtech.social.bot.domain.unit.AnswerProcessing;
+import org.sadtech.bot.vcs.telegram.service.ReplaceUrlLocalhost;
+import org.sadtech.social.bot.domain.unit.AnswerCheck;
import org.sadtech.social.core.domain.content.Mail;
import org.sadtech.social.core.repository.impl.local.MailRepositoryList;
import org.sadtech.social.core.service.MailService;
@@ -43,13 +44,13 @@ public class TelegramBotConfig {
@Bean
public MessageAutoresponderTelegram messageAutoresponderTelegram(
- AnswerProcessing menu,
+ AnswerCheck regCheck,
Sending sending,
MessageService messageService,
UnitPointerRepository unitPointerRepository
) {
return new MessageAutoresponderTelegram(
- Collections.singleton(menu),
+ Collections.singleton(regCheck),
sending,
messageService,
unitPointerRepository
@@ -57,8 +58,13 @@ public class TelegramBotConfig {
}
@Bean
- public Sending sending(TelegramConnect telegramConnect) {
- return new TelegramSender(telegramConnect);
+ public Sending sending(
+ TelegramConnect telegramConnect,
+ ReplaceUrlLocalhost replaceUrlLocalhost
+ ) {
+ final TelegramSender telegramSender = new TelegramSender(telegramConnect);
+ telegramSender.setSendPreProcessing(replaceUrlLocalhost);
+ return telegramSender;
}
@Bean
diff --git a/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/service/MessageSendTelegramService.java b/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/service/MessageSendTelegramService.java
index 4a1efcf..5ff127c 100644
--- a/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/service/MessageSendTelegramService.java
+++ b/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/service/MessageSendTelegramService.java
@@ -6,7 +6,6 @@ import org.sadtech.bot.vcs.core.domain.MessageSend;
import org.sadtech.bot.vcs.core.service.MessageSendService;
import org.sadtech.social.core.domain.BoxAnswer;
import org.sadtech.social.core.service.sender.Sending;
-import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Service;
/**
@@ -14,7 +13,7 @@ import org.springframework.stereotype.Service;
*
* @author upagge 17.09.2020
*/
-@Profile("prod")
+//@Profile("prod")
@Service
@RequiredArgsConstructor
public class MessageSendTelegramService implements MessageSendService {
diff --git a/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/service/MessageSendTestService.java b/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/service/MessageSendTestService.java
index 2d5891f..eff2258 100644
--- a/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/service/MessageSendTestService.java
+++ b/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/service/MessageSendTestService.java
@@ -4,14 +4,13 @@ import lombok.NonNull;
import org.sadtech.bot.vcs.core.domain.MessageSend;
import org.sadtech.bot.vcs.core.service.MessageSendService;
import org.springframework.context.annotation.Profile;
-import org.springframework.stereotype.Service;
/**
* // TODO: 17.09.2020 Добавить описание.
*
* @author upagge 17.09.2020
*/
-@Service
+//@Service
@Profile("dev")
public class MessageSendTestService implements MessageSendService {
diff --git a/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/service/ReplaceUrlLocalhost.java b/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/service/ReplaceUrlLocalhost.java
new file mode 100644
index 0000000..594e4e6
--- /dev/null
+++ b/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/service/ReplaceUrlLocalhost.java
@@ -0,0 +1,19 @@
+package org.sadtech.bot.vcs.telegram.service;
+
+import org.sadtech.telegram.bot.service.SendPreProcessing;
+import org.springframework.stereotype.Component;
+
+/**
+ * // TODO: 18.09.2020 Добавить описание.
+ *
+ * @author upagge 18.09.2020
+ */
+@Component
+public class ReplaceUrlLocalhost implements SendPreProcessing {
+
+ @Override
+ public String pretreatment(String s) {
+ return s.replace("localhost", "192.168.236.164");
+ }
+
+}
diff --git a/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/service/unit/PullRequestProcessing.java b/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/service/unit/PullRequestProcessing.java
new file mode 100644
index 0000000..081286c
--- /dev/null
+++ b/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/service/unit/PullRequestProcessing.java
@@ -0,0 +1,62 @@
+package org.sadtech.bot.vcs.telegram.service.unit;
+
+import lombok.RequiredArgsConstructor;
+import org.sadtech.bot.vcs.core.domain.PullRequestStatus;
+import org.sadtech.bot.vcs.core.domain.ReviewerStatus;
+import org.sadtech.bot.vcs.core.domain.entity.Person;
+import org.sadtech.bot.vcs.core.domain.entity.PullRequest;
+import org.sadtech.bot.vcs.core.exception.NotFoundException;
+import org.sadtech.bot.vcs.core.service.PersonService;
+import org.sadtech.bot.vcs.core.service.PullRequestsService;
+import org.sadtech.bot.vcs.core.utils.Smile;
+import org.sadtech.social.bot.service.usercode.ProcessingData;
+import org.sadtech.social.core.domain.BoxAnswer;
+import org.sadtech.social.core.domain.content.Message;
+import org.springframework.stereotype.Component;
+
+import java.text.MessageFormat;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * // TODO: 17.09.2020 Добавить описание.
+ *
+ * @author upagge 17.09.2020
+ */
+@Component
+@RequiredArgsConstructor
+public class PullRequestProcessing implements ProcessingData {
+
+ private final PersonService personService;
+ private final PullRequestsService pullRequestsService;
+
+ @Override
+ public BoxAnswer processing(Message message) {
+ final Person person = personService.getByTelegramId(message.getPersonId())
+ .orElseThrow(() -> new NotFoundException("Пользователь не найден"));
+ final List pullRequests = pullRequestsService.getAllByReviewerAndStatuses(person.getLogin(), ReviewerStatus.NEEDS_WORK, Collections.singleton(PullRequestStatus.OPEN));
+ String messageAnswer;
+ if (pullRequests.isEmpty()) {
+ messageAnswer = "Все ПР проверены :)";
+ } else {
+ final String prAnswer = pullRequests.stream()
+ .map(this::convert)
+ .collect(Collectors.joining("\n"));
+ messageAnswer = MessageFormat.format(
+ "Вам необходимо посмотреть следующие ПР:{0}{1}",
+ Smile.HR, prAnswer
+ );
+ }
+ return BoxAnswer.of(messageAnswer);
+ }
+
+ private String convert(PullRequest pullRequest) {
+ return MessageFormat.format(
+ "- [{0}]({1})",
+ pullRequest.getTitle(),
+ pullRequest.getUrl()
+ );
+ }
+
+}
diff --git a/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/service/unit/TaskProcessing.java b/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/service/unit/TaskProcessing.java
new file mode 100644
index 0000000..3b56a2f
--- /dev/null
+++ b/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/service/unit/TaskProcessing.java
@@ -0,0 +1,58 @@
+package org.sadtech.bot.vcs.telegram.service.unit;
+
+import lombok.RequiredArgsConstructor;
+import org.sadtech.bot.vcs.core.domain.TaskStatus;
+import org.sadtech.bot.vcs.core.domain.entity.Person;
+import org.sadtech.bot.vcs.core.domain.entity.Task;
+import org.sadtech.bot.vcs.core.exception.NotFoundException;
+import org.sadtech.bot.vcs.core.service.PersonService;
+import org.sadtech.bot.vcs.core.service.TaskService;
+import org.sadtech.social.bot.service.usercode.ProcessingData;
+import org.sadtech.social.core.domain.BoxAnswer;
+import org.sadtech.social.core.domain.content.Message;
+import org.springframework.stereotype.Component;
+
+import java.text.MessageFormat;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * // TODO: 17.09.2020 Добавить описание.
+ *
+ * @author upagge 17.09.2020
+ */
+@Component
+@RequiredArgsConstructor
+public class TaskProcessing implements ProcessingData {
+
+ private final PersonService personService;
+ private final TaskService taskService;
+
+ @Override
+ public BoxAnswer processing(Message message) {
+ final Person person = personService.getByTelegramId(message.getPersonId())
+ .orElseThrow(() -> new NotFoundException("Ошибочка"));
+ final List tasks = taskService.getAllByResponsibleAndStatus(person.getLogin(), TaskStatus.OPEN);
+ String messageText;
+ if (tasks.isEmpty()) {
+ messageText = "Задач нет";
+ } else {
+ final String tasksString = tasks.stream()
+ .map(this::createTaskString)
+ .collect(Collectors.joining("\n"));
+ messageText = MessageFormat.format(
+ "Список ваших задач:\n\n{0}",
+ tasksString
+ );
+ }
+ return BoxAnswer.of(messageText);
+ }
+
+ private String createTaskString(Task task) {
+ return MessageFormat.format(
+ "- [{0}]({1})",
+ task.getDescription(), task.getUrl()
+ );
+ }
+
+}
diff --git a/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/unit/UnitConfig.java b/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/unit/UnitConfig.java
index 4340c63..2da837b 100644
--- a/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/unit/UnitConfig.java
+++ b/telegram-bot/src/main/java/org/sadtech/bot/vcs/telegram/unit/UnitConfig.java
@@ -1,8 +1,16 @@
package org.sadtech.bot.vcs.telegram.unit;
+import lombok.RequiredArgsConstructor;
+import org.sadtech.bot.vcs.core.service.PersonService;
+import org.sadtech.bot.vcs.telegram.service.unit.PullRequestProcessing;
+import org.sadtech.bot.vcs.telegram.service.unit.TaskProcessing;
+import org.sadtech.social.bot.domain.unit.AnswerCheck;
import org.sadtech.social.bot.domain.unit.AnswerProcessing;
+import org.sadtech.social.bot.domain.unit.AnswerText;
import org.sadtech.social.core.domain.BoxAnswer;
import org.sadtech.social.core.domain.content.Mail;
+import org.sadtech.social.core.domain.content.Message;
+import org.sadtech.social.core.utils.KeyBoards;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -12,10 +20,67 @@ import org.springframework.context.annotation.Configuration;
* @author upagge [30.01.2020]
*/
@Configuration
+@RequiredArgsConstructor
public class UnitConfig {
+ private final PersonService personService;
+
@Bean
- public AnswerProcessing menu() {
+ public AnswerCheck regCheck(
+ AnswerProcessing noRegister,
+ AnswerText menu
+ ) {
+ return AnswerCheck.builder()
+ .check(
+ message -> personService.existsByTelegram(message.getPersonId())
+ )
+ .unitFalse(noRegister)
+ .unitTrue(menu)
+ .build();
+ }
+
+ @Bean
+ public AnswerText menu(
+ AnswerProcessing getTasks,
+ AnswerProcessing getPr
+ ) {
+ return AnswerText.builder()
+ .boxAnswer(
+ BoxAnswer.builder()
+ .message("Привет, выбери пункт меню!")
+ .keyBoard(KeyBoards.verticalMenuString(
+ "Мои задачи", "Проверить ПР"
+ ))
+ .build()
+ )
+ .nextUnit(getTasks)
+ .nextUnit(getPr)
+ .build();
+ }
+
+ @Bean
+ public AnswerProcessing getTasks(
+ TaskProcessing taskProcessing
+ ) {
+ return AnswerProcessing.builder()
+ .processingData(taskProcessing)
+ .phrase("Мои задачи")
+ .build();
+ }
+
+ @Bean
+ public AnswerProcessing getPr(
+ PullRequestProcessing pullRequestProcessing
+ ) {
+ return AnswerProcessing.builder()
+ .processingData(pullRequestProcessing)
+ .phrase("Проверить ПР")
+ .build();
+ }
+
+
+ @Bean
+ public AnswerProcessing noRegister() {
return AnswerProcessing.builder()
.processingData(message ->
BoxAnswer.builder()