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.Bus; using System; using System.Collections.Generic; using System.Text; namespace Saxonite.Net.Standard.Base.Mgr { //======================================================================= partial class SaxActivityMgr { //******************************************************************* // Activity Mgr - Organisation Opportunity //******************************************************************* // Utilities. //------------------------------------------------------------------- // Create item. public abstract SaxOrganisationOpportunity CreateOrganisationOpportunity(SysId organisationId); //------------------------------------------------------------------- // Item exists. public bool OrganisationOpportunityExistsById(SysId id) { ClearErrorState(); if (!SysId.IsValid(id)) return false; SaxOrganisationOpportunity.Params prmOrganisationOpportunity = new SaxOrganisationOpportunity.Params(); prmOrganisationOpportunity.IdsIncluded.Add(id); prmOrganisationOpportunity.StatusCat = SaxOrganisationOpportunity.StatusCat.Any; return GetOrganisationOpportunityCount(prmOrganisationOpportunity) == 1; } //------------------------------------------------------------------- // Retrieve individual items. public abstract SaxOrganisationOpportunity GetOrganisationOpportunity(SaxOrganisationOpportunity.Params prmOrganisationOpportunity); public SaxOrganisationOpportunity GetOrganisationOpportunityById(SysId id) { ClearErrorState(); if (!SysId.IsValid(id)) return null; SaxOrganisationOpportunity.Params prmOrganisationOpportunity = new SaxOrganisationOpportunity.Params(); prmOrganisationOpportunity.IdsIncluded.Add(id); prmOrganisationOpportunity.StatusCat = SaxOrganisationOpportunity.StatusCat.Any; return GetOrganisationOpportunity(prmOrganisationOpportunity); } //------------------------------------------------------------------- // Validate item data. public bool IsValidOrganisationOpportunity(SaxOrganisationOpportunity organisationOpportunity) { ClearErrorState(); if (organisationOpportunity == null) return SetErrorState(ErrorMessage.ItemNotSpecified); return IsValidOrganisationOpportunityData(organisationOpportunity.GetData(), new SaxOrganisationOpportunity.ErrField()); } public virtual bool IsValidOrganisationOpportunityData(SaxOrganisationOpportunity.Data data, SaxOrganisationOpportunity.ErrField errField) { ClearErrorState(); // Organisation. if (errField.OrganisationId != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.OrganisationId)) { errField.OrganisationId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Organisation must be specified"); } // Primary Sport. if (errField.SportIdPrimary != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.SportIdPrimary)) { errField.SportIdPrimary = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Sport must be specified"); } // Primary Region. if (errField.RegionIdPrimary != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.RegionIdPrimary)) { errField.RegionIdPrimary = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Region must be specified"); } // Opportunity type. if (errField.OpportunityType != SacsHierarchyItem.ValidValue.Ignore && data.OpportunityType <= 0) { errField.Position = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Opportunity type must be specified."); } // Position. if (errField.Position != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Position, "position", (long)SaxDbDfn_Core.GetColTextLen(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Position), true)) { errField.Position = SacsHierarchyItem.ValidValue.Invalid; return false; } // Summary. if (errField.Outline != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Outline, "outline", (long)SaxDbDfn_Core.GetColTextLen(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Outline), true)) { errField.Outline = SacsHierarchyItem.ValidValue.Invalid; return false; } // Common properties. if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SaxDbDfn_Core.GetColTextLen(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { if (!IsValidValue(data.StatusCode, "status", (long)SaxDbDfn_Core.GetColTextLen(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; } if (!SaxOrganisationOpportunity.ValidStatuses.Contains(data.Status)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState(ErrorMessage.InvalidStatus); } } // Associated data. // Organisation. if (errField.OrganisationId != SacsHierarchyItem.ValidValue.Ignore && SysId.IsValid(data.OrganisationId)) { SaxOrganisation.Params prmOrganisation = new SaxOrganisation.Params(); prmOrganisation.IdsIncluded.Add(data.OrganisationId); prmOrganisation.StatusCat = SaxOrganisation.StatusCat.ActiveOnly; if (AccountMgr.GetOrganisationCount(prmOrganisation) < 1) { errField.OrganisationId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Invalid organisation specified"); } } // Primary Sport. if (errField.SportIdPrimary != SacsHierarchyItem.ValidValue.Ignore && SysId.IsValid(data.SportIdPrimary)) { SaxSport.Params prmSport = new SaxSport.Params(); prmSport.IdsIncluded.Add(data.SportIdPrimary); prmSport.StatusCat = SaxSport.StatusCat.ActiveOnly; if (ReferenceMgr.GetSportCount(prmSport) < 1) { errField.SportIdPrimary = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Invalid sport specified"); } } // Primary Region. if (errField.RegionIdPrimary != SacsHierarchyItem.ValidValue.Ignore && SysId.IsValid(data.RegionIdPrimary)) { SaxRegion.Params prmRegion = new SaxRegion.Params(); prmRegion.IdsIncluded.Add(data.RegionIdPrimary); prmRegion.StatusCat = SaxRegion.StatusCat.ActiveOnly; if (ReferenceMgr.GetRegionCount(prmRegion) < 1) { errField.RegionIdPrimary = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Invalid region specified"); } } return true; } //------------------------------------------------------------------- // OrganisationOpportunity database interface. public abstract bool InsertOrganisationOpportunity(SaxOrganisationOpportunity organisationOpportunity, DbUpdateInfo dbUpdateInfo); public abstract bool UpdateOrganisationOpportunity(SaxOrganisationOpportunity organisationOpportunity, DbUpdateInfo dbUpdateInfo); public virtual bool OrganisationOpportunityCanBeDeleted(SaxOrganisationOpportunity organisationOpportunity) { ClearErrorState(); return true; } public abstract bool DeleteOrganisationOpportunity(SaxOrganisationOpportunity organisationOpportunity, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- // OrganisationOpportunity list: public abstract ColumnDfn GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column columnId, String caption = "", int width = 0); public abstract List GetOrganisationOpportunityQueryFilter(SaxOrganisationOpportunity.Params prmOrganisationOpportunity); public abstract long GetOrganisationOpportunityCount(SaxOrganisationOpportunity.Params prmOrganisationOpportunity); public abstract List GetOrganisationOpportunityList(SaxOrganisationOpportunity.Params prmOrganisationOpportunity); public abstract DbResultSet ExecuteOrganisationOpportunityQuery(List columns, SaxOrganisationOpportunity.Params prmOrganisationOpportunity); //------------------------------------------------------------------- /// /// 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 GetOrganisationOpportunityDataValue(ColumnDfn column, NamedValue.Map values) { DataValue value = new DataValue(); switch ((SaxOrganisationOpportunity.Column)column.Id) { //----------------------------------------------------------- // Opportunity type desc. case SaxOrganisationOpportunity.Column.OpportunityType_Desc: { String code = values.GetValue(column.DataName).ToString(); value = new DataValue(OpportunityTypeCodes.GetDescForCode(code, code)); } break; //----------------------------------------------------------- // Summary - limit to 200 chars. case SaxOrganisationOpportunity.Column.Outline: { value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); } break; //----------------------------------------------------------- // Notes - limit to 200 chars. case SaxOrganisationOpportunity.Column.Notes: { value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); } break; //----------------------------------------------------------- // Status. case SaxOrganisationOpportunity.Column.Status_Desc: case SaxOrganisationOpportunity.Column.Status_Ind: { String statusCode = values.GetValue(column.DataName).ToString(); SaStatus status = SacsSystem.GetStatusForCode(statusCode); if (column.Id == (int)SaxOrganisationOpportunity.Column.Status_Desc) value = new DataValue(SacsSystem.GetStatusDesc(status)); else if (column.Id == (int)SaxOrganisationOpportunity.Column.Status_Ind) value = new DataValue(SaxOrganisationOpportunity.GetStatusTriState(status)); } break; //----------------------------------------------------------- } return value; } //------------------------------------------------------------------- } //======================================================================= }