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 Sarand.Net.Standard.Base.Utils; using Saxonite.Base.App; using Saxonite.Net.Standard.Base.App; using Saxonite.Net.Standard.Base.Bus; using Saxonite.Net.Standard.Base.Bus.Support; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Saxonite.Net.Standard.Base.Mgr.Support { //======================================================================= partial class SaxSupportMgr { //******************************************************************* // Support Mgr - User Report //******************************************************************* // Utilities. //------------------------------------------------------------------- // Create item. public abstract SaxUserReport CreateUserReport(SysId userAccountId); //------------------------------------------------------------------- // Item exists. public bool UserReportExistsById(SysId id) { ClearErrorState(); if (!SysId.IsValid(id)) return false; SaxUserReport.Params prmUserReport = new SaxUserReport.Params(); prmUserReport.IdsIncluded.Add(id); prmUserReport.StatusCat = SaxUserReport.StatusCat.Any; return GetUserReportCount(prmUserReport) == 1; } //------------------------------------------------------------------- // Retrieve individual items. public abstract SaxUserReport GetUserReport(SaxUserReport.Params prmUserReport); public SaxUserReport GetUserReportById(SysId id) { ClearErrorState(); if (!SysId.IsValid(id)) return null; SaxUserReport.Params prmUserReport = new SaxUserReport.Params(); prmUserReport.IdsIncluded.Add(id); prmUserReport.StatusCat = SaxUserReport.StatusCat.Any; return GetUserReport(prmUserReport); } //------------------------------------------------------------------- // Validate item data. public bool IsValidUserReport(SaxUserReport userReport) { ClearErrorState(); if (userReport == null) return SetErrorState(ErrorMessage.ItemNotSpecified); return IsValidUserReportData(userReport.GetData(), new SaxUserReport.ErrField()); } public virtual bool IsValidUserReportData(SaxUserReport.Data data, SaxUserReport.ErrField errField) { ClearErrorState(); // User Account. if (errField.UserAccountId != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.UserAccountId)) { errField.UserAccountId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("User Account Id must be specified"); } // Report Type. if (errField.ReportType != SacsHierarchyItem.ValidValue.Ignore && (int)data.ReportType < 1) { errField.ReportType = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Report type must be specified"); } // Title. if (errField.Title != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Title, "title", (long)SaxDbDfn_Support.GetColTextLen(SaxDbDfn_Support.ColumnIdx.UserReport_Title), true)) { errField.Title = SacsHierarchyItem.ValidValue.Invalid; return false; } // Report. if (errField.Report != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Report, "report", (long)SaxDbDfn_Support.GetColTextLen(SaxDbDfn_Support.ColumnIdx.UserReport_Report))) { errField.Report = SacsHierarchyItem.ValidValue.Invalid; return false; } // Recorded On. if (errField.RecordedOn != SacsHierarchyItem.ValidValue.Ignore && !DateUtil.IsValid(data.RecordedOn)) { errField.RecordedOn = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Recorded on date must be specified"); } //--------------------------------------------------------------- // Common properties. if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SaxDbDfn_Support.GetColTextLen(SaxDbDfn_Support.ColumnIdx.UserReport_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { if (!IsValidValue(data.StatusCode, "status", (long)SaxDbDfn_Support.GetColTextLen(SaxDbDfn_Support.ColumnIdx.UserReport_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; } if (!SaxUserReport.ValidStatuses.Contains(data.Status)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState(ErrorMessage.InvalidStatus); } } //--------------------------------------------------------------- return true; } //------------------------------------------------------------------- // Item database interface. public abstract bool InsertUserReport(SaxUserReport userReport, DbUpdateInfo dbUpdateInfo); public abstract bool UpdateUserReport(SaxUserReport userReport, DbUpdateInfo dbUpdateInfo); public virtual bool UserReportCanBeDeleted(SaxUserReport userReport) { ClearErrorState(); return true; } public abstract bool DeleteUserReport(SaxUserReport userReport, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- // Item list. public abstract ColumnDfn GetUserReportColumnDfn(SaxUserReport.Column columnId, String caption = "", int width = 0); public abstract List GetUserReportQueryFilter(SaxUserReport.Params prmUserReport); public abstract long GetUserReportCount(SaxUserReport.Params prmUserReport); public abstract List GetUserReportList(SaxUserReport.Params prmUserReport); public abstract DbResultSet ExecuteUserReportQuery(List columns, SaxUserReport.Params prmUserReport); //------------------------------------------------------------------- /// /// Extract and format result set data value where specific handling is required. /// Where response is an invalid data value, format value using column.FormatValue(values). /// public virtual DataValue GetUserReportDataValue(ColumnDfn column, NamedValue.Map values) { DataValue value = new DataValue(); switch ((SaxUserReport.Column)column.Id) { //----------------------------------------------------------- // Report Type. case SaxUserReport.Column.ReportType_Desc: { Sax.UserReportType userReportType = (Sax.UserReportType)values.GetValue(column.DataName).AsLong(); value = new DataValue(UserReportTypeCodes.GetDescForType(userReportType)); } break; //----------------------------------------------------------- // Notes. case SaxUserReport.Column.Notes: { value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); } break; //----------------------------------------------------------- // Status. case SaxUserReport.Column.Status_Desc: case SaxUserReport.Column.Status_Ind: { String statusCode = values.GetValue(column.DataName).ToString(); SaStatus status = SacsSystem.GetStatusForCode(statusCode); if (column.Id == (int)SaxUserReport.Column.Status_Desc) value = new DataValue(SacsSystem.GetStatusDesc(status)); else if (column.Id == (int)SaxUserReport.Column.Status_Ind) value = new DataValue(SaxUserReport.GetStatusTriState(status)); } break; //----------------------------------------------------------- } return value; } //------------------------------------------------------------------- } //======================================================================= }