public UserInfo SaveUser(int tenant, UserInfo user) { if (user == null) throw new ArgumentNullException("user"); if (string.IsNullOrEmpty(user.UserName)) throw new ArgumentOutOfRangeException("Empty username."); if (user.ID == default(Guid)) user.ID = Guid.NewGuid(); user.LastModified = DateTime.UtcNow; user.Tenant = tenant; ExecAction(db => { user.UserName = user.UserName.Trim(); var q = Query("core_user", tenant) .SelectCount() .Where("username", user.UserName) .Where(!Exp.Eq("id", user.ID.ToString())) .Where("removed", false); var count = db.ExecScalar<int>(q); if (count != 0) { throw new ArgumentOutOfRangeException("Duplicate username."); } var i = Insert("core_user", tenant) .InColumnValue("id", user.ID.ToString()) .InColumnValue("username", user.UserName) .InColumnValue("firstname", user.FirstName) .InColumnValue("lastname", user.LastName) .InColumnValue("sex", user.Sex) .InColumnValue("bithdate", user.BirthDate) .InColumnValue("status", user.Status) .InColumnValue("title", user.Title) .InColumnValue("department", user.Department) .InColumnValue("workfromdate", user.WorkFromDate) .InColumnValue("terminateddate", user.TerminatedDate) .InColumnValue("contacts", user.ContactsToString()) .InColumnValue("email", string.IsNullOrEmpty(user.Email) ? user.Email : user.Email.Trim()) .InColumnValue("location", user.Location) .InColumnValue("notes", user.Notes) .InColumnValue("removed", user.Removed) .InColumnValue("last_modified", user.LastModified) .InColumnValue("activation_status", user.ActivationStatus) .InColumnValue("culture", user.CultureName) .InColumnValue("phone", user.MobilePhone) .InColumnValue("phone_activation", user.MobilePhoneActivationStatus) ; db.ExecNonQuery(i); }); return user; }