Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.unipampa.crud.entities;

import com.unipampa.crud.enums.AccommodationStats;
import com.unipampa.crud.enums.AccommodationType;
import lombok.Builder;
import lombok.Data;
Expand Down Expand Up @@ -36,5 +37,6 @@ public class Accommodation {
private int imageCount;
private int maxOccupancy;
private String hostId;
private AccommodationStats stats;

}
2 changes: 2 additions & 0 deletions cadastral/src/main/java/com/unipampa/crud/entities/User.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.unipampa.crud.entities;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.unipampa.crud.enums.UserStats;
import com.unipampa.crud.enums.UserType;
import lombok.AllArgsConstructor;
import lombok.Builder;
Expand Down Expand Up @@ -34,6 +35,7 @@ public class User implements Serializable {
private String email;
private String name;
private UserType type;
private UserStats stats;

@DBRef
private Set<Role> roles = new HashSet<>();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.unipampa.crud.enums;

import io.swagger.v3.oas.annotations.media.Schema;

public enum AccommodationStats {

@Schema(description = "Propriedade indisponível")
UNAVAILABLE,

@Schema(description = "Propriedade disponível")
AVAILABLE;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.unipampa.crud.enums;

public enum UserStats {

AVAILABLE, UNAVAILABLE;
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.unipampa.crud.dto.AccommodationRequestDTO;
import com.unipampa.crud.dto.ErrorResponse;
import com.unipampa.crud.entities.Accommodation;
import com.unipampa.crud.enums.AccommodationStats;
import com.unipampa.crud.mappers.AccommodationMapper;
import com.unipampa.crud.service.AccommodationService;
import com.unipampa.crud.validations.ValidationsRegisterAccommodation;
Expand Down Expand Up @@ -84,6 +85,7 @@ public ResponseEntity<AccommodationDTO> save(
accommodation.setId(novoId);
String authenticatedUserId = SecurityUtil.getAuthenticatedUserId();
accommodation.setHostId(authenticatedUserId);
accommodation.setStats(AccommodationStats.AVAILABLE);
accommodationService.save(accommodation, images);

URI location = URI.create("/accommodations/" + accommodation.getId());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.unipampa.crud.dto.UserDTO;
import com.unipampa.crud.entities.Role;
import com.unipampa.crud.entities.User;
import com.unipampa.crud.enums.UserStats;
import com.unipampa.crud.mappers.UserMapper;
import com.unipampa.crud.service.RoleService;
import com.unipampa.crud.service.UserService;
Expand Down Expand Up @@ -73,6 +74,7 @@ public ResponseEntity<Object> saveUser(@RequestBody UserDTO userDto) {
user.setCreationDate(LocalDateTime.now(ZoneId.of("UTC")));
user.setLastUpdateDate(LocalDateTime.now(ZoneId.of("UTC")));
user.getRoles().add(role);
user.setStats(UserStats.AVAILABLE);
userService.save(user);
log.info(USER_SAVED_SUCCESSFULLY_LOG, user.getUserName());
return new ResponseEntity<>(HttpStatus.CREATED);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

import com.unipampa.crud.config.security.SecurityUtil;
import com.unipampa.crud.entities.Accommodation;
import com.unipampa.crud.enums.AccommodationStats;
import com.unipampa.crud.repository.AccommodationRepository;
import com.unipampa.crud.sender.AccommodationSender;
import com.unipampa.crud.service.AccommodationService;
import jakarta.persistence.EntityNotFoundException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
Expand Down Expand Up @@ -59,7 +61,16 @@ public List<Accommodation> findAll() {

@Override
public void delete(String id) {
propertyRepository.deleteById(id);
Accommodation property = propertyRepository.findById(id)
.orElseThrow(() -> new EntityNotFoundException("Property not found with id: " + id));
// Atualiza o status para INATIVO
property.setStats(AccommodationStats.UNAVAILABLE);

// Salva novamente no banco de dados
Accommodation updatedProperty = propertyRepository.save(property);

// Envia a mensagem para o microsserviço transacional
accommodationSender.sendMessage(updatedProperty);

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@

import com.unipampa.crud.config.security.SecurityUtil;
import com.unipampa.crud.entities.User;
import com.unipampa.crud.enums.UserStats;
import com.unipampa.crud.exceptions.ResourceNotFoundException;
import com.unipampa.crud.repository.UserRepository;
import com.unipampa.crud.sender.UserSender;
import com.unipampa.crud.service.UserService;
import jakarta.persistence.EntityNotFoundException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
Expand Down Expand Up @@ -46,7 +48,11 @@ public List<User> findAll() {

@Override
public void delete(String id) {
userRepository.deleteById(id);
User user = userRepository.findById(id)
.orElseThrow(() -> new EntityNotFoundException("User not found with id: " + id));
user.setStats(UserStats.UNAVAILABLE);
userRepository.save(user);
userSender.sendMessage(user);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package com.example.rent.dto;

import com.example.rent.enums.StatusAccommodation;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public record AccommodationDto(String id, Double price, int maxOccupancy) {
public record AccommodationDto(String id, Double price, int maxOccupancy, StatusAccommodation stats) {
}

3 changes: 2 additions & 1 deletion transacional/src/main/java/com/example/rent/dto/UserDto.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package com.example.rent.dto;

import com.example.rent.enums.UserStats;
import com.example.rent.enums.UserType;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public record UserDto(String id, String name, String email, UserType type) {
public record UserDto(String id, String name, String email, UserType type, UserStats stats) {

}

Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.example.rent.entities;

import com.example.rent.enums.UserStats;
import com.example.rent.enums.UserType;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
Expand Down Expand Up @@ -31,4 +32,7 @@ public class User implements Serializable {
@Column(name = "user_type", length = 30, nullable = false)
private UserType userType;

@Enumerated(EnumType.STRING)
private UserStats stats;

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
public enum StatusAccommodation {
RENTED,
BOOKING,
AVAILABLE;
AVAILABLE,
UNAVAILABLE;

@JsonCreator
public static StatusAccommodation fromString(String value) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.example.rent.enums;

public enum UserStats {

AVAILABLE, UNAVAILABLE;
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public void receive(@Payload AccommodationDto dto) {
Accommodation accommodation = new Accommodation();
accommodation.setId(dto.id());
accommodation.setPrice(dto.price());
accommodation.setStatus(StatusAccommodation.AVAILABLE);
accommodation.setStatus(dto.stats());
accommodation.setGuestCapacity(dto.maxOccupancy());
accommodationRepository.save(accommodation);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public void receive(@Payload UserDto dto) {
user.setName(dto.name());
user.setEmail(dto.email());
user.setUserType(dto.type());
user.setStats(dto.stats());
userRepository.save(user);
}

Expand Down