Service tabs updated

This commit is contained in:
2025-11-20 16:21:48 +05:30
parent 1aa92b7501
commit 4286934d9d
9 changed files with 144 additions and 34 deletions

View File

@ -4,6 +4,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.shyshkin.study.fullstack.supportportal.backend.domain.ServiceTile;
import net.shyshkin.study.fullstack.supportportal.backend.domain.HttpResponse;
import net.shyshkin.study.fullstack.supportportal.backend.enumeration.ServiceTileCategory;
import net.shyshkin.study.fullstack.supportportal.backend.service.ServiceTileService;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
@ -26,10 +27,11 @@ public class ServiceTileResource {
public ResponseEntity<ServiceTile> addServiceTile(
@RequestParam String title,
@RequestParam(required = false) String description,
@RequestParam ServiceTileCategory category,
@RequestParam(required = false) Integer displayOrder) {
log.info("Adding new service tile with title: {}", title);
ServiceTile serviceTile = serviceTileService.addServiceTile(title, description, displayOrder);
log.info("Adding new service tile with title: {} and category: {}", title, category);
ServiceTile serviceTile = serviceTileService.addServiceTile(title, description, category, displayOrder);
return ResponseEntity.status(HttpStatus.CREATED).body(serviceTile);
}
@ -39,10 +41,11 @@ public class ServiceTileResource {
@PathVariable Long id,
@RequestParam String title,
@RequestParam(required = false) String description,
@RequestParam ServiceTileCategory category,
@RequestParam(required = false) Integer displayOrder) {
log.info("Updating service tile with id: {}", id);
ServiceTile serviceTile = serviceTileService.updateServiceTile(id, title, description, displayOrder);
ServiceTile serviceTile = serviceTileService.updateServiceTile(id, title, description, category, displayOrder);
return ResponseEntity.ok(serviceTile);
}
@ -83,7 +86,6 @@ public class ServiceTileResource {
);
}
@PutMapping("/{id}/toggle-active")
@PreAuthorize("hasAnyAuthority('user:update')")
public ResponseEntity<ServiceTile> toggleActiveStatus(@PathVariable Long id) {

View File

@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import net.shyshkin.study.fullstack.supportportal.backend.enumeration.ServiceTileCategory;
import javax.persistence.*;
import java.io.Serializable;
@ -27,6 +28,10 @@ public class ServiceTile implements Serializable {
@Column(length = 1000)
private String description;
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private ServiceTileCategory category;
@JsonProperty("isActive")
@Column(name = "is_active")
private boolean isActive;

View File

@ -0,0 +1,16 @@
package net.shyshkin.study.fullstack.supportportal.backend.enumeration;
public enum ServiceTileCategory {
TRAUMA_CARE("Trauma Care"),
ACUTE_CARE_SURGERY("Acute Care Surgery");
private final String displayName;
ServiceTileCategory(String displayName) {
this.displayName = displayName;
}
public String getDisplayName() {
return displayName;
}
}

View File

@ -1,14 +1,15 @@
package net.shyshkin.study.fullstack.supportportal.backend.service;
import net.shyshkin.study.fullstack.supportportal.backend.domain.ServiceTile;
import net.shyshkin.study.fullstack.supportportal.backend.enumeration.ServiceTileCategory;
import java.util.List;
public interface ServiceTileService {
ServiceTile addServiceTile(String title, String description, Integer displayOrder);
ServiceTile addServiceTile(String title, String description, ServiceTileCategory category, Integer displayOrder);
ServiceTile updateServiceTile(Long id, String title, String description, Integer displayOrder);
ServiceTile updateServiceTile(Long id, String title, String description, ServiceTileCategory category, Integer displayOrder);
List<ServiceTile> getActiveServiceTiles();

View File

@ -3,6 +3,7 @@ package net.shyshkin.study.fullstack.supportportal.backend.service.impl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.shyshkin.study.fullstack.supportportal.backend.domain.ServiceTile;
import net.shyshkin.study.fullstack.supportportal.backend.enumeration.ServiceTileCategory;
import net.shyshkin.study.fullstack.supportportal.backend.exception.domain.ServiceTileNotFoundException;
import net.shyshkin.study.fullstack.supportportal.backend.repository.ServiceTileRepository;
import net.shyshkin.study.fullstack.supportportal.backend.service.ServiceTileService;
@ -20,25 +21,27 @@ public class ServiceTileServiceImpl implements ServiceTileService {
private final ServiceTileRepository serviceTileRepository;
@Override
public ServiceTile addServiceTile(String title, String description, Integer displayOrder) {
log.info("Adding new service tile with title: {}", title);
public ServiceTile addServiceTile(String title, String description, ServiceTileCategory category, Integer displayOrder) {
log.info("Adding new service tile with title: {} and category: {}", title, category);
ServiceTile serviceTile = new ServiceTile();
serviceTile.setTitle(title);
serviceTile.setDescription(description);
serviceTile.setCategory(category);
serviceTile.setDisplayOrder(displayOrder != null ? displayOrder : 0);
serviceTile.setActive(true); // New tiles are active by default
serviceTile.setActive(true);
return serviceTileRepository.save(serviceTile);
}
@Override
public ServiceTile updateServiceTile(Long id, String title, String description, Integer displayOrder) {
public ServiceTile updateServiceTile(Long id, String title, String description, ServiceTileCategory category, Integer displayOrder) {
log.info("Updating service tile with id: {}", id);
ServiceTile serviceTile = getServiceTileById(id);
serviceTile.setTitle(title);
serviceTile.setDescription(description);
serviceTile.setCategory(category);
if (displayOrder != null) {
serviceTile.setDisplayOrder(displayOrder);