add families

This commit is contained in:
mirrerror
2023-12-12 22:41:14 +02:00
parent 3fbd7a1440
commit 2f56a5b76d
12 changed files with 156 additions and 56 deletions

View File

@@ -23,10 +23,7 @@ import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.*;
@RestController
@RequestMapping("/users")
@@ -86,7 +83,7 @@ public class UserController {
@GetMapping()
@PreAuthorize("hasRole('ADMIN')")
public ResponseEntity<ArrayList<UserDTO>> getAllUsers() {
public ResponseEntity<List<UserDTO>> getAllUsers() {
ArrayList<User> users = new ArrayList<>(userService.getUsers());
return ResponseEntity.ok(userMapper.toDto(users));

View File

@@ -0,0 +1,14 @@
package com.faf223.expensetrackerfaf.dto;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class FamilyCreationDTO {
@NotNull(message = "Name must not be null")
@NotEmpty(message = "Name must not be empty")
private String name;
}

View File

@@ -0,0 +1,14 @@
package com.faf223.expensetrackerfaf.dto;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class FamilyDTO {
@NotNull(message = "Name must not be null")
@NotEmpty(message = "Name must not be empty")
private String name;
}

View File

@@ -0,0 +1,25 @@
package com.faf223.expensetrackerfaf.dto.mappers;
import com.faf223.expensetrackerfaf.dto.FamilyCreationDTO;
import com.faf223.expensetrackerfaf.dto.FamilyDTO;
import com.faf223.expensetrackerfaf.model.Family;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
@Component
@RequiredArgsConstructor
public class FamilyMapper {
private final UserMapper userMapper;
public FamilyDTO toDto(Family family) {
return new FamilyDTO(family.getId(), family.getName(), userMapper.toDto(family.getMembers()));
}
public Family toFamily(FamilyCreationDTO familyCreationDTO) {
Family family = new Family();
family.setName(familyCreationDTO.getName());
return family;
}
}

View File

@@ -2,12 +2,9 @@ package com.faf223.expensetrackerfaf.dto.mappers;
import com.faf223.expensetrackerfaf.dto.IncomeCreationDTO;
import com.faf223.expensetrackerfaf.dto.IncomeDTO;
import com.faf223.expensetrackerfaf.model.Expense;
import com.faf223.expensetrackerfaf.model.Income;
import com.faf223.expensetrackerfaf.service.IncomeCategoryService;
import com.faf223.expensetrackerfaf.service.IncomeService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.LocalDate;

View File

@@ -6,6 +6,7 @@ import com.faf223.expensetrackerfaf.model.User;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
public class UserMapper {
@@ -14,10 +15,8 @@ public class UserMapper {
return new UserDTO(user.getFirstName(), user.getLastName(), user.getUsername());
}
public ArrayList<UserDTO> toDto(ArrayList<User> user) {
ArrayList<UserDTO> list = new ArrayList<>();
public List<UserDTO> toDto(List<User> user) {
List<UserDTO> list = new ArrayList<>();
for (User u : user)
list.add(toDto(u));

View File

@@ -38,9 +38,6 @@ public class Expense implements IMoneyTransaction {
@DecimalMin(value = "0.0", inclusive = false)
private BigDecimal amount;
public Expense(LocalDate date, BigDecimal amount) {
}
public Expense(ExpenseCategory expenseCategory, LocalDate date, BigDecimal amount) {
this.category = expenseCategory;
this.date = date;

View File

@@ -0,0 +1,28 @@
package com.faf223.expensetrackerfaf.model;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotEmpty;
import lombok.*;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity(name = "families")
@Builder
public class Family {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "family_id")
private Long id;
@NotEmpty
private String name;
@OneToMany(mappedBy = "family", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@ToString.Exclude
private List<User> members;
}

View File

@@ -1,5 +1,6 @@
package com.faf223.expensetrackerfaf.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
@@ -45,4 +46,10 @@
@OneToMany(mappedBy = "user", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@ToString.Exclude
private List<Income> incomes;
@ManyToOne
@JoinColumn(name = "family_id")
@ToString.Exclude
@JsonIgnore
private Family family;
}

View File

@@ -0,0 +1,9 @@
package com.faf223.expensetrackerfaf.repository;
import com.faf223.expensetrackerfaf.model.IncomeCategory;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface FamilyRepository extends JpaRepository<IncomeCategory, Long> {
}

View File

@@ -0,0 +1,13 @@
package com.faf223.expensetrackerfaf.service;
import com.faf223.expensetrackerfaf.repository.FamilyRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class FamilyService {
private final FamilyRepository familyRepository;
}