using System.Net; using System.Web.Mvc; using CD67.ModeleMVC.Entity; using CD67.ModeleMVC.Factory; using System.Collections.Generic; using System; using System.Linq; using CD67.ModeleMVC.MVC.Internal; namespace CD67.ModeleMVC.MVC.Controllers { public class VIKINGSController : Controller { private Entities db = new Entities(); // GET: VIKINGS public ActionResult Index() { EXEMPLE_VIKINGSFactory vikingsFactory = new EXEMPLE_VIKINGSFactory(db); return View(vikingsFactory.getAll()); } public ActionResult Test() { return View(); } // GET: VIKINGS/Details/5 public ActionResult Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } EXEMPLE_VIKINGSFactory vikingsFactory = new EXEMPLE_VIKINGSFactory(db); EXEMPLE_VIKINGS viking = vikingsFactory.getById(id.Value); if (viking == null) { return HttpNotFound(); } ViewBag.id = id; return View(viking); } // GET: VIKINGS/Create public ActionResult Create() { EXEMPLE_VIKINGS viking = new EXEMPLE_VIKINGS(); FillSelect(viking); return View(viking); } // POST: VIKINGS/Create // Afin de déjouer les attaques par sur-validation, activez les propriétés spécifiques que vous voulez lier. Pour // plus de détails, voir http://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "ID,NOM,ID_TYPE,ID_SOUS_TYPE,DESCRIPTION,DATE_INUTILE")] EXEMPLE_VIKINGS viking) { if (ModelState.IsValid) { EXEMPLE_VIKINGSFactory vikingsFactory = new EXEMPLE_VIKINGSFactory(db); vikingsFactory.add(ref viking); // Ajout d'un message flash this.Success("Viking créé avec succès."); return RedirectToAction("Index"); } FillSelect(viking); return View(viking); } // GET: VIKINGS/Edit/5 public ActionResult Edit(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } EXEMPLE_VIKINGSFactory vikingsFactory = new EXEMPLE_VIKINGSFactory(db); EXEMPLE_VIKINGS viking = vikingsFactory.getById(id.Value); if (viking == null) { return HttpNotFound(); } FillSelect(viking); return View(viking); } // POST: VIKINGS/Edit/5 // Afin de déjouer les attaques par sur-validation, activez les propriétés spécifiques que vous voulez lier. Pour // plus de détails, voir http://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Edit([Bind(Include = "ID,NOM,ID_TYPE,ID_SOUS_TYPE,DESCRIPTION,DATE_INUTILE")] EXEMPLE_VIKINGS viking) { if (ModelState.IsValid) { EXEMPLE_VIKINGSFactory vikingsFactory = new EXEMPLE_VIKINGSFactory(db); vikingsFactory.update(ref viking); // Ajout d'un message flash this.Success("Viking édité avec succès."); return RedirectToAction("Index"); } FillSelect(viking); return View(viking); } // GET: VIKINGS/Delete/5 public ActionResult Delete(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } EXEMPLE_VIKINGSFactory vikingsFactory = new EXEMPLE_VIKINGSFactory(db); EXEMPLE_VIKINGS viking = vikingsFactory.getById(id.Value); if (viking == null) { return HttpNotFound(); } return View(viking); } // POST: VIKINGS/Delete/5 [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public ActionResult DeleteConfirmed(int id) { EXEMPLE_VIKINGSFactory vikingsFactory = new EXEMPLE_VIKINGSFactory(db); EXEMPLE_VIKINGS viking = vikingsFactory.getById(id); vikingsFactory.delete(ref viking); // Ajout d'un message flash this.Success("Viking supprimé avec succès."); return RedirectToAction("Index"); } protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); } base.Dispose(disposing); } private void FillSelect(EXEMPLE_VIKINGS viking) { EXEMPLE_TYPE_VIKINGFactory typeVikingFactory = new EXEMPLE_TYPE_VIKINGFactory(db); ViewBag.ID_TYPE = new SelectList(typeVikingFactory.getAll(), "ID", "TYPE", viking.ID_TYPE); //Chargement d'une liste vide à la création SOUS_TYPE_VIKINGFactory sousTypeFactory = new SOUS_TYPE_VIKINGFactory(); ViewBag.ID_SOUS_TYPE = new SelectList(sousTypeFactory.getManyBy(viking.ID_TYPE).OrderBy(i => i.Value), "Key", "Value", viking.ID_SOUS_TYPE); } //Mise à jour Ajax de la liste imbriquée public JsonResult listeSousType(int Id, int? defaultSelected) { SOUS_TYPE_VIKINGFactory sousTypeFactory = new SOUS_TYPE_VIKINGFactory(); List listType = new List(); Dictionary infoType = sousTypeFactory.getManyBy(Id); //le dictionnaire doit devenir une liste de types List> listeType = new List>(); foreach (var type in infoType) listeType.Add(new Tuple(int.Parse(type.Key.ToString()), type.Value)); foreach (Tuple liste in listeType) listType.Add(new SelectListItem { Text = liste.Item2, Value = liste.Item1.ToString() }); return Json(new SelectList(listType, "Value", "Text", defaultSelected), JsonRequestBehavior.AllowGet); } } }