LandingPageGenerationTaskController.java 3.3 KB
// landingpage/controller/LandingPageGenerationTaskController.java
package com.aigeo.landingpage.controller;

import com.aigeo.landingpage.entity.LandingPageGenerationTask;
import com.aigeo.common.enums.TaskStatus;
import com.aigeo.landingpage.service.LandingPageGenerationTaskService;
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/landing-page-generation-tasks")
public class LandingPageGenerationTaskController {
    
    @Autowired
    private LandingPageGenerationTaskService landingPageGenerationTaskService;
    
    @GetMapping("/project/{projectId}")
    public List<LandingPageGenerationTask> getTasksByProjectId(@PathVariable Integer projectId) {
        return landingPageGenerationTaskService.getTasksByProjectId(projectId);
    }
    
    @GetMapping("/user/{userId}")
    public List<LandingPageGenerationTask> getTasksByUserId(@PathVariable Integer userId) {
        return landingPageGenerationTaskService.getTasksByUserId(userId);
    }
    
    @GetMapping("/status/{status}")
    public List<LandingPageGenerationTask> getTasksByStatus(@PathVariable TaskStatus status) {
        return landingPageGenerationTaskService.getTasksByStatus(status);
    }
    
    @GetMapping("/project/{projectId}/status/{status}")
    public List<LandingPageGenerationTask> getTasksByProjectIdAndStatus(
            @PathVariable Integer projectId, @PathVariable TaskStatus status) {
        return landingPageGenerationTaskService.getTasksByProjectIdAndStatus(projectId, status);
    }
    
    @GetMapping("/{id}")
    public ResponseEntity<LandingPageGenerationTask> getTaskById(@PathVariable Integer id) {
        Optional<LandingPageGenerationTask> task = landingPageGenerationTaskService.getTaskById(id);
        return task.map(ResponseEntity::ok)
                .orElse(ResponseEntity.notFound().build());
    }
    
    @PostMapping
    public LandingPageGenerationTask createTask(@RequestBody LandingPageGenerationTask task) {
        return landingPageGenerationTaskService.saveTask(task);
    }
    
    @PutMapping("/{id}")
    public ResponseEntity<LandingPageGenerationTask> updateTask(@PathVariable Integer id, 
                                                             @RequestBody LandingPageGenerationTask taskDetails) {
        Optional<LandingPageGenerationTask> task = landingPageGenerationTaskService.getTaskById(id);
        if (task.isPresent()) {
            LandingPageGenerationTask updatedTask = task.get();
            updatedTask.setStatus(taskDetails.getStatus());
            updatedTask.setProgress(taskDetails.getProgress());
            updatedTask.setErrorMessage(taskDetails.getErrorMessage());
            updatedTask.setCompletedAt(taskDetails.getCompletedAt());
            
            LandingPageGenerationTask savedTask = landingPageGenerationTaskService.saveTask(updatedTask);
            return ResponseEntity.ok(savedTask);
        } else {
            return ResponseEntity.notFound().build();
        }
    }
    
    @DeleteMapping("/{id}")
    public ResponseEntity<Void> deleteTask(@PathVariable Integer id) {
        landingPageGenerationTaskService.deleteTask(id);
        return ResponseEntity.noContent().build();
    }
}