using Sarand.Net.Standard.Dbas.Data; using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Dbas; using Saxonite.Base.App; using Saxonite.Net.Standard.Dbas.Bus; using Saxonite.Net.Standard.Dbas.Internal; using Saxonite.Net.Standard.Base.Bus; using System; using System.Collections.Generic; using System.Data.Common; using System.Text; using Saxonite.Net.Standard.Base.App; using System.Linq; using Sarand.Net.Standard.Base.Utils; namespace Saxonite.Net.Standard.Dbas.Mgr { //======================================================================= partial class SaxAccountMgr_Dbas { //******************************************************************* // Account Mgr - User Sport //******************************************************************* // Utilities. private List GetLogProperties(SaxUserSport userSport) { return new List() { new StringPair("Id",SysId.ToString(userSport.Id)), new StringPair("UserAccountId",SysId.ToString(userSport.UserAccountId)), new StringPair("SportId",SysId.ToString(userSport.SportId)), new StringPair("Status",userSport.StatusCode) }; } //------------------------------------------------------------------- // Create item. public override SaxUserSport CreateUserSport(SysId userAccountId, SysId sportId) { ClearErrorState(); return new SaxUserSport_Dbas(CoreDatabase, null, userAccountId, sportId, 0); } private SaxUserSport_Dbas CreateUserSport(UserSport_Db dbUserSport) { ClearErrorState(); SaxUserSport_Dbas userSport = new SaxUserSport_Dbas(CoreDatabase, new SysId(dbUserSport._Id), new SysId(dbUserSport._UserAccountId), new SysId(dbUserSport._SportId), (ushort)dbUserSport._Flags); PopulateFrom(dbUserSport, userSport); return userSport; } //------------------------------------------------------------------- // Get item. public override SaxUserSport GetUserSport(SaxUserSport.Params prm) { ClearErrorState(); return GetUserSport(GetUserSportQueryFilter(prm).Concat(" And ", "(", ")")); } private SaxUserSport GetUserSport(String filter) { ClearErrorState(); long count = GetUserSportCount(filter); if (count == 0) return null; if (count != 1) { SetErrorState("Multiple items found"); return null; } SaxUserSport userSport = null; // Query data. using (var dbConnection = CoreDatabase.CreateConnection()) using (var dbCommand = dbConnection.CreateCommand()) { try { dbConnection.Open(); UserSport_Db dbUserSport = new UserSport_Db(CoreDbInfo); dbUserSport.PopulateFrom(dbCommand, aliasUserSport, filter); userSport = CreateUserSport(dbUserSport); } catch (Exception exc) { SetErrorState("Database query exception"); SaLogger.Warn(GetType().Name + ".GetUserSport\n\tQuery: " + dbCommand.CommandText + "\n\t" + ExceptionUtil.GetLogMessage(exc)); } } return userSport; } //------------------------------------------------------------------- // Validate item. public override bool IsValidUserSportData(SaxUserSport.Data data, SaxUserSport.ErrField errField) { ClearErrorState(); if (!base.IsValidUserSportData(data, errField)) return false; return true; } //------------------------------------------------------------------- // Insert item. public override bool InsertUserSport(SaxUserSport userSport, DbUpdateInfo dbUpdateInfo) { String fn = GetType().Name + ".InsertUserSport"; ClearErrorState(); if (!IsValidUserSport(userSport)) return false; if (SysId.IsValid(userSport.Id)) return SetErrorState(ErrorMessage.ValiditemId); using (var dbConnection = CoreDatabase.CreateConnection()) using (var dbCommand = dbConnection.CreateCommand()) { try { dbConnection.Open(); UserSport_Db dbUserSport = new UserSport_Db(CoreDbInfo); PopulateTo(dbUserSport, userSport, dbUpdateInfo); if (UserSport_Db.FieldsNonId.Contains("Id")) { // Generate next Id. dbUserSport._Id = CoreDatabase.GetNextIdFromTable("UserSport"); } dbUserSport.ExecuteInsertCommand(dbCommand); userSport.Id = new SysId(dbUserSport._Id); userSport.Changed = false; if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(userSport).Concat(": ").Concat("", "\n\t")); } catch (Exception exc) { SetErrorState(exc.Message); } } return !HasErrorState(); } //------------------------------------------------------------------- // Update item. public override bool UpdateUserSport(SaxUserSport userSport, DbUpdateInfo dbUpdateInfo) { String fn = GetType().Name + ".UpdateUserSport"; ClearErrorState(); if (!IsValidUserSport(userSport)) return false; if (!SysId.IsValid(userSport.Id)) return SetErrorState(ErrorMessage.InvalidItemId); if (!userSport.Changed) { if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(userSport).Concat(": ").Concat("", "\n\t")); return true; } using (var dbConnection = CoreDatabase.CreateConnection()) using (var dbCommand = dbConnection.CreateCommand()) { try { // Retrieve item. dbConnection.Open(); UserSport_Db dbUserSport = new UserSport_Db(CoreDbInfo); dbUserSport.PopulateFrom(dbCommand, aliasUserSport, "Id=" + SysId.ToString(userSport.Id)); // ToDo SaxUpdateLogItemMonitor_UserSport updateLogMonitor = new SaxUpdateLogItemMonitor_UserSport(SessionContext, CreateUserSport(dbUserSport), dbUpdateInfo); // Update item. PopulateTo(dbUserSport, userSport, dbUpdateInfo); dbUserSport.ExecuteUpdateCommand(dbCommand); userSport.Changed = false; if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(userSport).Concat(": ").Concat("", "\n\t")); // Record updates. // ToDo updateLogMonitor.RecordUpdatedValues(userSport); // ToDo updateLogMonitor.LogUpdates(); } catch (Exception exc) { SetErrorState(exc.Message); } } return !HasErrorState(); } //------------------------------------------------------------------- // Delete item. public override bool UserSportCanBeDeleted(SaxUserSport userSport) { ClearErrorState(); if (!base.UserSportCanBeDeleted(userSport)) return false; return true; } public override bool DeleteUserSport(SaxUserSport userSport, DbUpdateInfo dbUpdateInfo) { String fn = GetType().Name + ".DeleteUserSport"; ClearErrorState(); if (!UserSportCanBeDeleted(userSport)) return false; // User Sports are logically deleted by changing the status. userSport.Status = SaStatus.Deleted; return UpdateUserSport(userSport, dbUpdateInfo); /* * Physical deletion. using (var dbConnection = CoreDatabase.CreateConnection()) using (var dbCommand = dbConnection.CreateCommand()) { try { // Retrieve item. dbConnection.Open(); UserSport_Db dbUserSport = new UserSport_Db(CoreDbInfo); dbUserSport.PopulateFrom(dbCommand, aliasUserSport, "Id=" + userSport.Id.ToString()); // Delete item. dbCommand.CommandType = System.Data.CommandType.Text; dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserSport) + " WHERE Id=" + SysId.ToString(userSport.Id) + ";"; dbCommand.ExecuteNonQuery(); userSport.Changed = false; if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(userSport).Concat(": ").Concat("", "\n\t")); } catch (Exception exc) { SetErrorState(exc.Message); } } return !HasErrorState(); */ } //------------------------------------------------------------------- // Copy data properties to and from database. private void PopulateTo(UserSport_Db dbUserSport, SaxUserSport userSport, DbUpdateInfo dbUpdateInfo) { dbUserSport._Id = SysId.ToInt(userSport.Id); dbUserSport._UserAccountId = SysId.ToInt(userSport.UserAccountId); dbUserSport._SportId = SysId.ToInt(userSport.SportId); dbUserSport._Participation = (short)userSport.Participation; dbUserSport._Officiating = (short)userSport.Officiating; dbUserSport._UserSportData = userSport.UserSportData; // Common. dbUserSport._Notes = userSport.Notes; dbUserSport._Status = SacsSystem.GetStatusCode(userSport.Status); dbUserSport._Flags = (short)userSport.Flags; if (!SysId.IsValid(userSport.Id)) { dbUserSport._CreateOn = DateTime.Now; dbUserSport._CreateBy = dbUpdateInfo.UserId.ToInt(); dbUserSport._CreateHost = dbUpdateInfo.Host; } dbUserSport._UpdateOn = DateTime.Now; dbUserSport._UpdateBy = dbUpdateInfo.UserId.ToInt(); dbUserSport._UpdateHost = dbUpdateInfo.Host; } private void PopulateFrom(UserSport_Db dbUserSport, SaxUserSport userSport) { //userSport.Id = new SysId(dbUserSport._Id); //userSport.UserAccountId = new SysId(dbUserSport._UserAccountId); //userSport.SportId = new SysId(dbUserSport._SportId); userSport.Participation = (Sax.SportParticipation)dbUserSport._Participation; userSport.Officiating = (Sax.SportOfficiating)dbUserSport._Officiating; userSport.UserSportData = dbUserSport._UserSportData; // Common. userSport.Notes = dbUserSport._Notes; userSport.Status = SacsSystem.GetStatusForCode(dbUserSport._Status); userSport.SetCreateStamp(dbUserSport._CreateOn, new SysId(dbUserSport._CreateBy), dbUserSport._CreateHost); userSport.SetUpdateStamp(dbUserSport._UpdateOn, new SysId(dbUserSport._UpdateBy), dbUserSport._UpdateHost); userSport.AcceptChanges(); } //------------------------------------------------------------------- // Item column definitions. private static readonly String aliasUserSport = "UsrSpt"; private static readonly String aliasUserSport_UserAccount = "UsrSpt_Usr"; private static readonly String prefixUserSport_UserAccount = "UsrSpt_Usr_"; private static readonly String aliasUserSport_Sport = "UsrSpt_Spt"; private static readonly String prefixUserSport_Sport = "UsrSpt_Spt_"; private void SetUserSportColDfn (ColumnDfn col, String caption, int width, SaxDbDfn_Core.ColumnIdx dbCol, ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String, String alias = "", String prefix = "") { if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.UserSport) alias = aliasUserSport; col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown) col.MaxLength = (int)SaxDbDfn_Core.GetColTextLen(dbCol); } public override ColumnDfn GetUserSportColumnDfn(SaxUserSport.Column columnId, string caption = "", int width = 0) { ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); switch (columnId) { //----------------------------------------------------------- case SaxUserSport.Column.Pos: SetUserSportColDfn(columnDfn, "Pos", 60, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Right); columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off; columnDfn.ReadOnly = true; columnDfn.Resizable = false; break; case SaxUserSport.Column.Id: SetUserSportColDfn(columnDfn, "Id", 80, SaxDbDfn_Core.ColumnIdx.UserSport_Id, ColumnAlignment.Right, DataValue.DataType.Long); columnDfn.ReadOnly = true; break; //------------------------------------------------------- // User. case SaxUserSport.Column.UserAccountId: SetUserSportColDfn(columnDfn, "User Id", 80, SaxDbDfn_Core.ColumnIdx.UserSport_UserAccountId, ColumnAlignment.Right, DataValue.DataType.Long); columnDfn.ReadOnly = true; break; case SaxUserSport.Column.User_EmailAddress: SetUserSportColDfn(columnDfn, "Email address", 160, SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress, ColumnAlignment.Left, DataValue.DataType.String, aliasUserSport_UserAccount, prefixUserSport_UserAccount); columnDfn.ReadOnly = true; break; case SaxUserSport.Column.User_DisplayName: SetUserSportColDfn(columnDfn, "User", 160, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Left, DataValue.DataType.String); columnDfn.ReadOnly = true; break; case SaxUserSport.Column.User_Title: SetUserSportColDfn(columnDfn, "Title", 80, SaxDbDfn_Core.ColumnIdx.UserAccount_Title, ColumnAlignment.Left, DataValue.DataType.String, aliasUserSport_UserAccount, prefixUserSport_UserAccount); columnDfn.ReadOnly = true; break; case SaxUserSport.Column.User_FirstName: SetUserSportColDfn(columnDfn, "First name", 120, SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName, ColumnAlignment.Left, DataValue.DataType.String, aliasUserSport_UserAccount, prefixUserSport_UserAccount); columnDfn.ReadOnly = true; break; case SaxUserSport.Column.User_LastName: SetUserSportColDfn(columnDfn, "Last name", 120, SaxDbDfn_Core.ColumnIdx.UserAccount_LastName, ColumnAlignment.Left, DataValue.DataType.String, aliasUserSport_UserAccount, prefixUserSport_UserAccount); columnDfn.ReadOnly = true; break; //------------------------------------------------------- // Sport. case SaxUserSport.Column.SportId: SetUserSportColDfn(columnDfn, "Sport Id", 80, SaxDbDfn_Core.ColumnIdx.UserSport_SportId, ColumnAlignment.Right, DataValue.DataType.Long); columnDfn.ReadOnly = true; break; case SaxUserSport.Column.Sport_Name: SetUserSportColDfn(columnDfn, "Email address", 160, SaxDbDfn_Core.ColumnIdx.Sport_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasUserSport_Sport, prefixUserSport_Sport); columnDfn.ReadOnly = true; break; // Participation. case SaxUserSport.Column.SportParticipation: SetUserSportColDfn(columnDfn, "Participation", 80, SaxDbDfn_Core.ColumnIdx.UserSport_Participation, ColumnAlignment.Center, DataValue.DataType.Long); break; case SaxUserSport.Column.SportParticipation_Code: SetUserSportColDfn(columnDfn, "Participation", 80, SaxDbDfn_Core.ColumnIdx.UserSport_Participation, ColumnAlignment.Center, DataValue.DataType.String); break; case SaxUserSport.Column.SportParticipation_Desc: SetUserSportColDfn(columnDfn, "Participation", 120, SaxDbDfn_Core.ColumnIdx.UserSport_Participation, ColumnAlignment.Center, DataValue.DataType.String); break; // Officiating. case SaxUserSport.Column.SportOfficiating: SetUserSportColDfn(columnDfn, "Officiating", 80, SaxDbDfn_Core.ColumnIdx.UserSport_Officiating, ColumnAlignment.Center, DataValue.DataType.Long); break; case SaxUserSport.Column.SportOfficiating_Code: SetUserSportColDfn(columnDfn, "Officiating", 80, SaxDbDfn_Core.ColumnIdx.UserSport_Officiating, ColumnAlignment.Center, DataValue.DataType.String); break; case SaxUserSport.Column.SportOfficiating_Desc: SetUserSportColDfn(columnDfn, "Officiating", 120, SaxDbDfn_Core.ColumnIdx.UserSport_Officiating, ColumnAlignment.Center, DataValue.DataType.String); break; //----------------------------------------------------------- // Derived properties. //----------------------------------------------------------- // Common properties. case SaxUserSport.Column.Notes: SetUserSportColDfn(columnDfn, "Notes", 240, SaxDbDfn_Core.ColumnIdx.UserSport_Notes); break; case SaxUserSport.Column.Flags: SetUserSportColDfn(columnDfn, "Flags", 60, SaxDbDfn_Core.ColumnIdx.UserSport_Flags, ColumnAlignment.Center, DataValue.DataType.Long); break; case SaxUserSport.Column.Status: SetUserSportColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.UserSport_Status, ColumnAlignment.Center); break; case SaxUserSport.Column.Status_Desc: SetUserSportColDfn(columnDfn, "Status", 90, SaxDbDfn_Core.ColumnIdx.UserSport_Status, ColumnAlignment.Center); break; case SaxUserSport.Column.Status_Ind: SetUserSportColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.UserSport_Status, ColumnAlignment.Center, DataValue.DataType.TriState); columnDfn.TriStateFormat = ColumnTriStateFormat.Lights; break; case SaxUserSport.Column.CreateOn_Date: SetUserSportColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.UserSport_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date); columnDfn.ReadOnly = true; break; case SaxUserSport.Column.UpdateOn_Date: SetUserSportColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.ColumnIdx.UserSport_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date); columnDfn.ReadOnly = true; break; //----------------------------------------------------------- } if (!String.IsNullOrEmpty(caption)) columnDfn.Caption = caption; if (width > 0) columnDfn.Width = width; return columnDfn; } //------------------------------------------------------------------- // Item query filter. public override List GetUserSportQueryFilter(SaxUserSport.Params prm) { List filter = new List(); // Ids. String idsIncluded = prm.IdsIncluded.Concat(","); if (!idsIncluded.IsEmpty()) filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Id, aliasUserSport) + " IN (" + idsIncluded + ")"); String idsxcluded = prm.IdsExcluded.Concat(","); if (!idsxcluded.IsEmpty()) filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Id, aliasUserSport) + " NOT IN (" + idsxcluded + ")"); // User accounts. String userAccountIdsIncluded = prm.UserAccountIdsIncluded.Concat(","); if (!userAccountIdsIncluded.IsEmpty()) filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_UserAccountId, aliasUserSport) + " IN (" + userAccountIdsIncluded + ")"); // Sports. String sportIdsIncluded = prm.SportIdsIncluded.Concat(","); if (!sportIdsIncluded.IsEmpty()) filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_SportId, aliasUserSport) + " IN (" + sportIdsIncluded + ")"); // Notes. if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Notes, aliasUserSport) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'"); // Status. if (prm.StatusCat != SaxUserSport.StatusCat.Any) filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Status, aliasUserSport) + GetUserSportStatusCatFilterCondition(prm.StatusCat)); if (filter.Count < 1) filter.Add("1=1"); return filter; } internal static String GetUserSportStatusCatFilterCondition(SaxUserSport.StatusCat statusCat) { if (statusCat == SaxUserSport.StatusCat.ActiveOnly) return "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'"; if (statusCat == SaxUserSport.StatusCat.InactiveOnly) return "='" + SacsSystem.GetStatusCode(SaStatus.Inactive) + "'"; if (statusCat == SaxUserSport.StatusCat.NotDeleted) return "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'"; if (statusCat == SaxUserSport.StatusCat.DeletedOnly) return "='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'"; return ""; } // Item sort columns. public List GetUserSportSortColumns(SaxUserSport.Params prm) { // Sort sequence: List sortColumnNames = new List(); foreach (var columnDfn in prm.SortColumns) { // Need to ensure correct alias used for UserSport columns in case of conflict. String sortCol = String.Empty; if (SaxDbDfn_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.UserSport) { sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn, aliasUserSport); } else { sortCol = columnDfn.DataName; if (!StringUtil.IsEmpty(columnDfn.SortDataName)) sortCol = columnDfn.SortDataName; } if (!sortCol.IsEmpty()) { DbOrderByNullMode orderByNullMode = DbOrderByNullMode.Default; // eSaOrderByDemoteNulls, eSaOrderByPromoteNulls sortColumnNames.Add(DbQuery.FormatForOrderBy(sortCol, columnDfn.SortAscending, orderByNullMode).Concat(", ")); } } sortColumnNames.RemoveBlanks(); if (sortColumnNames.IsEmpty()) { // Default sort columns. sortColumnNames.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Id, aliasUserSport) + " ASC"); } return sortColumnNames; } //------------------------------------------------------------------- // Item count. private long GetUserSportCount(String filter) { ClearErrorState(); return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserSport) + " As " + aliasUserSport, filter); } public override long GetUserSportCount(SaxUserSport.Params prm) { ClearErrorState(); return GetUserSportCount(GetUserSportQueryFilter(prm).Concat(" AND ", "(", ")")); } //------------------------------------------------------------------- // Item list. public override List GetUserSportList(SaxUserSport.Params prm) { List userSports = new List(); DbQuery qry = new DbQuery(CoreDatabase.DbmsType); qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserSport), aliasUserSport); UserSport_Db dbUserSport = new UserSport_Db(CoreDbInfo); qry.Columns.AddRange(dbUserSport.ExistingColumnNames); qry.Filters.AddRange(GetUserSportQueryFilter(prm)); qry.OrderBy.AddRange(GetUserSportSortColumns(prm)); // Query data. using (var dbConnection = CoreDatabase.CreateConnection()) using (var dbCommand = dbConnection.CreateCommand()) { try { dbConnection.Open(); dbCommand.CommandText = qry.BuildQuery(prm.ResultsPaging); using (DbDataReader dbDataReader = dbCommand.ExecuteReader()) { while (dbDataReader.Read()) { dbUserSport = new UserSport_Db(CoreDbInfo); dbUserSport.PopulateFrom(dbDataReader); userSports.Add(CreateUserSport(dbUserSport)); } } } catch (Exception exc) { SaLogger.Warn(GetType().Name + ".GetUserSportList\n\tQuery: " + dbCommand.CommandText + "\n\t" + ExceptionUtil.GetLogMessage(exc)); } } return userSports; } //------------------------------------------------------------------- // Item query execution. public override DbResultSet ExecuteUserSportQuery(List columns, SaxUserSport.Params prm) { ClearErrorState(); //--------------------------------------------------------------------- // Construct query. DbQuery query = new DbQuery(CoreDatabase.DbmsType); query.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserSport), aliasUserSport); // Add columns as defined in query list. if (columns.HasId(SaxUserSport.Column.Id)) query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Id, aliasUserSport)); bool hasUserAccountCols = (columns.HasId(SaxUserSport.Column.User_EmailAddress) || columns.HasId(SaxUserSport.Column.User_DisplayName) || columns.HasId(SaxUserSport.Column.User_Title) || columns.HasId(SaxUserSport.Column.User_FirstName) || columns.HasId(SaxUserSport.Column.User_LastName)); if (columns.HasId(SaxUserSport.Column.UserAccountId) || hasUserAccountCols) query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_UserAccountId, aliasUserSport)); bool hasSportCols = (columns.HasId(SaxUserSport.Column.Sport_Name)); if (columns.HasId(SaxUserSport.Column.SportId) || hasSportCols) query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_SportId, aliasUserSport)); if (columns.HasId(SaxUserSport.Column.SportParticipation) || columns.HasId(SaxUserSport.Column.SportParticipation_Code) || columns.HasId(SaxUserSport.Column.SportParticipation_Desc)) query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Participation, aliasUserSport)); if (columns.HasId(SaxUserSport.Column.SportOfficiating) || columns.HasId(SaxUserSport.Column.SportOfficiating_Code) || columns.HasId(SaxUserSport.Column.SportOfficiating_Desc)) query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Officiating, aliasUserSport)); // Common properties. if (columns.HasId(SaxUserSport.Column.Notes)) query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Notes, aliasUserSport)); if (columns.HasId(SaxUserSport.Column.Flags)) query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Flags, aliasUserSport)); if (columns.HasId(SaxUserSport.Column.Status) || columns.HasId(SaxUserSport.Column.Status_Desc) || columns.HasId(SaxUserSport.Column.Status_Ind)) query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Status, aliasUserSport)); if (columns.HasId(SaxUserSport.Column.CreateOn_Date)) query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_CreateOn, aliasUserSport)); if (columns.HasId(SaxUserSport.Column.UpdateOn_Date)) query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_UpdateOn, aliasUserSport)); //--------------------------------------------------------------------- // User Account. if (hasUserAccountCols) { DbQueryJoin joinUserAccount = new DbQueryJoin(DbJoinType.LeftOuter); joinUserAccount.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserAccount), aliasUserSport_UserAccount); joinUserAccount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserSport_UserAccount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_UserAccountId, aliasUserSport)); query.Joins.Add(joinUserAccount); List cols = new List(); cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress); cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_Title); cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName); cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName); foreach (var col in cols) query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserSport_UserAccount), prefixUserSport_UserAccount + SaxDbDfn_Core.GetColumnName(col, false)); } //--------------------------------------------------------------------- // Sport. if (hasSportCols) { DbQueryJoin joinSport = new DbQueryJoin(DbJoinType.LeftOuter); joinSport.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Sport), aliasUserSport_Sport); joinSport.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Id, aliasUserSport_Sport) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_SportId, aliasUserSport)); query.Joins.Add(joinSport); List cols = new List(); cols.Add(SaxDbDfn_Core.ColumnIdx.Sport_Name); foreach (var col in cols) query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserSport_Sport), prefixUserSport_Sport + SaxDbDfn_Core.GetColumnName(col, false)); } //--------------------------------------------------------------------- // Populate filter. query.Filters.AddRange(GetUserSportQueryFilter(prm)); if (prm.IdsIncluded.Count != 1) { // Configure sort sequence. foreach (String sortColumn in GetUserSportSortColumns(prm)) query.OrderBy.Add(sortColumn); } //--------------------------------------------------------------------- //return new DbResultSet_DataTableReader(db, query.BuildQuery(prm.ResultsPaging)); return DbResultSet_DataReader.ExecuteQuery(CoreDatabase, query.BuildQuery(prm.ResultsPaging)); } //------------------------------------------------------------------- } //======================================================================= }