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.Base.App; using Saxonite.Net.Standard.Base.Bus; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Saxonite.Net.Standard.Base.Mgr { //======================================================================= partial class SaxAccountMgr { //******************************************************************* // Account Mgr - User Sport //******************************************************************* // Utilities. public bool UserHasSport(SysId userAccountId, SysId sportId, SaxUserSport.StatusCat statusCat = SaxUserSport.StatusCat.ActiveOnly) { if (!SysId.IsValid(userAccountId) || !SysId.IsValid(sportId)) return false; SaxUserSport.Params prmUserSport = new SaxUserSport.Params(); prmUserSport.UserAccountIdsIncluded.Add(userAccountId); prmUserSport.SportIdsIncluded.Add(sportId); prmUserSport.StatusCat = statusCat; return GetUserSportCount(prmUserSport) > 0; } public List GetSportsForUser(SysId userAccountId, SaxUserSport.StatusCat statusCat = SaxUserSport.StatusCat.ActiveOnly) { if (!SysId.IsValid(userAccountId)) return new List(); SaxUserSport.Params prmUserSport = new SaxUserSport.Params(); prmUserSport.UserAccountIdsIncluded.Add(userAccountId); prmUserSport.StatusCat = statusCat; return GetUserSportList(prmUserSport); } //------------------------------------------------------------------- // Create item. public abstract SaxUserSport CreateUserSport(SysId userAccountId, SysId sportId); //------------------------------------------------------------------- // Item exists. public bool UserSportExistsById(SysId id) { ClearErrorState(); if (!SysId.IsValid(id)) return false; SaxUserSport.Params prmUserSport = new SaxUserSport.Params(); prmUserSport.IdsIncluded.Add(id); prmUserSport.StatusCat = SaxUserSport.StatusCat.Any; return GetUserSportCount(prmUserSport) == 1; } //------------------------------------------------------------------- // Retrieve individual items. public abstract SaxUserSport GetUserSport(SaxUserSport.Params prmUserSport); public SaxUserSport GetUserSportById(SysId id) { ClearErrorState(); if (!SysId.IsValid(id)) return null; SaxUserSport.Params prmUserSport = new SaxUserSport.Params(); prmUserSport.IdsIncluded.Add(id); prmUserSport.StatusCat = SaxUserSport.StatusCat.Any; return GetUserSport(prmUserSport); } //------------------------------------------------------------------- // Validate item data. public bool IsValidUserSport(SaxUserSport userSport) { ClearErrorState(); if (userSport == null) return SetErrorState(ErrorMessage.ItemNotSpecified); return IsValidUserSportData(userSport.GetData(), new SaxUserSport.ErrField()); } public virtual bool IsValidUserSportData(SaxUserSport.Data data, SaxUserSport.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"); } // Sport. if (errField.SportId != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.SportId)) { errField.SportId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("User Sport must be specified"); } // About. if (errField.About != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.About, "about", (long)SaxDbDfn_Core.GetColTextLen(SaxDbDfn_Core.ColumnIdx.UserSport_About))) { errField.About = SacsHierarchyItem.ValidValue.Invalid; return false; } //--------------------------------------------------------------- // Common properties. if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SaxDbDfn_Core.GetColTextLen(SaxDbDfn_Core.ColumnIdx.UserSport_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.UserSport_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; } if (!SaxUserSport.ValidStatuses.Contains(data.Status)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState(ErrorMessage.InvalidStatus); } } // User & Sport combination must be unique. if (errField.UserAccountId != SacsHierarchyItem.ValidValue.Ignore && errField.SportId != SacsHierarchyItem.ValidValue.Ignore) { if (SysId.IsValid(data.UserAccountId) && SysId.IsValid(data.SportId)) { SaxUserSport.Params prmUserSport = new SaxUserSport.Params(); if (SysId.IsValid(data.Id)) prmUserSport.IdsExcluded.Add(data.Id); prmUserSport.UserAccountIdsIncluded.Add(data.UserAccountId); prmUserSport.SportIdsIncluded.Add(data.SportId); prmUserSport.StatusCat = SaxUserSport.StatusCat.Any; if (GetUserSportCount(prmUserSport) > 0) { errField.SportId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Sport must be unique for user"); } } } //--------------------------------------------------------------- // Associated data - ignore for deleted items. if (!data.IsStatusDeleted) { // User must exist. if (errField.UserAccountId != SacsHierarchyItem.ValidValue.Ignore) { if (SysId.IsValid(data.UserAccountId)) { SaxUserAccount.Params prmUserAccount = new SaxUserAccount.Params(); prmUserAccount.IdsIncluded.Add(data.UserAccountId); prmUserAccount.StatusCat = SaxUserAccount.StatusCat.NotDeleted; if (GetUserAccountCount(prmUserAccount) < 1) { errField.UserAccountId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("invalid user specified"); } } } // Sport must exist. if (errField.SportId != SacsHierarchyItem.ValidValue.Ignore) { if (SysId.IsValid(data.SportId)) { SaxSport.Params prmSport = new SaxSport.Params(); prmSport.IdsIncluded.Add(data.SportId); prmSport.StatusCat = SaxSport.StatusCat.NotDeleted; if (ReferenceMgr.GetSportCount(prmSport) < 1) { errField.SportId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("invalid sport specified"); } } } } //--------------------------------------------------------------- //--------------------------------------------------------------- return true; } //------------------------------------------------------------------- // Item database interface. public abstract bool InsertUserSport(SaxUserSport userSport, DbUpdateInfo dbUpdateInfo); public abstract bool UpdateUserSport(SaxUserSport userSport, DbUpdateInfo dbUpdateInfo); public virtual bool UserSportCanBeDeleted(SaxUserSport userSport) { ClearErrorState(); return true; } public abstract bool DeleteUserSport(SaxUserSport userSport, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- // Item list. public abstract ColumnDfn GetUserSportColumnDfn(SaxUserSport.Column columnId, String caption = "", int width = 0); public abstract List GetUserSportQueryFilter(SaxUserSport.Params prmUserSport); public abstract long GetUserSportCount(SaxUserSport.Params prmUserSport); public abstract List GetUserSportList(SaxUserSport.Params prmUserSport); public abstract DbResultSet ExecuteUserSportQuery(List columns, SaxUserSport.Params prmUserSport); //------------------------------------------------------------------- /// /// 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 GetUserSportDataValue(ColumnDfn column, NamedValue.Map values) { DataValue value = new DataValue(); switch ((SaxUserSport.Column)column.Id) { //----------------------------------------------------------- // Sport Participating. case SaxUserSport.Column.SportParticipating_Code: case SaxUserSport.Column.SportParticipating_Desc: Sax.SportParticipating sportParticipating = (Sax.SportParticipating)values.GetLong(column.DataName); if (column.Id == (int)SaxUserSport.Column.SportParticipating_Code) value = new DataValue(SportParticipatingCodes.GetCodeForType(sportParticipating)); else value = new DataValue(SportParticipatingCodes.GetDescForType(sportParticipating)); break; //----------------------------------------------------------- // Sport Preparing. case SaxUserSport.Column.SportPreparing_Code: case SaxUserSport.Column.SportPreparing_Desc: Sax.SportPreparing sportPreparing = (Sax.SportPreparing)values.GetLong(column.DataName); if (column.Id == (int)SaxUserSport.Column.SportPreparing_Code) value = new DataValue(SportPreparingCodes.GetCodeForType(sportPreparing)); else value = new DataValue(SportPreparingCodes.GetDescForType(sportPreparing)); break; //----------------------------------------------------------- // Sport Officiating. case SaxUserSport.Column.SportOfficiating_Code: case SaxUserSport.Column.SportOfficiating_Desc: Sax.SportOfficiating sportOfficiating = (Sax.SportOfficiating)values.GetLong(column.DataName); if (column.Id == (int)SaxUserSport.Column.SportOfficiating_Code) value = new DataValue(SportOfficiatingCodes.GetCodeForType(sportOfficiating)); else value = new DataValue(SportOfficiatingCodes.GetDescForType(sportOfficiating)); break; //----------------------------------------------------------- // Notes. case SaxUserSport.Column.Notes: { value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); } break; //----------------------------------------------------------- // Status. case SaxUserSport.Column.Status_Desc: case SaxUserSport.Column.Status_Ind: { String statusCode = values.GetValue(column.DataName).ToString(); SaStatus status = SacsSystem.GetStatusForCode(statusCode); if (column.Id == (int)SaxUserSport.Column.Status_Desc) value = new DataValue(SacsSystem.GetStatusDesc(status)); else if (column.Id == (int)SaxUserSport.Column.Status_Ind) value = new DataValue(SaxUserSport.GetStatusTriState(status)); } break; //----------------------------------------------------------- default: value = values.GetValue(column.DataName); break; } return value; } //------------------------------------------------------------------- } //======================================================================= }