package net.sevecek.dailyplanet;

import java.util.*;
import javax.validation.*;
import org.springframework.beans.factory.annotation.*;
import org.springframework.stereotype.*;
import org.springframework.validation.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.*;

@Controller
public class ClanekController {

    @Autowired
    private ClanekRepository poskytovatelDatClanku;

    @Autowired
    private AutorRepository poskytovatelDatAutoru;

    @RequestMapping(value = "/clanky/all.html", method = RequestMethod.GET)
    public ModelAndView zobrazVsechnyClanky() {
        ModelAndView drzacekNaSablonuAData;
        drzacekNaSablonuAData = new ModelAndView(
                "/WEB-INF/view/clanky/all.jsp");

        List<Clanek> seznamClanku = poskytovatelDatClanku.findAll();

        drzacekNaSablonuAData.addObject("clanky", seznamClanku);
        return drzacekNaSablonuAData;
    }

    @RequestMapping(value = "/clanky/{clanekId:[0-9a-f\\-]{36}}.html", method = RequestMethod.GET)
    public ModelAndView zobrazEditaciClanku(@PathVariable("clanekId") UUID id) {
        ModelAndView drzacekNaSablonuAData;
        drzacekNaSablonuAData = new ModelAndView(
                "/WEB-INF/view/clanky/edit.jsp");

        List<Autor> autori = poskytovatelDatAutoru.findAll();
        Clanek jedenClanek = poskytovatelDatClanku.findById(id);

        drzacekNaSablonuAData.addObject("autori", autori);
        drzacekNaSablonuAData.addObject("clanek", jedenClanek);
        return drzacekNaSablonuAData;
    }

    @SuppressWarnings("deprecation")
    @RequestMapping(value = "/clanky/{clanekId:[0-9a-f\\-]{36}}.html", method = RequestMethod.POST)
    public ModelAndView zpracujEditaciClanku(
            @PathVariable("clanekId") UUID id,
            @Valid @ModelAttribute("clanek") Clanek vyplnenyClanek,
            Errors validacniChyby) {
        vyplnenyClanek.setId(id);
        if (validacniChyby.hasErrors()) {
            ModelAndView drzacekNaSablonuAData;
            drzacekNaSablonuAData = new ModelAndView(
                    "/WEB-INF/view/clanky/edit.jsp");

            Autor autor = poskytovatelDatAutoru.findById(vyplnenyClanek.getAutor().getId());
            vyplnenyClanek.setAutor(autor);

            List<Autor> autori = poskytovatelDatAutoru.findAll();
            drzacekNaSablonuAData.addObject("autori", autori);

            return drzacekNaSablonuAData;
        }

        poskytovatelDatClanku.update(vyplnenyClanek);

        ModelAndView drzacekNaSablonuAData;
        drzacekNaSablonuAData = new ModelAndView(
                "redirect:/clanky/all.html");
        return drzacekNaSablonuAData;
    }

}
