updates
This commit is contained in:
@@ -5,7 +5,7 @@ meta {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get {
|
get {
|
||||||
url: {{API_BASE_URL}}/api/{{API_VERSION}}/projects/5dba067e-d7fd-4d79-a08a-ec379834938a
|
url: {{API_BASE_URL}}/api/{{API_VERSION}}/projects/7da12113-de78-438d-8030-f117c0675acc
|
||||||
body: none
|
body: none
|
||||||
auth: bearer
|
auth: bearer
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
package de.iwomm.propify_api.controller;
|
package de.iwomm.propify_api.controller;
|
||||||
|
|
||||||
|
import de.iwomm.propify_api.dto.NewProjectDTO;
|
||||||
import de.iwomm.propify_api.dto.ProjectDTO;
|
import de.iwomm.propify_api.dto.ProjectDTO;
|
||||||
|
import de.iwomm.propify_api.dto.ProjectDetailsDTO;
|
||||||
import de.iwomm.propify_api.dto.ProjectStatsDTO;
|
import de.iwomm.propify_api.dto.ProjectStatsDTO;
|
||||||
import de.iwomm.propify_api.dto.PropertyDTO;
|
|
||||||
import de.iwomm.propify_api.entity.Project;
|
import de.iwomm.propify_api.entity.Project;
|
||||||
import de.iwomm.propify_api.entity.Property;
|
import de.iwomm.propify_api.mapper.ProjectMapper;
|
||||||
import de.iwomm.propify_api.service.ProjectService;
|
import de.iwomm.propify_api.service.ProjectService;
|
||||||
import jakarta.persistence.EntityNotFoundException;
|
import jakarta.persistence.EntityNotFoundException;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
@@ -19,10 +20,12 @@ import java.util.UUID;
|
|||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/api/v1/projects")
|
@RequestMapping("/api/v1/projects")
|
||||||
public class ProjectController {
|
public class ProjectController {
|
||||||
private ProjectService projectService;
|
private final ProjectService projectService;
|
||||||
|
private final ProjectMapper projectMapper;
|
||||||
|
|
||||||
public ProjectController(ProjectService projectService) {
|
public ProjectController(ProjectService projectService, ProjectMapper projectMapper) {
|
||||||
this.projectService = projectService;
|
this.projectService = projectService;
|
||||||
|
this.projectMapper = projectMapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
@@ -38,7 +41,8 @@ public class ProjectController {
|
|||||||
@PreAuthorize("hasAnyRole('ADMIN', 'USER')")
|
@PreAuthorize("hasAnyRole('ADMIN', 'USER')")
|
||||||
public ResponseEntity<?> getById(@PathVariable UUID id) {
|
public ResponseEntity<?> getById(@PathVariable UUID id) {
|
||||||
try {
|
try {
|
||||||
ProjectDTO projectDTO = projectService.toDTO(projectService.findById(id).orElseThrow(EntityNotFoundException::new));
|
Project project = projectService.findById(id).orElseThrow(EntityNotFoundException::new);
|
||||||
|
ProjectDetailsDTO projectDTO = this.projectMapper.projectToProjectDetailsDTO(project);
|
||||||
|
|
||||||
return ResponseEntity
|
return ResponseEntity
|
||||||
.ok(projectDTO);
|
.ok(projectDTO);
|
||||||
@@ -68,9 +72,9 @@ public class ProjectController {
|
|||||||
|
|
||||||
@PostMapping
|
@PostMapping
|
||||||
@PreAuthorize("hasRole('ADMIN')")
|
@PreAuthorize("hasRole('ADMIN')")
|
||||||
public ResponseEntity<?> create(@RequestBody ProjectDTO projectDTO) {
|
public ResponseEntity<?> create(@RequestBody NewProjectDTO newProjectDTO) {
|
||||||
try {
|
try {
|
||||||
Project newItem = projectService.save(projectDTO);
|
Project newItem = projectService.save(newProjectDTO);
|
||||||
|
|
||||||
URI location = ServletUriComponentsBuilder.fromCurrentRequest()
|
URI location = ServletUriComponentsBuilder.fromCurrentRequest()
|
||||||
.path("/{id}")
|
.path("/{id}")
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package de.iwomm.propify_api.controller;
|
||||||
|
|
||||||
|
import de.iwomm.propify_api.dto.ProjectStatusDTO;
|
||||||
|
import de.iwomm.propify_api.service.ProjectStatusService;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/v1/project-statuses")
|
||||||
|
public class ProjectStatusController {
|
||||||
|
|
||||||
|
private final ProjectStatusService projectStatusService;
|
||||||
|
|
||||||
|
public ProjectStatusController(ProjectStatusService projectStatusService) {
|
||||||
|
this.projectStatusService = projectStatusService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping
|
||||||
|
@PreAuthorize("hasAnyRole('ROLE_USER')")
|
||||||
|
public ResponseEntity<?> getAll() {
|
||||||
|
List<ProjectStatusDTO> projectStatusDTO = projectStatusService.toDTOs(projectStatusService.findAll());
|
||||||
|
|
||||||
|
return ResponseEntity
|
||||||
|
.ok(projectStatusDTO);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
package de.iwomm.propify_api.controller;
|
||||||
|
|
||||||
|
import de.iwomm.propify_api.dto.ProjectStatusDTO;
|
||||||
|
import de.iwomm.propify_api.dto.ProjectTypeDTO;
|
||||||
|
import de.iwomm.propify_api.entity.ProjectType;
|
||||||
|
import de.iwomm.propify_api.service.ProjectStatusService;
|
||||||
|
import de.iwomm.propify_api.service.ProjectTypeService;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/v1/project-types")
|
||||||
|
public class ProjectTypeController {
|
||||||
|
|
||||||
|
private final ProjectTypeService projectTypeService;
|
||||||
|
|
||||||
|
public ProjectTypeController(ProjectTypeService projectTypeService) {
|
||||||
|
this.projectTypeService = projectTypeService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping
|
||||||
|
@PreAuthorize("hasAnyRole('ROLE_USER')")
|
||||||
|
public ResponseEntity<?> getAll() {
|
||||||
|
List<ProjectTypeDTO> projectTypeDTO = projectTypeService.toDTOs(projectTypeService.findAll());
|
||||||
|
|
||||||
|
return ResponseEntity
|
||||||
|
.ok(projectTypeDTO);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,29 +1,302 @@
|
|||||||
package de.iwomm.propify_api.database;
|
package de.iwomm.propify_api.database;
|
||||||
|
|
||||||
import de.iwomm.propify_api.entity.Property;
|
import de.iwomm.propify_api.entity.*;
|
||||||
import de.iwomm.propify_api.repository.PropertyRepository;
|
import de.iwomm.propify_api.repository.*;
|
||||||
|
import jakarta.persistence.EntityNotFoundException;
|
||||||
import org.springframework.boot.CommandLineRunner;
|
import org.springframework.boot.CommandLineRunner;
|
||||||
import org.springframework.context.annotation.Profile;
|
import org.springframework.context.annotation.Profile;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Profile("dev") // Runs only in "dev" environments
|
@Profile("dev") // Runs only in "dev" environments
|
||||||
public class DatabaseSeeder implements CommandLineRunner {
|
public class DatabaseSeeder implements CommandLineRunner {
|
||||||
private final PropertyRepository propertyRepository;
|
private final PropertyRepository propertyRepository;
|
||||||
|
private final PropertyStatusRepository propertyStatusRepository;
|
||||||
|
private final ProjectRepository projectRepository;
|
||||||
|
private final CountryRepository countryRepository;
|
||||||
|
private final FederalStateRepository federalStateRepository;
|
||||||
|
private final ProjectTypeRepository projectTypeRepository;
|
||||||
|
private final ProjectStatusRepository projectStatusRepository;
|
||||||
|
private final ProjectTimelineEventTypeRepository projectTimelineEventTypeRepository;
|
||||||
|
private final ProjectTimelineEventRepository projectTimelineEventRepository;
|
||||||
|
|
||||||
public DatabaseSeeder(PropertyRepository propertyRepository) {
|
public DatabaseSeeder(
|
||||||
|
PropertyRepository propertyRepository,
|
||||||
|
PropertyStatusRepository propertyStatusRepository,
|
||||||
|
ProjectRepository projectRepository,
|
||||||
|
CountryRepository countryRepository,
|
||||||
|
FederalStateRepository federalStateRepository,
|
||||||
|
ProjectTypeRepository projectTypeRepository,
|
||||||
|
ProjectStatusRepository projectStatusRepository,
|
||||||
|
ProjectTimelineEventTypeRepository projectTimelineEventTypeRepository,
|
||||||
|
ProjectTimelineEventRepository projectTimelineEventRepository
|
||||||
|
) {
|
||||||
this.propertyRepository = propertyRepository;
|
this.propertyRepository = propertyRepository;
|
||||||
|
this.propertyStatusRepository = propertyStatusRepository;
|
||||||
|
this.projectRepository = projectRepository;
|
||||||
|
this.countryRepository = countryRepository;
|
||||||
|
this.federalStateRepository = federalStateRepository;
|
||||||
|
this.projectTypeRepository = projectTypeRepository;
|
||||||
|
this.projectStatusRepository = projectStatusRepository;
|
||||||
|
this.projectTimelineEventTypeRepository = projectTimelineEventTypeRepository;
|
||||||
|
this.projectTimelineEventRepository = projectTimelineEventRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(String... args) throws Exception {
|
public void run(String... args) throws Exception {
|
||||||
if (propertyRepository.count() == 0) {
|
int i;
|
||||||
propertyRepository.save(new Property("Mustergebäude 1", "Musterstraße", "1", "12345", "Musterstadt", "DE", "Musterbemerkung 1"));
|
|
||||||
propertyRepository.save(new Property("Mustergebäude 2", "Dagobertstraße", "2", "22345", "Entenhausen", "AT", "Musterbemerkung 2"));
|
// Seed countries and federal states
|
||||||
propertyRepository.save(new Property("Mustergebäude 3", "Mustersteet", "3", "32345", "New York", "CH", "Musterbemerkung 3"));
|
Country countryDe;
|
||||||
|
Country countryAt;
|
||||||
|
Country countryCh;
|
||||||
|
if (this.countryRepository.count() == 0) {
|
||||||
|
countryDe = this.countryRepository.save(new Country("Deutschland", "DE"));
|
||||||
|
countryAt = this.countryRepository.save(new Country("Österreich", "AT"));
|
||||||
|
countryCh = this.countryRepository.save(new Country("Schweiz", "CH"));
|
||||||
|
|
||||||
System.out.println("Countries seeded.");
|
System.out.println("Countries seeded.");
|
||||||
} else {
|
} else {
|
||||||
|
countryDe = this.countryRepository.findByCode("DE");
|
||||||
|
countryAt = this.countryRepository.findByCode("AT");
|
||||||
|
countryCh = this.countryRepository.findByCode("CH");
|
||||||
|
|
||||||
System.out.println("Countries already seeded.");
|
System.out.println("Countries already seeded.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// seed federal states
|
||||||
|
FederalState federalStateDeRp;
|
||||||
|
FederalState federalStateChAg;
|
||||||
|
FederalState federalStateAtSt;
|
||||||
|
if (this.federalStateRepository.count() == 0) {
|
||||||
|
this.federalStateRepository.save(new FederalState("Baden-Württemberg", "BW", countryDe));
|
||||||
|
this.federalStateRepository.save(new FederalState("Bayern", "BY", countryDe));
|
||||||
|
this.federalStateRepository.save(new FederalState("Berlin", "BE", countryDe));
|
||||||
|
this.federalStateRepository.save(new FederalState("Brandenburg", "BB", countryDe));
|
||||||
|
this.federalStateRepository.save(new FederalState("Bremen", "HB", countryDe));
|
||||||
|
this.federalStateRepository.save(new FederalState("Hamburg", "HH", countryDe));
|
||||||
|
this.federalStateRepository.save(new FederalState("Hessen", "HE", countryDe));
|
||||||
|
this.federalStateRepository.save(new FederalState("Mecklenburg-Vorpommern", "MV", countryDe));
|
||||||
|
this.federalStateRepository.save(new FederalState("Niedersachsen", "NI", countryDe));
|
||||||
|
this.federalStateRepository.save(new FederalState("Nordrhein-Westfalen", "NW", countryDe));
|
||||||
|
federalStateDeRp = this.federalStateRepository.save(new FederalState("Rheinland-Pfalz", "RP", countryDe));
|
||||||
|
this.federalStateRepository.save(new FederalState("Saarland", "SL", countryDe));
|
||||||
|
this.federalStateRepository.save(new FederalState("Sachsen", "SN", countryDe));
|
||||||
|
this.federalStateRepository.save(new FederalState("Sachsen-Anhalt", "ST", countryDe));
|
||||||
|
this.federalStateRepository.save(new FederalState("Schleswig-Holstein", "SH", countryDe));
|
||||||
|
this.federalStateRepository.save(new FederalState("Thüringen", "TH", countryDe));
|
||||||
|
|
||||||
|
|
||||||
|
federalStateChAg = this.federalStateRepository.save(new FederalState("Aargau", "AG", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Appenzell Ausserrhoden", "AR", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Appenzell Innerrhoden", "AI", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Basel-Landschaft", "BL", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Basel-Stadt", "BS", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Bern", "BE", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Freiburg", "FR", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Genf", "GE", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Glarus", "GL", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Graubünden", "GR", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Jura", "JU", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Luzern", "LU", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Neuenburg", "NE", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Nidwalden", "NW", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Obwalden", "OW", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Schaffhausen", "SH", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Schwyz", "SZ", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Solothurn", "SO", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("St. Gallen", "SG", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Tessin", "TI", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Thurgau", "TG", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Uri", "UR", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Waadt", "VD", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Wallis", "VS", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Zug", "ZG", countryCh));
|
||||||
|
this.federalStateRepository.save(new FederalState("Zürich", "ZH", countryCh));
|
||||||
|
|
||||||
|
this.federalStateRepository.save(new FederalState("Burgenland", "B", countryAt));
|
||||||
|
this.federalStateRepository.save(new FederalState("Kärnten", "K", countryAt));
|
||||||
|
this.federalStateRepository.save(new FederalState("Niederösterreich", "N", countryAt));
|
||||||
|
this.federalStateRepository.save(new FederalState("Oberösterreich", "O", countryAt));
|
||||||
|
this.federalStateRepository.save(new FederalState("Salzburg", "S", countryAt));
|
||||||
|
federalStateAtSt = this.federalStateRepository.save(new FederalState("Steiermark", "ST", countryAt));
|
||||||
|
this.federalStateRepository.save(new FederalState("Tirol", "T", countryAt));
|
||||||
|
this.federalStateRepository.save(new FederalState("Vorarlberg", "V", countryAt));
|
||||||
|
this.federalStateRepository.save(new FederalState("Wien", "W", countryAt));
|
||||||
|
System.out.println("FederalStates seeded.");
|
||||||
|
} else {
|
||||||
|
federalStateDeRp = this.federalStateRepository.findByAbbreviationAndCountry("RP", countryDe);
|
||||||
|
federalStateAtSt = this.federalStateRepository.findByAbbreviationAndCountry("ST", countryAt);
|
||||||
|
federalStateChAg = this.federalStateRepository.findByAbbreviationAndCountry("RP", countryCh);
|
||||||
|
|
||||||
|
System.out.println("FederalStates already seeded.");
|
||||||
|
}
|
||||||
|
|
||||||
|
// seed property statuses
|
||||||
|
PropertyStatus ps1;
|
||||||
|
PropertyStatus ps2;
|
||||||
|
PropertyStatus ps3;
|
||||||
|
if (this.propertyStatusRepository.count() == 0) {
|
||||||
|
i = 1;
|
||||||
|
ps1 = this.propertyStatusRepository.save(new PropertyStatus("Datenerfassung", i++));
|
||||||
|
ps2 = this.propertyStatusRepository.save(new PropertyStatus("Vor-Ort-Aufnahme", i++));
|
||||||
|
ps3 = this.propertyStatusRepository.save(new PropertyStatus("CAD-Modellierung", i++));
|
||||||
|
this.propertyStatusRepository.save(new PropertyStatus("Bilanzierung", i++));
|
||||||
|
this.propertyStatusRepository.save(new PropertyStatus("Erfasst", i++));
|
||||||
|
this.propertyStatusRepository.save(new PropertyStatus("Problem", i++));
|
||||||
|
|
||||||
|
System.out.println("PropertyStatuses seeded.");
|
||||||
|
} else {
|
||||||
|
ps1 = this.propertyStatusRepository.findByName("Datenerfassung");
|
||||||
|
ps2 = this.propertyStatusRepository.findByName("Vor-Ort-Aufnahme");
|
||||||
|
ps3 = this.propertyStatusRepository.findByName("CAD-Modellierung");
|
||||||
|
|
||||||
|
System.out.println("PropertyStatuses already seeded.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Property prop1;
|
||||||
|
Property prop2;
|
||||||
|
Property prop3;
|
||||||
|
if (propertyRepository.count() == 0) {
|
||||||
|
prop1 = propertyRepository.save(new Property("Mustergebäude 1", "Musterstraße", "1", "12345", "Musterstadt", federalStateDeRp, "Musterbemerkung 1", ps1));
|
||||||
|
prop2 = propertyRepository.save(new Property("Mustergebäude 2", "Dagobertstraße", "2", "22345", "Entenhausen", federalStateAtSt, "Musterbemerkung 2", ps2));
|
||||||
|
prop3 = propertyRepository.save(new Property("Mustergebäude 3", "Mustersteet", "3", "32345", "New York", federalStateChAg, "Musterbemerkung 3", ps3));
|
||||||
|
|
||||||
|
System.out.println("Properties seeded.");
|
||||||
|
} else {
|
||||||
|
prop1 = this.propertyRepository.findByName("Mustergebäude 1").orElseThrow(EntityNotFoundException::new);
|
||||||
|
prop2 = this.propertyRepository.findByName("Mustergebäude 2").orElseThrow(EntityNotFoundException::new);
|
||||||
|
prop3 = this.propertyRepository.findByName("Mustergebäude 3").orElseThrow(EntityNotFoundException::new);
|
||||||
|
|
||||||
|
System.out.println("Properties already seeded.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// seed project statuses
|
||||||
|
i = 1;
|
||||||
|
ProjectStatus projectStatus1;
|
||||||
|
ProjectStatus projectStatus2;
|
||||||
|
ProjectStatus projectStatus3;
|
||||||
|
ProjectStatus projectStatus4;
|
||||||
|
if (this.projectStatusRepository.count() == 0) {
|
||||||
|
projectStatus1 = this.projectStatusRepository.save(new ProjectStatus("Vorbereitung", i++));
|
||||||
|
projectStatus2 = this.projectStatusRepository.save(new ProjectStatus("Aktiv", i++));
|
||||||
|
projectStatus3 = this.projectStatusRepository.save(new ProjectStatus("Abgeschlossen", i++));
|
||||||
|
projectStatus4 = this.projectStatusRepository.save(new ProjectStatus("Problem", i++));
|
||||||
|
|
||||||
|
System.out.println("ProjectStatus already seeded.");
|
||||||
|
} else {
|
||||||
|
projectStatus1 = this.projectStatusRepository.findByName("Vorbereitung").orElseThrow(EntityNotFoundException::new);
|
||||||
|
projectStatus2 = this.projectStatusRepository.findByName("Aktiv").orElseThrow(EntityNotFoundException::new);
|
||||||
|
projectStatus3 = this.projectStatusRepository.findByName("Abgeschlossen").orElseThrow(EntityNotFoundException::new);
|
||||||
|
projectStatus4 = this.projectStatusRepository.findByName("Problem").orElseThrow(EntityNotFoundException::new);
|
||||||
|
|
||||||
|
System.out.println("ProjectStatus already seeded.");
|
||||||
|
}
|
||||||
|
|
||||||
|
// seed project types
|
||||||
|
i = 1;
|
||||||
|
ProjectType projType1;
|
||||||
|
ProjectType projType2;
|
||||||
|
ProjectType projType3;
|
||||||
|
ProjectType projType4;
|
||||||
|
ProjectType projType5;
|
||||||
|
ProjectType projType6;
|
||||||
|
ProjectType projType7;
|
||||||
|
ProjectType projType8;
|
||||||
|
ProjectType projType9;
|
||||||
|
|
||||||
|
if (this.projectTypeRepository.count() == 0) {
|
||||||
|
projType1 = this.projectTypeRepository.save(new ProjectType("Energieberatung WG (iSFP)", i++));
|
||||||
|
projType2 = this.projectTypeRepository.save(new ProjectType("Energieberatung NWG (Modul2)", i++));
|
||||||
|
projType3 = this.projectTypeRepository.save(new ProjectType("Einzelmaßnahmen", i++));
|
||||||
|
projType4 = this.projectTypeRepository.save(new ProjectType("Effizienzhaus Sanierung", i++));
|
||||||
|
projType5 = this.projectTypeRepository.save(new ProjectType("Effizienzhaus Neubau", i++));
|
||||||
|
projType6 = this.projectTypeRepository.save(new ProjectType("Energieausweis", i++));
|
||||||
|
projType7 = this.projectTypeRepository.save(new ProjectType("Fachplanung Bauphysik", i++));
|
||||||
|
projType8 = this.projectTypeRepository.save(new ProjectType("Fachplanung Heizung", i++));
|
||||||
|
projType9 = this.projectTypeRepository.save(new ProjectType("Zertifizierung", i++));
|
||||||
|
|
||||||
|
System.out.println("Properties seeded.");
|
||||||
|
} else {
|
||||||
|
projType1 = this.projectTypeRepository.findByName("Energieberatung WG (iSFP)").orElseThrow(EntityNotFoundException::new);
|
||||||
|
projType2 = this.projectTypeRepository.findByName("Energieberatung NWG (Modul2)").orElseThrow(EntityNotFoundException::new);
|
||||||
|
projType3 = this.projectTypeRepository.findByName("Einzelmaßnahmen").orElseThrow(EntityNotFoundException::new);
|
||||||
|
projType4 = this.projectTypeRepository.findByName("Effizienzhaus Sanierung").orElseThrow(EntityNotFoundException::new);
|
||||||
|
projType5 = this.projectTypeRepository.findByName("Effizienzhaus Neubau").orElseThrow(EntityNotFoundException::new);
|
||||||
|
projType6 = this.projectTypeRepository.findByName("Energieausweis").orElseThrow(EntityNotFoundException::new);
|
||||||
|
projType7 = this.projectTypeRepository.findByName("Fachplanung Bauphysik").orElseThrow(EntityNotFoundException::new);
|
||||||
|
projType8 = this.projectTypeRepository.findByName("Fachplanung Heizung").orElseThrow(EntityNotFoundException::new);
|
||||||
|
projType9 = this.projectTypeRepository.findByName("Zertifizierung").orElseThrow(EntityNotFoundException::new);
|
||||||
|
|
||||||
|
System.out.println("Properties already seeded.");
|
||||||
|
}
|
||||||
|
|
||||||
|
// seed project timeline event types
|
||||||
|
ProjectTimelineEventType type1;
|
||||||
|
ProjectTimelineEventType type2;
|
||||||
|
ProjectTimelineEventType type3;
|
||||||
|
ProjectTimelineEventType type4;
|
||||||
|
ProjectTimelineEventType type5;
|
||||||
|
ProjectTimelineEventType type6;
|
||||||
|
if (this.projectTimelineEventTypeRepository.count() == 0) {
|
||||||
|
type1 = this.projectTimelineEventTypeRepository.save(new ProjectTimelineEventType("Allgemeines Ereignis", "#df3422", ""));
|
||||||
|
type2 = this.projectTimelineEventTypeRepository.save(new ProjectTimelineEventType("Termin (wird im Kalender angezeigt)", "#df3422", ""));
|
||||||
|
type3 = this.projectTimelineEventTypeRepository.save(new ProjectTimelineEventType("Meilenstein", "#df3422", ""));
|
||||||
|
type4 = this.projectTimelineEventTypeRepository.save(new ProjectTimelineEventType("Besprechung", "#df3422", ""));
|
||||||
|
type5 = this.projectTimelineEventTypeRepository.save(new ProjectTimelineEventType("Begehung", "#df3422", ""));
|
||||||
|
type6 = this.projectTimelineEventTypeRepository.save(new ProjectTimelineEventType("Benutzer definiert", "#df3422", ""));
|
||||||
|
|
||||||
|
System.out.println("ProjectTimelineEventTypes seeded.");
|
||||||
|
} else {
|
||||||
|
type1 = this.projectTimelineEventTypeRepository.findByName("Allgemeines Ereignis");
|
||||||
|
type2 = this.projectTimelineEventTypeRepository.findByName("Termin (wird im Kalender angezeigt)");
|
||||||
|
type3 = this.projectTimelineEventTypeRepository.findByName("Meilenstein");
|
||||||
|
type4 = this.projectTimelineEventTypeRepository.findByName("Besprechung");
|
||||||
|
type5 = this.projectTimelineEventTypeRepository.findByName("Begehung");
|
||||||
|
type6 = this.projectTimelineEventTypeRepository.findByName("Benutzer definiert");
|
||||||
|
|
||||||
|
System.out.println("ProjectTimelineEventTypes already seeded.");
|
||||||
|
}
|
||||||
|
|
||||||
|
// seed projects
|
||||||
|
Project proj1;
|
||||||
|
if (this.projectRepository.count() == 0) {
|
||||||
|
LocalDate startDate = LocalDate.now().minusDays(13);
|
||||||
|
LocalDate endDate = LocalDate.now().plusDays(700);
|
||||||
|
|
||||||
|
|
||||||
|
proj1 = new Project(
|
||||||
|
"Projekt 1", "2024-001", "Dies ist die erste Projektbeschreibung", projType1, projectStatus2, prop2,
|
||||||
|
27000, startDate, endDate
|
||||||
|
);
|
||||||
|
proj1.addTimelineEvent(new ProjectTimelineEvent("Geplantes Ende", LocalDateTime.now().minusDays(3), "Description 1", type1, new ArrayList<>()));
|
||||||
|
proj1.addTimelineEvent(new ProjectTimelineEvent("Vor Ort Aufnahme", LocalDateTime.now().minusDays(3), "Alles in Ordnung", type5, new ArrayList<>()));
|
||||||
|
proj1.addTimelineEvent(new ProjectTimelineEvent("Projekt erstellt", LocalDateTime.now().minusDays(3), "Projekt wurde erfolgreich erstellt.", type5, new ArrayList<>()));
|
||||||
|
proj1.addTimelineEvent(new ProjectTimelineEvent("Projekt gestartet", LocalDateTime.now().minusDays(3), "Projekt wurde gestartet.", type5, new ArrayList<>(List.of("/path/to/file.pdf"))));
|
||||||
|
|
||||||
|
proj1 = this.projectRepository.save(proj1);
|
||||||
|
|
||||||
|
this.projectRepository.save(new Project(
|
||||||
|
"Projekt 2", "2024-002", "Dies ist die zweite Projektbeschreibung", projType2, projectStatus3, prop1,
|
||||||
|
31000, startDate, endDate
|
||||||
|
));
|
||||||
|
|
||||||
|
System.out.println("Projects seeded.");
|
||||||
|
} else {
|
||||||
|
proj1 = this.projectRepository.findByName("Projekt 1").orElseThrow(EntityNotFoundException::new);
|
||||||
|
|
||||||
|
System.out.println("Projects already seeded.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
System.out.println("Database seeding completed.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
88
src/main/java/de/iwomm/propify_api/dto/NewProjectDTO.java
Normal file
88
src/main/java/de/iwomm/propify_api/dto/NewProjectDTO.java
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
package de.iwomm.propify_api.dto;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class NewProjectDTO {
|
||||||
|
private int amountRequested;
|
||||||
|
private String description;
|
||||||
|
private LocalDate startDate;
|
||||||
|
private LocalDate endDate;
|
||||||
|
private String eventNumber;
|
||||||
|
private String name;
|
||||||
|
private UUID projectTypeId;
|
||||||
|
private UUID statusId;
|
||||||
|
private UUID propertyId;
|
||||||
|
|
||||||
|
public int getAmountRequested() {
|
||||||
|
return amountRequested;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAmountRequested(int amountRequested) {
|
||||||
|
this.amountRequested = amountRequested;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDescription(String description) {
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDate getStartDate() {
|
||||||
|
return startDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStartDate(LocalDate startDate) {
|
||||||
|
this.startDate = startDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDate getEndDate() {
|
||||||
|
return endDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEndDate(LocalDate endDate) {
|
||||||
|
this.endDate = endDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEventNumber() {
|
||||||
|
return eventNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEventNumber(String eventNumber) {
|
||||||
|
this.eventNumber = eventNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UUID getProjectTypeId() {
|
||||||
|
return projectTypeId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProjectTypeId(UUID projectTypeId) {
|
||||||
|
this.projectTypeId = projectTypeId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UUID getStatusId() {
|
||||||
|
return statusId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStatusId(UUID statusId) {
|
||||||
|
this.statusId = statusId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UUID getPropertyId() {
|
||||||
|
return propertyId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPropertyId(UUID propertyId) {
|
||||||
|
this.propertyId = propertyId;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -11,8 +11,10 @@ public class ProjectDTO {
|
|||||||
private String name;
|
private String name;
|
||||||
private String eventNumber;
|
private String eventNumber;
|
||||||
private String description;
|
private String description;
|
||||||
private String projectType;
|
private ProjectTypeDTO projectType;
|
||||||
private String status;
|
private UUID projectTypeId;
|
||||||
|
private ProjectStatusDTO status;
|
||||||
|
private UUID statusId;
|
||||||
private UUID propertyId;
|
private UUID propertyId;
|
||||||
private int amountRequested;
|
private int amountRequested;
|
||||||
private LocalDate startDate;
|
private LocalDate startDate;
|
||||||
@@ -20,9 +22,19 @@ public class ProjectDTO {
|
|||||||
private PropertyDTO property;
|
private PropertyDTO property;
|
||||||
private LocalDateTime createdAt;
|
private LocalDateTime createdAt;
|
||||||
|
|
||||||
public ProjectDTO(UUID id, String name, String eventNumber, String description, String projectType,
|
public ProjectDTO(UUID id,
|
||||||
String status, UUID propertyId, int amountRequested,
|
String name,
|
||||||
LocalDate startDate, LocalDate endDate, LocalDateTime createdAt, PropertyDTO propertyDTO) {
|
String eventNumber,
|
||||||
|
String description,
|
||||||
|
ProjectTypeDTO projectType,
|
||||||
|
ProjectStatusDTO status,
|
||||||
|
UUID propertyId,
|
||||||
|
int amountRequested,
|
||||||
|
LocalDate startDate,
|
||||||
|
LocalDate endDate,
|
||||||
|
LocalDateTime createdAt,
|
||||||
|
PropertyDTO propertyDTO
|
||||||
|
) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.eventNumber = eventNumber;
|
this.eventNumber = eventNumber;
|
||||||
@@ -69,19 +81,19 @@ public class ProjectDTO {
|
|||||||
this.description = description;
|
this.description = description;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getProjectType() {
|
public ProjectTypeDTO getProjectType() {
|
||||||
return projectType;
|
return projectType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setProjectType(String projectType) {
|
public void setProjectType(ProjectTypeDTO projectType) {
|
||||||
this.projectType = projectType;
|
this.projectType = projectType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getStatus() {
|
public ProjectStatusDTO getStatus() {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setStatus(String status) {
|
public void setStatus(ProjectStatusDTO status) {
|
||||||
this.status = status;
|
this.status = status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package de.iwomm.propify_api.dto;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public record ProjectDetailsDTO(
|
||||||
|
UUID id,
|
||||||
|
String name,
|
||||||
|
String eventNumber,
|
||||||
|
String status,
|
||||||
|
String projectType,
|
||||||
|
String description,
|
||||||
|
int amountRequested,
|
||||||
|
String address,
|
||||||
|
LocalDate startDate,
|
||||||
|
LocalDate endDate,
|
||||||
|
List<ProjectTimelineEventDTO> timelineEvents
|
||||||
|
) {
|
||||||
|
}
|
||||||
39
src/main/java/de/iwomm/propify_api/dto/ProjectStatusDTO.java
Normal file
39
src/main/java/de/iwomm/propify_api/dto/ProjectStatusDTO.java
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
package de.iwomm.propify_api.dto;
|
||||||
|
|
||||||
|
import de.iwomm.propify_api.entity.ProjectStatus;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class ProjectStatusDTO {
|
||||||
|
private UUID id;
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
public ProjectStatusDTO() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProjectStatusDTO(ProjectStatus status) {
|
||||||
|
this.id = status.getId();
|
||||||
|
this.name = status.getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProjectStatusDTO(UUID id, String name) {
|
||||||
|
this.id = id;
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UUID getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(UUID id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package de.iwomm.propify_api.dto;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public record ProjectTimelineEventDTO(
|
||||||
|
UUID id,
|
||||||
|
ProjectTimelineEventTypeDTO projectEventType,
|
||||||
|
String title,
|
||||||
|
LocalDateTime date,
|
||||||
|
String description,
|
||||||
|
List<String> documents
|
||||||
|
) {
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package de.iwomm.propify_api.dto;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public record ProjectTimelineEventTypeDTO(
|
||||||
|
UUID id,
|
||||||
|
String name,
|
||||||
|
String color,
|
||||||
|
String icon
|
||||||
|
) {
|
||||||
|
}
|
||||||
34
src/main/java/de/iwomm/propify_api/dto/ProjectTypeDTO.java
Normal file
34
src/main/java/de/iwomm/propify_api/dto/ProjectTypeDTO.java
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
package de.iwomm.propify_api.dto;
|
||||||
|
|
||||||
|
import de.iwomm.propify_api.entity.ProjectType;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class ProjectTypeDTO {
|
||||||
|
private UUID id;
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
public ProjectTypeDTO() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProjectTypeDTO(ProjectType projectType) {
|
||||||
|
this.id = projectType.getId();
|
||||||
|
this.name = projectType.getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public UUID getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(UUID id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
package de.iwomm.propify_api.dto;
|
package de.iwomm.propify_api.dto;
|
||||||
|
|
||||||
|
import de.iwomm.propify_api.entity.FederalState;
|
||||||
|
import de.iwomm.propify_api.entity.PropertyStatus;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@@ -10,21 +13,25 @@ public class PropertyDTO {
|
|||||||
private String houseNumber;
|
private String houseNumber;
|
||||||
private String zipCode;
|
private String zipCode;
|
||||||
private String city;
|
private String city;
|
||||||
private String country;
|
private FederalState federalState;
|
||||||
private String notes;
|
private String notes;
|
||||||
private List<AttachmentDTO> attachments;
|
private List<AttachmentDTO> attachments;
|
||||||
|
private PropertyStatusDTO propertyStatus;
|
||||||
|
|
||||||
|
|
||||||
public PropertyDTO(UUID id, String name, String street, String houseNumber, String zipCode, String city, String country, String notes, List<AttachmentDTO> attachments) {
|
public PropertyDTO(UUID id, String name, String street, String houseNumber,
|
||||||
|
String zipCode, String city, FederalState federalState, String notes,
|
||||||
|
List<AttachmentDTO> attachments, PropertyStatusDTO propertyStatus) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.street = street;
|
this.street = street;
|
||||||
this.houseNumber = houseNumber;
|
this.houseNumber = houseNumber;
|
||||||
this.zipCode = zipCode;
|
this.zipCode = zipCode;
|
||||||
this.city = city;
|
this.city = city;
|
||||||
this.country = country;
|
this.federalState = federalState;
|
||||||
this.notes = notes;
|
this.notes = notes;
|
||||||
this.attachments = attachments;
|
this.attachments = attachments;
|
||||||
|
this.propertyStatus = propertyStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID getId() {
|
public UUID getId() {
|
||||||
@@ -83,14 +90,6 @@ public class PropertyDTO {
|
|||||||
this.notes = notes;
|
this.notes = notes;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCountry() {
|
|
||||||
return country;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCountry(String country) {
|
|
||||||
this.country = country;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<AttachmentDTO> getAttachments() {
|
public List<AttachmentDTO> getAttachments() {
|
||||||
return attachments;
|
return attachments;
|
||||||
}
|
}
|
||||||
@@ -98,4 +97,20 @@ public class PropertyDTO {
|
|||||||
public void setAttachments(List<AttachmentDTO> attachments) {
|
public void setAttachments(List<AttachmentDTO> attachments) {
|
||||||
this.attachments = attachments;
|
this.attachments = attachments;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PropertyStatusDTO getPropertyStatus() {
|
||||||
|
return propertyStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPropertyStatus(PropertyStatusDTO propertyStatus) {
|
||||||
|
this.propertyStatus = propertyStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public FederalState getFederalState() {
|
||||||
|
return federalState;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFederalState(FederalState federalState) {
|
||||||
|
this.federalState = federalState;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
package de.iwomm.propify_api.dto;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class PropertyStatusDTO {
|
||||||
|
private UUID id;
|
||||||
|
private String name;
|
||||||
|
private int order;
|
||||||
|
|
||||||
|
public PropertyStatusDTO() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public PropertyStatusDTO(UUID id, String name, int order) {
|
||||||
|
this.id = id;
|
||||||
|
this.name = name;
|
||||||
|
this.order = order;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PropertyStatusDTO(String name, int order) {
|
||||||
|
this.name = name;
|
||||||
|
this.order = order;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UUID getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(UUID id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getOrder() {
|
||||||
|
return order;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOrder(int order) {
|
||||||
|
this.order = order;
|
||||||
|
}
|
||||||
|
}
|
||||||
50
src/main/java/de/iwomm/propify_api/entity/Country.java
Normal file
50
src/main/java/de/iwomm/propify_api/entity/Country.java
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
package de.iwomm.propify_api.entity;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
public class Country {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.UUID)
|
||||||
|
@Column(nullable = false)
|
||||||
|
private UUID id;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
public Country() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public Country(String name, String code) {
|
||||||
|
this.name = name;
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UUID getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(UUID id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCode(String code) {
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
package de.iwomm.propify_api.entity;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
// @Entity
|
||||||
|
public class EntityTemplate {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.UUID)
|
||||||
|
@Column(nullable = false)
|
||||||
|
private UUID id;
|
||||||
|
|
||||||
|
// insert other properties here
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
private LocalDateTime createdAt;
|
||||||
|
|
||||||
|
private LocalDateTime updatedAt;
|
||||||
|
|
||||||
|
@PrePersist
|
||||||
|
protected void onCreate() {
|
||||||
|
this.createdAt = LocalDateTime.now();
|
||||||
|
this.updatedAt = LocalDateTime.now();
|
||||||
|
}
|
||||||
|
|
||||||
|
@PreUpdate
|
||||||
|
protected void onUpdate() {
|
||||||
|
this.updatedAt = LocalDateTime.now();
|
||||||
|
}
|
||||||
|
|
||||||
|
public UUID getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(UUID id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDateTime getCreatedAt() {
|
||||||
|
return createdAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public LocalDateTime getUpdatedAt() {
|
||||||
|
return updatedAt;
|
||||||
|
}
|
||||||
|
}
|
||||||
96
src/main/java/de/iwomm/propify_api/entity/FederalState.java
Normal file
96
src/main/java/de/iwomm/propify_api/entity/FederalState.java
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
package de.iwomm.propify_api.entity;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
public class FederalState {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.UUID)
|
||||||
|
@Column(nullable = false)
|
||||||
|
private UUID id;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private String abbreviation;
|
||||||
|
|
||||||
|
|
||||||
|
@ManyToOne(cascade = CascadeType.REMOVE, optional = false)
|
||||||
|
@JoinColumn(nullable = false)
|
||||||
|
private Country country;
|
||||||
|
|
||||||
|
private LocalDateTime createdAt;
|
||||||
|
|
||||||
|
private LocalDateTime updatedAt;
|
||||||
|
|
||||||
|
public FederalState(String name, String abbreviation, Country country) {
|
||||||
|
this.name = name;
|
||||||
|
this.abbreviation = abbreviation;
|
||||||
|
this.country = country;
|
||||||
|
}
|
||||||
|
|
||||||
|
public FederalState() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCountry(Country country) {
|
||||||
|
this.country = country;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Country getCountry() {
|
||||||
|
return country;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PrePersist
|
||||||
|
protected void onCreate() {
|
||||||
|
this.createdAt = LocalDateTime.now();
|
||||||
|
this.updatedAt = LocalDateTime.now();
|
||||||
|
}
|
||||||
|
|
||||||
|
@PreUpdate
|
||||||
|
protected void onUpdate() {
|
||||||
|
this.updatedAt = LocalDateTime.now();
|
||||||
|
}
|
||||||
|
|
||||||
|
public UUID getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(UUID id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDateTime getCreatedAt() {
|
||||||
|
return createdAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCreatedAt(LocalDateTime createdAt) {
|
||||||
|
this.createdAt = createdAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDateTime getUpdatedAt() {
|
||||||
|
return updatedAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUpdatedAt(LocalDateTime updatedAt) {
|
||||||
|
this.updatedAt = updatedAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAbbreviation() {
|
||||||
|
return abbreviation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAbbreviation(String abbreviation) {
|
||||||
|
this.abbreviation = abbreviation;
|
||||||
|
}
|
||||||
|
}
|
||||||
4
src/main/java/de/iwomm/propify_api/entity/Person.java
Normal file
4
src/main/java/de/iwomm/propify_api/entity/Person.java
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
package de.iwomm.propify_api.entity;
|
||||||
|
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
|
||||||
@@ -5,6 +5,8 @@ import jakarta.persistence.*;
|
|||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@@ -14,11 +16,21 @@ public class Project {
|
|||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
private UUID id;
|
private UUID id;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
private String name;
|
private String name;
|
||||||
private String eventNumber;
|
|
||||||
|
private String eventNumber; // Vorgangsnummer
|
||||||
private String description;
|
private String description;
|
||||||
private String projectType;
|
|
||||||
private String status;
|
|
||||||
|
@ManyToOne(optional = false)
|
||||||
|
@JoinColumn(nullable = false)
|
||||||
|
private ProjectType projectType;
|
||||||
|
|
||||||
|
|
||||||
|
@ManyToOne(optional = false)
|
||||||
|
@JoinColumn(nullable = false)
|
||||||
|
private ProjectStatus projectStatus;
|
||||||
|
|
||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
private int amountRequested;
|
private int amountRequested;
|
||||||
@@ -34,23 +46,26 @@ public class Project {
|
|||||||
|
|
||||||
private LocalDateTime updatedAt;
|
private LocalDateTime updatedAt;
|
||||||
|
|
||||||
@ManyToOne(cascade = CascadeType.PERSIST, optional = false)
|
@ManyToOne(optional = false)
|
||||||
@JoinColumn(name = "property_id", nullable = false)
|
@JoinColumn(name = "property_id", nullable = false)
|
||||||
@JsonManagedReference
|
@JsonManagedReference
|
||||||
private Property property;
|
private Property property;
|
||||||
|
|
||||||
|
@OneToMany(mappedBy = "project", cascade = CascadeType.ALL, orphanRemoval = true)
|
||||||
|
private List<ProjectTimelineEvent> timelineEvents = new ArrayList<>();
|
||||||
|
|
||||||
public Project() {
|
public Project() {
|
||||||
this.amountRequested = 0;
|
this.amountRequested = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Project(String name, String eventNumber, String description, String projectType,
|
public Project(String name, String eventNumber, String description, ProjectType projectType,
|
||||||
String status, Property property, int amountRequested,
|
ProjectStatus status, Property property, int amountRequested,
|
||||||
LocalDate startDate, LocalDate endDate) {
|
LocalDate startDate, LocalDate endDate) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.eventNumber = eventNumber;
|
this.eventNumber = eventNumber;
|
||||||
this.description = description;
|
this.description = description;
|
||||||
this.projectType = projectType;
|
this.projectType = projectType;
|
||||||
this.status = status;
|
this.projectStatus = status;
|
||||||
this.property = property;
|
this.property = property;
|
||||||
this.amountRequested = amountRequested;
|
this.amountRequested = amountRequested;
|
||||||
this.startDate = startDate;
|
this.startDate = startDate;
|
||||||
@@ -100,22 +115,6 @@ public class Project {
|
|||||||
this.description = description;
|
this.description = description;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getProjectType() {
|
|
||||||
return projectType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProjectType(String projectType) {
|
|
||||||
this.projectType = projectType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getStatus() {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStatus(String status) {
|
|
||||||
this.status = status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getAmountRequested() {
|
public int getAmountRequested() {
|
||||||
return amountRequested;
|
return amountRequested;
|
||||||
}
|
}
|
||||||
@@ -163,4 +162,34 @@ public class Project {
|
|||||||
public void setUpdatedAt(LocalDateTime updatedAt) {
|
public void setUpdatedAt(LocalDateTime updatedAt) {
|
||||||
this.updatedAt = updatedAt;
|
this.updatedAt = updatedAt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ProjectType getProjectType() {
|
||||||
|
return projectType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProjectType(ProjectType projectType) {
|
||||||
|
this.projectType = projectType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProjectStatus getProjectStatus() {
|
||||||
|
return projectStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProjectStatus(ProjectStatus status) {
|
||||||
|
this.projectStatus = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ProjectTimelineEvent> getTimelineEvents() {
|
||||||
|
return timelineEvents;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTimelineEvents(List<ProjectTimelineEvent> timelineEvents) {
|
||||||
|
this.timelineEvents = timelineEvents;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addTimelineEvent(ProjectTimelineEvent projectTimelineEvent) {
|
||||||
|
projectTimelineEvent.setProject(this);
|
||||||
|
|
||||||
|
this.timelineEvents.add(projectTimelineEvent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
77
src/main/java/de/iwomm/propify_api/entity/ProjectStatus.java
Normal file
77
src/main/java/de/iwomm/propify_api/entity/ProjectStatus.java
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
package de.iwomm.propify_api.entity;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
public class ProjectStatus {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.UUID)
|
||||||
|
@Column(nullable = false)
|
||||||
|
private UUID id;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
private int sortOrder;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
private LocalDateTime createdAt;
|
||||||
|
|
||||||
|
private LocalDateTime updatedAt;
|
||||||
|
|
||||||
|
public ProjectStatus() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProjectStatus(String name, int sortOrder) {
|
||||||
|
this.name = name;
|
||||||
|
this.sortOrder = sortOrder;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PrePersist
|
||||||
|
protected void onCreate() {
|
||||||
|
this.createdAt = LocalDateTime.now();
|
||||||
|
this.updatedAt = LocalDateTime.now();
|
||||||
|
}
|
||||||
|
|
||||||
|
@PreUpdate
|
||||||
|
protected void onUpdate() {
|
||||||
|
this.updatedAt = LocalDateTime.now();
|
||||||
|
}
|
||||||
|
|
||||||
|
public UUID getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(UUID id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDateTime getCreatedAt() {
|
||||||
|
return createdAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public LocalDateTime getUpdatedAt() {
|
||||||
|
return updatedAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getSortOrder() {
|
||||||
|
return sortOrder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSortOrder(int sortOrder) {
|
||||||
|
this.sortOrder = sortOrder;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,133 @@
|
|||||||
|
package de.iwomm.propify_api.entity;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
import org.hibernate.annotations.JdbcTypeCode;
|
||||||
|
import org.hibernate.type.SqlTypes;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
public class ProjectTimelineEvent {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.UUID)
|
||||||
|
@Column(nullable = false)
|
||||||
|
private UUID id;
|
||||||
|
|
||||||
|
String title;
|
||||||
|
LocalDateTime date;
|
||||||
|
String description;
|
||||||
|
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name = "project_timeline_event_type_id")
|
||||||
|
ProjectTimelineEventType projectTimelineEventType;
|
||||||
|
|
||||||
|
@ManyToOne(optional = false, fetch = FetchType.LAZY)
|
||||||
|
@JoinColumn(name = "project_id", nullable = false)
|
||||||
|
Project project;
|
||||||
|
|
||||||
|
@JdbcTypeCode(SqlTypes.JSON)
|
||||||
|
@Column(columnDefinition = "jsonb")
|
||||||
|
List<String> documents;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
private LocalDateTime createdAt;
|
||||||
|
|
||||||
|
private LocalDateTime updatedAt;
|
||||||
|
|
||||||
|
public ProjectTimelineEvent() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProjectTimelineEvent(
|
||||||
|
String title,
|
||||||
|
LocalDateTime date,
|
||||||
|
String description,
|
||||||
|
ProjectTimelineEventType projectTimelineEventType,
|
||||||
|
List<String> documents
|
||||||
|
) {
|
||||||
|
this.title = title;
|
||||||
|
this.date = date;
|
||||||
|
this.description = description;
|
||||||
|
this.projectTimelineEventType = projectTimelineEventType;
|
||||||
|
this.documents = documents;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProjectTimelineEventType getProjectTimelineEventType() {
|
||||||
|
return projectTimelineEventType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProjectTimelineEventType(ProjectTimelineEventType projectTimelineEventType) {
|
||||||
|
this.projectTimelineEventType = projectTimelineEventType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProject(Project project) {
|
||||||
|
this.project = project;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Project getProject() {
|
||||||
|
return project;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PrePersist
|
||||||
|
protected void onCreate() {
|
||||||
|
this.createdAt = LocalDateTime.now();
|
||||||
|
this.updatedAt = LocalDateTime.now();
|
||||||
|
}
|
||||||
|
|
||||||
|
@PreUpdate
|
||||||
|
protected void onUpdate() {
|
||||||
|
this.updatedAt = LocalDateTime.now();
|
||||||
|
}
|
||||||
|
|
||||||
|
public UUID getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(UUID id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDateTime getCreatedAt() {
|
||||||
|
return createdAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public LocalDateTime getUpdatedAt() {
|
||||||
|
return updatedAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTitle() {
|
||||||
|
return title;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTitle(String title) {
|
||||||
|
this.title = title;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDateTime getDate() {
|
||||||
|
return date;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDate(LocalDateTime date) {
|
||||||
|
this.date = date;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDescription(String description) {
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getDocuments() {
|
||||||
|
return documents;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDocuments(List<String> documents) {
|
||||||
|
this.documents = documents;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
package de.iwomm.propify_api.entity;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
public class ProjectTimelineEventType {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.UUID)
|
||||||
|
@Column(nullable = false)
|
||||||
|
private UUID id;
|
||||||
|
|
||||||
|
String name;
|
||||||
|
String color;
|
||||||
|
String icon;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
private LocalDateTime createdAt;
|
||||||
|
|
||||||
|
private LocalDateTime updatedAt;
|
||||||
|
|
||||||
|
public ProjectTimelineEventType() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProjectTimelineEventType(String name, String color, String icon) {
|
||||||
|
this.name = name;
|
||||||
|
this.color = color;
|
||||||
|
this.icon = icon;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PrePersist
|
||||||
|
protected void onCreate() {
|
||||||
|
this.createdAt = LocalDateTime.now();
|
||||||
|
this.updatedAt = LocalDateTime.now();
|
||||||
|
}
|
||||||
|
|
||||||
|
@PreUpdate
|
||||||
|
protected void onUpdate() {
|
||||||
|
this.updatedAt = LocalDateTime.now();
|
||||||
|
}
|
||||||
|
|
||||||
|
public UUID getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(UUID id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDateTime getCreatedAt() {
|
||||||
|
return createdAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public LocalDateTime getUpdatedAt() {
|
||||||
|
return updatedAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getColor() {
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setColor(String color) {
|
||||||
|
this.color = color;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIcon() {
|
||||||
|
return icon;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIcon(String icon) {
|
||||||
|
this.icon = icon;
|
||||||
|
}
|
||||||
|
}
|
||||||
75
src/main/java/de/iwomm/propify_api/entity/ProjectType.java
Normal file
75
src/main/java/de/iwomm/propify_api/entity/ProjectType.java
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
package de.iwomm.propify_api.entity;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
public class ProjectType {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.UUID)
|
||||||
|
@Column(nullable = false)
|
||||||
|
private UUID id;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private int sortOrder;
|
||||||
|
|
||||||
|
public ProjectType() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProjectType(String name, int sortOrder) {
|
||||||
|
this.name = name;
|
||||||
|
this.sortOrder = sortOrder;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
private LocalDateTime createdAt;
|
||||||
|
|
||||||
|
private LocalDateTime updatedAt;
|
||||||
|
|
||||||
|
@PrePersist
|
||||||
|
protected void onCreate() {
|
||||||
|
this.createdAt = LocalDateTime.now();
|
||||||
|
this.updatedAt = LocalDateTime.now();
|
||||||
|
}
|
||||||
|
|
||||||
|
@PreUpdate
|
||||||
|
protected void onUpdate() {
|
||||||
|
this.updatedAt = LocalDateTime.now();
|
||||||
|
}
|
||||||
|
|
||||||
|
public UUID getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(UUID id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDateTime getCreatedAt() {
|
||||||
|
return createdAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public LocalDateTime getUpdatedAt() {
|
||||||
|
return updatedAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getSortOrder() {
|
||||||
|
return sortOrder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSortOrder(int sortOrder) {
|
||||||
|
this.sortOrder = sortOrder;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,6 +2,7 @@ package de.iwomm.propify_api.entity;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonBackReference;
|
import com.fasterxml.jackson.annotation.JsonBackReference;
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -17,6 +18,8 @@ public class Property {
|
|||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
|
private String owner;
|
||||||
|
|
||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
private String street;
|
private String street;
|
||||||
|
|
||||||
@@ -29,10 +32,18 @@ public class Property {
|
|||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
private String city;
|
private String city;
|
||||||
|
|
||||||
|
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name = "federal_state_id")
|
||||||
|
private FederalState federalState;
|
||||||
|
|
||||||
private String notes;
|
private String notes;
|
||||||
|
|
||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
private String country;
|
private int yearOfConstruction; // baujahr
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
private int unitCount; // anzahl einheiten
|
||||||
|
|
||||||
@OneToMany(mappedBy = "property", orphanRemoval = true)
|
@OneToMany(mappedBy = "property", orphanRemoval = true)
|
||||||
@OrderBy("fileName")
|
@OrderBy("fileName")
|
||||||
@@ -48,6 +59,18 @@ public class Property {
|
|||||||
@JsonBackReference
|
@JsonBackReference
|
||||||
private List<Project> projects = new ArrayList<>();
|
private List<Project> projects = new ArrayList<>();
|
||||||
|
|
||||||
|
@ManyToOne(optional = false)
|
||||||
|
@JoinColumn(name = "property_status_id", nullable = false)
|
||||||
|
private PropertyStatus propertyStatus;
|
||||||
|
|
||||||
|
public PropertyStatus getPropertyStatus() {
|
||||||
|
return propertyStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPropertyStatus(PropertyStatus propertyStatus) {
|
||||||
|
this.propertyStatus = propertyStatus;
|
||||||
|
}
|
||||||
|
|
||||||
public List<Project> getProjects() {
|
public List<Project> getProjects() {
|
||||||
return projects;
|
return projects;
|
||||||
}
|
}
|
||||||
@@ -67,14 +90,19 @@ public class Property {
|
|||||||
|
|
||||||
public Property() {}
|
public Property() {}
|
||||||
|
|
||||||
public Property(String name, String street, String houseNumber, String zipCode, String city, String country, String notes) {
|
public Property(
|
||||||
|
String name, String street, String houseNumber,
|
||||||
|
String zipCode, String city,
|
||||||
|
FederalState federalState,
|
||||||
|
String notes, PropertyStatus propertyStatus) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.street = street;
|
this.street = street;
|
||||||
this.houseNumber = houseNumber;
|
this.houseNumber = houseNumber;
|
||||||
this.zipCode = zipCode;
|
this.zipCode = zipCode;
|
||||||
this.city = city;
|
this.city = city;
|
||||||
this.country = country;
|
this.federalState = federalState;
|
||||||
this.notes = notes;
|
this.notes = notes;
|
||||||
|
this.propertyStatus = propertyStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PrePersist
|
@PrePersist
|
||||||
@@ -152,14 +180,6 @@ public class Property {
|
|||||||
this.city = city;
|
this.city = city;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCountry() {
|
|
||||||
return country;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCountry(String country) {
|
|
||||||
this.country = country;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getNotes() {
|
public String getNotes() {
|
||||||
return this.notes;
|
return this.notes;
|
||||||
}
|
}
|
||||||
@@ -167,4 +187,36 @@ public class Property {
|
|||||||
public void setNotes(String notes) {
|
public void setNotes(String notes) {
|
||||||
this.notes = notes;
|
this.notes = notes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getOwner() {
|
||||||
|
return owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOwner(String owner) {
|
||||||
|
this.owner = owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getYearOfConstruction() {
|
||||||
|
return yearOfConstruction;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setYearOfConstruction(int yearOfConstruction) {
|
||||||
|
this.yearOfConstruction = yearOfConstruction;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getUnitCount() {
|
||||||
|
return unitCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUnitCount(int unitCount) {
|
||||||
|
this.unitCount = unitCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public FederalState getFederalState() {
|
||||||
|
return federalState;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFederalState(FederalState federalState) {
|
||||||
|
this.federalState = federalState;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,65 @@
|
|||||||
|
package de.iwomm.propify_api.entity;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
public class PropertyStatus {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.UUID)
|
||||||
|
@Column(nullable = false)
|
||||||
|
private UUID id;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
private int sortOrder;
|
||||||
|
|
||||||
|
@OneToMany(mappedBy = "propertyStatus", orphanRemoval = true)
|
||||||
|
private Set<Property> properties = new LinkedHashSet<>();
|
||||||
|
|
||||||
|
public PropertyStatus() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<Property> getProperties() {
|
||||||
|
return properties;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProperties(Set<Property> properties) {
|
||||||
|
this.properties = properties;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PropertyStatus(String name, int sortOrder) {
|
||||||
|
this.name = name;
|
||||||
|
this.sortOrder = sortOrder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UUID getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(UUID id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getSortOrder() {
|
||||||
|
return sortOrder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSortOrder(int order) {
|
||||||
|
this.sortOrder = order;
|
||||||
|
}
|
||||||
|
}
|
||||||
47
src/main/java/de/iwomm/propify_api/mapper/ProjectMapper.java
Normal file
47
src/main/java/de/iwomm/propify_api/mapper/ProjectMapper.java
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
package de.iwomm.propify_api.mapper;
|
||||||
|
|
||||||
|
import de.iwomm.propify_api.dto.ProjectDetailsDTO;
|
||||||
|
import de.iwomm.propify_api.dto.ProjectTimelineEventDTO;
|
||||||
|
import de.iwomm.propify_api.entity.Project;
|
||||||
|
import de.iwomm.propify_api.entity.Property;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class ProjectMapper {
|
||||||
|
|
||||||
|
private final TimelineEventMapper timelineEventMapper;
|
||||||
|
|
||||||
|
public ProjectMapper(TimelineEventMapper timelineEventMapper) {
|
||||||
|
this.timelineEventMapper = timelineEventMapper;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maps Project -> ProjectDetailsDTO
|
||||||
|
*/
|
||||||
|
public ProjectDetailsDTO projectToProjectDetailsDTO(Project project) {
|
||||||
|
Property property = project.getProperty();
|
||||||
|
String address = property.getStreet() + " " + property.getHouseNumber() + ", "
|
||||||
|
+ property.getZipCode() + " " + property.getCity();
|
||||||
|
|
||||||
|
List<ProjectTimelineEventDTO> timelineEvents = this.timelineEventMapper.projectTimelineEventToDTO(project.getTimelineEvents());
|
||||||
|
|
||||||
|
ProjectDetailsDTO projectDetailsDTO = new ProjectDetailsDTO(
|
||||||
|
project.getId(),
|
||||||
|
project.getName(),
|
||||||
|
project.getEventNumber(),
|
||||||
|
project.getProjectStatus().getName(),
|
||||||
|
project.getProjectType().getName(),
|
||||||
|
project.getDescription(),
|
||||||
|
project.getAmountRequested(),
|
||||||
|
address,
|
||||||
|
project.getStartDate(),
|
||||||
|
project.getEndDate(),
|
||||||
|
timelineEvents
|
||||||
|
);
|
||||||
|
|
||||||
|
return projectDetailsDTO;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
package de.iwomm.propify_api.mapper;
|
||||||
|
|
||||||
|
import de.iwomm.propify_api.dto.ProjectTimelineEventDTO;
|
||||||
|
import de.iwomm.propify_api.dto.ProjectTimelineEventTypeDTO;
|
||||||
|
import de.iwomm.propify_api.entity.ProjectTimelineEvent;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class TimelineEventMapper {
|
||||||
|
|
||||||
|
private final TimelineEventTypeMapper timelineEventTypeMapper;
|
||||||
|
|
||||||
|
public TimelineEventMapper(TimelineEventTypeMapper timelineEventTypeMapper) {
|
||||||
|
this.timelineEventTypeMapper = timelineEventTypeMapper;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maps List<ProjectTimelineEvent> -> List<ProjectTimelineEventDTO>
|
||||||
|
*/
|
||||||
|
public List<ProjectTimelineEventDTO> projectTimelineEventToDTO(List<ProjectTimelineEvent> timelineEvents) {
|
||||||
|
List<ProjectTimelineEventDTO> timelineEventDTOs = new ArrayList<>();
|
||||||
|
|
||||||
|
timelineEvents.forEach(timelineEvent -> {
|
||||||
|
timelineEventDTOs.add(this.projectTimelineEventToDTO(timelineEvent));
|
||||||
|
});
|
||||||
|
|
||||||
|
return timelineEventDTOs;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maps ProjectTimelineEvent -> ProjectTimelineEventDTO
|
||||||
|
*/
|
||||||
|
public ProjectTimelineEventDTO projectTimelineEventToDTO(ProjectTimelineEvent projectTimelineEvent) {
|
||||||
|
return new ProjectTimelineEventDTO(
|
||||||
|
projectTimelineEvent.getId(),
|
||||||
|
this.timelineEventTypeMapper.projectTimelineEventTypeToDTO(projectTimelineEvent.getProjectTimelineEventType()),
|
||||||
|
projectTimelineEvent.getTitle(),
|
||||||
|
projectTimelineEvent.getDate(),
|
||||||
|
projectTimelineEvent.getDescription(),
|
||||||
|
projectTimelineEvent.getDocuments()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package de.iwomm.propify_api.mapper;
|
||||||
|
|
||||||
|
import de.iwomm.propify_api.dto.ProjectTimelineEventTypeDTO;
|
||||||
|
import de.iwomm.propify_api.entity.ProjectTimelineEventType;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class TimelineEventTypeMapper {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maps ProjectTimelineEventType -> ProjectTimelineEventTypeDTO
|
||||||
|
*/
|
||||||
|
public ProjectTimelineEventTypeDTO projectTimelineEventTypeToDTO(ProjectTimelineEventType projectTimelineEventType) {
|
||||||
|
return new ProjectTimelineEventTypeDTO(
|
||||||
|
projectTimelineEventType.getId(),
|
||||||
|
projectTimelineEventType.getName(),
|
||||||
|
projectTimelineEventType.getColor(),
|
||||||
|
projectTimelineEventType.getIcon()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package de.iwomm.propify_api.repository;
|
||||||
|
|
||||||
|
import de.iwomm.propify_api.entity.Country;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public interface CountryRepository extends JpaRepository<Country, UUID> {
|
||||||
|
Country findByCode(String code);
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package de.iwomm.propify_api.repository;
|
||||||
|
|
||||||
|
import de.iwomm.propify_api.entity.Country;
|
||||||
|
import de.iwomm.propify_api.entity.FederalState;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public interface FederalStateRepository extends JpaRepository<FederalState, UUID> {
|
||||||
|
FederalState findByAbbreviation(String abbreviation);
|
||||||
|
|
||||||
|
FederalState findByAbbreviationAndCountry(String abbreviation, Country country);
|
||||||
|
}
|
||||||
@@ -1,9 +1,11 @@
|
|||||||
package de.iwomm.propify_api.repository;
|
package de.iwomm.propify_api.repository;
|
||||||
|
|
||||||
import de.iwomm.propify_api.entity.Project;
|
import de.iwomm.propify_api.entity.Project;
|
||||||
|
import de.iwomm.propify_api.entity.ProjectStatus;
|
||||||
import de.iwomm.propify_api.entity.Property;
|
import de.iwomm.propify_api.entity.Property;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
import org.springframework.data.jpa.repository.Query;
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.data.repository.query.Param;
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@@ -14,5 +16,8 @@ public interface ProjectRepository extends JpaRepository<Project, UUID> {
|
|||||||
@Query("SELECT SUM(p.amountRequested) FROM Project p")
|
@Query("SELECT SUM(p.amountRequested) FROM Project p")
|
||||||
long sumAmountRequested();
|
long sumAmountRequested();
|
||||||
|
|
||||||
long countProjectByStatus(String status);
|
long countProjectByProjectStatus(ProjectStatus status);
|
||||||
|
|
||||||
|
@Query("SELECT COUNT(p) FROM Project p WHERE p.projectStatus.name = :statusName")
|
||||||
|
long countProjectByStatus(@Param("statusName") String statusName);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package de.iwomm.propify_api.repository;
|
||||||
|
|
||||||
|
import de.iwomm.propify_api.entity.ProjectStatus;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public interface ProjectStatusRepository extends JpaRepository<ProjectStatus, UUID> {
|
||||||
|
public Optional<ProjectStatus> findByName(String name);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package de.iwomm.propify_api.repository;
|
||||||
|
|
||||||
|
import de.iwomm.propify_api.entity.ProjectTimelineEvent;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public interface ProjectTimelineEventRepository extends JpaRepository<ProjectTimelineEvent, UUID> {
|
||||||
|
public ProjectTimelineEvent findByTitle(String title);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package de.iwomm.propify_api.repository;
|
||||||
|
|
||||||
|
import de.iwomm.propify_api.entity.ProjectTimelineEventType;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public interface ProjectTimelineEventTypeRepository extends JpaRepository<ProjectTimelineEventType, UUID> {
|
||||||
|
public ProjectTimelineEventType findByName(String name);
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package de.iwomm.propify_api.repository;
|
||||||
|
|
||||||
|
import de.iwomm.propify_api.entity.ProjectType;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public interface ProjectTypeRepository extends JpaRepository<ProjectType, UUID> {
|
||||||
|
public Optional<ProjectType> findByName(String name);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package de.iwomm.propify_api.repository;
|
||||||
|
|
||||||
|
import de.iwomm.propify_api.entity.PropertyStatus;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public interface PropertyStatusRepository extends JpaRepository<PropertyStatus, UUID> {
|
||||||
|
PropertyStatus findByName(String name);
|
||||||
|
}
|
||||||
@@ -1,11 +1,13 @@
|
|||||||
package de.iwomm.propify_api.service;
|
package de.iwomm.propify_api.service;
|
||||||
|
|
||||||
import de.iwomm.propify_api.dto.ProjectDTO;
|
import de.iwomm.propify_api.dto.*;
|
||||||
import de.iwomm.propify_api.dto.ProjectStatsDTO;
|
|
||||||
import de.iwomm.propify_api.dto.PropertyDTO;
|
|
||||||
import de.iwomm.propify_api.entity.Project;
|
import de.iwomm.propify_api.entity.Project;
|
||||||
|
import de.iwomm.propify_api.entity.ProjectStatus;
|
||||||
|
import de.iwomm.propify_api.entity.ProjectType;
|
||||||
import de.iwomm.propify_api.entity.Property;
|
import de.iwomm.propify_api.entity.Property;
|
||||||
import de.iwomm.propify_api.repository.ProjectRepository;
|
import de.iwomm.propify_api.repository.ProjectRepository;
|
||||||
|
import de.iwomm.propify_api.repository.ProjectStatusRepository;
|
||||||
|
import de.iwomm.propify_api.repository.ProjectTypeRepository;
|
||||||
import jakarta.persistence.EntityNotFoundException;
|
import jakarta.persistence.EntityNotFoundException;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@@ -19,10 +21,19 @@ public class ProjectService {
|
|||||||
|
|
||||||
private final ProjectRepository projectRepository;
|
private final ProjectRepository projectRepository;
|
||||||
private final PropertyService propertyService;
|
private final PropertyService propertyService;
|
||||||
|
private final ProjectTypeRepository projectTypeRepository;
|
||||||
|
private final ProjectStatusRepository projectStatusRepository;
|
||||||
|
|
||||||
public ProjectService(ProjectRepository projectRepository, PropertyService propertyService) {
|
public ProjectService(
|
||||||
|
ProjectRepository projectRepository,
|
||||||
|
PropertyService propertyService,
|
||||||
|
ProjectTypeRepository projectTypeRepository,
|
||||||
|
ProjectStatusRepository projectStatusRepository
|
||||||
|
) {
|
||||||
this.projectRepository = projectRepository;
|
this.projectRepository = projectRepository;
|
||||||
this.propertyService = propertyService;
|
this.propertyService = propertyService;
|
||||||
|
this.projectTypeRepository = projectTypeRepository;
|
||||||
|
this.projectStatusRepository = projectStatusRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Project> findAll() {
|
public List<Project> findAll() {
|
||||||
@@ -33,16 +44,17 @@ public class ProjectService {
|
|||||||
return projectRepository.findById(id);
|
return projectRepository.findById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Project save(ProjectDTO dto) {
|
public Project save(NewProjectDTO dto) {
|
||||||
|
|
||||||
Property property = this.propertyService.findById(dto.getPropertyId()).orElseThrow(EntityNotFoundException::new);
|
Property property = this.propertyService.findById(dto.getPropertyId()).orElseThrow(EntityNotFoundException::new);
|
||||||
|
ProjectType projectType = this.projectTypeRepository.findById(dto.getProjectTypeId()).orElseThrow(EntityNotFoundException::new);
|
||||||
|
ProjectStatus projectStatus = this.projectStatusRepository.findById(dto.getStatusId()).orElseThrow(EntityNotFoundException::new);
|
||||||
|
|
||||||
return this.projectRepository.save(new Project(
|
return this.projectRepository.save(new Project(
|
||||||
dto.getName(),
|
dto.getName(),
|
||||||
dto.getEventNumber(),
|
dto.getEventNumber(),
|
||||||
dto.getDescription(),
|
dto.getDescription(),
|
||||||
dto.getProjectType(),
|
projectType,
|
||||||
dto.getStatus(),
|
projectStatus,
|
||||||
property,
|
property,
|
||||||
dto.getAmountRequested(),
|
dto.getAmountRequested(),
|
||||||
dto.getStartDate(),
|
dto.getStartDate(),
|
||||||
@@ -56,8 +68,8 @@ public class ProjectService {
|
|||||||
project.getName(),
|
project.getName(),
|
||||||
project.getEventNumber(),
|
project.getEventNumber(),
|
||||||
project.getDescription(),
|
project.getDescription(),
|
||||||
project.getProjectType(),
|
new ProjectTypeDTO(project.getProjectType()),
|
||||||
project.getStatus(),
|
new ProjectStatusDTO(project.getProjectStatus()),
|
||||||
project.getProperty().getId(),
|
project.getProperty().getId(),
|
||||||
project.getAmountRequested(),
|
project.getAmountRequested(),
|
||||||
project.getStartDate(),
|
project.getStartDate(),
|
||||||
@@ -70,9 +82,14 @@ public class ProjectService {
|
|||||||
project.getProperty().getHouseNumber(),
|
project.getProperty().getHouseNumber(),
|
||||||
project.getProperty().getZipCode(),
|
project.getProperty().getZipCode(),
|
||||||
project.getProperty().getCity(),
|
project.getProperty().getCity(),
|
||||||
project.getProperty().getCountry(),
|
project.getProperty().getFederalState(),
|
||||||
project.getProperty().getNotes(),
|
project.getProperty().getNotes(),
|
||||||
new ArrayList<>()
|
new ArrayList<>(),
|
||||||
|
new PropertyStatusDTO(
|
||||||
|
project.getProperty().getPropertyStatus().getId(),
|
||||||
|
project.getProperty().getPropertyStatus().getName(),
|
||||||
|
project.getProperty().getPropertyStatus().getSortOrder()
|
||||||
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -92,8 +109,12 @@ public class ProjectService {
|
|||||||
|
|
||||||
projectStatsDTO.setAmountRequestedInTotal(this.projectRepository.sumAmountRequested());
|
projectStatsDTO.setAmountRequestedInTotal(this.projectRepository.sumAmountRequested());
|
||||||
projectStatsDTO.setProjectsCountTotal(this.projectRepository.count());
|
projectStatsDTO.setProjectsCountTotal(this.projectRepository.count());
|
||||||
projectStatsDTO.setProjectsCountActive(this.projectRepository.countProjectByStatus("active"));
|
projectStatsDTO.setProjectsCountActive(this.projectRepository.countProjectByStatus("Aktiv"));
|
||||||
projectStatsDTO.setProjectsCountCompleted(this.projectRepository.countProjectByStatus("completed"));
|
projectStatsDTO.setProjectsCountCompleted(this.projectRepository.countProjectByStatus("Abgeschlossen"));
|
||||||
|
|
||||||
|
System.out.println(projectStatsDTO.getProjectsCountCompleted());
|
||||||
|
System.out.println(projectStatsDTO.getProjectsCountActive());
|
||||||
|
System.out.println(projectStatsDTO.getProjectsCountCompleted());
|
||||||
|
|
||||||
return projectStatsDTO;
|
return projectStatsDTO;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package de.iwomm.propify_api.service;
|
||||||
|
|
||||||
|
import de.iwomm.propify_api.dto.ProjectStatusDTO;
|
||||||
|
import de.iwomm.propify_api.entity.ProjectStatus;
|
||||||
|
import de.iwomm.propify_api.repository.ProjectStatusRepository;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class ProjectStatusService {
|
||||||
|
|
||||||
|
private final ProjectStatusRepository projectStatusRepository;
|
||||||
|
|
||||||
|
public ProjectStatusService(ProjectStatusRepository projectStatusRepository) {
|
||||||
|
this.projectStatusRepository = projectStatusRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ProjectStatusDTO> toDTOs(List<ProjectStatus> projectStatuses) {
|
||||||
|
List<ProjectStatusDTO> dtos = new ArrayList<>();
|
||||||
|
|
||||||
|
projectStatuses.forEach(projectStatus -> {
|
||||||
|
dtos.add(new ProjectStatusDTO(projectStatus));
|
||||||
|
});
|
||||||
|
|
||||||
|
return dtos;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ProjectStatus> findAll() {
|
||||||
|
return projectStatusRepository.findAll();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package de.iwomm.propify_api.service;
|
||||||
|
|
||||||
|
import de.iwomm.propify_api.entity.ProjectTimelineEvent;
|
||||||
|
import de.iwomm.propify_api.repository.ProjectTimelineEventRepository;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class ProjectTimelineEventService {
|
||||||
|
|
||||||
|
private final ProjectTimelineEventRepository projectTimelineEventRepository;
|
||||||
|
|
||||||
|
public ProjectTimelineEventService(ProjectTimelineEventRepository projectTimelineEventRepository) {
|
||||||
|
this.projectTimelineEventRepository = projectTimelineEventRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package de.iwomm.propify_api.service;
|
||||||
|
|
||||||
|
import de.iwomm.propify_api.entity.ProjectTimelineEventType;
|
||||||
|
import de.iwomm.propify_api.repository.ProjectTimelineEventTypeRepository;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class ProjectTimelineEventTypeService {
|
||||||
|
private final ProjectTimelineEventTypeRepository projectTimelineEventTypeRepository;
|
||||||
|
|
||||||
|
public ProjectTimelineEventTypeService(ProjectTimelineEventTypeRepository projectTimelineEventTypeRepository) {
|
||||||
|
this.projectTimelineEventTypeRepository = projectTimelineEventTypeRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void save(ProjectTimelineEventType projectTimelineEventType) {
|
||||||
|
this.projectTimelineEventTypeRepository.save(projectTimelineEventType);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Optional<ProjectTimelineEventType> getById(UUID id) {
|
||||||
|
return this.projectTimelineEventTypeRepository.findById(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
package de.iwomm.propify_api.service;
|
||||||
|
|
||||||
|
import de.iwomm.propify_api.dto.ProjectStatusDTO;
|
||||||
|
import de.iwomm.propify_api.dto.ProjectTypeDTO;
|
||||||
|
import de.iwomm.propify_api.entity.ProjectStatus;
|
||||||
|
import de.iwomm.propify_api.entity.ProjectType;
|
||||||
|
import de.iwomm.propify_api.repository.ProjectTypeRepository;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class ProjectTypeService {
|
||||||
|
private final ProjectTypeRepository projectTypeRepository;
|
||||||
|
|
||||||
|
public ProjectTypeService(ProjectTypeRepository projectTypeRepository) {
|
||||||
|
this.projectTypeRepository = projectTypeRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ProjectTypeDTO> toDTOs(List<ProjectType> projectTypes) {
|
||||||
|
List<ProjectTypeDTO> dtos = new ArrayList<>();
|
||||||
|
|
||||||
|
projectTypes.forEach(projectType -> {
|
||||||
|
dtos.add(new ProjectTypeDTO(projectType));
|
||||||
|
});
|
||||||
|
|
||||||
|
return dtos;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ProjectType> findAll() {
|
||||||
|
return projectTypeRepository.findAll();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,6 +5,7 @@ import de.iwomm.propify_api.dto.BulkDeletePropertyIdsDTO;
|
|||||||
import de.iwomm.propify_api.dto.PropertyDTO;
|
import de.iwomm.propify_api.dto.PropertyDTO;
|
||||||
import de.iwomm.propify_api.entity.Property;
|
import de.iwomm.propify_api.entity.Property;
|
||||||
import de.iwomm.propify_api.repository.PropertyRepository;
|
import de.iwomm.propify_api.repository.PropertyRepository;
|
||||||
|
import de.iwomm.propify_api.repository.PropertyStatusRepository;
|
||||||
import jakarta.persistence.EntityNotFoundException;
|
import jakarta.persistence.EntityNotFoundException;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@@ -16,9 +17,16 @@ import java.util.UUID;
|
|||||||
@Service
|
@Service
|
||||||
public class PropertyService {
|
public class PropertyService {
|
||||||
private final PropertyRepository propertyRepository;
|
private final PropertyRepository propertyRepository;
|
||||||
|
private final PropertyStatusRepository propertyStatusRepository;
|
||||||
|
private final PropertyStatusService propertyStatusService;
|
||||||
|
|
||||||
public PropertyService(PropertyRepository propertyRepository) {
|
public PropertyService(
|
||||||
|
PropertyRepository propertyRepository,
|
||||||
|
PropertyStatusRepository propertyStatusRepository,
|
||||||
|
PropertyStatusService propertyStatusService) {
|
||||||
this.propertyRepository = propertyRepository;
|
this.propertyRepository = propertyRepository;
|
||||||
|
this.propertyStatusRepository = propertyStatusRepository;
|
||||||
|
this.propertyStatusService = propertyStatusService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Property> findAll() {
|
public List<Property> findAll() {
|
||||||
@@ -54,7 +62,6 @@ public class PropertyService {
|
|||||||
updated.setHouseNumber(propertyDto.getHouseNumber());
|
updated.setHouseNumber(propertyDto.getHouseNumber());
|
||||||
updated.setZipCode(propertyDto.getZipCode());
|
updated.setZipCode(propertyDto.getZipCode());
|
||||||
updated.setCity(propertyDto.getCity());
|
updated.setCity(propertyDto.getCity());
|
||||||
updated.setCountry(propertyDto.getCountry());
|
|
||||||
updated.setNotes(propertyDto.getNotes());
|
updated.setNotes(propertyDto.getNotes());
|
||||||
|
|
||||||
propertyRepository.save(updated);
|
propertyRepository.save(updated);
|
||||||
@@ -69,8 +76,9 @@ public class PropertyService {
|
|||||||
dto.getHouseNumber(),
|
dto.getHouseNumber(),
|
||||||
dto.getZipCode(),
|
dto.getZipCode(),
|
||||||
dto.getCity(),
|
dto.getCity(),
|
||||||
dto.getCountry(),
|
dto.getFederalState(),
|
||||||
dto.getNotes()
|
dto.getNotes(),
|
||||||
|
this.propertyStatusRepository.findById(dto.getPropertyStatus().getId()).orElseThrow(EntityNotFoundException::new)
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,9 +98,10 @@ public class PropertyService {
|
|||||||
property.getHouseNumber(),
|
property.getHouseNumber(),
|
||||||
property.getZipCode(),
|
property.getZipCode(),
|
||||||
property.getCity(),
|
property.getCity(),
|
||||||
property.getCountry(),
|
property.getFederalState(),
|
||||||
property.getNotes(),
|
property.getNotes(),
|
||||||
attachments
|
attachments,
|
||||||
|
propertyStatusService.toDTO(property.getPropertyStatus())
|
||||||
));
|
));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package de.iwomm.propify_api.service;
|
||||||
|
|
||||||
|
import de.iwomm.propify_api.dto.PropertyStatusDTO;
|
||||||
|
import de.iwomm.propify_api.entity.PropertyStatus;
|
||||||
|
import de.iwomm.propify_api.repository.PropertyStatusRepository;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class PropertyStatusService {
|
||||||
|
private PropertyStatusRepository propertyStatusRepository;
|
||||||
|
|
||||||
|
public PropertyStatusService(PropertyStatusRepository propertyStatusRepository) {
|
||||||
|
this.propertyStatusRepository = propertyStatusRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PropertyStatusDTO toDTO(PropertyStatus propertyStatus) {
|
||||||
|
return new PropertyStatusDTO(propertyStatus.getName(), propertyStatus.getSortOrder());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -20,7 +20,7 @@ spring:
|
|||||||
properties:
|
properties:
|
||||||
hibernate:
|
hibernate:
|
||||||
format_sql: true
|
format_sql: true
|
||||||
database-platform: org.hibernate.dialect.PostgreSQLDialect
|
# database-platform: org.hibernate.dialect.PostgreSQLDialect
|
||||||
# datasource:
|
# datasource:
|
||||||
# url: jdbc:h2:mem:demo;DB_CLOSE_DELAY=-1
|
# url: jdbc:h2:mem:demo;DB_CLOSE_DELAY=-1
|
||||||
# driver-class-name: org.h2.Driver
|
# driver-class-name: org.h2.Driver
|
||||||
@@ -44,11 +44,12 @@ spring:
|
|||||||
logging:
|
logging:
|
||||||
level:
|
level:
|
||||||
org:
|
org:
|
||||||
|
hibernate:
|
||||||
|
type.descriptor.sql.BasicBinder: TRACE
|
||||||
|
SQL: DEBUG
|
||||||
springframework:
|
springframework:
|
||||||
security: DEBUG
|
security: DEBUG
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
cors:
|
cors:
|
||||||
allowed-origins:
|
allowed-origins:
|
||||||
- http://localhost:4200
|
- http://localhost:4200
|
||||||
|
|||||||
Reference in New Issue
Block a user