public static ODataQuerier <T> Create(string name, XElement schema = null, string dataConverter = null, string dateFormatter = null, string format = null) { Database database = new DatabaseManufacturer().Create(name); XElement xSchema = schema ?? new PrimarySchemaProvider().GetSchema(name); string sConverter; if (string.IsNullOrWhiteSpace(dataConverter)) { if (typeof(T) == typeof(XElement)) { sConverter = "xml"; } else if (typeof(T) == typeof(string)) { sConverter = "json"; } else { throw new NotSupportedException(typeof(T).ToString()); } } else { sConverter = dataConverter; } DataConverter <T> oDataConverter = new DataConverterManufacturer().Create <T>(sConverter); DateFormatter formatter; if (string.IsNullOrWhiteSpace(dateFormatter)) { if (oDataConverter is DataConverter <XElement> ) { formatter = new DotNETDateFormatter(); } else if (oDataConverter is DataConverter <string> ) { formatter = new JsonNETFormatter() { TimezoneOffset = schema.GetTimezoneOffset() }; } else { throw new ArgumentNullException("dateFormatter"); } } else { formatter = new DateFormatterManufacturer().Create(dateFormatter, schema.GetTimezoneOffset(), format); } oDataConverter.DateFormatter = formatter; return(new ODataQuerier <T>(database, xSchema, oDataConverter)); }
protected void UpdateLockedOutState(XElement user, bool isSuccessful) { DateTime now = ODataQuerier.GetNow(); string nowString = new DotNETDateFormatter().Format(now); SettingsService settingsService = new SettingsService(Name); MembershipSettings membershipSettings = settingsService.GetMembershipSettings(); if (isSuccessful) { user.SetElementValue("LastLoginDate", nowString); user.SetElementValue("FailedPasswordAttemptCount", 0); } else { if (membershipSettings.MaxInvalidPasswordAttempts == 0) { return; } int failedCount = int.Parse(user.Element("FailedPasswordAttemptCount").Value); if (failedCount > 0) { DateTime start = DateTime.Parse(user.Element("FailedPasswordAttemptWindowStart").Value); if ((DateTime.Now - start).TotalMinutes < membershipSettings.PasswordAttemptWindow) { if (failedCount >= membershipSettings.MaxInvalidPasswordAttempts) { user.SetElementValue("IsLockedOut", true.ToString()); user.SetElementValue("LastLockoutDate", nowString); } else { failedCount++; user.SetElementValue("FailedPasswordAttemptCount", failedCount); } } else { user.SetElementValue("FailedPasswordAttemptCount", 1); user.SetElementValue("FailedPasswordAttemptWindowStart", nowString); } } else { user.SetElementValue("FailedPasswordAttemptCount", 1); user.SetElementValue("FailedPasswordAttemptWindowStart", nowString); } } Modifier.AppendUpdate(user); }
public bool IsUnique(string entity, IEnumerable <KeyValuePair <string, object> > propertyValues, IEnumerable <KeyValuePair <string, object> > excludedKey) { string filter = GenerateFilter(propertyValues, out IReadOnlyDictionary <string, object> parameters); string select = string.Join(",", excludedKey.Select(p => p.Key)); ODataQuerier <XElement> oDataQuerier = ODataQuerier <XElement> .Create(Name, Schema); IEnumerable <XElement> result = oDataQuerier.GetCollection(entity, select, filter, null, parameters); int count = result.Count(); if (count == 0) { return(true); } if (count > 1) { return(false); } XElement element = result.First(); foreach (KeyValuePair <string, object> pair in excludedKey) { object obj = pair.Value; string value; if (obj.GetType() == typeof(bool)) { value = ((bool)obj) ? "true" : "false"; } else if (obj.GetType() == typeof(DateTime)) { value = new DotNETDateFormatter().Format((DateTime)obj); } else { value = obj.ToString(); } if (element.Element(pair.Key).Value == value) { continue; } return(false); } return(true); }