コード例 #1
0
        public ActionResult Create([Bind(Include = "Id,Name,CurrentMode,PlayerNumber,MaxPlayer,CurrentMap,IP,Port,DateCreated,LastUpdate")] Server server)
        {
            if (ModelState.IsValid)
            {
                db.Servers.Add(server);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(server));
        }
コード例 #2
0
        public ActionResult CreateNewTag(string title)
        {
            Tag newTag = new Tag(title);

            using (var db = new ServerDb())
            {
                var old = db.Tags.Where(m => m.title == newTag.title)
                          .FirstOrDefault();

                // Save Existing
                if (old != null)
                {
                    db.Tags.Remove(old);
                    db.Tags.Add(newTag);
                }
                // Save New
                else
                {
                    db.Tags.Add(newTag);
                }


                db.SaveChanges();
            }
            return(PartialView(newTag));
        }
コード例 #3
0
        public object Post([FromBody] MasterEntity content)
        {
            var json = this.Request.Content.ReadAsStringAsync().Result;

            Console.WriteLine(json);

            using (var db = new ServerDb())
            {
                // Check if the server already exists in the DB
                var old = db.Servers.Where(m => m.Id == content.Id)
                          .Include(m => m.environment)
                          .Include(m => m.iis)
                          .FirstOrDefault();

                // Save Existing Server
                if (old != null)
                {
                    db.Servers.Remove(old);

                    db.Servers.Add(content);

                    db.SaveChanges();
                }
                // Save New Server
                else
                {
                    db.Servers.Add(content);
                    try
                    {
                        db.SaveChanges();
                    }
                    catch (System.Data.Entity.Validation.DbEntityValidationException e)
                    {
                        throw;
                    }
                }
            }

            return(Request.CreateResponse(HttpStatusCode.OK, "OK"));
        }
コード例 #4
0
        /// <summary>
        /// Use to update a server
        /// </summary>
        /// <param name="id">The ID of the server you want to update</param>
        /// <param name="server">The data you want to update (ID is ignored)</param>
        /// <returns>Return the updated server if it succeeded / return null if it failed and lastExceptionThrown is updated</returns>
        public Server UpdateServer(int id, Server server)
        {
            Server oldServer;

            server.Id         = id;
            server.LastUpdate = DateTime.Now;
            using (var db = new ServerDb())
            {
                lock (mutexDbAccess)
                {
                    oldServer = db.Servers.Find(id);
                    oldServer.Copy(server);

                    db.Entry(oldServer).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }
            return(server);

            #region [ === Old Code : For cache memory (no DB) === ]
            //var ctx = HttpContext.Current;
            //Server newServer = null;

            //if (ctx != null)
            //{
            //    try
            //    {
            //        var currentData = ((Server[])ctx.Cache[CacheKey]).ToList();
            //        // Cannot have a double of IDs because it is handled by the DB (Id is the key)
            //        var serverToUpdate = currentData.FirstOrDefault((s) => s.Id == id);
            //        if (serverToUpdate == default(Server))
            //            throw new Exception("No server found with this ID : " + id);
            //        else
            //            newServer = updateServer(serverToUpdate, server);
            //        ctx.Cache[CacheKey] = currentData.ToArray();

            //        return newServer;
            //    }
            //    catch (Exception ex)
            //    {
            //        this.lastExceptionThrown = ex;
            //        Console.WriteLine(ex.ToString());
            //        return null;
            //    }
            //}
            //return null;
            #endregion
        }
コード例 #5
0
        public bool DeleteServer(int id)
        {
            Server server;

            using (var db = new ServerDb())
            {
                lock (mutexDbAccess)
                {
                    server = db.Servers.Find(id);
                    server = db.Servers.Remove(server);
                    db.SaveChanges();
                }
            }
            if (server != null)
            {
                return(true);
            }
            return(false);

            #region [ === Old Code : For cache memory (no DB) === ]
            //var ctx = HttpContext.Current;

            //if (ctx != null)
            //{
            //    try
            //    {
            //        var currentData = ((Server[])ctx.Cache[CacheKey]).ToList();
            //        var serverToDelete = currentData.FirstOrDefault((s) => s.Id == id);
            //        if (serverToDelete == default(Server))
            //            return false;
            //        currentData.Remove(serverToDelete);
            //        ctx.Cache[CacheKey] = currentData.ToArray();
            //        return true;
            //    }
            //    catch (Exception ex)
            //    {
            //        this.lastExceptionThrown = ex;
            //        Console.WriteLine(ex.ToString());
            //        return false;
            //    }
            //}
            //return false;
            #endregion
        }
コード例 #6
0
        /// <summary>
        /// Use to create a new server
        /// </summary>
        /// <param name="server">The server you want to create</param>
        /// <returns>Return null if fails and LastExceptionThrown is updated / Return the created server if succeeded</returns>
        public Server SaveServer(Server server)
        {
            Server newServer;

            server.DateCreated = DateTime.Now;
            server.LastUpdate  = DateTime.Now;
            using (var db = new ServerDb())
            {
                lock (mutexDbAccess)
                {
                    newServer = db.Servers.Add(server);
                    db.SaveChanges();
                }
            }

            return(newServer);

            #region [ === Old Code : For cache memory (no DB) === ]
            //var ctx = HttpContext.Current;

            //if (ctx != null)
            //{
            //    try
            //    {
            //        var currentData = ((Server[])ctx.Cache[CacheKey]).ToList();
            //        server.Id = currentData.Select(s => s.Id).Max();
            //        currentData.Add(server);
            //        ctx.Cache[CacheKey] = currentData.ToArray();

            //        return server;
            //    }
            //    catch (Exception ex)
            //    {
            //        this.lastExceptionThrown = ex;
            //        Console.WriteLine(ex.ToString());
            //        return null;
            //    }
            //}
            //return null;
            #endregion
        }
コード例 #7
0
 void serverChecker_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
 {
     using (var db = new ServerDb())
     {
         lock (mutexDbAccess)
         {
             DateTime      now        = DateTime.Now;
             List <Server> removeList = new List <Server>();
             TimeSpan?     diff;
             foreach (Server s in db.Servers)
             {
                 if (s.LastUpdate == null)
                 {
                     diff = null;
                 }
                 else
                 {
                     diff = now - s.LastUpdate.Value;
                 }
                 Trace.Write("Checing timers", "Now is : " + now.ToString() + " && LastUpdate is : " + s.LastUpdate + " && Diff is : " + diff);
                 if (diff == null || diff.Value.TotalSeconds > SERVER_LIFETIME)
                 {
                     Trace.Write("Remove server cauz of timer", "Now is : " + now.ToString() + " && LastUpdate is : " + s.LastUpdate + " && Diff is : " + diff);
                     removeList.Add(s);
                 }
             }
             if (removeList.Count > 0)
             {
                 foreach (Server s in removeList)
                 {
                     db.Servers.Remove(s);
                 }
                 //db.Servers.RemoveRange(removeList);
                 db.SaveChanges();
             }
         }
     }
 }