using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebApplication1.Models;

namespace WebApplication1.Controllers {
  public class CommerceSimpleController : Controller {
    public ActionResult Index() {
      ViewBag.Caddie = Article.CaddieUtilisateur;
      ViewBag.Stock = Article.Stock;
      //return View();
      return View( "Index" ); // Attention utilise la requête pour trouver la vue par défaut
    }


    [HttpGet] // Le verbe GET est autorisé => on supporte le marque page
    public ActionResult Ajouter() { // L'id n'est alors pas fourni
      return RedirectToAction( "Index" ); // Et on redirige, mais pas bien souvent
    }

    [HttpPost] // La méthode avec paramètre obligatoire n'est accessible que sur POST
    //public ActionResult Ajouter( Guid? id ) {
    public ActionResult Ajouter( Guid id ) {
      //if( Request.HttpMethod != "POST" ) // Si le get est permis, on peut ainsi éviter l'exécution de l'action
      //  return RedirectToAction( "Index" );
      Article a;
      if( Article.CaddieUtilisateur.TryGetValue( /* id */ id, out a ) ) {
        a.Quantite++;
      }
      else {
        var articleEnStock = Article.Stock[/*id*/ id];
        a = new Article() { Id = articleEnStock.Id, Nom = articleEnStock.Nom, PrixAchat = articleEnStock.PrixAchat, PrixVente = articleEnStock.PrixVente, Quantite = 1 };
        Article.CaddieUtilisateur.Add( a.Id, a );
      }
      ViewBag.ArticleAjoute = a;
      //return RedirectToAction( "Index" );
      return Index(); // Simple exécution de méthode
    }
    [HttpPost] // Si on veut n'exécuter que sur un post, interdit l'utilisation du Html.ActionLink ou d'un marque-page
    public ActionResult Vider() {
      //if( Request.HttpMethod != "POST" ) // Action ssi POST
      //  return RedirectToAction( "Index" );
      Article.CaddieUtilisateur.Clear();
      //return RedirectToAction( "Index" );
      return Index(); // Simple exécution de méthode
    }
    [HttpGet, ActionName( "Vider" )] // L'action est accesible sur Get, on redirige rarement et on supporte les marque-pages !
    public ActionResult ViderGet() {
      return RedirectToAction( "Index" );
    }
  }
}
