public static AgregFournisseurModel UpdateFournisseurRetour(AgregFournisseurViewModel frn)
        {
            var model = ViewModelToModel(frn);
            var frn_data = AgregFournisseurModel.FournisseurModelToAg_upsideo_fournisseur(model);
            //var frncode_data = AgregFournisseurCodeBL.GetFournisseurCodeByFournisseurId(frn.IdFournisseur);
            var frncode_data = AgregFournisseurCodeBL.GetFournisseurCodeById(frn.IdFournisseurCode);
            if (frncode_data == null)
            {
                frncode_data = new ag_upsideo_fournisseur_code
                {
                    id = -1,
                    idcgp = model.IdCgp,
                    idfrontfournisseur = model.IdFrontFournisseur,
                    login = model.Login,
                    code1 = model.Code1,
                    code2 = model.Code2,
                    code3 = model.Code3
                };
            }
            else
            {
                frncode_data.login = model.Login;
                frncode_data.code1 = model.Code1;
                frncode_data.code2 = model.Code2;
                frncode_data.code3 = model.Code3;
            }

            return AgregFournisseurBL.UpdateFournisseurRetour(frn_data, frncode_data);
        }
        public ActionResult AfficherPopupCreerFournisseur()
        {
            CreateViewBag();
            var model = new AgregFournisseurViewModel();            
            //
            //
            model.IsNew = 1;
            model.IdFournisseur = -1;
            model.IdFournisseurCode = -1;
            model.NomFournisseur = string.Empty;
            AssignModelFournisseurs(ref model);
            
            if (model.Fournisseurs.Count > 0)
            {
                Guid idCrmCabinet;
                SessionManager.Get<Guid>("currentcrmcabinet", out idCrmCabinet);
                int idfournisseur = AgreFournisseurService.GetIdFournisseursByIdRef(idCrmCabinet,model.Fournisseurs.ElementAt(0).Key);
                if (idfournisseur > 0)
                {
                    var defaultfrn = AgreFournisseurService.GetFournisseurById(idfournisseur);
                    model.IdFournisseur = defaultfrn.IdFournisseur;
                    model.NomFournisseur = defaultfrn.NomFournisseur;
                    model.Email = defaultfrn.Email;
                    model.Telephone = defaultfrn.Telephone;
                    model.SiteWeb = defaultfrn.SiteWeb;
                    model.Adresse = defaultfrn.Adresse;
                    model.Ville = defaultfrn.Ville;
                    model.CodePostal = defaultfrn.CodePostal;
                    model.CleAgreg = defaultfrn.CleAgreg;
                    model.Accordcgp = defaultfrn.Accordcgp;
                    model.AutorisationTransfertUrl = defaultfrn.AutorisationTransfertUrl;
                    /*model.Login = defaultfrn.Login;
                    model.Code1 = defaultfrn.Code1;
                    model.Code2 = defaultfrn.Code2;
                    model.Code3 = defaultfrn.Code3;
                    model.Statut = defaultfrn.Statut;
                    model.Commentaire = defaultfrn.Commentaire;*/

                    
                }
                else
                {
                    ag_upsideo_fournisseur_referentiel fref = AgreFournisseurService.GetFournisseuRefById(model.Fournisseurs.ElementAt(0).Key);
                    model.NomFournisseur = fref.nomfournisseur;
                    model.Email = fref.e_mail;
                    model.Telephone = fref.Telephone;
                    model.SiteWeb = fref.SiteWeb;
                    model.Adresse = fref.adresse;
                    model.Ville = fref.Ville;
                    model.CodePostal = fref.Code_postal;
                    model.CleAgreg = fref.cleAgreg;
                    model.Accordcgp = fref.accordcgp.HasValue ? fref.accordcgp.Value : 0;
                }
            }
            //
            //
            //
            return PartialView("PopUpFournisseurEdit", model);
        }
        public static AgregFournisseurModel AddFournisseurRetour(AgregFournisseurViewModel frn)
        {
            var model = ViewModelToModel(frn);
            var frn_data = AgregFournisseurModel.FournisseurModelToAg_upsideo_fournisseur(model);
            var frncode_data = AgregFournisseurModel.FournisseurModelToAg_upsideo_fournisseurcode(model);
            return AgregFournisseurBL.AddFournisseurRetour(frn_data, frncode_data);

        }
        private static AgregFournisseurModel ViewModelToModel(AgregFournisseurViewModel viewmodel)
        {
            var currentUser = SessionManager.GetUserSession();
            if (!currentUser.idLicenseAgreg.HasValue || !currentUser.idAgregCGP.HasValue)
                return null;
            //
            //
            //


            var idcrm =
                (viewmodel.IdFournisseur == -1) ?
                AgreCgpService.GetCgpByID(currentUser.idAgregCGP.Value).IdCrmCabinet :
                AgregFournisseurBL.GetFournisseurById(viewmodel.IdFournisseur).idcrmcabinet;


            return new AgregFournisseurModel
            {
                IdFrontFournisseur = viewmodel.IdFournisseur,
                IdFrontFournisseurCode = viewmodel.IdFournisseurCode,
                IdCgp = currentUser.idAgregCGP,
                IdCrmCabinet = idcrm,
                //
                NomFournisseur = viewmodel.NomFournisseur,
                Adresse = viewmodel.Adresse,
                CodePostal = viewmodel.CodePostal,
                Email = viewmodel.Email,
                SiteWeb = viewmodel.SiteWeb,
                Telephone = viewmodel.Telephone,
                Ville = viewmodel.Ville,
                //
                //
                Login = viewmodel.Login,
                Code1 = viewmodel.Code1,
                Code2 = viewmodel.Code2,
                Code3 = viewmodel.Code3,
                //
                Statut = viewmodel.Statut,
                Commentaire = viewmodel.Commentaire,
                CleAgreg = viewmodel.CleAgreg,
                Accordcgp = viewmodel.Accordcgp
            };

        }
 private static List<AgregFournisseurViewModel> ModelToViewModel(List<AgregFournisseurModel> models)
 {
     var viewmodels = new List<AgregFournisseurViewModel>();
     if (models != null && models.Count > 0)
     {
         AgregFournisseurViewModel viewmodel = null;
         foreach (var model in models)
         {
             viewmodel = new AgregFournisseurViewModel
             {
                 IdFournisseur = model.IdFrontFournisseur,
                 IdFournisseurCode = model.IdFrontFournisseurCode,
                 NomFournisseur = model.NomFournisseur,
                 Adresse = model.Adresse,
                 CodePostal = model.CodePostal,
                 Email = model.Email,
                 SiteWeb = model.SiteWeb,
                 Telephone = model.Telephone,
                 Ville = model.Ville,
                 Login = model.Login,
                 Code1 = model.Code1,
                 Code2 = model.Code2,
                 Code3 = model.Code3,
                 Statut = model.Statut,
                 Commentaire = model.Commentaire,
                 CleAgreg = model.CleAgreg,
                 Accordcgp = model.Accordcgp
             };
             viewmodels.Add(viewmodel);
         }
     }
     return viewmodels;
 }
        private void AssignModelFournisseurs(ref AgregFournisseurViewModel model)
        {          

            //if (model.IdFournisseur == -1)
            if (model.IsNew == 1)
            {
                Guid idCrmCabinet;
                SessionManager.Get<Guid>("currentcrmcabinet", out idCrmCabinet);
                //new
                Guid idcgp = SessionManager.GetUserSession().idAgregCGP.Value;
                //
                //model.Fournisseurs = AgreFournisseurService.GetFournisseursByCrm(idCrmCabinet, idcgp);
                model.Fournisseurs = AgreFournisseurService.GetAllFournisseurs();
            }
            else
            {
                model.Fournisseurs = new Dictionary<int, string>();
                model.Fournisseurs.Add(-1, model.NomFournisseur);
            }

        }