public ActionResult Annuler(int idSortie, int?idAdherent, int?idAssociation, int?idHistoriquePaiement) { Sortie sortie = db.Sorties.Find(idSortie); if (sortie.CapaciteActuelle > 0) { sortie.CapaciteActuelle--; } Adherent adherent = db.Adherents.Find(idAdherent); SortieAdherent sortieAdherent = db.SortieAdherents.Find(idSortie, idAdherent, idAssociation); if (sortieAdherent != null) { db.SortieAdherents.Remove(sortieAdherent); } HistoriquePaiement historiquePaiement = db.HistoriquePaiements.Where(a => a.IdAdherent == adherent.IdAdherent && a.IdSortie == idSortie).SingleOrDefault(); if (historiquePaiement != null) { db.HistoriquePaiements.Remove(historiquePaiement); adherent.Solde += sortie.Prix; } db.SaveChanges(); return(RedirectToAction("Details/" + idSortie)); }
//GET public ActionResult Inscription(int?idSortie, int?idAdherent) { Adherent adherent = db.Adherents.Find(idAdherent); //Sécurité if (adherent == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } //Instanciation de la sortie à laquelle on souhaite s'inscrire Sortie maSortie = db.Sorties.Find(idSortie); if (adherent.Solde < maSortie.Prix) { TempData["Modal"] = 1; } else if (maSortie.NbInscrits >= maSortie.CapaciteMaximum) { TempData["Modal"] = 2; } else { //Sécurité if (maSortie == null) { return(HttpNotFound()); } adherent.Solde -= maSortie.Prix; Session["Adherent"] = adherent; maSortie.NbInscrits++; //Instanciation d'un objet vierge de type sortie adhérent, dont on renseigne les valeurs pour ses différents champs SortieAdherent sortieAdherent = new SortieAdherent(); sortieAdherent.IdAdherent = adherent.IdAdherent; sortieAdherent.IdSortie = (int)idSortie; sortieAdherent.IdAssociation = adherent.IdAssociation; sortieAdherent.Statut = true; db.SortieAdherents.Add(sortieAdherent); db.SaveChanges(); //Même chose qu'au dessous, sauf que c'est pour l'historique de paiement HistoriquePaiement historiquePaiement = new HistoriquePaiement(); historiquePaiement.IdAdherent = adherent.IdAdherent; historiquePaiement.IdAssociation = adherent.IdAssociation; historiquePaiement.Paiement = maSortie.Prix; historiquePaiement.Date = DateTime.Now; historiquePaiement.IdSortie = (int)idSortie; //Sauvegarde en base de données db.HistoriquePaiements.Add(historiquePaiement); db.SaveChanges(); } return(RedirectToAction("Index")); }
public ActionResult Participer(int idSortie, int?idAdherent, int?idAssociation, int?idHistoriquePaiement) { Sortie sortie = db.Sorties.Find(idSortie); if (sortie.CapaciteActuelle != sortie.CapaciteMaximum) { sortie.CapaciteActuelle++; } Adherent adherent = db.Adherents.Find(idAdherent); adherent.Solde -= sortie.Prix; SortieAdherent existSortieAdherent = db.SortieAdherents.Find(idSortie, idAdherent, idAssociation); if (existSortieAdherent == null) { SortieAdherent sortieAdherent = new SortieAdherent(); sortieAdherent.IdAssociation = adherent.Association.IdAssociation; sortieAdherent.IdAdherent = adherent.IdAdherent; sortieAdherent.IdSortie = sortie.IdSortie; db.SortieAdherents.Add(sortieAdherent); } HistoriquePaiement existePaiement = db.HistoriquePaiements.Where(a => a.IdAdherent == adherent.IdAdherent && a.IdSortie == idSortie).SingleOrDefault(); if (existePaiement == null) { HistoriquePaiement historiquePaiement = new HistoriquePaiement(); historiquePaiement.Adherent = adherent; historiquePaiement.Association = adherent.Association; historiquePaiement.Paiement = sortie.Prix; historiquePaiement.Date = DateTime.Now; historiquePaiement.IdSortie = idSortie; db.HistoriquePaiements.Add(historiquePaiement); } db.SaveChanges(); return(RedirectToAction("Details/" + idSortie)); }
//GET public ActionResult CancelInscription(int?idSortie, int?idAdherent, int?idAssociation, int?idHistoriquePaiement) { Adherent adherent = db.Adherents.Find(idAdherent); //Sécurité if (adherent == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Sortie maSortie = db.Sorties.Find(idSortie); adherent.Solde += maSortie.Prix; Session["Adherent"] = adherent; maSortie.NbInscrits--; //Sécurité if (maSortie == null) { return(HttpNotFound()); } //Instanciation de la sortie à laquelle on souhaite annuler son incription, via les 3 paramètres de notre table sortieAdhérent, et suppression de l'incription SortieAdherent sortieAdherent = db.SortieAdherents.Find(idSortie, idAdherent, idAssociation); db.SortieAdherents.Remove(sortieAdherent); //Recherche de l'historique paiement lié à la sortie via l'idSortie, afin de le delete HistoriquePaiement historiquePaiement = db.HistoriquePaiements.FirstOrDefault(hp => hp.IdSortie == maSortie.IdSortie); historiquePaiement.Statut = false; db.SaveChanges(); return(RedirectToAction("Index")); }