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

namespace Messagerie.Controllers {
	public class MessagerieController : Controller, IDisposable {
		private MessagerieRepositoryBase _Messagerie;
		private MessagerieRepositoryBase Messagerie {
			get {
				if (_Messagerie == null) {
					_Messagerie = MessagerieRepositoryBase.Instancier();
				}
				return _Messagerie;
			}
		}
		public ActionResult Index() {
			if (Utilitaires.UtilisateurCourant == null) {
				return View("Login");
			}
			ViewBag.UtilisateurCourant = Utilitaires.UtilisateurCourant;
			return View("Index", Messagerie.ListerMessages(Utilitaires.UtilisateurCourant));
		}
		[HttpPost]
		public ActionResult Login(string nom) {
			if (nom != null) {
				Utilitaires.UtilisateurCourant = nom;
				nom = nom.ToUpper();
				Messagerie.AjouterUtilisateur(nom);
			}
			return RedirectToAction("Index");
		}
		public ActionResult Consulter() {
			ViewBag.UtilisateurCourant = Utilitaires.UtilisateurCourant;
			if (Utilitaires.UtilisateurCourant == null) {
				return View("Login");
			}
			ViewBag.UtilisateurCourant = Utilitaires.UtilisateurCourant;
			return View(Messagerie.ListerMessages(Utilitaires.UtilisateurCourant));
		}
		[HttpGet]
		public ActionResult Ecrire(string id) {
			if (Utilitaires.UtilisateurCourant == null)
				return View("Login");
			ViewBag.Destinataire = id;
			return View();
		}
		[HttpPost]
		public ActionResult Ecrire(string id, Message nv) {
			if (Utilitaires.UtilisateurCourant == null)
				return View("Login");
			Messagerie.Envoyer(id, nv);
			return Index();
		}

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