using System; using Sisyphus; namespace Examples { public enum UserTitle { Unknown = 0, Mr = 1, Miss = 2, Mrs = 3 } [SpfTypeStorage(TableName = "tbUsers")] public class User : SpfEntity { [SpfStringDataType(16)] public string Username; [SpfStringDataType(16)] public string Password; [SpfFieldStorage(IsLoaded = false, IsSaved = false)] public string PasswordConfirmation; [SpfFieldStorage("UserTitle")] public UserTitle Title; [SpfStringDataType(32)] public string Forename; [SpfStringDataType(64)] public string Surname; [SpfStringDataType(256)] public string AddressLine1; [SpfStringDataType(256, true)] public string AddressLine2; [SpfStringDataType(256, true)] public string AddressLine3; public DateTime DateCreated; public DateTime DateModified; public User() { AddConstraint(new SpfConstraint(PasswordIsConfirmed)); AddPreTrigger(new SpfTrigger(PopulateDateCreated), SpfPersistenceAction.Insert); AddPreTrigger(new SpfTrigger(PopulateDateLastUpdated)); } public SpfBrokenConstraint UsernameIsUnique(ISpfTxnContext p_TxnContext, object p_AppContext) { bool usernameExists = p_TxnContext.RetrieveMatchExists(p_AppContext, new User.ByUsername(this.Username)); if (usernameExists) { return new SpfBrokenConstraint("The username " + this.Username + " is not unique", "Username"); } else { return null; } } public void PopulateDateCreated(ISpfTxnContext p_TxnContext, object p_AppContext) { this.DateCreated = DateTime.Now; } public void PopulateDateLastUpdated(ISpfTxnContext p_TxnContext, object p_AppContext) { this.DateModified = DateTime.Now; } } }