package com.sistema.spring.security;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {
	
	private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
	
	/**
	 * Simply selects the home view to render by returning its name.
	 */
	@RequestMapping(value = {"/","/home"}, method = RequestMethod.GET)
	public String home(Locale locale, Model model) {
		logger.info("Welcome home! The client locale is {}.", locale);
		
		Date date = new Date();
		DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
		
		String formattedDate = dateFormat.format(date);
		
		model.addAttribute("serverTime", formattedDate );
		
		return "home";
	}
	
	/**
	 * shows protected content
	 * @param locale
	 * @param model
	 * @return
	 */
	@RequestMapping(value = "/public", method = RequestMethod.GET)
	public String publicHome( ) {
		logger.info("Welcome to public");
				
		return "public/home";
	}
	
	/**
	 * shows protected content
	 * @param locale
	 * @param model
	 * @return
	 */
	@RequestMapping(value = "/public/protected", method = RequestMethod.GET)
	public String publicProtected( ) {
		logger.info("Welcome to public - protected");
				
		return "public/publicProtected";
	}
	
	/**
	 * shows protected content
	 * @param locale
	 * @param model
	 * @return
	 */
	@RequestMapping(value = "/protected", method = RequestMethod.GET)
	public String protectedHome() {
		logger.info("Welcome to protected");
				
		return "protected/home";
	}

	/**
	 * shows admin content
	 * @param locale
	 * @param model
	 * @return
	 */
	@RequestMapping(value = "/admin", method = RequestMethod.GET)
	public String adminHome() {
		logger.info("Welconme to admin");
				
		return "admin/home";
	}
	
	/**
	 * Simply selects the custom login view to render by returning its name.
	 */
	@RequestMapping(value = "/mycustomlogin", method = RequestMethod.GET)
	public String customLogin (Locale locale, Model model) {
		logger.info("Showing login The client locale is {}.", locale);

		return "customLogin";
	}

}
