GeneratedLandingPageController.java 3.2 KB
// landingpage/controller/GeneratedLandingPageController.java
package com.aigeo.landingpage.controller;

import com.aigeo.landingpage.entity.GeneratedLandingPage;
import com.aigeo.landingpage.entity.GeneratedLandingPageStatus;
import com.aigeo.landingpage.service.GeneratedLandingPageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Optional;

@RestController
@RequestMapping("/api/generated-landing-pages")
public class GeneratedLandingPageController {
    
    @Autowired
    private GeneratedLandingPageService generatedLandingPageService;
    
    @GetMapping("/project/{projectId}")
    public List<GeneratedLandingPage> getPagesByProjectId(@PathVariable Integer projectId) {
        return generatedLandingPageService.getPagesByProjectId(projectId);
    }
    
    @GetMapping("/project/{projectId}/status/{status}")
    public List<GeneratedLandingPage> getPagesByProjectIdAndStatus(
            @PathVariable Integer projectId, @PathVariable GeneratedLandingPageStatus status) {
        return generatedLandingPageService.getPagesByProjectIdAndStatus(projectId, status);
    }
    
    @GetMapping("/project/{projectId}/version/{versionCode}")
    public ResponseEntity<GeneratedLandingPage> getPageByProjectIdAndVersionCode(
            @PathVariable Integer projectId, @PathVariable String versionCode) {
        Optional<GeneratedLandingPage> page = generatedLandingPageService.getPageByProjectIdAndVersionCode(projectId, versionCode);
        return page.map(ResponseEntity::ok)
                .orElse(ResponseEntity.notFound().build());
    }
    
    @GetMapping("/{id}")
    public ResponseEntity<GeneratedLandingPage> getPageById(@PathVariable Integer id) {
        Optional<GeneratedLandingPage> page = generatedLandingPageService.getPageById(id);
        return page.map(ResponseEntity::ok)
                .orElse(ResponseEntity.notFound().build());
    }
    
    @PostMapping
    public GeneratedLandingPage createPage(@RequestBody GeneratedLandingPage page) {
        return generatedLandingPageService.savePage(page);
    }
    
    @PutMapping("/{id}")
    public ResponseEntity<GeneratedLandingPage> updatePage(@PathVariable Integer id, 
                                                        @RequestBody GeneratedLandingPage pageDetails) {
        Optional<GeneratedLandingPage> page = generatedLandingPageService.getPageById(id);
        if (page.isPresent()) {
            GeneratedLandingPage updatedPage = page.get();
            updatedPage.setHtmlContent(pageDetails.getHtmlContent());
            updatedPage.setStatus(pageDetails.getStatus());
            updatedPage.setPublishUrl(pageDetails.getPublishUrl());
            
            GeneratedLandingPage savedPage = generatedLandingPageService.savePage(updatedPage);
            return ResponseEntity.ok(savedPage);
        } else {
            return ResponseEntity.notFound().build();
        }
    }
    
    @DeleteMapping("/{id}")
    public ResponseEntity<Void> deletePage(@PathVariable Integer id) {
        generatedLandingPageService.deletePage(id);
        return ResponseEntity.noContent().build();
    }
}