KON-23 GET-Service für Ansprechpartner
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/controller/CompanyController.java b/src/main/java/org/eclipse/openk/contactbasedata/controller/CompanyController.java
index 7d35734..e455fa3 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/controller/CompanyController.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/controller/CompanyController.java
@@ -21,6 +21,7 @@
import org.eclipse.openk.contactbasedata.exceptions.BadRequestException;
import org.eclipse.openk.contactbasedata.service.CompanyService;
import org.eclipse.openk.contactbasedata.viewmodel.CompanyDto;
+import org.eclipse.openk.contactbasedata.viewmodel.ContactPersonDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
@@ -34,6 +35,7 @@
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
import java.net.URI;
+import java.util.List;
import java.util.UUID;
@Log4j2
@@ -65,7 +67,7 @@
}
@PostMapping
- @Secured("ROLE_KON-ADMIN")
+ @Secured({"ROLE_KON-ADMIN", "ROLE_KON-WRITER"})
@ApiOperation(value = "Anlegen einer Firma")
@ApiResponses(value = {
@ApiResponse(code = 201, message = "Firma erfolgreich angelegt"),
@@ -83,7 +85,7 @@
}
@PutMapping("/{contactUuid}")
- @Secured("ROLE_KON-ADMIN")
+ @Secured({"ROLE_KON-ADMIN", "ROLE_KON-WRITER"})
@ApiOperation(value = "Ändern einer externen Person")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Firma wurde aktualisiert"),
@@ -98,5 +100,16 @@
companyService.updateCompany(companyDto);
return ResponseEntity.ok().build();
}
+
+ @GetMapping("/{contactUuid}/contact-persons")
+ @Secured({"ROLE_KON-READER", "ROLE_KON-WRITER", "ROLE_KON-ADMIN"})
+ @ApiOperation(value = "Anzeigen von Ansprechpartnern zu einer Firma")
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Erfolgreich durchgeführt"),
+ @ApiResponse(code = 404, message = "Ansprechpartner wurden nicht gefunden")})
+ public List<ContactPersonDto> findContactPersons(@PathVariable("contactUuid") UUID contactUuid) {
+
+ return companyService.findContactPersonsToCompany(contactUuid);
+ }
}
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/mapper/ContactPersonMapper.java b/src/main/java/org/eclipse/openk/contactbasedata/mapper/ContactPersonMapper.java
index 132fe05..b77906e 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/mapper/ContactPersonMapper.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/mapper/ContactPersonMapper.java
@@ -23,8 +23,35 @@
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface ContactPersonMapper {
+
@Mappings({
- @Mapping( source="contact.uuid", target="contactUuid")
+ @Mapping( source="contact.uuid", target="contactUuid"),
+ @Mapping( source="contact.contactType", target="contactType"),
+ @Mapping( source="contact.note", target="contactNote"),
+ @Mapping( source="refPersonType.uuid", target="personTypeUuid"),
+ @Mapping( source="refPersonType.type", target="personType"),
+ @Mapping( source="salutation.uuid", target="salutationUuid"),
+ @Mapping( source="salutation.type", target="salutationType"),
+ @Mapping( source="company.contact.uuid", target="companyContactUuid"),
+ @Mapping( source="company.companyName", target="companyName"),
+ @Mapping( source="company.companyType", target="companyType"),
+ @Mapping( source="company.hrNumber", target="companyHrNumber"),
+
})
ContactPersonDto toContactPersonDto(TblContactPerson tblContactPerson);
+
+ @Mappings({
+ @Mapping( source="contactUuid", target="contact.uuid"),
+ @Mapping( source="contactType", target="contact.contactType"),
+ @Mapping( source="contactNote", target="contact.note"),
+ @Mapping( source="personTypeUuid", target="refPersonType.uuid"),
+ @Mapping( source="personType", target="refPersonType.type"),
+ @Mapping( source="salutationUuid", target="salutation.uuid"),
+ @Mapping( source="salutationType", target="salutation.type"),
+ @Mapping( source="companyContactUuid", target="company.contact.uuid"),
+ @Mapping( source="companyName", target="company.companyName"),
+ @Mapping( source="companyType", target="company.companyType"),
+ @Mapping( source="companyHrNumber", target="company.hrNumber"),
+ })
+ TblContactPerson toTblContactPerson(ContactPersonDto contactPersonDto);
}
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/model/TblCompany.java b/src/main/java/org/eclipse/openk/contactbasedata/model/TblCompany.java
index 77f2316..c616f93 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/model/TblCompany.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/model/TblCompany.java
@@ -36,8 +36,8 @@
@JoinColumn( name = "fk_contact_id")
private TblContact contact;
- @OneToMany
- private List<TblContactPerson> contactPerson;
+ @OneToMany(cascade=CascadeType.ALL, mappedBy="company", orphanRemoval = false)
+ private List<TblContactPerson> contactPersons;
}
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/model/TblContactPerson.java b/src/main/java/org/eclipse/openk/contactbasedata/model/TblContactPerson.java
index cdc266d..9bcdf66 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/model/TblContactPerson.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/model/TblContactPerson.java
@@ -32,15 +32,19 @@
private String title;
@OneToOne
+ @JoinColumn( name = "fk_contact_id")
private TblContact contact;
@ManyToOne
- private TblCompany tblCompany;
+ @JoinColumn( name = "fk_company_id")
+ private TblCompany company;
@ManyToOne
+ @JoinColumn( name = "fk_ref_person_type_id")
private RefPersonType refPersonType;
@ManyToOne
- private RefSalutation refSalutation;
+ @JoinColumn( name = "fk_salutation_id")
+ private RefSalutation salutation;
}
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java
index 02b0d1c..6140fcb 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java
@@ -19,6 +19,7 @@
import org.eclipse.openk.contactbasedata.exceptions.NotFoundException;
import org.eclipse.openk.contactbasedata.mapper.CompanyMapper;
import org.eclipse.openk.contactbasedata.mapper.ContactMapper;
+import org.eclipse.openk.contactbasedata.mapper.ContactPersonMapper;
import org.eclipse.openk.contactbasedata.model.TblCompany;
import org.eclipse.openk.contactbasedata.model.TblContact;
import org.eclipse.openk.contactbasedata.repository.CompanyRepository;
@@ -26,13 +27,16 @@
import org.eclipse.openk.contactbasedata.repository.PersonTypeRepository;
import org.eclipse.openk.contactbasedata.repository.SalutationRepository;
import org.eclipse.openk.contactbasedata.viewmodel.CompanyDto;
+import org.eclipse.openk.contactbasedata.viewmodel.ContactPersonDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
import java.util.UUID;
+import java.util.stream.Collectors;
@Log4j2
@Service
@@ -53,6 +57,9 @@
private CompanyMapper companyMapper;
@Autowired
+ private ContactPersonMapper contactPersonMapper;
+
+ @Autowired
private ContactMapper contactMapper;
@Autowired
@@ -103,6 +110,14 @@
return companyMapper.toCompanyDto(companyUpdated);
}
+ public List<ContactPersonDto> findContactPersonsToCompany( UUID companyContactUuid ) {
+ TblCompany company = companyRepository.findByTblContactUuid( companyContactUuid )
+ .orElseThrow( NotFoundException::new);
+ return company.getContactPersons().stream()
+ .map(contactPersonMapper::toContactPersonDto)
+ .collect(Collectors.toList());
+ }
+
private void setFromCompanyDto( TblCompany destTblCompany, CompanyDto sourceDto ) {
destTblCompany.getContact().setNote(sourceDto.getContactNote());
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ContactPersonDto.java b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ContactPersonDto.java
index a77b23b..976567e 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ContactPersonDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ContactPersonDto.java
@@ -31,20 +31,21 @@
@JsonProperty("contactId")
private UUID contactUuid;
private String contactType;
- private String note;
+ private String contactNote;
//from Company
@JsonProperty("companyContactId")
private UUID companyContactUuid;
private String companyName;
private String companyType;
- private String hrNumber;
+ private String companyHrNumber;
- // from RefPersonType
- private String refPersonTypeType;
- private String refPersonTypeDescription;
+ @JsonProperty("personTypeId")
+ private UUID personTypeUuid;
+ private String personType;
//from RefSalutation
- private String refSalutationType;
- private String refSalutationDescription;
+ @JsonProperty("salutationId")
+ private UUID salutationUuid;
+ private String salutationType;
}
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java b/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java
index 62524b1..28793f1 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java
@@ -42,6 +42,9 @@
InternalPersonMapper internalPersonMapper() { return new InternalPersonMapperImpl(); }
@Bean
+ ContactPersonMapper contactPersonMapper() { return new ContactPersonMapperImpl(); }
+
+ @Bean
CompanyMapper companyMapper() { return new CompanyMapperImpl(); }
@Bean