diff --git a/TODO b/TODO index f46a95e..ef89f69 100644 --- a/TODO +++ b/TODO @@ -14,4 +14,5 @@ RESUELTO --------------------------------- - cambiar contraseƱa (?) - todos los socios en dropdown ingresos - validacion LE/COlab -- createdAt custom en ing,gastos \ No newline at end of file +- createdAt custom en ing,gastos +- editar createdAt \ No newline at end of file diff --git a/huertos/src/main/java/net/miarma/backend/huertos/controller/IncomeController.java b/huertos/src/main/java/net/miarma/backend/huertos/controller/IncomeController.java index eb59b6f..26794a5 100644 --- a/huertos/src/main/java/net/miarma/backend/huertos/controller/IncomeController.java +++ b/huertos/src/main/java/net/miarma/backend/huertos/controller/IncomeController.java @@ -98,6 +98,7 @@ public class IncomeController { @PathVariable("income_id") UUID incomeId, @RequestBody IncomeDto.Request dto ) { + IO.println(dto.getCreatedAt()); return ResponseEntity.ok( IncomeMapper.toResponse( incomeService.update( diff --git a/huertos/src/main/java/net/miarma/backend/huertos/controller/MemberController.java b/huertos/src/main/java/net/miarma/backend/huertos/controller/MemberController.java index 92f65b0..4a48c92 100644 --- a/huertos/src/main/java/net/miarma/backend/huertos/controller/MemberController.java +++ b/huertos/src/main/java/net/miarma/backend/huertos/controller/MemberController.java @@ -1,6 +1,7 @@ package net.miarma.backend.huertos.controller; import net.miarma.backend.huertos.dto.*; +import net.miarma.backend.huertos.dto.view.VIncomesWithInfoDto; import net.miarma.backend.huertos.mapper.IncomeMapper; import net.miarma.backend.huertos.mapper.RequestMapper; import net.miarma.backend.huertos.security.HuertosPrincipal; @@ -81,7 +82,7 @@ public class MemberController { @GetMapping("/number/{member_number}/incomes") @PreAuthorize("hasAnyRole('HUERTOS_ROLE_ADMIN', 'HUERTOS_ROLE_DEV')") - public ResponseEntity> getMemberIncomes(@PathVariable("member_number") Integer memberNumber) { + public ResponseEntity> getMemberIncomes(@PathVariable("member_number") Integer memberNumber) { return ResponseEntity.ok(memberService.getIncomes(memberNumber)); } diff --git a/huertos/src/main/java/net/miarma/backend/huertos/dto/MemberProfileDto.java b/huertos/src/main/java/net/miarma/backend/huertos/dto/MemberProfileDto.java index a87a1b2..4717fcf 100644 --- a/huertos/src/main/java/net/miarma/backend/huertos/dto/MemberProfileDto.java +++ b/huertos/src/main/java/net/miarma/backend/huertos/dto/MemberProfileDto.java @@ -1,5 +1,6 @@ package net.miarma.backend.huertos.dto; +import net.miarma.backend.huertos.dto.view.VIncomesWithInfoDto; import net.miarma.backlib.dto.CredentialDto; import net.miarma.backlib.dto.UserDto; @@ -10,7 +11,7 @@ public record MemberProfileDto( CredentialDto account, UserMetadataDto metadata, List requests, - List payments, + List payments, boolean hasCollaborator, boolean hasGreenhouse, boolean hasCollaboratorRequest, diff --git a/huertos/src/main/java/net/miarma/backend/huertos/model/Income.java b/huertos/src/main/java/net/miarma/backend/huertos/model/Income.java index b952625..6ba6da7 100644 --- a/huertos/src/main/java/net/miarma/backend/huertos/model/Income.java +++ b/huertos/src/main/java/net/miarma/backend/huertos/model/Income.java @@ -38,7 +38,7 @@ public class Income { @Column(name = "frequency") private Byte frequency; - @Column(name = "created_at", nullable = false) + @Column(name = "created_at", nullable = false, updatable = true) private Instant createdAt; @PrePersist diff --git a/huertos/src/main/java/net/miarma/backend/huertos/service/AnnouncementService.java b/huertos/src/main/java/net/miarma/backend/huertos/service/AnnouncementService.java index 9110768..481fdbe 100644 --- a/huertos/src/main/java/net/miarma/backend/huertos/service/AnnouncementService.java +++ b/huertos/src/main/java/net/miarma/backend/huertos/service/AnnouncementService.java @@ -3,12 +3,14 @@ package net.miarma.backend.huertos.service; import jakarta.transaction.Transactional; import net.miarma.backend.huertos.dto.AnnouncementDto; import net.miarma.backend.huertos.model.Announcement; +import net.miarma.backend.huertos.model.Income; import net.miarma.backend.huertos.repository.AnnouncementRepository; import net.miarma.backlib.exception.NotFoundException; import net.miarma.backlib.util.UuidUtil; import org.springframework.stereotype.Service; import java.time.Instant; +import java.util.Comparator; import java.util.List; import java.util.UUID; @@ -25,7 +27,9 @@ public class AnnouncementService { } public List getAll() { - return announcementRepository.findAll(); + return announcementRepository.findAll().stream() + .sorted(Comparator.comparing(Announcement::getCreatedAt).reversed()) + .toList(); } public Announcement getById(UUID announceId) { diff --git a/huertos/src/main/java/net/miarma/backend/huertos/service/ExpenseService.java b/huertos/src/main/java/net/miarma/backend/huertos/service/ExpenseService.java index 70d3375..e653328 100644 --- a/huertos/src/main/java/net/miarma/backend/huertos/service/ExpenseService.java +++ b/huertos/src/main/java/net/miarma/backend/huertos/service/ExpenseService.java @@ -3,6 +3,7 @@ package net.miarma.backend.huertos.service; import jakarta.transaction.Transactional; import net.miarma.backend.huertos.dto.ExpenseDto; import net.miarma.backend.huertos.model.Expense; +import net.miarma.backend.huertos.model.Income; import net.miarma.backend.huertos.repository.ExpenseRepository; import net.miarma.backlib.exception.NotFoundException; import net.miarma.backlib.exception.ValidationException; @@ -10,6 +11,7 @@ import net.miarma.backlib.util.UuidUtil; import org.springframework.stereotype.Service; import java.time.Instant; +import java.util.Comparator; import java.util.List; import java.util.UUID; @@ -24,7 +26,9 @@ public class ExpenseService { } public List getAll() { - return expenseRepository.findAll(); + return expenseRepository.findAll().stream() + .sorted(Comparator.comparing(Expense::getCreatedAt).reversed()) + .toList(); } public Expense getById(UUID expenseId) { @@ -76,6 +80,9 @@ public class ExpenseService { if (changes.getType() != null) expense.setType(changes.getType()); + if (changes.getCreatedAt() != null) + expense.setCreatedAt(changes.getCreatedAt()); + return expenseRepository.save(expense); } diff --git a/huertos/src/main/java/net/miarma/backend/huertos/service/IncomeService.java b/huertos/src/main/java/net/miarma/backend/huertos/service/IncomeService.java index a7192dd..91edbf5 100644 --- a/huertos/src/main/java/net/miarma/backend/huertos/service/IncomeService.java +++ b/huertos/src/main/java/net/miarma/backend/huertos/service/IncomeService.java @@ -2,9 +2,12 @@ package net.miarma.backend.huertos.service; import java.time.Instant; import java.time.temporal.TemporalAmount; +import java.util.Comparator; import java.util.List; import java.util.UUID; +import net.miarma.backend.huertos.model.view.VIncomesWithInfo; +import net.miarma.backend.huertos.service.view.VIncomesWithInfoService; import net.miarma.backlib.exception.BadRequestException; import net.miarma.backlib.exception.NotFoundException; import net.miarma.backlib.exception.ValidationException; @@ -20,16 +23,21 @@ import net.miarma.backlib.util.UuidUtil; public class IncomeService { private final IncomeRepository incomeRepository; + private final VIncomesWithInfoService incomesWithInfoService; private final UserMetadataService metadataService; public IncomeService(IncomeRepository incomeRepository, + VIncomesWithInfoService incomesWithInfoService, UserMetadataService metadataService) { this.incomeRepository = incomeRepository; + this.incomesWithInfoService = incomesWithInfoService; this.metadataService = metadataService; } public List getAll() { - return incomeRepository.findAll(); + return incomeRepository.findAll().stream() + .sorted(Comparator.comparing(Income::getCreatedAt).reversed()) + .toList(); } public Income getById(UUID incomeId) { @@ -81,7 +89,10 @@ public class IncomeService { } if (changes.getType() != null) income.setType(changes.getType()); if (changes.getFrequency() != null) income.setFrequency(changes.getFrequency()); - + if (changes.getCreatedAt() != null && !changes.getCreatedAt().equals(income.getCreatedAt())) { + income.setCreatedAt(changes.getCreatedAt()); + } + return incomeRepository.save(income); } @@ -110,8 +121,8 @@ public class IncomeService { return !incomes.isEmpty() && incomes.stream().allMatch(Income::isPaid); } - public List getByMemberNumber(Integer memberNumber) { + public List getByMemberNumber(Integer memberNumber) { UUID userId = metadataService.getByMemberNumber(memberNumber).getUserId(); - return getByUserId(userId); + return incomesWithInfoService.getByUserId(userId); } } diff --git a/huertos/src/main/java/net/miarma/backend/huertos/service/MemberService.java b/huertos/src/main/java/net/miarma/backend/huertos/service/MemberService.java index 1bc22e2..9f8666e 100644 --- a/huertos/src/main/java/net/miarma/backend/huertos/service/MemberService.java +++ b/huertos/src/main/java/net/miarma/backend/huertos/service/MemberService.java @@ -2,10 +2,12 @@ import net.miarma.backend.huertos.client.HuertosWebClient; import net.miarma.backend.huertos.dto.*; + import net.miarma.backend.huertos.dto.view.VIncomesWithInfoDto; import net.miarma.backend.huertos.mapper.DropdownDtoMapper; import net.miarma.backend.huertos.mapper.RequestMapper; import net.miarma.backend.huertos.mapper.UserMetadataMapper; import net.miarma.backend.huertos.mapper.IncomeMapper; + import net.miarma.backend.huertos.mapper.view.VIncomesWithInfoMapper; import net.miarma.backend.huertos.security.NameCensorer; import net.miarma.backlib.dto.UserWithCredentialDto; import net.miarma.backlib.exception.NotFoundException; @@ -66,6 +68,7 @@ UserMetadataMapper.toDto(meta) ); }) + .sorted(Comparator.comparing(dto -> dto.metadata().getMemberNumber())) .toList(); } @@ -77,8 +80,8 @@ .map(RequestMapper::toResponse) .toList(); - List payments = incomeService.getByMemberNumber(memberNumber).stream() - .map(IncomeMapper::toResponse) + List payments = incomeService.getByMemberNumber(memberNumber).stream() + .map(VIncomesWithInfoMapper::toResponse) .toList(); return new MemberProfileDto( @@ -146,9 +149,9 @@ .orElseThrow(() -> new NotFoundException("No hay socio con ese DNI")); } - public List getIncomes(Integer memberNumber) { + public List getIncomes(Integer memberNumber) { return incomeService.getByMemberNumber(memberNumber).stream() - .map(IncomeMapper::toResponse) + .map(VIncomesWithInfoMapper::toResponse) .toList(); } diff --git a/huertos/src/main/java/net/miarma/backend/huertos/service/view/VIncomesWithInfoService.java b/huertos/src/main/java/net/miarma/backend/huertos/service/view/VIncomesWithInfoService.java index 16831b5..2bd7349 100644 --- a/huertos/src/main/java/net/miarma/backend/huertos/service/view/VIncomesWithInfoService.java +++ b/huertos/src/main/java/net/miarma/backend/huertos/service/view/VIncomesWithInfoService.java @@ -1,8 +1,10 @@ package net.miarma.backend.huertos.service.view; +import java.util.Comparator; import java.util.List; import java.util.UUID; +import net.miarma.backend.huertos.model.Income; import net.miarma.backlib.exception.NotFoundException; import org.springframework.stereotype.Service; @@ -22,7 +24,9 @@ public class VIncomesWithInfoService { } public List getAll() { - return repository.findAll(); + return repository.findAll().stream() + .sorted(Comparator.comparing(VIncomesWithInfo::getCreatedAt).reversed()) + .toList(); } public VIncomesWithInfo getById(UUID incomeId) {