package com.healthcare.ohctech.controller; import com.healthcare.ohctech.dto.MenuDto; import com.healthcare.ohctech.service.MenuService; import com.healthcare.ohctech.util.PaginationUtil; import jakarta.validation.Valid; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; @RestController @RequestMapping("/menus") public class MenuController { private MenuService menuservice; public MenuController(MenuService menuservice) { this.menuservice = menuservice; } @GetMapping("/{menuId}") public ResponseEntity getMenuById(@PathVariable Long menuId) { MenuDto menuDto = menuservice.getMenuById(menuId); if (menuDto != null) { return new ResponseEntity<>(menuDto, HttpStatus.OK); } return new ResponseEntity<>("Menu not found", HttpStatus.NOT_FOUND); } @PostMapping public ResponseEntity addMenu(@Valid @RequestBody MenuDto menudto) { MenuDto savedMenuDto = menuservice.addMenu(menudto); return new ResponseEntity<>(savedMenuDto, HttpStatus.CREATED); } @GetMapping public ResponseEntity getMenus(@RequestParam(required = false) Integer page, @RequestParam(required = false) Integer size, @RequestParam(required = false) String sortBy, @RequestParam(required = false) String sortOrder) { Pageable pageable = PaginationUtil.getPageableWithDefaults(page, size, sortBy, sortOrder); Page menuPage = menuservice.getMenus(pageable); Map response = PaginationUtil.getPageResponse(menuPage); return new ResponseEntity<>(response, HttpStatus.OK); } @PutMapping("/{menuId}") public ResponseEntity updateMenu(@Valid @RequestBody MenuDto menuDto) { MenuDto updatedMenuDto = menuservice.updateMenu(menuDto); return new ResponseEntity<>(updatedMenuDto, HttpStatus.OK); } @DeleteMapping("/{menuId}") public ResponseEntity deleteMenu(@PathVariable Long menuId) { menuservice.deleteMenu(menuId); return new ResponseEntity<>("Menu deleted successfully", HttpStatus.OK); } }