Skip to content

Commit e5f9485

Browse files
committed
Added salary method for specific personnel
1 parent 35ca320 commit e5f9485

File tree

6 files changed

+180
-0
lines changed

6 files changed

+180
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.cevher.ms.salary.domain;
2+
3+
import lombok.*;
4+
5+
import javax.persistence.*;
6+
import java.io.Serializable;
7+
import java.time.LocalDate;
8+
9+
@Getter
10+
@Setter
11+
@NoArgsConstructor
12+
@AllArgsConstructor
13+
@Builder
14+
@ToString
15+
@EqualsAndHashCode
16+
@Entity
17+
@Table(name = "salary")
18+
public class Salary implements Serializable {
19+
20+
@Id
21+
@GeneratedValue(strategy = GenerationType.IDENTITY)
22+
private Long id;
23+
private LocalDate salaryDate;
24+
private Long personId;
25+
private Double amount;
26+
private LocalDate createdAt;
27+
private String createdBy;
28+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.cevher.ms.salary.dto;
2+
3+
import lombok.*;
4+
5+
import javax.persistence.Entity;
6+
import javax.persistence.Id;
7+
import javax.persistence.Table;
8+
import java.io.Serializable;
9+
import java.time.LocalDate;
10+
import java.time.chrono.ChronoLocalDate;
11+
import java.time.format.DateTimeFormatter;
12+
13+
@Getter
14+
@Setter
15+
@NoArgsConstructor
16+
@AllArgsConstructor
17+
@Builder
18+
@ToString
19+
@EqualsAndHashCode
20+
public class SalaryDto {
21+
private Long id;
22+
private LocalDate salaryDate;
23+
private Integer salaryTerm;
24+
private Long personId;
25+
private Double amount;
26+
27+
public Integer getSalaryTerm() {
28+
return Integer.parseInt(salaryDate.format(DateTimeFormatter.ofPattern("yyyyMM")));
29+
}
30+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.cevher.ms.salary.exception;
2+
3+
public class AlreadySalaryException extends RuntimeException {
4+
public AlreadySalaryException(String current_salary_found) {
5+
super(current_salary_found);
6+
}
7+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.cevher.ms.salary.repository;
2+
3+
import com.cevher.ms.salary.domain.Salary;
4+
import com.cevher.ms.salary.dto.SalaryDto;
5+
import org.springframework.data.domain.Page;
6+
import org.springframework.data.domain.Pageable;
7+
import org.springframework.data.jpa.repository.JpaRepository;
8+
9+
import java.time.LocalDate;
10+
import java.util.Optional;
11+
12+
13+
public interface SalaryRepository
14+
extends JpaRepository<Salary, Long> {
15+
Page<Salary> findAllByPersonId(Long personId, Pageable pageable);
16+
Optional<Salary> findByPersonIdAndSalaryDate(Long personId, LocalDate salaryDate);
17+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.cevher.ms.salary.rest;
2+
3+
import com.cevher.ms.salary.dto.SalaryDto;
4+
import com.cevher.ms.salary.service.SalaryService;
5+
import lombok.RequiredArgsConstructor;
6+
import lombok.extern.slf4j.Slf4j;
7+
import org.apache.tomcat.jni.Local;
8+
import org.springframework.data.domain.Pageable;
9+
import org.springframework.http.ResponseEntity;
10+
import org.springframework.web.bind.annotation.*;
11+
12+
import java.time.LocalDate;
13+
import java.util.List;
14+
15+
@RestController
16+
@Slf4j
17+
@RequiredArgsConstructor
18+
@RequestMapping("/")
19+
public class SalaryResource {
20+
private final SalaryService salaryService;
21+
22+
23+
public ResponseEntity<List<SalaryDto>> getAllSalaryByPersonId(Long personId, Pageable pageable) {
24+
var sal = salaryService.findAllByPersonId(personId, pageable);
25+
return ResponseEntity.ok().body(sal.getContent());
26+
}
27+
28+
public void deleteSalary(Long personId, LocalDate salaryDate) {
29+
30+
}
31+
32+
@PostMapping("addSalary/{personId}/{salary}")
33+
public void addSalary(@PathVariable("personId") long personId,
34+
@PathVariable("salary") double salary) {
35+
salaryService.addSalary(personId, salary);
36+
}
37+
38+
public void addSalaryWithDate(Long person, Double salary, LocalDate salaryDate) {
39+
40+
}
41+
42+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.cevher.ms.salary.service;
2+
3+
import com.cevher.ms.salary.domain.Salary;
4+
import com.cevher.ms.salary.dto.SalaryDto;
5+
import com.cevher.ms.salary.exception.AlreadySalaryException;
6+
import com.cevher.ms.salary.repository.SalaryRepository;
7+
import lombok.RequiredArgsConstructor;
8+
import lombok.extern.slf4j.Slf4j;
9+
import org.springframework.data.domain.Page;
10+
import org.springframework.data.domain.Pageable;
11+
import org.springframework.stereotype.Service;
12+
13+
import java.time.LocalDate;
14+
import java.util.List;
15+
16+
17+
@Service
18+
@RequiredArgsConstructor
19+
@Slf4j
20+
public class SalaryService {
21+
private final SalaryRepository salaryRepository;
22+
23+
public Page<SalaryDto> findAllByPersonId(Long personId, Pageable pageable) {
24+
return salaryRepository.findAllByPersonId(personId, pageable)
25+
.map(s -> SalaryDto.builder()
26+
.id(s.getId())
27+
.personId(s.getPersonId())
28+
.salaryDate(s.getSalaryDate())
29+
.amount(s.getAmount())
30+
.build());
31+
32+
33+
}
34+
35+
private void checkSalaryByPerson(Long personId, LocalDate salaryDate) {
36+
salaryRepository
37+
.findByPersonIdAndSalaryDate(personId, salaryDate)
38+
.ifPresent(x -> {
39+
throw new AlreadySalaryException("Current Salary Found");
40+
});
41+
}
42+
43+
public void addSalary(Long personId, Double personSalary) {
44+
45+
checkSalaryByPerson(personId, LocalDate.now());
46+
47+
Salary salary = Salary.builder()
48+
.personId(personId)
49+
.createdAt(LocalDate.now())
50+
.createdBy("system")
51+
.amount(personSalary)
52+
.salaryDate(LocalDate.now())
53+
.build();
54+
salaryRepository.save(salary);
55+
}
56+
}

0 commit comments

Comments
 (0)