using MALDFGASSURANCE.Models; using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; using System.Linq; using System.Net; using System.Web.Mvc; namespace MALDFGASSURANCE.Areas.ESPACEREMBOURSEMENT.Controllers { [Authorize(Roles = "Coordonnateur")] public class REMBOURSFACTURESController : Controller { private MALDFGEntities db = new MALDFGEntities(); public string info; public string indicateur; // GET: ESPACEREMBOURSEMENT/REMBOURSFACTURES public ActionResult Index() { CreateRemboursement(); var rEMBOURSFACTURE = db.REMBOURSFACTURE.Include(r => r.REMBOURSEMENT); return View(rEMBOURSFACTURE.ToList()); } public ActionResult DirectSoins() { CreateRemboursement(); var rEMBOURSFACTURE = db.REMBOURSFACTURE.Include(r => r.REMBOURSEMENT); return View(rEMBOURSFACTURE.Where(r => r.TYPE == 2).ToList()); } public ActionResult RemboursementDirect() { CreateRemboursement(); var rEMBOURSFACTURE = db.REMBOURSFACTURE.Include(r => r.REMBOURSEMENT); return View(rEMBOURSFACTURE.Where(r => r.TYPE == 2).ToList()); } public ActionResult RemboursementPartenaire() { CreateRemboursement(); var rEMBOURSFACTURE = db.REMBOURSFACTURE.Include(r => r.REMBOURSEMENT); return View(rEMBOURSFACTURE.Where(r => r.TYPE == 1).ToList()); } public ActionResult PartenaireSoins() { CreateRemboursement(); var rEMBOURSFACTURE = db.REMBOURSFACTURE.Include(r => r.REMBOURSEMENT); return View(rEMBOURSFACTURE.Where(r => r.IDREMBOURSFACTURE == 1).ToList()); } public int REFRemboursement(String refremboursement) { int retour = 0; if (refremboursement != "" & refremboursement != null) { REMBOURSEMENT rEMBOURSEMENT = new REMBOURSEMENT(); rEMBOURSEMENT = db.REMBOURSEMENT.Where(r => r.NUMREBOURSEMENT == refremboursement).FirstOrDefault(); if (rEMBOURSEMENT != null) { retour = rEMBOURSEMENT.IDREMBOURSEMENT; } } return retour; } public bool VerifierREmboursement(String refremboursement) { return db.REMBOURSEMENT.Where(r => r.NUMREBOURSEMENT == refremboursement).Count() > 0; } public void CreerREmboursement(String refremboursement, String periode, int typePaiement) { REMBOURSEMENT rEMBOURSEMENT = new REMBOURSEMENT(); rEMBOURSEMENT.NUMREBOURSEMENT = refremboursement; if (typePaiement == 2) { info = rEMBOURSEMENT.NUMREBOURSEMENT.Substring(7, rEMBOURSEMENT.NUMREBOURSEMENT.Length - 7); var adherent = db.ADHERENT.Where(a => a.MATRICULE_PROFESSIONNEL_ADERANT == info).ToList(); foreach (var personne in adherent as IList) { rEMBOURSEMENT.INFORMATION = "Remboursement de " + personne.NOMS_ET_PRENOMS; } } else { indicateur = rEMBOURSEMENT.NUMREBOURSEMENT.Substring(rEMBOURSEMENT.NUMREBOURSEMENT.Length - 2, 2); if (indicateur == "CL") { info = rEMBOURSEMENT.NUMREBOURSEMENT.Substring(7, rEMBOURSEMENT.NUMREBOURSEMENT.Length - 9); var etablissement = db.ETABLISSEMENT.Where(e => e.ID_ETABLISSEMENT == info).ToList(); foreach (var etabli in etablissement as IList) { rEMBOURSEMENT.INFORMATION = "Paiement de l'etablissement: " + etabli.NOM_ETABLISSEMENT; } } else { info = rEMBOURSEMENT.NUMREBOURSEMENT.Substring(7, rEMBOURSEMENT.NUMREBOURSEMENT.Length - 9); var pharmacie = db.PHARMACIE.Where(p => p.REFPHARMACIE == info).ToList(); foreach (var pharma in pharmacie as IList) { rEMBOURSEMENT.INFORMATION = "Paiement de l'etablissent: " + pharma.RAISONSOCIALE; } } } rEMBOURSEMENT.DATECREATION = DateTime.Now; rEMBOURSEMENT.PERIODE = periode; rEMBOURSEMENT.ETAT = 1; rEMBOURSEMENT.TOTAL = 0; rEMBOURSEMENT.TOTALREMBOURSER = 0; db.REMBOURSEMENT.Add(rEMBOURSEMENT); db.SaveChanges(); } public int RefRemboursement(int typePaiement, string refEtablissement, string matricule, DateTime periode) { string myRef; if (typePaiement == 1) { myRef = "RE" + periode.ToString("MM-yy") + refEtablissement; } else { myRef = "RD" + periode.ToString("MM-yy") + matricule; } if (!VerifierREmboursement(myRef)) { CreerREmboursement(myRef, periode.ToString("MM-yy"), typePaiement); } return REFRemboursement(myRef); } public void CreateRemboursement() { var nbrefactClRemb = db.FACTURE.Where(fa => (fa.ETAT == 2 && fa.STATUT == 2)).ToList(); var nbrefactPharRemb = db.FACTUREPHARMACIE.Where(fp => (fp.ETAT == 2 && fp.STATUT == 2)).ToList(); if (nbrefactClRemb != null & nbrefactPharRemb != null) { int theRef; REMBOURSFACTURE eMBOURSFACTURE = new REMBOURSFACTURE(); if (nbrefactClRemb.Count() > 0) { foreach (var listeFC in nbrefactClRemb as IList) { theRef = RefRemboursement(listeFC.ID_TYPEFACTURE, listeFC.ID_ETABLISSEMENT + "CL", listeFC.ASSURE.ADHERENT.MATRICULE_PROFESSIONNEL_ADERANT, Convert.ToDateTime(listeFC.DATECREATION)); if (theRef > 0) { eMBOURSFACTURE.IDREMBOURSEMENT = theRef; eMBOURSFACTURE.NUMERO_FACTURE = listeFC.NUMERO_FACTURE; eMBOURSFACTURE.DATECREATION = DateTime.Now; eMBOURSFACTURE.IDUTILISATEUR = User.Identity.Name; eMBOURSFACTURE.MONTRECLAMER = listeFC.MONTANT_TOTAL_FACTURE; eMBOURSFACTURE.BASEDECOMPTE = listeFC.MONTANTVALIDER; eMBOURSFACTURE.TAUX = Convert.ToInt32(listeFC.TAUX); eMBOURSFACTURE.TYPE = listeFC.ID_TYPEFACTURE; eMBOURSFACTURE.LIBELLETYPE = "FACTURE CLINIQUE -" + listeFC.TYPE_FACTURE.LIBELLE_TYPEFACTURE; db.REMBOURSFACTURE.Add(eMBOURSFACTURE); db.SaveChanges(); listeFC.ETAT = 3; listeFC.DATEREMBOURSEMENT = DateTime.Now; db.Entry(listeFC).State = EntityState.Modified; db.SaveChanges(); } } } if (nbrefactPharRemb.Count() > 0) { foreach (var listePH in nbrefactPharRemb as IList) { theRef = RefRemboursement(Convert.ToInt32(listePH.ID_TYPEFACTURE), listePH.REFPHARMACIE + "PH", listePH.ASSURE.ADHERENT.MATRICULE_PROFESSIONNEL_ADERANT, Convert.ToDateTime(listePH.DATECREATION)); if (theRef > 0) { eMBOURSFACTURE.IDREMBOURSEMENT = theRef; eMBOURSFACTURE.NUMERO_FACTURE = listePH.REFFACTUREPHAR; eMBOURSFACTURE.DATECREATION = DateTime.Now; eMBOURSFACTURE.IDUTILISATEUR = User.Identity.Name; eMBOURSFACTURE.MONTRECLAMER = listePH.MONTANT; eMBOURSFACTURE.BASEDECOMPTE = listePH.MONTANTVALIDER; eMBOURSFACTURE.TAUX = Convert.ToInt32(listePH.TAUX); eMBOURSFACTURE.TYPE = listePH.ID_TYPEFACTURE; eMBOURSFACTURE.LIBELLETYPE = "FACTURE PHARMACIE -" + listePH.TYPE_FACTURE.LIBELLE_TYPEFACTURE; db.REMBOURSFACTURE.Add(eMBOURSFACTURE); db.SaveChanges(); listePH.ETAT = 3; listePH.DATEREMBOURSEMENT = DateTime.Now; db.Entry(listePH).State = EntityState.Modified; db.SaveChanges(); } } } } } //public void MiseAjour() //{ // var nbrefactClRemb = db.FACTURE.Where(fa => (fa.ETAT == 2 && fa.STATUT == 2)).ToList(); // var nbrefactPharRemb = db.FACTUREPHARMACIE.Where(fp => (fp.ETAT == 2 && fp.STATUT == 2)).ToList(); // String REFETABLISSENT = ""; // if (nbrefactClRemb != null & nbrefactPharRemb != null) // { // REMBOURSFACTURE eMBOURSFACTURE = new REMBOURSFACTURE(); // if (nbrefactClRemb.Count() > 0) // { // foreach (var listeFC in nbrefactClRemb as IList) // { // eMBOURSFACTURE = new REMBOURSFACTURE(); // if (listeFC.ID_TYPEFACTURE == 1) // { // if (!REFETABLISSENT.Equals(listeFC.ID_ETABLISSEMENT)) // { // REFETABLISSENT = listeFC.ID_ETABLISSEMENT; // } // } // if (!VerifierREmboursement(REFETABLISSENT)) // { // CreerREmboursement(REFETABLISSENT,'01/01'); // } // if (REFRemboursement(REFETABLISSENT) > 0) // { // if (listeFC.ID_TYPEFACTURE == 1) // { // eMBOURSFACTURE.TYPE = 1; // eMBOURSFACTURE.LIBELLETYPE = "FACTURE CLINIQUE" + listeFC.ETABLISSEMENT.NOM_ETABLISSEMENT; // } // else // if (listeFC.ID_TYPEFACTURE == 2) // { // eMBOURSFACTURE.TYPE = 2; // eMBOURSFACTURE.LIBELLETYPE = "FACTURE REMBOURSEMENT DE " + listeFC.ASSURE.ADHERENT.NOMS_ET_PRENOMS; // } // else // { // eMBOURSFACTURE.TYPE = 3; // eMBOURSFACTURE.LIBELLETYPE = "Facture Inconnue"; // } // eMBOURSFACTURE.IDREMBOURSEMENT = REFRemboursement(REFETABLISSENT); // eMBOURSFACTURE.NUMERO_FACTURE = listeFC.NUMERO_FACTURE; // eMBOURSFACTURE.DATECREATION = DateTime.Now; // eMBOURSFACTURE.IDUTILISATEUR = User.Identity.Name; // eMBOURSFACTURE.MONTRECLAMER = listeFC.MONTANT_TOTAL_FACTURE; // eMBOURSFACTURE.BASEDECOMPTE = listeFC.MONTANTVALIDER; // eMBOURSFACTURE.TAUX = Convert.ToInt32(listeFC.TAUX); // db.REMBOURSFACTURE.Add(eMBOURSFACTURE); // db.SaveChanges(); // listeFC.ETAT = 3; // listeFC.DATEREMBOURSEMENT = DateTime.Now; // db.Entry(listeFC).State = EntityState.Modified; // db.SaveChanges(); // } // else // { // ViewBag.Message = "L'établissement n'est reconnue par le système"; // } // } // } // if (nbrefactPharRemb.Count() > 0) // { // foreach (var listePH in nbrefactPharRemb as IList) // { // eMBOURSFACTURE = new REMBOURSFACTURE(); // if (!REFETABLISSENT.Equals(listePH.REFPHARMACIE)) // { // REFETABLISSENT = listePH.REFPHARMACIE; // } // if (!VerifierREmboursement(REFETABLISSENT)) // { // CreerREmboursement(REFETABLISSENT); // } // if (REFRemboursement(REFETABLISSENT) > 0) // { // if (listePH.ID_TYPEFACTURE == 1) // { // eMBOURSFACTURE.TYPE = 1; // eMBOURSFACTURE.LIBELLETYPE = "FACTURE PHARMACIE " + listePH.REFFACTUREPHAR; // } // else // if (listePH.ID_TYPEFACTURE == 2) // { // eMBOURSFACTURE.TYPE = 2; // eMBOURSFACTURE.LIBELLETYPE = "FACTURE PHARMACIE REMBOURSEMENT DE " + listePH.REFFACTUREPHAR; // } // else // { // eMBOURSFACTURE.TYPE = 3; // eMBOURSFACTURE.LIBELLETYPE = "FACTURE PHARMACIE INCONNU"; // } // eMBOURSFACTURE.IDREMBOURSEMENT = REFRemboursement(REFETABLISSENT); // eMBOURSFACTURE.NUMERO_FACTURE = listePH.REFFACTUREPHAR; // eMBOURSFACTURE.DATECREATION = DateTime.Now; // eMBOURSFACTURE.IDUTILISATEUR = User.Identity.Name; // eMBOURSFACTURE.MONTRECLAMER = listePH.MONTANT; // eMBOURSFACTURE.BASEDECOMPTE = listePH.MONTANTVALIDER; // eMBOURSFACTURE.TAUX = Convert.ToInt32(listePH.TAUX); // db.REMBOURSFACTURE.Add(eMBOURSFACTURE); // db.SaveChanges(); // listePH.ETAT = 3; // listePH.DATEREMBOURSEMENT = DateTime.Now; // db.Entry(listePH).State = EntityState.Modified; // db.SaveChanges(); // } // else // { // ViewBag.Message = "L'établissement n'est reconnue pas le systeme"; // } // } // } // } //} // GET: ESPACEREMBOURSEMENT/REMBOURSFACTURES/Details/5 public ActionResult Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } REMBOURSFACTURE rEMBOURSFACTURE = db.REMBOURSFACTURE.Find(id); if (rEMBOURSFACTURE == null) { return HttpNotFound(); } return View(rEMBOURSFACTURE); } // GET: ESPACEREMBOURSEMENT/REMBOURSFACTURES/Create public ActionResult Create() { ViewBag.IDREMBOURSEMENT = new SelectList(db.REMBOURSEMENT, "IDREMBOURSEMENT", "NUMREBOURSEMENT"); return View(); } // POST: ESPACEREMBOURSEMENT/REMBOURSFACTURES/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 = "IDREMBOURSFACTURE,IDREMBOURSEMENT,NUMERO_FACTURE,DATECREATION,DATEMODIFICATION,IDUTILISATEUR,ETAT,TYPE,LIBELLETYPE")] REMBOURSFACTURE rEMBOURSFACTURE) { if (ModelState.IsValid) { db.REMBOURSFACTURE.Add(rEMBOURSFACTURE); db.SaveChanges(); return RedirectToAction("Index"); } ViewBag.IDREMBOURSEMENT = new SelectList(db.REMBOURSEMENT, "IDREMBOURSEMENT", "NUMREBOURSEMENT", rEMBOURSFACTURE.IDREMBOURSEMENT); return View(rEMBOURSFACTURE); } // GET: ESPACEREMBOURSEMENT/REMBOURSFACTURES/Edit/5 public ActionResult Edit(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } REMBOURSFACTURE rEMBOURSFACTURE = db.REMBOURSFACTURE.Find(id); if (rEMBOURSFACTURE == null) { return HttpNotFound(); } ViewBag.IDREMBOURSEMENT = new SelectList(db.REMBOURSEMENT, "IDREMBOURSEMENT", "NUMREBOURSEMENT", rEMBOURSFACTURE.IDREMBOURSEMENT); return View(rEMBOURSFACTURE); } // POST: ESPACEREMBOURSEMENT/REMBOURSFACTURES/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 = "IDREMBOURSFACTURE,IDREMBOURSEMENT,NUMERO_FACTURE,DATECREATION,DATEMODIFICATION,IDUTILISATEUR,ETAT,TYPE,LIBELLETYPE")] REMBOURSFACTURE rEMBOURSFACTURE) { if (ModelState.IsValid) { db.Entry(rEMBOURSFACTURE).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } ViewBag.IDREMBOURSEMENT = new SelectList(db.REMBOURSEMENT, "IDREMBOURSEMENT", "NUMREBOURSEMENT", rEMBOURSFACTURE.IDREMBOURSEMENT); return View(rEMBOURSFACTURE); } // GET: ESPACEREMBOURSEMENT/REMBOURSFACTURES/Delete/5 public ActionResult Delete(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } REMBOURSFACTURE rEMBOURSFACTURE = db.REMBOURSFACTURE.Find(id); if (rEMBOURSFACTURE == null) { return HttpNotFound(); } return View(rEMBOURSFACTURE); } // POST: ESPACEREMBOURSEMENT/REMBOURSFACTURES/Delete/5 [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public ActionResult DeleteConfirmed(int id) { REMBOURSFACTURE rEMBOURSFACTURE = db.REMBOURSFACTURE.Find(id); db.REMBOURSFACTURE.Remove(rEMBOURSFACTURE); db.SaveChanges(); return RedirectToAction("Index"); } protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); } base.Dispose(disposing); } } }