Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

create the property module and made changes to the apartment service … #33

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
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
@@ -0,0 +1,10 @@
package com.collicode.propertytracker.infrastructure.repository;

import com.collicode.propertytracker.infrastructure.projections.Property;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface PropertyRepository extends JpaRepository<Property, Long> {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.collicode.propertytracker.service.dto.request;

import lombok.Getter;

import java.math.BigDecimal;

@Getter
public class PropertyRequestDTO {
private long propertyId;
private String description;
private String propertyName;
private BigDecimal price;
private String address;
private String location;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.collicode.propertytracker.service.dto.request;

import lombok.Data;

import java.math.BigDecimal;

@Data
public class PropertyUpdateRequestDTO {
private String description;
private String propertyName;
private BigDecimal price;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.collicode.propertytracker.service.dto.response;

import lombok.Builder;
import lombok.Getter;

import java.math.BigDecimal;

@Getter
@Builder
public class PropertyResponseDTO {
private long propertyId;
private String description;
private String propertyName;
private BigDecimal price;
private String address;
private String location;
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ public void createApartment(ApartmentRequestDTO apartmentRequestDTO) {
}

@Override
public ApartmentUpdateRequestDTO updateApartment(long appartmentId,ApartmentUpdateRequestDTO apartmentUpdateRequestDTO) {
public ApartmentUpdateRequestDTO updateApartment(long apartmentId,ApartmentUpdateRequestDTO apartmentUpdateRequestDTO) {
try {
Apartment apartment = apartmentRepository.findById(appartmentId)
Apartment apartment = apartmentRepository.findById(apartmentId)
.orElseThrow(() -> EntityNotFoundException.notFound("APARTMENT NOT FOUND"));
if (Objects.nonNull(apartmentUpdateRequestDTO.getApartmentName())){
apartment.setApartmentName(apartmentUpdateRequestDTO.getApartmentName());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package com.collicode.propertytracker.service.impl;

import com.collicode.propertytracker.exceptions.EntityNotFoundException;
import com.collicode.propertytracker.service.dto.request.PropertyUpdateRequestDTO;
import com.collicode.propertytracker.exceptions.StorageException;
import com.collicode.propertytracker.infrastructure.projections.Property;
import com.collicode.propertytracker.infrastructure.repository.PropertyRepository;
import com.collicode.propertytracker.service.dto.request.PropertyRequestDTO;
import com.collicode.propertytracker.service.spec.PropertyService;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.Objects;

@Service
public class PropertyServiceImpl implements PropertyService {

private final PropertyRepository propertyRepository;

public PropertyServiceImpl(PropertyRepository propertyRepository) {
this.propertyRepository = propertyRepository;
}
@Override
public void createProperty(PropertyRequestDTO propertyRequestDTO) {
try {
Property property = new Property();
property.setDescription(propertyRequestDTO.getDescription());
property.setPropertyName(propertyRequestDTO.getPropertyName());
property.setPrice(propertyRequestDTO.getPrice());
property.setAddress(propertyRequestDTO.getAddress());
property.setLocation(propertyRequestDTO.getLocation());
property.setCreatedAt(LocalDateTime.now());
propertyRepository.save(property);
} catch (Exception e) {
throw StorageException.exception("ERROR WHILE CREATING PROPERTY");
}

}
@Override
public PropertyUpdateRequestDTO updateProperty(long propertyId, PropertyUpdateRequestDTO propertyUpdateRequestDTO) {
try {
Property property = propertyRepository.findById(propertyId)
.orElseThrow(() -> EntityNotFoundException.notFound("PROPERTY NOT FOUND"));
if (Objects.nonNull(propertyUpdateRequestDTO.getPropertyName())){
property.setPropertyName(propertyUpdateRequestDTO.getPropertyName());
}
propertyRepository.save(property);
}catch (Exception e){
throw StorageException.exception("ERROR WHILE UPDATING PROPERTY");
}
return propertyUpdateRequestDTO;
}
@Override
public String deleteProperty(long propertyId) {
Property property = propertyRepository.findById(propertyId)
.orElseThrow(() -> EntityNotFoundException.notFound("PROPERTY NOT FOUND"));
try{
propertyRepository.delete(property);
return "PROPERTY DELETED";
}catch (Exception e){
throw StorageException.exception("ERROR WHILE DELETING PROPERTY");
}
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

public interface ApartmentService {
void createApartment(ApartmentRequestDTO apartmentRequestDTO);
ApartmentUpdateRequestDTO updateApartment(long appartmentId,ApartmentUpdateRequestDTO apartmentUpdateRequestDTO);
ApartmentUpdateRequestDTO updateApartment(long apartmentId,ApartmentUpdateRequestDTO apartmentUpdateRequestDTO);
String deleteApartment(long apartmentId);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.collicode.propertytracker.service.spec;

import com.collicode.propertytracker.service.dto.request.PropertyRequestDTO;
import com.collicode.propertytracker.service.dto.request.PropertyUpdateRequestDTO;

public interface PropertyService {

void createProperty(PropertyRequestDTO propertyRequestDTO);

PropertyUpdateRequestDTO updateProperty(long propertyId, PropertyUpdateRequestDTO propertyUpdateRequestDTO);

String deleteProperty(long propertyId);
}
15 changes: 15 additions & 0 deletions src/main/resources/db/migration/V20241015000008__tbl_property.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
CREATE SEQUENCE IF NOT EXISTS property-sequence START WITH 1 INCREMENT BY 1;

CREATE TABLE IF NOT EXISTS tbl_property
(
property_id bigint NOT NULL
property_name varchar(255) NOT NULL
description varchar(255) NOT NULL
price numeric NOT NULL
address varchar(255) NOT NULL
location varchar(255) NOT NULL
created_at timestamp NOT NULL
update_at timestamp NULL
audit_info text DEFAULT'{}'
PRIMARY KEY (property_id)
)