package com.astalange.web.controller;

import com.astalange.core.entity.ModePaiement;
import com.astalange.core.repository.ModePaiementRepository;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

@Controller
@RequestMapping("/modespaiement")
public class ModePaiementController {

    private final ModePaiementRepository modePaiementRepository;

    public ModePaiementController(ModePaiementRepository modePaiementRepository) {
        this.modePaiementRepository = modePaiementRepository;
    }

    @GetMapping
    public String listModes(Model model) {
        model.addAttribute("modes", modePaiementRepository.findAll());
        return "parametrage/modespaiement_list";
    }

    @GetMapping("/new")
    public String showCreateForm(Model model) {
        model.addAttribute("modePaiement", new ModePaiement());
        return "parametrage/modespaiement_form";
    }

    @GetMapping("/{id}/edit")
    public String showEditForm(@PathVariable Long id, Model model) {
        ModePaiement mode = modePaiementRepository.findById(id)
                .orElseThrow(() -> new IllegalArgumentException("Invalid ID: " + id));
        model.addAttribute("modePaiement", mode);
        return "parametrage/modespaiement_form";
    }

    @PostMapping
    public String saveMode(@ModelAttribute("modePaiement") ModePaiement modePaiement) {
        modePaiementRepository.save(modePaiement);
        return "redirect:/modespaiement";
    }

    @PostMapping("/{id}/delete")
    public String deleteMode(@PathVariable Long id) {
        ModePaiement mode = modePaiementRepository.findById(id)
                .orElseThrow(() -> new IllegalArgumentException("Invalid ID: " + id));
        modePaiementRepository.delete(mode);
        return "redirect:/modespaiement";
    }
}
