public ActionResult ListeSupport()
        {
            var sup = new AgregSupportModel()
            {
                IdTypSup = -1,
                IdSg = -1,
                IdElig = -1,
                CodeISIN = string.Empty,
                Libelle = string.Empty,
                Call = CallEnum.LISTING
            };
            Guid idcrmcabinet;
            SessionManager.Get<Guid>(AgregCgpBL.AgregCrmcabinetIdSessionKey, out idcrmcabinet);

            //nouveau procédure
            List<ag_upsideo_support> listeSupport = new List<ag_upsideo_support>();
            using (UpsilabEntities db = new UpsilabEntities())
            {
                listeSupport = db.ag_upsideo_support.Where(s => s.idcrmcabinet == idcrmcabinet).ToList();
            }
            //supports présent dans la table support pour le cabinet 
            //+ les supports dans la table référentiels moins ceux en communs entre les 2 tables
            using (UpsilabEntities db = new UpsilabEntities())
            {
                List<ag_upsideo_referentiel> listereferentiel = db.ag_upsideo_referentiel.ToList();
                listereferentiel = listereferentiel.Where(r => !listeSupport.Select(s => s.idrefsupport).ToList().Contains(r.idrefsupport)).ToList();
                foreach (ag_upsideo_referentiel r in listereferentiel)
                {
                    ag_upsideo_support newsup = new ag_upsideo_support()
                    {
                        idfrontsupport = 0,
                        idrefsupport = r.idrefsupport,
                        idcrmcabinet = idcrmcabinet,
                        idsg = -1,
                        idElig = -1,
                        idtypesupport = r.idtypesupport,
                        nomsupport = r.nomsupport,
                        datevl = r.datevl,
                        vl = r.vl,
                        codeisin = r.codeisin,
                        devise = r.devise,
                        niveaurisque = r.niveaurisque,
                        categorisation = r.categorisation,
                        Vleuro = r.Vleuro,
                        actions = r.actions,
                        obligations = r.obligations,
                        monetaire = r.monetaire,
                        immobilier = r.immobilier,
                        autres = r.autres,
                        Performance12mois = r.Performance12mois,
                        Performance3112 = r.Performance3112,
                        Performance60mois = r.Performance60mois,
                        Volatilite12mois = r.Volatilite12mois,
                        Volatilite60mois = r.Volatilite60mois,
                        deleted = "n",
                        fiche_prospectus = r.fiche_prospectus,
                        fiche_dici = r.fiche_dici
                    };
                    listeSupport.Add(newsup);

                }
            }
            
            //fin procédure
            SessionManager.Set<String>(AgregCgpBL.AgregCallSupportIdSessionKey, CallEnum.LISTING.ToString());
            Session["lstRet"] = listeSupport;
            Session["supcriteria"] = sup;

            InitSelectList();

            ViewData["results"] = listeSupport;           
                        
            return View();
        }
        public ActionResult InsertOrUpdateSupport(AgregSupportModel model)
        {
            try
            {
                var idCgpAgreg = SessionManager.GetUserSession().idAgregCGP.Value;
                var languageData = PageLanguageHelper.GetLanguageContent("User", "agregsupport");
                if (model != null && model.Categorisation.Equals(languageData.GetContent("select")))
                {
                    model.Categorisation = "";
                }
                var cgp = AgregCgpBL.GetCgpById(idCgpAgreg).ConvertToViewModel();
                if (cgp != null)
                {
                    model.IdCab = cgp.IdCab;
                    // UPDATE
                    if (model.Id > 0)
                    {
                        AgregSupportBL.UpdateSupport(model.ConverToEntity());
                    }
                    else // INSERT
                    {
                        AgregSupportBL.AddSupport(model.ConverToEntity());
                    }
                }
                
            }
            catch (Exception ex)
            {
                Log.AppendException(ex);
                return Content("Error");
            }
            string call = "";
            SessionManager.Get<String>(AgregCgpBL.AgregCallSupportIdSessionKey, out call);
            if (call == CallEnum.LISTING.ToString()) return RedirectToAction("Liste-support");
            if (call == CallEnum.PORTEFEUILLE.ToString()) return RedirectToAction("ListeSupportPortefeuille");

            return RedirectToAction("Index");
        }
        public PartialViewResult LoadPopupFormulaireSupport(int id, string call, int typeaction)
        {
            try
            {
                InitSelectList();
                AgregSupportModel model;/* = (id > 0)
                                              ? AgregSupportBL.GetSupportById(id).ConverToViewModel()
                                              : new AgregSupportModel() { Id = -1 ,IdElig = -1,IdTypSup = -1,CodeISIN = string.Empty,Libelle = string.Empty,IdSg = -1,Devise = "EURO"};*/
                switch (typeaction)
                {
                    case 0:
                        model = new AgregSupportModel() { Id = -1 ,IdElig = -1,IdTypSup = -1,CodeISIN = string.Empty,Libelle = string.Empty,IdSg = -1,Devise = "EUR"};
                        break;
                    case 1:
                        model = AgregSupportBL.GetSupportById(id).ConverToViewModel();
                        break;
                    case 2:
                        AgregReferentielModel r = AgregReferentielBL.GetReferentielById(id).ConverToViewModel();
                        model = new AgregSupportModel() 
                        {
                            Id = -1,
                            IdElig = -1,
                            IdRefSup = r.Id,
                            Actions = r.Actions,
                            Libelle = r.Libelle,
                            Autres = r.Autres,
                            DateValeur = r.DateValeur,
                            Devise = r.Devise,
                            Categorisation = r.Categorisation,
                            CodeISIN = r.CodeISIN,
                            IdTypSup = r.IdTypSup,
                            Immobilier = r.Immobilier,
                            Monetaire = r.Monetaire,
                            NiveauRisque = r.NiveauRisque,
                            Obligations = r.Obligations,
                            Perfo12Mois = r.Perfo12Mois,
                            Perfo60Mois = r.Perfo60Mois,
                            Perfo3112 = r.Perfo3112,
                            Valeur = r.Valeur,
                            ValeurEuro = r.ValeurEuro,
                            Volatilite12Mois = r.Volatilite12Mois,
                            Volatilite60Mois = r.Volatilite60Mois                                    
                        };                        
                        break;
                    default:
                        model = AgregSupportBL.GetSupportById(id).ConverToViewModel();
                        break;
                }
                if (call == "portefeuille")
                {
                    model.Call = CallEnum.PORTEFEUILLE;
                }
                else
                {
                    model.Call = (call == "listing") ? CallEnum.LISTING : CallEnum.SEARCH;
                }
                SessionManager.Set<String>(AgregCgpBL.AgregCallSupportIdSessionKey, model.Call.ToString());
                return PartialView("FormulaireSupportPartial", model);

            }
            catch (Exception ex)
            {
                return PartialView("RetourPartial", ex.Message);
            }
        }
        public ActionResult SearchSupport(AgregSupportModel sup)
        {
            try
            {
                #region Sauvegarde de la pageSize courant
                // Selection pageSize (ne sera utilisé que dans la declaration du webgrid)
                if (Request.Params["PageSize"] != null)
                {
                    SessionManager.Set<int>("SelectedPageSizeSupportSessionKey", Convert.ToInt32(Request.Params["PageSize"]));
                }
                #endregion
                #region Sauvegarde des critère de recherche AgregSupportModel
                SessionManager.Set<AgregSupportModel>("AgregSupportModelSessionKey", sup);                
                #endregion
                Guid idcrmcabinet;
                SessionManager.Get<Guid>(AgregCgpBL.AgregCrmcabinetIdSessionKey, out idcrmcabinet);

                //nouveau procédure
                List<ag_upsideo_support> listeSupport = new List<ag_upsideo_support>();
                listeSupport = AgregSupportBL.GetSupportsByCriteria(idcrmcabinet, sup.ConverToEntity());               
                
                //supports présent dans la table support pour le cabinet 
                //+ les supports dans la table référentiels moins ceux en communs entre les 2 tables

                List<ag_upsideo_referentiel> listereferentiel = new List<ag_upsideo_referentiel>();

                listereferentiel = AgregReferentielBL.GetReferentielByCriteria(idcrmcabinet, sup.ConverToEntity());

                listereferentiel = listereferentiel.Where(r => !listeSupport.Select(s => s.idrefsupport).ToList().Contains(r.idrefsupport)).ToList();
                foreach (ag_upsideo_referentiel r in listereferentiel)
                {
                    ag_upsideo_support newsup = new ag_upsideo_support()
                    {
                        idfrontsupport = 0,
                        idrefsupport = r.idrefsupport,
                        idcrmcabinet = idcrmcabinet,
                        idsg = -1,
                        idElig = -1,
                        idtypesupport = r.idtypesupport,
                        nomsupport = r.nomsupport,
                        datevl = r.datevl,
                        vl = r.vl,
                        codeisin = r.codeisin,
                        devise = r.devise,
                        niveaurisque = r.niveaurisque,
                        categorisation = r.categorisation,
                        Vleuro = r.Vleuro,
                        actions = r.actions,
                        obligations = r.obligations,
                        monetaire = r.monetaire,
                        immobilier = r.immobilier,
                        autres = r.autres,
                        Performance12mois = r.Performance12mois,
                        Performance3112 = r.Performance3112,
                        Performance60mois = r.Performance60mois,
                        Volatilite12mois = r.Volatilite12mois,
                        Volatilite60mois = r.Volatilite60mois,
                        deleted = "n",
                        fiche_prospectus = r.fiche_prospectus,
                        fiche_dici = r.fiche_dici
                    };
                    listeSupport.Add(newsup);

                }
                               
                //fin procédure


                /*var resultSup = AgregSupportBL.GetSupportsByCriteria(idcrmcabinet, sup.ConverToEntity()).ConverToViewModel();
                var critRef = new AgregReferentielModel()
                    {
                        Actions = sup.Actions, Libelle = sup.Libelle, Autres = sup.Autres, 
                        DateValeur = sup.DateValeur, Devise = sup.Devise,Categorisation =  sup.Categorisation,
                        CodeISIN = sup.CodeISIN, IdTypSup = sup.IdTypSup, Immobilier = sup.Immobilier,
                        Monetaire = sup.Monetaire, NiveauRisque = sup.NiveauRisque, Obligations = sup.Obligations,
                        Perfo12Mois = sup.Perfo12Mois, Perfo60Mois = sup.Perfo60Mois, Perfo3112 = sup.Perfo3112,
                        Valeur = sup.Valeur, ValeurEuro = sup.ValeurEuro, Volatilite12Mois = sup.Volatilite12Mois,
                        Volatilite60Mois = sup.Volatilite60Mois
                    };
                if (sup.IdSg > 0)
                {
                    var sg = AgregSocieteGestionBL.GetSocietesGestionsById(sup.IdSg);
                    critRef.NomSocieteGestion = sg != null ? sg.ConvertToViewModel().Libelle : string.Empty;
                }

                var resultRef = AgregReferentielBL.GetReferentielByCriteria(idcrmcabinet,critRef.ConverToEntity()).ConverToViewModel();
                if (resultRef != null && resultRef.Any()) resultRef.ToList().ForEach(r =>
                    {
                        r.CriteriaSupportSearch = CriteriaSupportSearchEnum.REFERENTIEL;
                        r.Call = CallEnum.SEARCH;
                    });

                var results = new List<AgregSupportModel>();
                if (resultSup != null && resultSup.Any()) results.AddRange(resultSup);
                if (resultRef != null && resultRef.Any())
                {
                    resultRef.ToList().ForEach(r =>
                        {
                            if (!results.Any(c => c.IdRefSup == r.Id))
                            {
                                results.Add(new AgregSupportModel()
                                {
                                    Id = 0,
                                    IdRefSup = r.Id,
                                    Actions = r.Actions,
                                    Libelle = r.Libelle,
                                    Autres = r.Autres,
                                    DateValeur = r.DateValeur,
                                    Devise = r.Devise,
                                    Categorisation = r.Categorisation,
                                    CodeISIN = r.CodeISIN,
                                    IdTypSup = r.IdTypSup,
                                    Immobilier = r.Immobilier,
                                    Monetaire = r.Monetaire,
                                    NiveauRisque = r.NiveauRisque,
                                    Obligations = r.Obligations,
                                    Perfo12Mois = r.Perfo12Mois,
                                    Perfo60Mois = r.Perfo60Mois,
                                    Perfo3112 = r.Perfo3112,
                                    Valeur = r.Valeur,
                                    ValeurEuro = r.ValeurEuro,
                                    Volatilite12Mois = r.Volatilite12Mois,
                                    Volatilite60Mois = r.Volatilite60Mois,
                                    CriteriaSupportSearch = r.CriteriaSupportSearch,
                                });
                            }
                            
                        });
                }

                results = results.OrderBy(c => c.Libelle).ToList();*/
                SessionManager.Set<String>(AgregCgpBL.AgregCallSupportIdSessionKey, CallEnum.SEARCH.ToString());
                Session["lstRet"] = listeSupport;
                Session["supcriteria"] = sup;

                InitSelectList();

                ViewData["results"] = listeSupport;
                ViewData["IsFromMenu"] = 0;
                return View("Index", sup);
            }
            catch (Exception ex)
            {
                Log.AppendException(ex);
                return Content("Error");
            }
        }