Saxonite 1.2.10.4
This commit is contained in:
@@ -61,7 +61,7 @@ namespace Saxonite.Net.Core.Web.Online.App
|
||||
public static SaxApplication_Online AppInstance { get; private set; }
|
||||
public override ISacsDatabase GetDatabase(SaxSessionContext sessionContext, Sax.Database databaseType)
|
||||
{
|
||||
return sessionContexts.GetValue(sessionContext.Index, null)?.Databases.GetValue(databaseType, null);
|
||||
return sessionContexts.GetValue(sessionContext.Index, null)?.Databases.GetValue(databaseType, null) ?? null;
|
||||
}
|
||||
public override String SessionCookieName { get { return Sax.Config.Online.Session.Cookie.Name; } }
|
||||
// Configuration.
|
||||
@@ -117,18 +117,10 @@ namespace Saxonite.Net.Core.Web.Online.App
|
||||
SaLogger.LogFolder = LoggingRootFolder;
|
||||
LogApplicationStart(fn);
|
||||
|
||||
// Configure database connection.
|
||||
SacsDatabaseConsole.OdbcConfig config = new SacsDatabaseConsole.OdbcConfig();
|
||||
config.location = AppConfig.Databases.Core.Location;
|
||||
config.user = AppConfig.Databases.Core.User;
|
||||
config.pword = AppConfig.Databases.Core.Password;
|
||||
SacsDatabase coreDatabase = SacsDatabaseConsole.OpenOdbcDatabase(config);
|
||||
if (coreDatabase.HasErrorState())
|
||||
SaLogger.Warn(fn + " Database initialisation error: " + coreDatabase.ErrorStateMessage);
|
||||
|
||||
// Session context - only one context available/necessary (for now).
|
||||
SessionContextData_Online sessionContextData = new SessionContextData_Online(new SaxSessionContext_Web(100, Sax.Application.Online));
|
||||
sessionContextData.Databases.Add(Sax.Database.Core, coreDatabase);
|
||||
ConfigureDatabaseConnection(sessionContextData, Sax.Database.Core);
|
||||
ConfigureDatabaseConnection(sessionContextData, Sax.Database.Support);
|
||||
sessionContexts.Add(sessionContextData.SessionContext.Index, sessionContextData);
|
||||
SessionContext = sessionContextData.SessionContext;
|
||||
|
||||
@@ -141,6 +133,23 @@ namespace Saxonite.Net.Core.Web.Online.App
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
private void ConfigureDatabaseConnection(SessionContextData_Online sessionContextData, Sax.Database databaseInstance)
|
||||
{
|
||||
String fn = GetType().Name + ".ConfigureDatabaseConnection";
|
||||
|
||||
// Configure database connection.
|
||||
SaxAppConfig.DatabaseConfig databaseConfig = AppConfig.Databases.Databases.GetValue(databaseInstance, new SaxAppConfig.DatabaseConfig());
|
||||
SacsDatabaseConsole.OdbcConfig config = new SacsDatabaseConsole.OdbcConfig();
|
||||
config.location = databaseConfig.Location;
|
||||
config.user = databaseConfig.User;
|
||||
config.pword = databaseConfig.Password;
|
||||
SacsDatabase database = SacsDatabaseConsole.OpenOdbcDatabase(config);
|
||||
if (database.HasErrorState())
|
||||
SaLogger.Warn(fn + " " + databaseInstance.ToString() + " Database initialisation error: " + database.ErrorStateMessage);
|
||||
sessionContextData.Databases.Add(databaseInstance, database);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
|
||||
@@ -32,28 +32,34 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
private class UserReportResponseListData : AjaxResponse_Data.ItemData_Base
|
||||
{
|
||||
// Account Id only populated while account names are being queried, then nulled.
|
||||
public long? UserAccountId { get; set; }
|
||||
public SysId UserAccountId { get; set; }
|
||||
public String UserDisplayName { get; set; }
|
||||
public String ReportType { get; set; }
|
||||
public String ReportTypeDesc { get; set; }
|
||||
public String ReportTitle { get; set; }
|
||||
public String RecordedOn { get; set; }
|
||||
public String RecordedOnDisp { get; set; }
|
||||
public bool? OwnReport { get; set; }
|
||||
}
|
||||
private class UserReportResponseItemData : UserReportResponseListData
|
||||
{
|
||||
public String ReportType { get; set; }
|
||||
public String Report { get; set; }
|
||||
public String RecordedOnForm { get; set; }
|
||||
}
|
||||
private void PopulateUserReportResponseListData(Model_Support model, SaxUserReport userReport, SaxUserAccount userAccount, UserReportResponseListData data)
|
||||
{
|
||||
data.Id = model.EncryptId(userReport.Id);
|
||||
data.UserDisplayName = userAccount.GetDisplayName();
|
||||
data.ReportType = Localiser.GetUserReportTypeCaption(userReport.ReportType);
|
||||
data.ReportTypeDesc = Localiser.GetUserReportTypeCaption(userReport.ReportType);
|
||||
data.ReportTitle = userReport.Title;
|
||||
data.RecordedOn = model.FormatDateForDisplay(userReport.RecordedOn);
|
||||
data.RecordedOnDisp = model.FormatDateForDisplay(userReport.RecordedOn);
|
||||
data.OwnReport = userAccount.Id.Equals(SessionUserAccountId) ? (bool?)true : null;
|
||||
}
|
||||
private void PopulateUserReportResponseItemData(Model_Support model, SaxUserReport userReport, SaxUserAccount userAccount, UserReportResponseItemData data)
|
||||
{
|
||||
PopulateUserReportResponseListData(model, userReport, userAccount, data);
|
||||
data.ReportType = UserReportTypeCodes.GetCodeForType(userReport.ReportType);
|
||||
data.Report = userReport.Report;
|
||||
data.RecordedOnForm = model.FormatDateForForm(userReport.RecordedOn);
|
||||
data.CreatedOnFmt = model.FormatDateForDisplay(userReport.CreateStamp.On);
|
||||
data.StatusCode = userReport.StatusCode;
|
||||
data.StatusDesc = userReport.StatusDesc;
|
||||
@@ -86,6 +92,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
RefreshModel(model);
|
||||
|
||||
// Reference data - Report types.
|
||||
responseData.ReportTypes.Add(new AjaxResponse_Data.ItemCodeDesc());
|
||||
List<Sax.UserReportType> validReportTypes = new List<Sax.UserReportType>(EnumUtil.GetValues<Sax.UserReportType>());
|
||||
foreach (TypeCodeDesc reportType in UserReportTypeCodes)
|
||||
{
|
||||
@@ -116,6 +123,9 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
|
||||
// Sort columns.
|
||||
prmUserReport.SortColumns.Add(colRecordedOn);
|
||||
prmUserReport.SortColumns.Last().SortAscending = false;
|
||||
prmUserReport.SortColumns.Add(colId);
|
||||
prmUserReport.SortColumns.Last().SortAscending = false;
|
||||
|
||||
// User account details must be queried separately - different database!
|
||||
HashSet<SysId> userAccountIds = new HashSet<SysId>();
|
||||
@@ -132,10 +142,11 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
UserReportResponseListData userReportData = new UserReportResponseListData()
|
||||
{
|
||||
Id = model.EncryptId(new SysId(values.GetLong(colId.DataName))),
|
||||
UserAccountId = SysId.ToLong(userAccountId),
|
||||
ReportType = values.GetString(colReportType.DataName),
|
||||
UserAccountId = userAccountId,
|
||||
ReportTypeDesc = Localiser.GetUserReportTypeCaption(reportType),
|
||||
ReportTitle = values.GetString(colReportTitle.DataName),
|
||||
RecordedOn = model.FormatDateForDisplay(values.GetDate(colRecordedOn.DataName)),
|
||||
RecordedOnDisp = model.FormatDateForDisplay(values.GetDate(colRecordedOn.DataName)),
|
||||
OwnReport = userAccountId.Equals(SessionUserAccountId) ? (bool?)true : null,
|
||||
StatusCode = values.GetString(colStatus.DataName),
|
||||
StatusDesc = SacsSystem.GetStatusDescForCode(values.GetString(colStatus.DataName))
|
||||
};
|
||||
@@ -159,7 +170,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
prmUserAccount.IdsIncluded.AddRange(userAccountIds);
|
||||
prmUserAccount.StatusCat = SaxUserAccount.StatusCat.Any;
|
||||
// Query user accounts and populate properties to report list.
|
||||
using (DbResultSet resultSet = AccountMgr.ExecuteUserAccountQuery(columns, prmUserAccount))
|
||||
using (DbResultSet resultSet = AccountMgr.ExecuteUserAccountQuery(userAccountCols, prmUserAccount))
|
||||
{
|
||||
while (resultSet != null && resultSet.HasRows && resultSet.NextRecord())
|
||||
{
|
||||
@@ -317,6 +328,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
{
|
||||
userReport = SupportMgr.CreateUserReport(userAccountId);
|
||||
disposableItems.Add(userReport);
|
||||
userReport.RecordedOn = DateTime.Today;
|
||||
}
|
||||
|
||||
// Populate item properties.
|
||||
|
||||
@@ -30,6 +30,7 @@ namespace Saxonite.Net.Core.Web.Online.Models
|
||||
{
|
||||
public String Id { get; set; }
|
||||
public String Exists { get; set; }
|
||||
public String UserAccountId { get; set; }
|
||||
public String ReportType { get; set; }
|
||||
public String Title { get; set; }
|
||||
public String Report { get; set; }
|
||||
@@ -49,8 +50,16 @@ namespace Saxonite.Net.Core.Web.Online.Models
|
||||
public bool ValidateUserReportData(SaxController_Base.AjaxResponse_Data responseData)
|
||||
{
|
||||
|
||||
// Report Type.
|
||||
String controlName = "UserReportType";
|
||||
if (UserReport.ReportType != null)
|
||||
{
|
||||
if (StringUtil.IsEmpty(UserReport.ReportType))
|
||||
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
|
||||
}
|
||||
|
||||
// Report Title.
|
||||
String controlName = "UserReportTitle";
|
||||
controlName = "UserReportTitle";
|
||||
if (UserReport.Title != null)
|
||||
{
|
||||
responseData.SetControlValue(controlName, UserReport.Title);
|
||||
|
||||
Reference in New Issue
Block a user