public ActionResult DeleteConfirmed(int id)
        {
            RaidInstance raidInstance = db.RaidInstance.Find(id);

            db.RaidInstance.Remove(raidInstance);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit([Bind(Include = "RaidInstanceID,RaidID,RaidDate,Progression,RaidCleared,RaidRunTime")] RaidInstance raidInstance)
 {
     if (ModelState.IsValid)
     {
         db.Entry(raidInstance).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.RaidID = new SelectList(db.Raid, "RaidID", "RaidName", raidInstance.RaidID);
     return(View("~/Views/Admin/RaidInstances/Edit.cshtml", raidInstance));
 }
        // GET: RaidInstances/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            RaidInstance raidInstance = db.RaidInstance.Find(id);

            if (raidInstance == null)
            {
                return(HttpNotFound());
            }
            return(View("~/Views/Admin/RaidInstances/Details.cshtml", raidInstance));
        }
        // GET: RaidInstances/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            RaidInstance raidInstance = db.RaidInstance.Find(id);

            if (raidInstance == null)
            {
                return(HttpNotFound());
            }
            ViewBag.RaidID = new SelectList(db.Raid, "RaidID", "RaidName", raidInstance.RaidID);
            return(View("~/Views/Admin/RaidInstances/Edit.cshtml", raidInstance));
        }
예제 #5
0
        private void EnsureLoaded()
        {
            using (new ReaderLock(_lock))
            {
                if (_loaded) return;

                using (new WriterLock(_lock))
                {
                    if (_loaded) return;

                    Connection.ExecuteSql(new Query(RAID_INSTANCE_SELECT), delegate(SqlDataReader reader)
                    {
                        while (reader.Read())
                        {
                            var newRaidInstance = new RaidInstance()
                            {
                                ID = (int)reader[0],
                                Raid = reader[1].ToString(),
                                Name = reader[2].ToString(),
                                Description = reader[3].ToString(),
                                InviteTime = (DateTime)reader[4],
                                StartTime = (DateTime)reader[5],
                                Archived = (bool)reader[6]
                            };

                            _cache.Add(newRaidInstance);
                        }
                    });

                    _loaded = true;
                }
            }
        }
예제 #6
0
        public bool TryUnArchive(RaidInstance instance, out string errorMsg)
        {
            EnsureLoaded();

            using (new ReaderLock(_lock))
            {
                if (false == instance.Archived)
                {
                    errorMsg = "Cannot un-archive a non-archived raid.";
                    return false;
                }

                using (new WriterLock(_lock))
                {
                    if (false == instance.Archived)
                    {
                        errorMsg = "Cannot un-archive a non-archived raid.";
                        return false;
                    }

                    var success = false;

                    Connection.ExecuteSql(new Query(RAID_INSTANCE_SET_ARCHIVE)
                                            .AddParam("IsArchived", false)
                                            .AddParam("ID", instance.ID), delegate(SqlDataReader reader)
                    {
                        if (0 == reader.RecordsAffected)
                            return;

                        success = true;
                    });

                    errorMsg = "";

                    if (success)
                        _cache.Find(ri => ri.ID == instance.ID).Archived = false;
                    else
                        errorMsg = "Datastore failure when un-archiving the raid instance. Please contact the administrator.";

                    return success;
                }
            }
        }
예제 #7
0
        public bool TryModify(RaidInstance instance, out string errorMsg)
        {
            EnsureLoaded();

            using (new ReaderLock(_lock))
            {
                RaidInstance ri;

                if (null == (ri = ReadOneOrDefault(i => i.ID == instance.ID)))
                {
                    errorMsg = "You cannot edit a raid that does not exist.";
                    return false;
                }

                if (DateTime.Compare(instance.InviteTime, DateTime.Now) < 0)
                {
                    errorMsg = "You cannot schedule a raid in the past.";
                    return false;
                }

                if (DateTime.Compare(instance.StartTime, instance.InviteTime) < 0)
                {
                    errorMsg = "The start time cannot be before the invite time.";
                    return false;
                }

                using (new WriterLock(_lock))
                {
                    if (null == (ri = ReadOneOrDefault(i => i.ID == instance.ID)))
                    {
                        errorMsg = "You cannot edit a raid that does not exist.";
                        return false;
                    }

                    var success = false;

                    if (null == instance.Description)
                        instance.Description = "";

                    Connection.ExecuteSql(new Query(RAID_INSTANCE_UPDATE)
                                            .AddParam("ID", instance.ID)
                                            .AddParam("Raid", instance.Raid)
                                            .AddParam("Name", instance.Name)
                                            .AddParam("Description", instance.Description)
                                            .AddParam("InviteTime", instance.InviteTime)
                                            .AddParam("StartTime", instance.StartTime), delegate(SqlDataReader reader)
                    {
                        if (0 == reader.RecordsAffected)
                            return;

                        success = true;
                    });

                    errorMsg = "";

                    if (success)
                    {
                        ri.Raid = instance.Raid;
                        ri.Name = instance.Name;
                        ri.Description = instance.Description;
                        ri.InviteTime = instance.InviteTime;
                        ri.StartTime = instance.StartTime;
                    }
                    else
                        errorMsg = "Datastore failure when modifying the raid instance. Please contact the administrator.";

                    return success;
                }
            }
        }
예제 #8
0
        public bool TryCreate(RaidInstance instance, out string errorMsg)
        {
            EnsureLoaded();

            using (new ReaderLock(_lock))
            {
                if (DateTime.Compare(instance.InviteTime, DateTime.Now) < 0)
                {
                    errorMsg = "You cannot schedule a raid in the past.";
                    return false;
                }

                if (DateTime.Compare(instance.StartTime, instance.InviteTime) < 0)
                {
                    errorMsg = "The start time cannot be before the invite time.";
                    return false;
                }

                using (new WriterLock(_lock))
                {
                    var success = false;

                    if (null == instance.Description)
                        instance.Description = "";

                    object id = Connection.ExecuteSqlScalar(new Query(RAID_INSTANCE_INSERT)
                                                                .AddParam("Raid", instance.Raid)
                                                                .AddParam("Name", instance.Name)
                                                                .AddParam("Description", instance.Description)
                                                                .AddParam("InviteTime", instance.InviteTime)
                                                                .AddParam("StartTime", instance.StartTime));

                    if (null != id)
                    {
                        instance.ID = (int)((decimal)id);
                        success = true;
                    }

                    errorMsg = "";

                    if (success)
                        _cache.Add(instance);
                    else
                        errorMsg = "Datastore failure when creating the raid instance. Please contact the administrator.";

                    return success;
                }
            }
        }
예제 #9
0
        private static Item Item(Item item, RaidInstance instance)
        {
            item.Instance = instance;

            return(item);
        }