using AppliWebANA.Models;
using AppliWebANA.Repositories.Messagerie;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace AppliWebANA.Controllers {
	public class MessagerieController : Controller {

		private MessagerieRepositoryBase _Messagerie;

		private MessagerieRepositoryBase Messagerie {
			get {
				if( _Messagerie == null )
					_Messagerie = MessagerieRepositoryBase.Instancier();
				return _Messagerie;
			}
		}

		public ActionResult Index() {
			if( Utilitaires.UtilisateurCourant == null )
				return View( "Connexion" );
			ViewBag.UtilisateurCourant = Utilitaires.UtilisateurCourant;
			return View( "Index", Messagerie.ListerUtilisateurs() );
		}

		[HttpPost]
		public ActionResult Connexion( string nom ) {
			Utilitaires.UtilisateurCourant = nom;
			Messagerie.AjouterUtilisateur( nom );
			return RedirectToAction( "Index" );
		}

		public ActionResult Messages() {
			if( Utilitaires.UtilisateurCourant == null )
				return View( "Connexion" );
			ViewBag.UtilisateurCourant = Utilitaires.UtilisateurCourant;
			return View( Messagerie.ListerMessages( Utilitaires.UtilisateurCourant ) );
		}

		[HttpGet]
		public ActionResult Ecrire( string id ) {
			if( Utilitaires.UtilisateurCourant == null )
				return View( "Connexion" );
			ViewBag.Destinataire = id;
			return View();
		}

		[HttpPost]
		public ActionResult Ecrire( string id, Message nv ) {
			if( Utilitaires.UtilisateurCourant == null )
				return View( "Connexion" );
			nv.Expediteur = Utilitaires.UtilisateurCourant;
			Messagerie.Envoyer( id, nv );
			return Index();
		}

		protected override void Dispose( bool disposing ) {
			if( _Messagerie != null )
				_Messagerie.Dispose( true );
			base.Dispose( disposing );
		}
	}
}