public async Task <RedirectToActionResult> GitGetAndUpdate()
        {
            GitSync gitSync  = new GitSync();
            var     projects = await gitSync.GetProjects();

            foreach (var project in projects)
            {
                var dbProject = await _context.ProjectModel.SingleOrDefaultAsync(p => p.Name == project.Name);

                if (dbProject == null)
                {
                    _context.ProjectModel.Add(project);
                }
                else
                {
                    //BAD
                    dbProject.LanguageTag      = project.LanguageTag;
                    dbProject.ImageLink        = project.ImageLink;
                    dbProject.Description      = project.Description;
                    dbProject.DescriptionShort = project.DescriptionShort;
                    //BAD
                }
            }
            await _context.SaveChangesAsync();

            return(RedirectToAction(nameof(Index)));
        }
        public async Task <RedirectToActionResult> GitGet()
        {
            GitSync gitSync  = new GitSync();
            var     projects = await gitSync.GetProjects();

            foreach (var project in projects)
            {
                if (!_context.ProjectModel.Any(p => p.Name == project.Name))
                {
                    _context.ProjectModel.Add(project);
                }
            }
            await _context.SaveChangesAsync();

            return(RedirectToAction(nameof(Index)));
        }
        public MainWindow()
        {
            loadConfiguration();
            InitializeComponent();

            //On lance la synchronisation des fichiers dans un gist
            GitSync gitsync = new GitSync();

            gitsync.pushContent();

            //Création du timer pour récupérer la valeur du presse papier
            //Initialisation de l'ancienne valeur du presse papier
            oldClipBoardText        = "";
            clipBoardTimer          = new DispatcherTimer();
            clipBoardTimer.Tick    += new EventHandler(clipBoardTimer_Tick);
            clipBoardTimer.Interval = new TimeSpan(0, 0, 0, 0, refreshRate);

            timerWaitSearch          = new DispatcherTimer();
            timerWaitSearch.Tick    += new EventHandler(timerWaitSearch_Elapsed);
            timerWaitSearch.Interval = new TimeSpan(0, 0, 0, 0, INTERVAL_SEARCH);

            //Affichage en premier de l'application
            this.Topmost = true;

            //Affichage de la fenêtre en bas à droite
            var desktopWorkingArea = System.Windows.SystemParameters.WorkArea;

            this.Left = desktopWorkingArea.Right - this.Width;
            this.Top  = desktopWorkingArea.Bottom - this.Height;

            Clipboard.Clear();
            clipBoardTimer.Start();

            dataApp = new DataApplication();
            img_refresh.DataContext = dataApp;


            dataApp.LoadDone = true;

            vo = new VariableObserver(ipAddresseRTCServer, sqlLiteDataBase, number_variable);
            totalNumberOfVariables = vo.getNumberOfVariables();

            changeVariableIndication();

            ///================================================================================================================================
            ///DATACONTEXT:
            ///On met le data context avec le variable observer
            ///================================================================================================================================
            tb_variableName.DataContext     = vo;
            dg_variableList.DataContext     = vo;
            btn_typeW.DataContext           = vo;
            cb_RegexSearch.DataContext      = vo;
            img_lockedList.DataContext      = vo;
            btnRecord.DataContext           = vo;
            pop_listLockedFiles.DataContext = vo;
            ///================================================================================================================================

            //Création de la tâche de fond qui va rafraichir la liste des varaibles
            refreshWorker = new BackgroundWorker();

            //Association des évènement aux méthodes à appliquer
            refreshWorker.DoWork             += refreshWorker_DoWork;
            refreshWorker.RunWorkerCompleted += refreshWorker_RunWorkerCompleted;

            //Création de l'objet qui va regarder le fichier de colorisation
            FileWatcher fileWatch = new FileWatcher(gitsync.getRepositoryPath() + "\\" + rulePath);

            fileWatch.setFileChangeListener(vo);

            //Chargmement des listes de variables sauvegardé
            vo.loadVariables(LOCKED_LIST_FILE, true);

            //Chargement de tous les fichiers sauvegardés qui contiennent les variable bloqués
            vo.getListLockedVarSaved();
        }