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>"); }
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); }
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; }
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; } }
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; } } }