Skip to content

Commit 5fd5a6c

Browse files
committed
main logic
1 parent f0f6175 commit 5fd5a6c

File tree

2 files changed

+43
-4
lines changed

2 files changed

+43
-4
lines changed

pom.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,19 @@
4545
<artifactId>spring-boot-starter-test</artifactId>
4646
<scope>test</scope>
4747
</dependency>
48+
<dependency>
49+
<groupId>com.h2database</groupId>
50+
<artifactId>h2</artifactId>
51+
<scope>test</scope>
52+
</dependency>
53+
<dependency>
54+
<groupId>junit</groupId>
55+
<artifactId>junit</artifactId>
56+
<scope>test</scope>
57+
</dependency>
4858
</dependencies>
4959

60+
5061
<build>
5162
<plugins>
5263
<plugin>

src/main/java/com/serve/api/service/ArriveService.java

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,11 @@
1010
import lombok.AccessLevel;
1111
import lombok.AllArgsConstructor;
1212
import lombok.experimental.FieldDefaults;
13+
import org.slf4j.Logger;
14+
import org.slf4j.LoggerFactory;
1315
import org.springframework.stereotype.Service;
1416

17+
import java.time.Duration;
1518
import java.time.Period;
1619
import java.util.Date;
1720
import java.util.List;
@@ -28,10 +31,16 @@ public class ArriveService {
2831
WorkerRepository workerRepository;
2932
ArriveMapper mapper;
3033

34+
Logger logger = LoggerFactory.getLogger(ArriveService.class);
35+
3136
public ArriveDto get(Long id) {
3237

33-
if (Objects.isNull(id)) throw new NullPointerException("Id is null");
38+
logger.info("Get Arrive by id" + id);
3439

40+
if (Objects.isNull(id)) {
41+
logger.warn("Id is null");
42+
throw new NullPointerException("Id is null");
43+
}
3544
return mapper.toDto(repository.findById(id).orElseThrow());
3645
}
3746

@@ -41,7 +50,6 @@ public void create(ArriveDto dto) {
4150

4251
Arrive arrive = mapper.toModel(dto, companyRepository, workerRepository);
4352

44-
4553
if(arrive.getType() == Type.Exit) {
4654

4755
Arrive fake = new Arrive();
@@ -109,16 +117,36 @@ public int getHours(Long userId, Period period, Type type){
109117
return 0;
110118
}
111119

112-
public int getHours(Long workerId, Period period){
120+
public long getSeconds(Long workerId, Period period){
113121

114122
//якщо кількість входів != кількості виходів == помилка
115123
// вихід - вхід = робоічі години
116124
// загальні += робочі години
117125
// return загальні - кількість входів * робочий день(години)
118126

119127

128+
// TODO: 07.08.22 первести фільтрацію на базу даних (так знімітся навантаження з апки)
129+
// TODO: 07.08.22 зробити фільтафію за періодом
120130

121-
return 0;
131+
long totalTimeInSeconds = 0;
132+
133+
List<Arrive> exit = repository
134+
.findAll()
135+
.stream()
136+
.filter(arrive -> Objects.equals(arrive.getType(), Type.Exit))
137+
.filter(arrive -> Objects.nonNull(arrive.getEnter_id()))
138+
.collect(Collectors.toList());
139+
140+
for (Arrive arrive : exit){
141+
Arrive enter = repository
142+
.findById(arrive.getEnter_id())
143+
.orElseThrow();
144+
Duration duration = Duration
145+
.between(enter.getCreateDateTime(), arrive.getCreateDateTime());
146+
totalTimeInSeconds += duration.getSeconds();
147+
}
148+
149+
return totalTimeInSeconds;
122150
}
123151

124152

0 commit comments

Comments
 (0)