개발일지

movie-controller

준서이 2024. 4. 11. 16:47
package com.example.totalproject.Controller;

import com.example.totalproject.DTO.MovieDTO;
import com.example.totalproject.Service.MovieService;
import com.example.totalproject.Util.PaginationUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.multipart.MultipartFile;

import java.util.Map;

@Controller
@RequiredArgsConstructor
public class MovieController {
    //주입
    private final MovieService movieService;
    //맵핑
    
    @GetMapping("/movie/list")
    public String listForm(@PageableDefault(page = 1)Pageable pageable, Model model) {
        Page<MovieDTO> movieDTOS = movieService.movieList(pageable);
        Map<String, Integer> pageMap = PaginationUtil.Pagination(movieDTOS);

        model.addAllAttributes(pageMap);
        model.addAttribute("list", movieDTOS);

        return "movie/list";
    }
    //삽입
    @GetMapping("/movie/save")
    public String saveForm() {
        return "movie/save";
    }
    @PostMapping("/movie/save")
    public String saveProc(MovieDTO movieDTO, MultipartFile file) {
        //CTRL-B 해당메소드로 이동
        movieService.movieSave(movieDTO, file);
        return "redirect:/movie/list";
    }
    //수정
    @GetMapping("/movie/modify")
    public String modifyForm(Integer code, Model model) {
        MovieDTO movieDTO = movieService.movieRead(code);
        model.addAttribute("data", movieDTO);
        return "movie/modify";
    }
    @PostMapping("/movie/modify")
    public String modifyProc(MovieDTO movieDTO, MultipartFile file) {
        movieService.movieModify(movieDTO, file);
        return "redirect:/movie/list";
    }
    //삭제
    @GetMapping("/movie/remove")
    public String removeProc(Integer code) {
        movieService.movieRemove(code);
        return "redirect:/movie/list";
    }
    //개별
    @GetMapping("/movie/read")
    public String readProc(Integer code, Model model) {
        MovieDTO movieDTO = movieService.movieRead(code);
        model.addAttribute("data", movieDTO);
        return "movie/read";
    }    
}