using System.Web.Mvc;
using System.Net;
using CD67.FicheCollege.Factory;
using CD67.FicheCollege.Entity;
using CD67.FicheCollege.MVC.Models;
using System.Collections.Generic;
using System.Web;
using System;

namespace CD67.FicheCollege.MVC.Controllers
{
    public class AnneesController : Controller
    {
        private Entities db = new Entities();

        // GET: Annees
        public ActionResult Index()
        {
            AnneeFactory fact = new AnneeFactory(db);

            AnneeIndexViewModel model = new AnneeIndexViewModel(fact.getAll());
            return View(model);
        }

        // GET: Home
        public ActionResult Details(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }

            HttpCookie cookie = new HttpCookie("last_selected_year");
            cookie.Value = id.ToString();
            cookie.Expires = DateTime.Now.AddMonths(1);
            Response.SetCookie(cookie);

            AnneeFactory anneeFactory = new AnneeFactory(db);
            Entity.Annee annee = anneeFactory.getById(id);
            if (annee == null)
            {
                return HttpNotFound();
            }

            AnneeViewModel model = new AnneeViewModel(annee, db);
            return View(model);
        }

        public ActionResult Previous(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }

            AnneeFactory anneeFactory = new AnneeFactory(db);
            Entity.Annee annee = anneeFactory.getById(id);
            if (annee == null)
            {
                return HttpNotFound();
            }

            AnneeViewModel model = new AnneeViewModel(annee, db);
            return View(model);
        }

        public ActionResult Next(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }

            AnneeFactory anneeFactory = new AnneeFactory(db);
            Entity.Annee annee = anneeFactory.getById(id);
            if (annee == null)
            {
                return HttpNotFound();
            }

            AnneeViewModel model = new AnneeViewModel(annee, db);
            return View(model);
        }

        [HttpGet]
        public JsonResult GetList()
        {
            AnneeFactory fact = new AnneeFactory(db);
            JsonResult res = Json(fact.getFlatList());
            res.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            return res;
        }

    }
}