/// <summary>
        /// Method to check if a DCRGraph in the database is locked. This is a helper method which is used by all methods which change data in the database.
        /// </summary>
        /// <param name="guid"></param>
        /// <param name="graphId"></param>
        /// <param name="db"></param>
        /// <returns></returns>
        public async Task<Tuple<bool, string>> CheckLock(Guid guid, int graphId, DBO.Database db)
        {
            
            var graph = await db.DCRGraphs.FindAsync(graphId);

            if (graph == null) return new Tuple<bool, string>(false, "The graph did not exist");

            if (graph.Lock == false)
                return new Tuple<bool, string>(false, "The graph was not locked when reaching the check lock phase");

            if (graph.Guid != guid)
                return new Tuple<bool, string>(false, "someone else has locked the graph.");

            return new Tuple<bool, string>(true, "");
            
        }
        /// <summary>
        /// Method to unlock a DCRGraph in the database. This is a helper method which is used by all methods which change data in the database.
        /// </summary>
        /// <param name="guid"></param>
        /// <param name="graphId"></param>
        /// <param name="db"></param>
        /// <returns></returns>
        public async Task<Tuple<bool, string>> Unlock(Guid guid, int graphId, DBO.Database db)
        {
            
            var graph = await db.DCRGraphs.FindAsync(graphId);

            if (graph == null) return new Tuple<bool, string>(false, "The graph did not exist");

            if (graph.Lock == false)
                return new Tuple<bool, string>(false, "The graph was not locked when reaching the unlock phase");

            if (graph.Guid != guid)
                return new Tuple<bool, string>(false, "someone else has locked the graph. Should not be possible.");

            //unlock and save to db.
            graph.Lock = false;

            db.Entry(graph).State = EntityState.Modified;
            await db.SaveChangesAsync();

            return new Tuple<bool, string>(true, "");
            
        }
        /// <summary>
        /// Method to lock a DCRGraph in the database. This is a helper method which is used by all methods which change data in the database.
        /// </summary>
        /// <param name="guid"></param>
        /// <param name="graphId"></param>
        /// <param name="db"></param>
        /// <returns></returns>
        public async Task<Tuple<bool, string>> LockGraph(Guid guid, int graphId, DBO.Database db)
        {
            var graph = await db.DCRGraphs.FindAsync(graphId);
            //check if the graph exist
            if(graph == null) return new Tuple<bool, string>(false,"The graph did not exist");

            //Check that the graph is not locked, and if it is, check whether it's an old lock. Locks older than 1minute we do no care about.
            if(graph.Lock && DateTime.Now.Subtract(graph.LockTime).Minutes < 1 ) return new Tuple<bool, string>(false, "The graph is already locked");

            //lock this 
            graph.Lock = true;
            graph.LockTime = DateTime.Now;
            graph.Guid = guid;

            db.Entry(graph).State = EntityState.Modified;
            await db.SaveChangesAsync();
            return new Tuple<bool, string>(true, "");


            
        }