using MALDFGASSURANCE.Models; using System; using System.Data; using System.Data.Entity; using System.Linq; using System.Net; using System.Web.Mvc; namespace MALDFGASSURANCE.Areas.FACTURATION.Controllers { [Authorize(Roles = "Coordonnateur, MedecinConseil")] public class PRESTATIONSController : Controller { private MALDFGEntities db = new MALDFGEntities(); // GET: FACTURATION/PRESTATIONS public ActionResult Index() { var pRESTATIONS = db.PRESTATIONS.Include(p => p.ACTE).Include(p => p.FACTURE).Include(p => p.TYPE_PRESTATION); return View(pRESTATIONS.ToList()); } // GET: FACTURATION/PRESTATIONS/Details/5 public ActionResult Details(string id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } PRESTATIONS pRESTATIONS = db.PRESTATIONS.Find(id); if (pRESTATIONS == null) { return HttpNotFound(); } return View(pRESTATIONS); } // GET: FACTURATION/PRESTATIONS/CreateFacture public ActionResult CreateFacture(String id) { if (id != null) { FACTURE fACTURE = db.FACTURE.Find(id); ViewBag.MATRICULE = fACTURE.MATRICULE; ViewBag.NOMASSURE = fACTURE.ASSURE.NOM + " " + fACTURE.ASSURE.PRENOMS; ViewBag.NOMETABLISSEMENT = fACTURE.ETABLISSEMENT.NOM_ETABLISSEMENT; ViewBag.MONTANT = fACTURE.MONTANT_TOTAL_FACTURE; ViewBag.NUMEROFACTURE = fACTURE.NUMERO_FACTURE; ViewBag.CODE_ACTE = new SelectList(db.ACTE, "CODE_ACTE", "LIBELLE_ACTE"); ViewBag.NUMERO_FACTURE = new SelectList(db.FACTURE, "NUMERO_FACTURE", "NUMERO_FACTURE"); ViewBag.ID_TYPEDEPRESTATION = new SelectList(db.TYPE_PRESTATION, "ID_TYPEDEPRESTATION", "LIBELLE_TYUPEDEPRESTATION"); ViewData["LISTEPRESTATION"] = db.PRESTATIONS.Where(m => m.NUMERO_FACTURE == fACTURE.NUMERO_FACTURE).ToList(); } return View(); } // GET: FACTURATION/PRESTATIONS/Create public ActionResult Create() { ViewBag.CODE_ACTE = new SelectList(db.ACTE, "CODE_ACTE", "LIBELLE_ACTE"); ViewBag.NUMERO_FACTURE = new SelectList(db.FACTURE, "NUMERO_FACTURE", "MATRICULE"); ViewBag.ID_TYPEDEPRESTATION = new SelectList(db.TYPE_PRESTATION, "ID_TYPEDEPRESTATION", "LIBELLE_TYUPEDEPRESTATION"); return View(); } // POST: FACTURATION/PRESTATIONS/Create // Afin de déjouer les attaques par survalidation, activez les propriétés spécifiques auxquelles vous voulez établir une liaison. Pour // plus de détails, consultez https://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "ID_PRESTATION,NOM_PRESTATAIRE,ID_TYPEDEPRESTATION,NUMERO_FACTURE,CODE_ACTE,NOMBRE_TRAITEMENT,PRIX_UNITATIRE,MONTANT_ORIGINE,MONTANT_VALIDE,VALIDITE_ACTE,DATE_PRESTATION,DATE_REMBOURSEMENT,IDUTILISATEUR,ETAT,DATECREATION,DATEMODIFICATION,DATESUPPRESSION")] PRESTATIONS pRESTATIONS) { string message = ""; if (ModelState.IsValid) { if (db.PRESTATIONS.Where(a => a.CODE_ACTE == pRESTATIONS.CODE_ACTE).Count() > 0) { message = "La prestation existe déjà"; } else { db.PRESTATIONS.Add(pRESTATIONS); db.SaveChanges(); } } ModelState.Clear(); pRESTATIONS = new PRESTATIONS(); ViewBag.Message = message; ViewBag.CODE_ACTE = new SelectList(db.ACTE, "CODE_ACTE", "LIBELLE_ACTE", pRESTATIONS.CODE_ACTE); ViewBag.NUMERO_FACTURE = new SelectList(db.FACTURE, "NUMERO_FACTURE", "MATRICULE", pRESTATIONS.NUMERO_FACTURE); ViewBag.ID_TYPEDEPRESTATION = new SelectList(db.TYPE_PRESTATION, "ID_TYPEDEPRESTATION", "LIBELLE_TYUPEDEPRESTATION", pRESTATIONS.ID_TYPEDEPRESTATION); return View(pRESTATIONS); } [HttpPost] [ValidateAntiForgeryToken] public ActionResult CreateFacture([Bind(Include = "ID_PRESTATION,NOM_PRESTATAIRE,ID_TYPEDEPRESTATION,NUMERO_FACTURE,CODE_ACTE,NOMBRE_TRAITEMENT,PRIX_UNITATIRE,MONTANT_ORIGINE,MONTANT_VALIDE,VALIDITE_ACTE,DATE_PRESTATION,DATE_REMBOURSEMENT,IDUTILISATEUR,ETAT,DATECREATION,DATEMODIFICATION,DATESUPPRESSION")] PRESTATIONS pRESTATIONS) { FACTURE fACTURE = db.FACTURE.Find(pRESTATIONS.NUMERO_FACTURE); string message = ""; string montantistype = ""; if (ModelState.IsValid) { if (db.PRESTATIONS.Where(a => (a.NUMERO_FACTURE == pRESTATIONS.NUMERO_FACTURE) && (a.CODE_ACTE == pRESTATIONS.CODE_ACTE)).Count() > 0) { message += "La prestation existe déjà,veuillez modifiez l'existant"; } else { if (pRESTATIONS.PRIX_UNITATIRE == null || pRESTATIONS.PRIX_UNITATIRE == 0) { montantistype += "Saisissez le montant de la prestation"; } else { if (pRESTATIONS.ID_TYPEDEPRESTATION == "001") { pRESTATIONS.MONTANT_PLAFOND = Convert.ToInt32(db.ACTE.Find(pRESTATIONS.CODE_ACTE).PRIX_NORMAL); } else { pRESTATIONS.MONTANT_PLAFOND = Convert.ToInt32(db.ACTE.Find(pRESTATIONS.CODE_ACTE).PRIX_FERIE); } pRESTATIONS.MONTANT_ORIGINE = Convert.ToInt32(pRESTATIONS.PRIX_UNITATIRE) * Convert.ToInt32(pRESTATIONS.NOMBRE_TRAITEMENT); int TotalPrest = Convert.ToInt32(db.PRESTATIONS.Where(p => p.NUMERO_FACTURE == pRESTATIONS.NUMERO_FACTURE).Sum(p => p.MONTANT_ORIGINE)); int TotalFacture = Convert.ToInt32(db.FACTURE.Find(pRESTATIONS.NUMERO_FACTURE).MONTANT_TOTAL_FACTURE); if (TotalFacture >= (TotalPrest + pRESTATIONS.MONTANT_ORIGINE)) { Random aleatoire = new Random(); int chiffrealeatoire = aleatoire.Next(100, 999); pRESTATIONS.ID_PRESTATION = "PRES" + chiffrealeatoire + DateTime.Now.ToString("ddMMyyHHmmss"); pRESTATIONS.MONTANT_ORIGINE = pRESTATIONS.NOMBRE_TRAITEMENT * pRESTATIONS.PRIX_UNITATIRE; pRESTATIONS.IDUTILISATEUR = User.Identity.Name; pRESTATIONS.DATECREATION = DateTime.Now; pRESTATIONS.DATE_REMBOURSEMENT = DateTime.Now; //pRESTATIONS.DATE_PRESTATION = DateTime.Now; db.PRESTATIONS.Add(pRESTATIONS); db.SaveChanges(); } else { message += "le montant de la prestation est supérieur au montant de la facture"; } } } } ViewBag.Message = message + montantistype; ViewBag.Montantistype = montantistype; ViewBag.MATRICULE = fACTURE.MATRICULE; ViewBag.NOMASSURE = fACTURE.ASSURE.NOM + " " + fACTURE.ASSURE.PRENOMS; ViewBag.NOMETABLISSEMENT = fACTURE.ETABLISSEMENT.NOM_ETABLISSEMENT; ViewBag.MONTANT = fACTURE.MONTANT_TOTAL_FACTURE; ViewBag.NUMEROFACTURE = fACTURE.NUMERO_FACTURE; ViewBag.CODE_ACTE = new SelectList(db.ACTE, "CODE_ACTE", "LIBELLE_ACTE"); ViewBag.NUMERO_FACTURE = new SelectList(db.FACTURE, "NUMERO_FACTURE", "NUMERO_FACTURE"); ViewBag.ID_TYPEDEPRESTATION = new SelectList(db.TYPE_PRESTATION, "ID_TYPEDEPRESTATION", "LIBELLE_TYUPEDEPRESTATION"); ViewData["LISTEPRESTATION"] = db.PRESTATIONS.Where(m => m.NUMERO_FACTURE == "" + pRESTATIONS.NUMERO_FACTURE).ToList(); ModelState.Clear(); pRESTATIONS = new PRESTATIONS(); return View(pRESTATIONS); } // GET: FACTURATION/PRESTATIONS/Edit/5 public ActionResult Edit(string id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } PRESTATIONS pRESTATIONS = db.PRESTATIONS.Find(id); if (pRESTATIONS == null) { return HttpNotFound(); } ViewBag.CODE_ACTE = new SelectList(db.ACTE, "CODE_ACTE", "LIBELLE_ACTE", pRESTATIONS.CODE_ACTE); ViewBag.NUMERO_FACTURE = new SelectList(db.FACTURE, "NUMERO_FACTURE", "MATRICULE", pRESTATIONS.NUMERO_FACTURE); ViewBag.ID_TYPEDEPRESTATION = new SelectList(db.TYPE_PRESTATION, "ID_TYPEDEPRESTATION", "LIBELLE_TYUPEDEPRESTATION", pRESTATIONS.ID_TYPEDEPRESTATION); return View(pRESTATIONS); } // POST: FACTURATION/PRESTATIONS/Edit/5 // Afin de déjouer les attaques par survalidation, activez les propriétés spécifiques auxquelles vous voulez établir une liaison. Pour // plus de détails, consultez https://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Edit([Bind(Include = "ID_PRESTATION,NOM_PRESTATAIRE,ID_TYPEDEPRESTATION,NUMERO_FACTURE,CODE_ACTE,NOMBRE_TRAITEMENT,PRIX_UNITATIRE,MONTANT_ORIGINE,MONTANT_VALIDE,VALIDITE_ACTE,DATE_PRESTATION,DATE_REMBOURSEMENT,IDUTILISATEUR,ETAT,DATECREATION,DATEMODIFICATION,DATESUPPRESSION")] PRESTATIONS pRESTATIONS) { if (ModelState.IsValid) { db.Entry(pRESTATIONS).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("CreateFacture/" + pRESTATIONS.NUMERO_FACTURE); } ViewBag.CODE_ACTE = new SelectList(db.ACTE, "CODE_ACTE", "LIBELLE_ACTE", pRESTATIONS.CODE_ACTE); ViewBag.NUMERO_FACTURE = new SelectList(db.FACTURE, "NUMERO_FACTURE", "MATRICULE", pRESTATIONS.NUMERO_FACTURE); ViewBag.ID_TYPEDEPRESTATION = new SelectList(db.TYPE_PRESTATION, "ID_TYPEDEPRESTATION", "LIBELLE_TYUPEDEPRESTATION", pRESTATIONS.ID_TYPEDEPRESTATION); return View(pRESTATIONS); } [HttpPost] [ValidateAntiForgeryToken] public ActionResult EditPresation([Bind(Include = "ID_PRESTATION,NOM_PRESTATAIRE,ID_TYPEDEPRESTATION,NUMERO_FACTURE,CODE_ACTE,NOMBRE_TRAITEMENT,PRIX_UNITATIRE,MONTANT_ORIGINE,MONTANT_VALIDE,VALIDITE_ACTE,DATE_PRESTATION,DATE_REMBOURSEMENT,IDUTILISATEUR,ETAT,DATECREATION,DATEMODIFICATION,DATESUPPRESSION,NOMBRE_TRAITEMENT_VALIDE")] PRESTATIONS pRESTATIONS) { PRESTATIONS pRESTATIONS2 = new PRESTATIONS(); pRESTATIONS2 = db.PRESTATIONS.Find(pRESTATIONS.ID_PRESTATION); if (ModelState.IsValid) { pRESTATIONS2 = db.PRESTATIONS.Find(pRESTATIONS.NUMERO_FACTURE); // pRESTATIONS2.PRIX_UNITATIRE = pRESTATIONS.PRIX_UNITATIRE; pRESTATIONS2.NOMBRE_TRAITEMENT = pRESTATIONS.NOMBRE_TRAITEMENT; pRESTATIONS2.MONTANT_ORIGINE = pRESTATIONS.MONTANT_ORIGINE; pRESTATIONS2.CODE_ACTE = pRESTATIONS.CODE_ACTE; db.Entry(pRESTATIONS).State = EntityState.Modified; db.SaveChanges(); } ModelState.Clear(); return RedirectToAction("CreateFacture/" + pRESTATIONS.NUMERO_FACTURE); } // GET: FACTURATION/PRESTATIONS/Delete/5 public ActionResult Delete(string id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } PRESTATIONS pRESTATIONS = db.PRESTATIONS.Find(id); if (pRESTATIONS == null) { return HttpNotFound(); } return View(pRESTATIONS); } public ActionResult Deletenew(string id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } PRESTATIONS pRESTATIONS = db.PRESTATIONS.Find(id); var myNUMERO_FACTURE = pRESTATIONS.NUMERO_FACTURE; db.PRESTATIONS.Remove(pRESTATIONS); db.SaveChanges(); return RedirectToAction("CreateFacture/" + myNUMERO_FACTURE, "PRESTATIONS"); } // POST: FACTURATION/PRESTATIONS/Delete/5 [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public ActionResult DeleteConfirmed(string id) { PRESTATIONS pRESTATIONS = db.PRESTATIONS.Find(id); db.PRESTATIONS.Remove(pRESTATIONS); db.SaveChanges(); return RedirectToAction("Index"); } protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); } base.Dispose(disposing); } } }