// Les actions pour  ajouter des méthodes de saisie des valeurs

        public ActionResult Valeurs(int?id, string mot, string type)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            DONNEE_ET_INDICATEUR dONNEE_ET_INDICATEUR = db.DONNEE_ET_INDICATEUR.Where(i => i.ID_INDICATEUR == id && i.ID_REGION == 13).FirstOrDefault(); // db.DONNEE_ET_INDICATEUR.Find(id);

            if (dONNEE_ET_INDICATEUR == null)
            {
                return(HttpNotFound());
            }
            //MyMembershipProvider currentUser;

            //string username = currentUser.GetUser(User.Identity.Name,true); //** get UserName
            //Guid userGuid = (Guid)Membership.GetUser().ProviderUserKey; //** get user ID
            ViewBag.idusertst = db.UTILISATEUR.Where(x => x.USERNAME == User.Identity.Name.ToString()).FirstOrDefault().ID_UTILISATEUR;
            //User.Identity.Name.ToString();
            ViewBag.regions   = db.REGIONS.ToList();
            ViewBag.provinces = db.PROVINCES.Where(o => o.id_region == 13).ToList();
            var id_prov = (from p in db.PROVINCES where p.id_region == 13 select p.code_prov).ToList();

            ViewBag.communes      = db.COMMUNES.Where(x => id_prov.Contains(x.code_prov)).ToList(); // db.COMMUNES.ToList(); //Where(o => o.ID_REGION == '2').
            ViewBag.domaines      = db.DOMAINE.Where(d => d.ID_REGION == 13).ToList();
            ViewBag.themes        = db.THEME.Where(d => d.ID_REGION == 13).ToList();
            ViewBag.sousthemes    = db.SOUS_THEME.Where(d => d.ID_REGION == 13).ToList();
            ViewBag.id_indicateur = id;
            ViewBag.indicateur    = new SelectList(db.DONNEE_ET_INDICATEUR.Where(i => i.ID_INDICATEUR == id && i.ID_REGION == 13), "ID_INDICATEUR", "LIBELLE_INDICATEUR", dONNEE_ET_INDICATEUR.ID_INDICATEUR);
            ViewBag.recherche     = mot;
            ViewBag.typeIndCCODD  = type;
            return(View()); // (dONNEE_ET_INDICATEUR);
        }
        //
        public ActionResult ValeursInd(int?id)
        {
            if (id == null)
            {
                //return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                ViewBag.indicateur = new SelectList(db.DONNEE_ET_INDICATEUR.Where(i => i.ID_REGION == 13), "ID_INDICATEUR", "LIBELLE_INDICATEUR");
            }
            else
            {
                DONNEE_ET_INDICATEUR dONNEE_ET_INDICATEUR = db.DONNEE_ET_INDICATEUR.Where(i => i.ID_INDICATEUR == id && i.ID_REGION == 13).FirstOrDefault(); // db.DONNEE_ET_INDICATEUR.Find(id);
                if (dONNEE_ET_INDICATEUR == null)
                {
                    return(HttpNotFound());
                }
                ViewBag.indicateur = new SelectList(db.DONNEE_ET_INDICATEUR.Where(i => i.ID_INDICATEUR == id && i.ID_REGION == 13), "ID_INDICATEUR", "LIBELLE_INDICATEUR", dONNEE_ET_INDICATEUR.ID_INDICATEUR);
            }
            ViewBag.regions   = db.REGIONS.ToList();
            ViewBag.provinces = db.PROVINCES.Where(o => o.id_region == 13).ToList();
            var id_prov = (from p in db.PROVINCES where p.id_region == 13 select p.code_prov).ToList();

            ViewBag.communes   = db.COMMUNES.Where(x => id_prov.Contains(x.code_prov)).ToList(); // db.COMMUNES.ToList(); //Where(o => o.ID_REGION == '2').
            ViewBag.domaines   = db.DOMAINE.Where(d => d.ID_REGION == 13).ToList();
            ViewBag.themes     = db.THEME.Where(d => d.ID_REGION == 13).ToList();
            ViewBag.sousthemes = db.SOUS_THEME.Where(d => d.ID_REGION == 13).ToList();
            return(View()); // (dONNEE_ET_INDICATEUR);
        }
        // GET: GererINDICATEUR/Edit/5
        // [Authorize(Roles = "super-admin, admin")]
        public ActionResult Edit(int?id, string mot, string type, string controleur)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            DONNEE_ET_INDICATEUR dONNEE_ET_INDICATEUR = db.DONNEE_ET_INDICATEUR.Find(id);

            if (dONNEE_ET_INDICATEUR == null)
            {
                return(HttpNotFound());
            }
            ViewBag.fournisseurs = db.ORGANISATION.Where(o => o.ID_REGION == 13).ToList();
            //  ViewBag.sousobjectifs = db.SOUS_OBJECTIFDD.ToList();
            ViewBag.ID_FOURNISSEUR = new SelectList(db.ORGANISATION.Where(u => u.ID_REGION == 13), "ID_ORGANIZATION", "NOM_ORGANIZATION", dONNEE_ET_INDICATEUR.ID_FOURNISSEUR);
            ViewBag.ID_SOUSTHEME   = new SelectList(db.SOUS_THEME.Where(u => u.ID_REGION == 13), "ID_SOUSTHEME", "LIBELLE_SOUSTHEME", dONNEE_ET_INDICATEUR.ID_SOUSTHEME);
            //ViewBag.ID_SOUSOBJECTIF = new SelectList(db.SOUS_OBJECTIFDD.Where(u => u.ID_REGION == 13), "ID_SOUSOBJECTIF", "LIBELLE_SOUSOBJECTIF", dONNEE_ET_INDICATEUR.ID_SOUSOBJECTIF);
            ViewBag.ID_UNITE     = new SelectList(db.UNITE.Where(u => u.ID_REGION == 13), "ID_UNITE", "LIBELLE_UNITE", dONNEE_ET_INDICATEUR.ID_UNITE);
            ViewBag.sousthemesCC = db.SOUS_THEME.Where(s => s.ID_REGION == 13 && s.ID_THEME == 1031).ToList();

            ViewBag.CC   = dONNEE_ET_INDICATEUR.IS_CC;
            ViewBag.ODD  = dONNEE_ET_INDICATEUR.IS_ODD;
            ViewBag.SNDD = dONNEE_ET_INDICATEUR.IS_DD;


            //<!--10/07/2018-->
            ViewBag.objectifs = db.OBJECTIFDD.ToList();
            int id_objectif = -1;

            if (dONNEE_ET_INDICATEUR.ID_SOUSOBJECTIF != -1)
            {
                SOUS_OBJECTIFDD sous_objectif = db.SOUS_OBJECTIFDD.Find(dONNEE_ET_INDICATEUR.ID_SOUSOBJECTIF);
                id_objectif = sous_objectif.ID_OBJECTIF;
            }

            ViewBag.objectifSelect     = id_objectif;
            ViewBag.sousobjectifs      = db.SOUS_OBJECTIFDD.Where(so => so.ID_OBJECTIF == id_objectif).ToList();
            ViewBag.sousObjectifSelect = dONNEE_ET_INDICATEUR.ID_SOUSOBJECTIF;
            //<!--10/07/2018-->
            ViewBag.composanteCCSelect = dONNEE_ET_INDICATEUR.ID_SOUSCATEGORIECC;

            ViewBag.controleur   = controleur;
            ViewBag.recherche    = mot;
            ViewBag.typeIndCCODD = type;
            /////
            ViewBag.typeIndicateur = dONNEE_ET_INDICATEUR.TYPE;
            ViewBag.dpsir          = dONNEE_ET_INDICATEUR.CATEGORIEDPSIR;
            ViewBag.Priorite       = dONNEE_ET_INDICATEUR.PRIORITE;
            ViewBag.Disponibilite  = dONNEE_ET_INDICATEUR.PAYANT;
            /////
            return(View(dONNEE_ET_INDICATEUR));
        }
        public ActionResult IndexD(int?id, string mot)
        {
            ViewBag.domaines      = db.DOMAINE.Where(d => d.ID_REGION == 13).ToList();
            ViewBag.themes        = db.THEME.Where(d => d.ID_REGION == 13).ToList();
            ViewBag.soustheme     = db.SOUS_THEME.Where(d => d.ID_REGION == 13).ToList();
            ViewBag.organisations = db.ORGANISATION.Where(o => o.ID_REGION == 13).ToList();
            ViewBag.recherche     = mot;
            List <DETAIL_INDICATEUR> liste_indicateurs = new List <DETAIL_INDICATEUR>(); // Tableau des indicateurs

            if (User.IsInRole("partenaire"))
            {
                UTILISATEUR user            = db.UTILISATEUR.Where(u => u.USERNAME == User.Identity.Name).FirstOrDefault();
                int         id_organisation = user.ID_ORGANISATION;

                List <DONNEE_ET_INDICATEUR> liste_donnees_indicateurs = new List <DONNEE_ET_INDICATEUR>();
                List <DATARESTRICTION>      restrictions = db1.DATARESTRICTION.Where(d => d.ID_REGION == 13 && d.ID_ORGANIZATION == id_organisation).ToList();
                for (int i = 0; i < restrictions.Count; i++)
                {
                    int id_indicateur = restrictions[i].ID_INDICATEUR;
                    DETAIL_INDICATEUR    indicateur        = db.DETAIL_INDICATEUR.Where(d => d.ID_INDICATEUR == id_indicateur).FirstOrDefault();
                    DONNEE_ET_INDICATEUR donnee_indicateur = db.DONNEE_ET_INDICATEUR.Find(id_indicateur);

                    if (indicateur != null)
                    {
                        liste_indicateurs.Add(indicateur);
                    }

                    if (donnee_indicateur != null)
                    {
                        liste_donnees_indicateurs.Add(donnee_indicateur);
                    }
                }

                ViewBag.liste_indicateurs = liste_donnees_indicateurs; //Liste des indicateurs pour la partie des filtres
                string role = "partenaire";
                ViewBag.role = role;
            }

            else
            {
                ViewBag.liste_indicateurs = db.DONNEE_ET_INDICATEUR.Where(d => d.ID_REGION == 13).ToList(); //Liste des indicateurs pour la partie des filtres
                liste_indicateurs         = db.DETAIL_INDICATEUR.Where(d => d.ID_REGION == 13).ToList();
                string role = "admin";
                ViewBag.role = role;
            }
            return(View(liste_indicateurs));
        }
        // GET: GererINDICATEUR/Delete/5
        //[Authorize(Roles = "super-admin, admin")]
        public ActionResult Delete(int?id, string controleur, string mot, string type)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            DONNEE_ET_INDICATEUR dONNEE_ET_INDICATEUR = db.DONNEE_ET_INDICATEUR.Find(id);

            if (dONNEE_ET_INDICATEUR == null)
            {
                return(HttpNotFound());
            }

            ViewBag.recherche    = mot;
            ViewBag.typeIndCCODD = type;
            ViewBag.controleur   = controleur;
            return(View(dONNEE_ET_INDICATEUR));
        }
        public ActionResult DeleteConfirmed(int id, string controleur, string mot)
        {
            DONNEE_ET_INDICATEUR dONNEE_ET_INDICATEUR = db.DONNEE_ET_INDICATEUR.Find(id);

            db.DONNEE_ET_INDICATEUR.Remove(dONNEE_ET_INDICATEUR);
            db.SaveChanges();

            if (controleur == "CC")
            {
                return(RedirectToAction("Index", "CC", new { @mot = mot }));
            }

            else if (controleur == "ODD")
            {
                return(RedirectToAction("Index", "ODD", new { @mot = mot }));
            }

            return(RedirectToAction("Index", new { @mot = mot }));
        }
        public ActionResult DetailsP(int?id, string mot, string type)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            DONNEE_ET_INDICATEUR dONNEE_ET_INDICATEUR = db.DONNEE_ET_INDICATEUR.Find(id);

            if (dONNEE_ET_INDICATEUR == null)
            {
                return(HttpNotFound());
            }
            if (mot == null)
            {
                ViewBag.recherche = "";
            }
            else
            {
                ViewBag.recherche = mot;
            }
            ViewBag.typeIndCCODD = type;
            return(View(dONNEE_ET_INDICATEUR));
        }
        public ActionResult Edit(DONNEE_ET_INDICATEUR dONNEE_ET_INDICATEUR, HttpPostedFileBase upload, string[] typeind, string controleur, string mot)
        {
            if (ModelState.IsValid)
            {
                //L'upload----------------------------
                HttpFileCollectionBase fichiers = Request.Files;
                if (fichiers.Count > 0)
                {
                    HttpPostedFileBase upld = fichiers[0];
                    if (upld != null && upld.ContentLength > 0)
                    {
                        string uploadFilesDir = Server.MapPath("~/App_Data/");
                        Directory.CreateDirectory(uploadFilesDir);
                        string fileSavePath = Path.Combine(uploadFilesDir, upld.FileName);
                        upld.SaveAs(fileSavePath);
                        dONNEE_ET_INDICATEUR.FICHIER_JOINT = fileSavePath;
                    }
                }
                //----------------------------------
                DONNEE_ET_INDICATEUR ind = db.DONNEE_ET_INDICATEUR.Where(i => i.ID_INDICATEUR == dONNEE_ET_INDICATEUR.ID_INDICATEUR).FirstOrDefault();
                if (ind != null)
                {
                    db.Entry(ind).State = EntityState.Detached;
                }
                for (int i = 0; i < typeind.Length; i++)
                {
                    if (typeind[i] == "CC")
                    {
                        dONNEE_ET_INDICATEUR.IS_CC = true;
                    }
                    if (typeind[i] == "ODD")
                    {
                        dONNEE_ET_INDICATEUR.IS_ODD = true;
                    }
                    if (typeind[i] == "SDD")
                    {
                        dONNEE_ET_INDICATEUR.IS_DD = true;
                    }
                }
                db.Entry(dONNEE_ET_INDICATEUR).State = EntityState.Modified;
                db.SaveChanges();


                if (controleur == "CC")
                {
                    return(RedirectToAction("Index", "CC", new { @mot = mot }));
                }

                else if (controleur == "ODD")
                {
                    return(RedirectToAction("Index", "ODD", new { @mot = mot }));
                }

                return(RedirectToAction("Index", new { @mot = mot }));
            }
            //<!--10/07/2018-->
            ViewBag.objectifs = db.OBJECTIFDD.ToList();
            int id_objectif = -1;

            if (dONNEE_ET_INDICATEUR.ID_SOUSOBJECTIF != -1)
            {
                SOUS_OBJECTIFDD sous_objectif = db.SOUS_OBJECTIFDD.Find(dONNEE_ET_INDICATEUR.ID_SOUSOBJECTIF);
                id_objectif = sous_objectif.ID_OBJECTIF;
            }


            ViewBag.objectifSelect     = id_objectif;
            ViewBag.sousobjectifs      = db.SOUS_OBJECTIFDD.Where(so => so.ID_OBJECTIF == id_objectif).ToList();
            ViewBag.sousObjectifSelect = dONNEE_ET_INDICATEUR.ID_SOUSOBJECTIF;
            //<!--10/07/2018-->
            //     ViewBag.sousobjectifs = db.SOUS_OBJECTIFDD.ToList();
            ViewBag.ID_SOUSTHEME    = new SelectList(db.SOUS_THEME.Where(u => u.ID_REGION == 13), "ID_SOUSTHEME", "LIBELLE_SOUSTHEME", dONNEE_ET_INDICATEUR.ID_SOUSTHEME);
            ViewBag.ID_SOUSOBJECTIF = new SelectList(db.SOUS_OBJECTIFDD.Where(u => u.ID_REGION == 13), "ID_SOUSOBJECTIF", "LIBELLE_SOUSOBJECTIF", dONNEE_ET_INDICATEUR.ID_SOUSOBJECTIF);
            ViewBag.ID_UNITE        = new SelectList(db.UNITE.Where(u => u.ID_REGION == 13), "ID_UNITE", "LIBELLE_UNITE", dONNEE_ET_INDICATEUR.ID_UNITE);
            ViewBag.ID_FOURNISSEUR  = new SelectList(db.ORGANISATION.Where(u => u.ID_REGION == 13), "ID_ORGANIZATION", "NOM_ORGANIZATION", dONNEE_ET_INDICATEUR.ID_FOURNISSEUR);

            return(View(dONNEE_ET_INDICATEUR));
        }
        public ActionResult Create(DONNEE_ET_INDICATEUR dONNEE_ET_INDICATEUR, string[] typeind, string controleur)
        {
            if (ModelState.IsValid)
            {
                //L'upload----------------------------
                HttpFileCollectionBase fichiers = Request.Files;
                if (fichiers.Count > 0)
                {
                    HttpPostedFileBase upld = fichiers[0];
                    if (upld != null && upld.ContentLength > 0)
                    {
                        string uploadFilesDir = Server.MapPath("~/App_Data/");
                        Directory.CreateDirectory(uploadFilesDir);
                        string fileSavePath = Path.Combine(uploadFilesDir, upld.FileName);
                        upld.SaveAs(fileSavePath);
                        dONNEE_ET_INDICATEUR.FICHIER_JOINT = fileSavePath;
                    }
                }

                if (dONNEE_ET_INDICATEUR.ID_SOUSTHEME == -1)
                {
                    ModelState.AddModelError("soustheme_vide", "If faut saisir un sous thème");
                    ViewBag.sousobjectifs  = db.SOUS_OBJECTIFDD.ToList();
                    ViewBag.sousthemesCC   = db.SOUS_THEME.Where(s => s.ID_REGION == 13 && s.ID_THEME == 51).ToList();
                    ViewBag.unites         = db.UNITE.Where(u => u.ID_REGION == 13).ToList();
                    ViewBag.domaines       = db.DOMAINE.Where(d => d.ID_REGION == 13).ToList();
                    ViewBag.themes         = db.THEME.Where(t => t.ID_REGION == 13).ToList();
                    ViewBag.sousthemes     = db.SOUS_THEME.Where(s => s.ID_REGION == 13).ToList();
                    ViewBag.ID_UNITE       = new SelectList(db.UNITE.Where(u => u.ID_REGION == 13), "ID_UNITE", "LIBELLE_UNITE");
                    ViewBag.ID_FOURNISSEUR = new SelectList(db.ORGANISATION.Where(o => o.ID_REGION == 13), "ID_ORGANIZATION", "NOM_ORGANIZATION");
                    ViewBag.fournisseurs   = db.ORGANISATION.Where(o => o.ID_REGION == 13).ToList();

                    return(View(dONNEE_ET_INDICATEUR));
                }
                //----------------------------------
                int id = 1;
                if (db.DONNEE_ET_INDICATEUR.Count() > 0)
                {
                    id = db.DONNEE_ET_INDICATEUR.Max(us => us.ID_INDICATEUR) + 1;
                }
                for (int i = 0; i < typeind.Length; i++)
                {
                    if (typeind[i] == "CC")
                    {
                        dONNEE_ET_INDICATEUR.IS_CC = true;

                        /*  dONNEE_ET_INDICATEUR.IS_ODD = false;
                         * dONNEE_ET_INDICATEUR.IS_DD = false;
                         * dONNEE_ET_INDICATEUR.ID_SOUSOBJECTIF = null;*/
                    }
                    if (typeind[i] == "ODD")
                    {
                        dONNEE_ET_INDICATEUR.IS_ODD = true;

                        /* dONNEE_ET_INDICATEUR.IS_DD = false;
                         * dONNEE_ET_INDICATEUR.IS_CC = false;*/
                    }
                    if (typeind[i] == "SDD")
                    {
                        dONNEE_ET_INDICATEUR.IS_DD = true;

                        /* dONNEE_ET_INDICATEUR.IS_ODD = false;
                         * dONNEE_ET_INDICATEUR.IS_CC = false;
                         * dONNEE_ET_INDICATEUR.ID_SOUSOBJECTIF = null;*/
                    }
                }

                dONNEE_ET_INDICATEUR.ID_INDICATEUR = id;
                dONNEE_ET_INDICATEUR.ID_REGION     = 13;
                dONNEE_ET_INDICATEUR.DATE_CREATION = DateTime.Now;
                if (dONNEE_ET_INDICATEUR.ID_UNITE == -1)
                {
                    dONNEE_ET_INDICATEUR.ID_UNITE = null;
                }
                if (dONNEE_ET_INDICATEUR.ID_FOURNISSEUR == -1)
                {
                    dONNEE_ET_INDICATEUR.ID_FOURNISSEUR = null;
                }
                db.DONNEE_ET_INDICATEUR.Add(dONNEE_ET_INDICATEUR);
                db.SaveChanges();


                /* if (controleur == "CC")
                 *   return RedirectToAction("Index", "CC");
                 *
                 * else if (controleur == "ODD")
                 *   return RedirectToAction("Index", "ODD");*/

                return(RedirectToAction("Index"));
            }

            ViewBag.sousobjectifs  = db.SOUS_OBJECTIFDD.ToList();
            ViewBag.sousthemesCC   = db.SOUS_THEME.Where(s => s.ID_REGION == 13 && s.ID_THEME == 51).ToList();
            ViewBag.unites         = db.UNITE.Where(u => u.ID_REGION == 13).ToList();
            ViewBag.domaines       = db.DOMAINE.Where(d => d.ID_REGION == 13).ToList();
            ViewBag.themes         = db.THEME.Where(t => t.ID_REGION == 13).ToList();
            ViewBag.sousthemes     = db.SOUS_THEME.Where(s => s.ID_REGION == 13).ToList();
            ViewBag.ID_UNITE       = new SelectList(db.UNITE.Where(u => u.ID_REGION == 13), "ID_UNITE", "LIBELLE_UNITE");
            ViewBag.ID_FOURNISSEUR = new SelectList(db.ORGANISATION.Where(o => o.ID_REGION == 13), "ID_ORGANIZATION", "NOM_ORGANIZATION", dONNEE_ET_INDICATEUR.ID_FOURNISSEUR);
            ViewBag.fournisseurs   = db.ORGANISATION.Where(o => o.ID_REGION == 13).ToList();

            return(View(dONNEE_ET_INDICATEUR));
        }