484 lines
22 KiB
C#
484 lines
22 KiB
C#
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.App;
|
|
using Saxonite.Net.Standard.Base.Bus;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data.Common;
|
|
using System.Text;
|
|
using Sarand.Net.Standard.Base.Utils;
|
|
using System.Linq;
|
|
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
|
|
|
namespace Saxonite.Net.Standard.Dbas.Mgr
|
|
{
|
|
//=======================================================================
|
|
partial class SaxActivityMgr_Dbas
|
|
{
|
|
//*******************************************************************
|
|
// Activity Mgr - ActivityFeedback
|
|
//*******************************************************************
|
|
// Utilities.
|
|
private List<StringPair> GetLogProperties(SaxActivityFeedback activityFeedback)
|
|
{
|
|
return new List<StringPair>()
|
|
{
|
|
new StringPair("ItemId",ItemId.ToString(activityFeedback.ItemId)),
|
|
new StringPair("ViewCount",activityFeedback.ViewCount.ToString()),
|
|
};
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Create item.
|
|
public override SaxActivityFeedback CreateActivityFeedback(ItemId itemId)
|
|
{
|
|
ClearErrorState();
|
|
return new SaxActivityFeedback_Dbas(CoreDatabase, itemId);
|
|
}
|
|
private SaxActivityFeedback_Dbas CreateActivityFeedback(ActivityFeedback_Db dbActivityFeedback)
|
|
{
|
|
ClearErrorState();
|
|
ItemId itemId = new ItemId(dbActivityFeedback._ItemType, new SysId(dbActivityFeedback._ItemId));
|
|
SaxActivityFeedback_Dbas activityFeedback = new SaxActivityFeedback_Dbas(CoreDatabase, itemId);
|
|
PopulateFrom(dbActivityFeedback, activityFeedback);
|
|
return activityFeedback;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Get item.
|
|
public override SaxActivityFeedback GetActivityFeedback(SaxActivityFeedback.Params prm)
|
|
{
|
|
ClearErrorState();
|
|
return GetActivityFeedback(GetActivityFeedbackQueryFilter(prm).Concat(" And ", "(", ")"));
|
|
}
|
|
private SaxActivityFeedback GetActivityFeedback(String filter)
|
|
{
|
|
ClearErrorState();
|
|
long count = GetActivityFeedbackCount(filter);
|
|
if (count == 0) return null;
|
|
if (count != 1)
|
|
{
|
|
SetErrorState("Multiple items found");
|
|
return null;
|
|
}
|
|
SaxActivityFeedback activityFeedback = null;
|
|
// Query data.
|
|
using (var dbConnection = CoreDatabase.CreateConnection())
|
|
using (var dbCommand = dbConnection.CreateCommand())
|
|
{
|
|
try
|
|
{
|
|
dbConnection.Open();
|
|
ActivityFeedback_Db dbActivityFeedback = new ActivityFeedback_Db(CoreDbInfo);
|
|
dbActivityFeedback.PopulateFrom(dbCommand, aliasActivityFeedback, filter);
|
|
activityFeedback = CreateActivityFeedback(dbActivityFeedback);
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
SetErrorState("Database query exception");
|
|
SaLogger.Warn(GetType().Name + ".GetActivityFeedback\n\tQuery: " + dbCommand.CommandText + "\n\t" + ExceptionUtil.GetLogMessage(exc));
|
|
}
|
|
}
|
|
return activityFeedback;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Validate item.
|
|
public override bool IsValidActivityFeedbackData(SaxActivityFeedback.Data data, SaxActivityFeedback.ErrField errField)
|
|
{
|
|
ClearErrorState();
|
|
if (!base.IsValidActivityFeedbackData(data, errField)) return false;
|
|
return true;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Insert item.
|
|
public override bool InsertActivityFeedback(SaxActivityFeedback activityFeedback, DbUpdateInfo dbUpdateInfo)
|
|
{
|
|
String fn = GetType().Name + ".InsertActivityFeedback";
|
|
ClearErrorState();
|
|
if (!IsValidActivityFeedback(activityFeedback)) return false;
|
|
//if (SysId.IsValid(activityFeedback.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
|
using (var dbConnection = CoreDatabase.CreateConnection())
|
|
using (var dbCommand = dbConnection.CreateCommand())
|
|
{
|
|
try
|
|
{
|
|
dbConnection.Open();
|
|
ActivityFeedback_Db dbActivityFeedback = new ActivityFeedback_Db(CoreDbInfo);
|
|
PopulateTo(dbActivityFeedback, activityFeedback, dbUpdateInfo);
|
|
if (ActivityFeedback_Db.FieldsNonId.Contains("Id"))
|
|
{
|
|
// Generate next Id.
|
|
// ToDo dbActivityFeedback._Id = CoreDatabase.GetNextIdFromTable("ActivityFeedback");
|
|
}
|
|
dbActivityFeedback.ExecuteInsertCommand(dbCommand);
|
|
//activityFeedback.Id = new SysId(dbActivityFeedback._Id);
|
|
activityFeedback.Changed = false;
|
|
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(activityFeedback).Concat(": ").Concat("", "\n\t"));
|
|
}
|
|
catch (Exception exc) { SetErrorState(exc.Message); }
|
|
}
|
|
return !HasErrorState();
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Update item.
|
|
public override bool UpdateActivityFeedback(SaxActivityFeedback activityFeedback, DbUpdateInfo dbUpdateInfo)
|
|
{
|
|
String fn = GetType().Name + ".UpdateActivityFeedback";
|
|
ClearErrorState();
|
|
if (!IsValidActivityFeedback(activityFeedback)) return false;
|
|
//if (!SysId.IsValid(activityFeedback.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
|
if (!activityFeedback.Changed)
|
|
{
|
|
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(activityFeedback).Concat(": ").Concat("", "\n\t"));
|
|
return true;
|
|
}
|
|
using (var dbConnection = CoreDatabase.CreateConnection())
|
|
using (var dbCommand = dbConnection.CreateCommand())
|
|
{
|
|
try
|
|
{
|
|
// Retrieve item.
|
|
dbConnection.Open();
|
|
ActivityFeedback_Db dbActivityFeedback = new ActivityFeedback_Db(CoreDbInfo);
|
|
dbActivityFeedback.PopulateFrom(dbCommand, aliasActivityFeedback, GetActivityFeedbackQueryFilter(activityFeedback, aliasActivityFeedback).Concat(" AND ", "(", ")"));
|
|
// ToDo SaxUpdateLogItemMonitor_ActivityFeedback updateLogMonitor = new SaxUpdateLogItemMonitor_ActivityFeedback(SessionContext, CreateActivityFeedback(dbActivityFeedback), dbUpdateInfo);
|
|
// Update item.
|
|
PopulateTo(dbActivityFeedback, activityFeedback, dbUpdateInfo);
|
|
dbActivityFeedback.ExecuteUpdateCommand(dbCommand);
|
|
activityFeedback.Changed = false;
|
|
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(activityFeedback).Concat(": ").Concat("", "\n\t"));
|
|
// Record updates.
|
|
// ToDo updateLogMonitor.RecordUpdatedValues(activityFeedback);
|
|
// ToDo updateLogMonitor.LogUpdates();
|
|
}
|
|
catch (Exception exc) { SetErrorState(exc.Message); }
|
|
}
|
|
return !HasErrorState();
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Delete item.
|
|
public override bool ActivityFeedbackCanBeDeleted(SaxActivityFeedback activityFeedback)
|
|
{
|
|
ClearErrorState();
|
|
if (!base.ActivityFeedbackCanBeDeleted(activityFeedback)) return false;
|
|
return true;
|
|
}
|
|
public override bool DeleteActivityFeedback(SaxActivityFeedback activityFeedback, DbUpdateInfo dbUpdateInfo)
|
|
{
|
|
String fn = GetType().Name + ".DeleteActivityFeedback";
|
|
ClearErrorState();
|
|
if (!ActivityFeedbackCanBeDeleted(activityFeedback)) return false;
|
|
using (var dbConnection = CoreDatabase.CreateConnection())
|
|
using (var dbCommand = dbConnection.CreateCommand())
|
|
{
|
|
try
|
|
{
|
|
// Retrieve item.
|
|
dbConnection.Open();
|
|
ActivityFeedback_Db dbActivityFeedback = new ActivityFeedback_Db(CoreDbInfo);
|
|
String filter = GetActivityFeedbackQueryFilter(activityFeedback, aliasActivityFeedback).Concat(" AND ", "(", ")");
|
|
dbActivityFeedback.PopulateFrom(dbCommand, aliasActivityFeedback, filter);
|
|
// Delete item.
|
|
dbCommand.CommandType = System.Data.CommandType.Text;
|
|
dbCommand.CommandText = "DELETE " + aliasActivityFeedback + " FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ActivityFeedback) + " As " + aliasActivityFeedback + " WHERE " + filter + ";";
|
|
dbCommand.ExecuteNonQuery();
|
|
activityFeedback.Changed = false;
|
|
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(activityFeedback).Concat(": ").Concat("", "\n\t"));
|
|
}
|
|
catch (Exception exc) { SetErrorState(exc.Message); }
|
|
}
|
|
return !HasErrorState();
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Copy data properties to and from database.
|
|
private void PopulateTo(ActivityFeedback_Db dbActivityFeedback, SaxActivityFeedback activityFeedback, DbUpdateInfo dbUpdateInfo)
|
|
{
|
|
dbActivityFeedback._ItemType = activityFeedback.ItemId.Type;
|
|
dbActivityFeedback._ItemId = SysId.ToInt(activityFeedback.ItemId.Id);
|
|
dbActivityFeedback._ViewCount = activityFeedback.ViewCount;
|
|
dbActivityFeedback._FeedbackCount = activityFeedback.FeedbackCount;
|
|
dbActivityFeedback._FeedbackTotal = activityFeedback.FeedbackTotal;
|
|
dbActivityFeedback._FeedbackAverage = activityFeedback.FeedbackAverage;
|
|
if (!DateUtil.IsValid(dbActivityFeedback._CreateOn))
|
|
{
|
|
dbActivityFeedback._CreateOn = DateTime.Now;
|
|
}
|
|
dbActivityFeedback._UpdateOn = DateTime.Now;
|
|
}
|
|
private void PopulateFrom(ActivityFeedback_Db dbActivityFeedback, SaxActivityFeedback activityFeedback)
|
|
{
|
|
//activityFeedback.ItemId = new ItemId(dbActivityFeedback._ItemType, new SysId(dbActivityFeedback._ItemId);
|
|
activityFeedback.ViewCount = dbActivityFeedback._ViewCount;
|
|
activityFeedback.FeedbackCount = dbActivityFeedback._FeedbackCount;
|
|
activityFeedback.FeedbackTotal = dbActivityFeedback._FeedbackTotal;
|
|
activityFeedback.FeedbackAverage = dbActivityFeedback._FeedbackAverage;
|
|
activityFeedback.SetCreateStamp(dbActivityFeedback._CreateOn, null, null);
|
|
activityFeedback.SetUpdateStamp(dbActivityFeedback._UpdateOn, null, null);
|
|
activityFeedback.AcceptChanges();
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Item column definitions.
|
|
public static String aliasActivityFeedback { get; } = "ActFbk";
|
|
private void SetActivityFeedbackColDfn
|
|
(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.ActivityFeedback)
|
|
alias = aliasActivityFeedback;
|
|
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 GetActivityFeedbackColumnDfn(SaxActivityFeedback.Column columnId, string caption = "", int width = 0)
|
|
{
|
|
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
|
switch (columnId)
|
|
{
|
|
//-----------------------------------------------------------
|
|
case SaxActivityFeedback.Column.Pos:
|
|
SetActivityFeedbackColDfn(columnDfn, "Pos", 60, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Right);
|
|
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
|
columnDfn.ReadOnly = true;
|
|
columnDfn.Resizable = false;
|
|
break;
|
|
|
|
//-----------------------------------------------------------
|
|
// Item.
|
|
case SaxActivityFeedback.Column.ItemType:
|
|
SetActivityFeedbackColDfn(columnDfn, "Item type", 80, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemType, ColumnAlignment.Center, DataValue.DataType.Long);
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
case SaxActivityFeedback.Column.ItemType_Code:
|
|
SetActivityFeedbackColDfn(columnDfn, "Item type", 80, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemType, ColumnAlignment.Center, DataValue.DataType.String);
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
case SaxActivityFeedback.Column.ItemType_Desc:
|
|
SetActivityFeedbackColDfn(columnDfn, "Item type", 100, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemType, ColumnAlignment.Center, DataValue.DataType.String);
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
case SaxActivityFeedback.Column.ItemId:
|
|
SetActivityFeedbackColDfn(columnDfn, "Item #", 80, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemId, ColumnAlignment.Right, DataValue.DataType.Long);
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
|
|
//-----------------------------------------------------------
|
|
// Feedback.
|
|
case SaxActivityFeedback.Column.ViewCount:
|
|
SetActivityFeedbackColDfn(columnDfn, "Views", 80, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ViewCount, ColumnAlignment.Center, DataValue.DataType.Long);
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
case SaxActivityFeedback.Column.FeedbackCount:
|
|
SetActivityFeedbackColDfn(columnDfn, "Feedbacks", 80, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_FeedbackCount, ColumnAlignment.Center, DataValue.DataType.Long);
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
case SaxActivityFeedback.Column.FeedbackTotal:
|
|
SetActivityFeedbackColDfn(columnDfn, "Feedbacks", 80, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_FeedbackTotal, ColumnAlignment.Center, DataValue.DataType.Long);
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
case SaxActivityFeedback.Column.FeedbackAverage:
|
|
SetActivityFeedbackColDfn(columnDfn, "Feedbacks", 80, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_FeedbackAverage, ColumnAlignment.Center, DataValue.DataType.Double);
|
|
columnDfn.NumDecimals = 2;
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
|
|
//-----------------------------------------------------------
|
|
// Common properties.
|
|
case SaxActivityFeedback.Column.CreateOn_Date:
|
|
SetActivityFeedbackColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
|
columnDfn.ReadOnly = true;
|
|
break;
|
|
case SaxActivityFeedback.Column.UpdateOn_Date:
|
|
SetActivityFeedbackColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_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 List<string> GetActivityFeedbackQueryFilter(SaxActivityFeedback activityFeedback, String aliasActivityFeedback)
|
|
{
|
|
// NB Only the Ids need to be queried. Effective date is a property of the Ids.
|
|
List<String> filter = new List<String>();
|
|
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemType, aliasActivityFeedback) + "=" + activityFeedback.ItemId.Type);
|
|
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemId, aliasActivityFeedback) + "=" + SysId.ToInt(activityFeedback.ItemId.Id));
|
|
return filter;
|
|
}
|
|
public override List<string> GetActivityFeedbackQueryFilter(SaxActivityFeedback.Params prm)
|
|
{
|
|
List<String> filter = new List<String>();
|
|
String aliasActivityFeedback = SaxActivityMgr_Dbas.aliasActivityFeedback;
|
|
|
|
// Item Ids.
|
|
if (!prm.ItemIdsIncluded.IsEmpty())
|
|
{
|
|
List<String> itemIdFilters = new List<string>();
|
|
foreach (ItemId itemId in prm.ItemIdsIncluded)
|
|
{
|
|
if (!ItemId.IsValid(itemId)) continue;
|
|
String itemIdFilter =
|
|
SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemType, aliasActivityFeedback) + "=" + itemId.Type +
|
|
" AND " + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemId, aliasActivityFeedback) + "=" + SysId.ToInt(itemId.Id);
|
|
itemIdFilters.Add(itemIdFilter);
|
|
}
|
|
if (!itemIdFilters.IsEmpty())
|
|
filter.Add(itemIdFilters.Concat(" OR ", "(", ")"));
|
|
}
|
|
|
|
if (filter.Count < 1) filter.Add("1=1");
|
|
return filter;
|
|
}
|
|
// Item sort columns.
|
|
public List<String> GetActivityFeedbackSortColumns(SaxActivityFeedback.Params prm)
|
|
{
|
|
// Sort sequence:
|
|
List<String> sortColumnNames = new List<String>();
|
|
foreach (var columnDfn in prm.SortColumns)
|
|
{
|
|
// Need to ensure correct alias used for ActivityFeedback columns in case of conflict.
|
|
String sortCol = String.Empty;
|
|
if (SaxDbDfn_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.ActivityFeedback)
|
|
{
|
|
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn, aliasActivityFeedback);
|
|
}
|
|
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.ActivityFeedback_ItemType, aliasActivityFeedback) + " ASC");
|
|
sortColumnNames.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemId, aliasActivityFeedback) + " ASC");
|
|
}
|
|
return sortColumnNames;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Item count.
|
|
private long GetActivityFeedbackCount(String filter)
|
|
{
|
|
ClearErrorState();
|
|
return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ActivityFeedback) + " As " + aliasActivityFeedback, filter);
|
|
}
|
|
public override long GetActivityFeedbackCount(SaxActivityFeedback.Params prm)
|
|
{
|
|
ClearErrorState();
|
|
return GetActivityFeedbackCount(GetActivityFeedbackQueryFilter(prm).Concat(" AND ", "(", ")"));
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Item list.
|
|
public override List<SaxActivityFeedback> GetActivityFeedbackList(SaxActivityFeedback.Params prm)
|
|
{
|
|
List<SaxActivityFeedback> userActivitys = new List<SaxActivityFeedback>();
|
|
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
|
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ActivityFeedback), aliasActivityFeedback);
|
|
ActivityFeedback_Db dbActivityFeedback = new ActivityFeedback_Db(CoreDbInfo);
|
|
qry.Columns.AddRange(dbActivityFeedback.ExistingColumnNames);
|
|
qry.Filters.AddRange(GetActivityFeedbackQueryFilter(prm));
|
|
qry.OrderBy.AddRange(GetActivityFeedbackSortColumns(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())
|
|
{
|
|
dbActivityFeedback = new ActivityFeedback_Db(CoreDbInfo);
|
|
dbActivityFeedback.PopulateFrom(dbDataReader);
|
|
userActivitys.Add(CreateActivityFeedback(dbActivityFeedback));
|
|
}
|
|
}
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
SaLogger.Warn(GetType().Name + ".GetActivityFeedbackList\n\tQuery: " + dbCommand.CommandText + "\n\t" + ExceptionUtil.GetLogMessage(exc));
|
|
}
|
|
}
|
|
return userActivitys;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Item query execution.
|
|
public override DbResultSet ExecuteActivityFeedbackQuery(List<ColumnDfn> columns, SaxActivityFeedback.Params prm)
|
|
{
|
|
ClearErrorState();
|
|
|
|
//---------------------------------------------------------------------
|
|
// Construct query.
|
|
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
|
|
query.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ActivityFeedback), aliasActivityFeedback);
|
|
|
|
// Add columns as defined in query list.
|
|
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemType, aliasActivityFeedback));
|
|
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemId, aliasActivityFeedback));
|
|
if (columns.HasId(SaxActivityFeedback.Column.ViewCount))
|
|
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ViewCount, aliasActivityFeedback));
|
|
if (columns.HasId(SaxActivityFeedback.Column.FeedbackCount))
|
|
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_FeedbackCount, aliasActivityFeedback));
|
|
if (columns.HasId(SaxActivityFeedback.Column.FeedbackTotal))
|
|
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_FeedbackTotal, aliasActivityFeedback));
|
|
if (columns.HasId(SaxActivityFeedback.Column.FeedbackAverage))
|
|
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_FeedbackAverage, aliasActivityFeedback));
|
|
// Common properties.
|
|
if (columns.HasId(SaxActivityFeedback.Column.CreateOn_Date))
|
|
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_CreateOn, aliasActivityFeedback));
|
|
if (columns.HasId(SaxActivityFeedback.Column.UpdateOn_Date))
|
|
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_UpdateOn, aliasActivityFeedback));
|
|
|
|
//---------------------------------------------------------------------
|
|
// Populate filter.
|
|
query.Filters.AddRange(GetActivityFeedbackQueryFilter(prm));
|
|
|
|
if (prm.ItemIdsIncluded.Count != 1)
|
|
{
|
|
// Configure sort sequence.
|
|
foreach (String sortColumn in GetActivityFeedbackSortColumns(prm))
|
|
query.OrderBy.Add(sortColumn);
|
|
}
|
|
|
|
//---------------------------------------------------------------------
|
|
//return new DbResultSet_DataTableReader(db, query.BuildQuery(prm.ResultsPaging));
|
|
return DbResultSet_DataReader.ExecuteQuery(CoreDatabase, query.BuildQuery(prm.ResultsPaging));
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|