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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,9 @@ micronaut {
incremental(true)
annotations("app.*")
}
testResources {
enabled = System.getenv("MICRONAUT_TEST_RESOURCES_ENABLED") == "false" ? false : true
}
}

tasks.withType(JavaCompile) {
Expand Down
22 changes: 22 additions & 0 deletions app/src/main/java/app/JurisdictionAdminController.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,11 @@
import java.net.MalformedURLException;
import java.util.List;

import app.dto.servicerequest.ServiceRequestRemovalSuggestionDTO;
import app.model.servicerequest.ServiceRequestRemovalSuggestion;
import io.micronaut.data.model.Page;
import io.micronaut.data.model.Pageable;

import static app.security.Permission.*;

@Controller("/api/jurisdiction-admin")
Expand All @@ -56,6 +61,23 @@ public JurisdictionAdminController(ServiceService serviceService, ServiceRequest
this.serviceRequestService = serviceRequestService;
}

@Get(uris = { "/requests/removal-suggestions{?jurisdiction_id}", "/requests/removal-suggestions.json{?jurisdiction_id}" })
@ExecuteOn(TaskExecutors.IO)
@RequiresPermissions({LIBRE311_ADMIN_VIEW_SYSTEM, LIBRE311_ADMIN_VIEW_TENANT, LIBRE311_ADMIN_VIEW_SUBTENANT})
public Page<ServiceRequestRemovalSuggestionDTO> getRemovalSuggestions(@Valid Pageable pageable,
@Nullable @QueryValue("jurisdiction_id") String jurisdiction_id) {
return serviceRequestService.getRemovalSuggestions(jurisdiction_id, pageable);
}

@Delete(uris = { "/requests/removal-suggestions/{id}{?jurisdiction_id}", "/requests/removal-suggestions/{id}.json{?jurisdiction_id}" })
@ExecuteOn(TaskExecutors.IO)
@RequiresPermissions({LIBRE311_ADMIN_EDIT_SYSTEM, LIBRE311_ADMIN_EDIT_TENANT, LIBRE311_ADMIN_EDIT_SUBTENANT})
public HttpResponse deleteRemovalSuggestion(Long id,
@Nullable @QueryValue("jurisdiction_id") String jurisdiction_id) {
serviceRequestService.deleteRemovalSuggestion(id, jurisdiction_id);
return HttpResponse.ok();
}

@Post(uris = { "/services{?jurisdiction_id}", "/services.json{?jurisdiction_id}" })
@ExecuteOn(TaskExecutors.IO)
@RequiresPermissions({LIBRE311_ADMIN_EDIT_SYSTEM, LIBRE311_ADMIN_EDIT_TENANT, LIBRE311_ADMIN_EDIT_SUBTENANT})
Expand Down
13 changes: 13 additions & 0 deletions app/src/main/java/app/RootController.java
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,19 @@ public String createServiceRequestXml(HttpRequest<?> request,
return xmlMapper.writeValueAsString(serviceRequestList);
}

@Post(uris = {"/requests/{serviceRequestId}/removal-suggestions{?jurisdiction_id}", "/requests/{serviceRequestId}/removal-suggestions.json{?jurisdiction_id}"})
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@ExecuteOn(TaskExecutors.IO)
public HttpResponse<?> createServiceRequestRemovalSuggestion(
@PathVariable Long serviceRequestId,
@Valid @Body PostRequestServiceRequestRemovalSuggestionDTO requestDTO,
@Nullable @QueryValue("jurisdiction_id") String jurisdiction_id) {

serviceRequestService.createRemovalSuggestion(serviceRequestId, jurisdiction_id, requestDTO);
return HttpResponse.ok();
}

@Get(uris = {"/requests{?jurisdiction_id}", "/requests.json{?jurisdiction_id}"})
@Produces(MediaType.APPLICATION_JSON)
@ExecuteOn(TaskExecutors.IO)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
package app.dto.servicerequest;

import io.micronaut.core.annotation.Introspected;
import io.micronaut.core.annotation.Nullable;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import com.fasterxml.jackson.annotation.JsonProperty;

@Introspected
public class PostRequestServiceRequestRemovalSuggestionDTO {

@NotNull
@Email(regexp = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$")
private String email;

@Nullable
private String name;

@Nullable
private String phone;

@NotNull
@NotBlank
private String reason;

@NotBlank
@JsonProperty("g_recaptcha_response")
private String gRecaptchaResponse;

public PostRequestServiceRequestRemovalSuggestionDTO() {
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

@Nullable
public String getName() {
return name;
}

public void setName(@Nullable String name) {
this.name = name;
}

@Nullable
public String getPhone() {
return phone;
}

public void setPhone(@Nullable String phone) {
this.phone = phone;
}

public String getReason() {
return reason;
}

public void setReason(String reason) {
this.reason = reason;
}

public String getgRecaptchaResponse() {
return gRecaptchaResponse;
}

public void setgRecaptchaResponse(String gRecaptchaResponse) {
this.gRecaptchaResponse = gRecaptchaResponse;
}
}
11 changes: 11 additions & 0 deletions app/src/main/java/app/dto/servicerequest/ServiceRequestDTO.java
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,9 @@ public class ServiceRequestDTO implements ServiceRequestResponseDTO {
@JsonProperty("selected_values")
private List<ServiceDefinitionAttributeDTO> selectedValues;

@JsonProperty("removal_suggestions_count")
private Long removalSuggestionsCount = 0L;

public ServiceRequestDTO() {
}

Expand Down Expand Up @@ -273,4 +276,12 @@ public List<ServiceDefinitionAttributeDTO> getSelectedValues() {
public void setSelectedValues(List<ServiceDefinitionAttributeDTO> selectedValues) {
this.selectedValues = selectedValues;
}

public Long getRemovalSuggestionsCount() {
return removalSuggestionsCount;
}

public void setRemovalSuggestionsCount(Long removalSuggestionsCount) {
this.removalSuggestionsCount = removalSuggestionsCount;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
package app.dto.servicerequest;

import app.model.servicerequest.ServiceRequest;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.micronaut.core.annotation.Introspected;
import io.micronaut.core.annotation.Nullable;
import java.time.Instant;

@Introspected
public class ServiceRequestRemovalSuggestionDTO {

private Long id;
@JsonProperty("service_request_id")
private Long serviceRequestId;
private String email;
@Nullable
private String name;
@Nullable
private String phone;
private String reason;
@JsonProperty("date_created")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Instant dateCreated;

public ServiceRequestRemovalSuggestionDTO() {
}

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public Long getServiceRequestId() {
return serviceRequestId;
}

public void setServiceRequestId(Long serviceRequestId) {
this.serviceRequestId = serviceRequestId;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

@Nullable
public String getName() {
return name;
}

public void setName(@Nullable String name) {
this.name = name;
}

@Nullable
public String getPhone() {
return phone;
}

public void setPhone(@Nullable String phone) {
this.phone = phone;
}

public String getReason() {
return reason;
}

public void setReason(String reason) {
this.reason = reason;
}

public Instant getDateCreated() {
return dateCreated;
}

public void setDateCreated(Instant dateCreated) {
this.dateCreated = dateCreated;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import io.micronaut.data.annotation.DateCreated;
import io.micronaut.data.annotation.DateUpdated;

import io.micronaut.data.annotation.Where;
import jakarta.persistence.*;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotNull;
Expand All @@ -30,6 +31,7 @@

@Entity
@Table(name = "service_requests")
@Where(value = "@.deleted = false")
public class ServiceRequest {

@Id
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
package app.model.servicerequest;

import io.micronaut.core.annotation.Nullable;
import io.micronaut.data.annotation.DateCreated;
import io.micronaut.data.annotation.Where;
import jakarta.persistence.*;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotNull;
import java.time.Instant;

@Entity
@Table(name = "service_request_removal_suggestions")
@Where(value = "@.deleted = false")
public class ServiceRequestRemovalSuggestion {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@NotNull
@Column(name = "service_request_id")
private Long serviceRequestId;

@NotNull
@Column(name = "jurisdiction_id")
private String jurisdictionId;

@NotNull
@Email(regexp = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$")
private String email;

@Nullable
private String name;

@Nullable
private String phone;

@NotNull
@Column(columnDefinition = "TEXT")
private String reason;

@DateCreated
private Instant dateCreated;

private boolean deleted;

public ServiceRequestRemovalSuggestion() {
}

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public Long getServiceRequestId() {
return serviceRequestId;
}

public void setServiceRequestId(Long serviceRequestId) {
this.serviceRequestId = serviceRequestId;
}

public String getJurisdictionId() {
return jurisdictionId;
}

public void setJurisdictionId(String jurisdictionId) {
this.jurisdictionId = jurisdictionId;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

@Nullable
public String getName() {
return name;
}

public void setName(@Nullable String name) {
this.name = name;
}

@Nullable
public String getPhone() {
return phone;
}

public void setPhone(@Nullable String phone) {
this.phone = phone;
}

public String getReason() {
return reason;
}

public void setReason(String reason) {
this.reason = reason;
}

public Instant getDateCreated() {
return dateCreated;
}

public void setDateCreated(Instant dateCreated) {
this.dateCreated = dateCreated;
}

public boolean isDeleted() {
return deleted;
}

public void setDeleted(boolean deleted) {
this.deleted = deleted;
}
}
Loading