Beispiel #1
0
        public void DrawRow(RaidSignup signup, bool canCancel, bool canDelete, bool canRestore, bool canChangeSpec)
        {
            var character = Character.Store.ReadOneOrDefault(c => c.Name == signup.Character);
            int specializationId = 1 == signup.RosteredSpecialization ? character.PrimarySpecialization : character.SecondarySpecialization;
            var specialization = Specialization.Store.ReadOneOrDefault(spec => spec.ID == specializationId);
            string specializationMarkup = canChangeSpec ? DrawSpecializationDropDown(character, signup.RosteredSpecialization) : specialization.Name;

            Response.Write("<tr>");
            Response.Write(string.Format("<td>{0}</td>", character.Name));
            Response.Write(string.Format("<td>{0}</td>", signup.Comment));
            Response.Write(string.Format("<td>{0}</td>", character.Level.ToString()));
            Response.Write(string.Format("<td>{0}</td>", character.Race));
            Response.Write(string.Format("<td>{0}</td>", character.Class));
            Response.Write(string.Format("<td>{0}</td>", signup.SignupDate.ToShortDateString() + " " + signup.SignupDate.ToShortTimeString()));
            Response.Write(string.Format("<td>{0}</td>", specialization.Role));
            Response.Write(string.Format("<td>{0}</td>", specializationMarkup));

            Response.Write("<td>");
            if (canCancel)
            {
                Response.Write(string.Format("<a href=\"#\" id=\"Cancel{0}\" class=\"drmCancelSignupButton\" title=\"Cancel this signup\" onclick=\"return false;\">", character.Name));
                Response.Write("<img src=\"/Content/images/cancel-icon.png\" alt=\"\" /></a>");
            }
            if (canRestore)
            {
                Response.Write(string.Format("<a href=\"#\" id=\"Restore{0}\" class=\"drmRestoreSignupButton\" title=\"Restore this signup\" onclick=\"return false;\">", character.Name));
                Response.Write("<img src=\"/Content/images/revert-icon.png\" alt=\"\" /></a>");
            }
            if (canDelete)
            {
                Response.Write(string.Format("<a href=\"#\" id=\"Delete{0}\" class=\"drmDeleteSignupButton\" title=\"Delete this signup\" onclick=\"return false;\">", character.Name));
                Response.Write("<img src=\"/Content/images/delete-icon.png\" alt=\"\" /></a>");
            }
            Response.Write("</td>");

            Response.Write("</tr>");
        }
Beispiel #2
0
        public RaidSignup ReadOneOrDefault(int raidInstanceId, string character)
        {
            RaidSignup newSignup = null;

            using (new ReaderLock(_lock))
            {
                Connection.ExecuteSql(new Query(RAID_SIGNUP_SELECT_BY_ONE)
                    .AddParam("RaidInstanceID", raidInstanceId)
                    .AddParam("Character", character), delegate(SqlDataReader reader)
                {
                    if (!reader.Read())
                        return;

                    newSignup = new RaidSignup
                    {
                        RaidInstanceID = (int)reader[0],
                        Character = reader[1].ToString(),
                        Comment = reader[2].ToString(),
                        IsRostered = (bool)reader[3],
                        IsCancelled = (bool)reader[4],
                        RosteredSpecialization = (int)reader[5],
                        SignupDate = (DateTime)reader[6]
                    };
                });
            }

            return newSignup ?? default(RaidSignup);
        }
Beispiel #3
0
        private List<RaidSignup> ReadAllHelper(Query query)
        {
            var newList = new List<RaidSignup>();

            using (new ReaderLock(_lock))
            {
                Connection.ExecuteSql(query, delegate(SqlDataReader reader)
                    {
                        while (reader.Read())
                        {
                            var newRaidSignup = new RaidSignup
                            {
                                RaidInstanceID = (int)reader[0],
                                Character = reader[1].ToString(),
                                Comment = reader[2].ToString(),
                                IsRostered = (bool)reader[3],
                                IsCancelled = (bool)reader[4],
                                RosteredSpecialization = (int)reader[5],
                                SignupDate = (DateTime)reader[6]
                            };

                            newList.Add(newRaidSignup);
                        }
                    });
            }

            return newList.Count > 0 ? newList : null;
        }
Beispiel #4
0
        public bool Update(RaidSignup signup, out string errorMessage)
        {
            using (new WriterLock(_lock))
            {
                bool success = true;

                Connection.ExecuteSql(new Query(UPDATE)
                    .AddParam("Character", signup.Character)
                    .AddParam("Comment", signup.Comment)
                    .AddParam("IsRostered", signup.IsRostered)
                    .AddParam("IsCancelled", signup.IsCancelled)
                    .AddParam("RosteredSpecialization", signup.RosteredSpecialization)
                    .AddParam("RaidInstanceID", signup.RaidInstanceID),
                    delegate(SqlDataReader reader)
                {
                    if (0 == reader.RecordsAffected)
                        success = false;
                });

                if(!success)
                    errorMessage = "Data repository error when updating the signup. Contact the system administrator.";
                else
                    errorMessage="";

                return success;
            }
        }
Beispiel #5
0
        public bool TryCreate(RaidSignup signup, out string errorMsg)
        {
            if (200 < signup.Comment.Length)
            {
                errorMsg = "A comment longer than 200 was provided. This should not happen.";
                return false;
            }

            if ((1 > signup.RosteredSpecialization) || (2 < signup.RosteredSpecialization))
            {
                errorMsg = "An invalid specialization choice was provided. This should not happen.";
                return false;
            }

            using (new ReaderLock(_lock))
            {
                if (null != ReadOneOrDefault(signup.RaidInstanceID, signup.Character))
                {
                    errorMsg = "A signup for this character for this raid already exists.";
                    return false;
                }

                if (null == Character.Store.ReadOneOrDefault(c => c.Name == signup.Character))
                {
                    errorMsg = "A signup cannot be created for a non-existant character.";
                    return false;
                }

                using (new WriterLock(_lock))
                {
                    if (null != ReadOneOrDefault(signup.RaidInstanceID, signup.Character))
                    {
                        errorMsg = "A signup for this character for this raid already exists.";
                        return false;
                    }

                    if (null == Character.Store.ReadOneOrDefault(c => c.Name == signup.Character))
                    {
                        errorMsg = "A signup cannot be created for a non-existant character.";
                        return false;
                    }

                    var success = false;

                    Connection.ExecuteSql(new Query(RAID_SIGNUP_ADD)
                                            .AddParam("RaidInstanceID", signup.RaidInstanceID)
                                            .AddParam("Character", signup.Character)
                                            .AddParam("Comment", signup.Comment)
                                            .AddParam("RosteredSpecialization", signup.RosteredSpecialization)
                                            .AddParam("SignupDate", signup.SignupDate), delegate(SqlDataReader reader)
                    {
                        if (0 == reader.RecordsAffected)
                            return;

                        success = true;
                    });

                    errorMsg = success ? "Datastore failure when creating the signup. Please contact the administrator." : "";

                    return success;
                }
            }
        }