using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Mvc;
using WebApplication1.Models;

namespace WebApplication1.Controllers {

	public class ExempleValidationAvecRemoteController : Controller {
		
		public ActionResult Index() {
			ViewBag.Message = "Créez votre premier agent secret";
			return View( new AgentSecret() { Niveau = Niveau.TresSecret } );
		}

		//[ActionName( "Index" )]
		//[HttpPost]
		//public ActionResult Creer( AgentSecret nvAgent ) {
		//  if( !ModelState.IsValid ) {
		//    ViewBag.Message = "Revoyez votre copie.";
		//    ModelState.AddModelError( "Mission", "J'ai dû faire une validation côté serveur" );
		//    return View( nvAgent ); // Sans nvAgent, on perd le CodeSecret (type="password")
		//  }
		//  ViewBag.Message = "OK. Agent créé. Créez autre agent.";
		//  ModelState.Clear(); // Pour ne pas garder les valeurs saisies
		//  return View( new AgentSecret() );
		//}

		[ActionName( "Index" )]
		[HttpPost]
		public ActionResult Creer2() {
			var nvAgent = new AgentSecret();
			if( !TryUpdateModel<AgentSecret>( nvAgent ) ) {
				ViewBag.Message = "Revoyez votre copie.";
				ModelState.AddModelError( "Mission", "J'ai dû faire une validation côté serveur" );
				return View( nvAgent ); // Sans nvAgent, on perd le CodeSecret (type="password")
			}
			ViewBag.Message = "OK. Agent créé. Créez autre agent.";
			ModelState.Clear(); // Pour ne pas garder les valeurs saisies
			return View( new AgentSecret() );
		}

		public JsonResult ValiderCodeSecret( string codeSecret, string nom ) {
			if( !Regex.IsMatch( codeSecret, @"^\d+$" ) )
				return Json( false, JsonRequestBehavior.AllowGet );
			for( int i = 0; i < codeSecret.Length / 2; i++ ) {
				if( codeSecret[i] != codeSecret[codeSecret.Length - i - 1] )
					return Json( false, JsonRequestBehavior.AllowGet );
			}
			return Json( true, JsonRequestBehavior.AllowGet );
		}
	}
}