v1.1.7
This commit is contained in:
@@ -19,6 +19,7 @@ namespace Saxonite.Net.Core.Web.Base.Consoles
|
|||||||
private class DataMembers
|
private class DataMembers
|
||||||
{
|
{
|
||||||
public SaxInternals internals;
|
public SaxInternals internals;
|
||||||
|
public Dictionary<Sax.DataItemType, Dictionary<SysId, String>> encryptedIdCache = new Dictionary<Sax.DataItemType, Dictionary<SysId, String>>();
|
||||||
}
|
}
|
||||||
private DataMembers data = new DataMembers();
|
private DataMembers data = new DataMembers();
|
||||||
|
|
||||||
@@ -59,6 +60,38 @@ namespace Saxonite.Net.Core.Web.Base.Consoles
|
|||||||
internals.PopulateSportCache(activeSportDataList);
|
internals.PopulateSportCache(activeSportDataList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Encrypted Ids are stored in cache to ensure that they are consistent throughout a user's session
|
||||||
|
/// by persisting them through the life of the cache (application restart).
|
||||||
|
/// <para>Required as the encrypted values are compared in javascript.</para>
|
||||||
|
/// <para>Candidate encrypted value supplied by calling routine as cache doesn't know how to encrypt - used if Id not previously encrypted.</para>
|
||||||
|
/// </summary>
|
||||||
|
public override String GetEncryptedId(Sax.DataItemType itemType, SysId id, String candidateValue)
|
||||||
|
{
|
||||||
|
// Invalid Id always has a blank encrypted value.
|
||||||
|
if (!SysId.IsValid(id)) return "";
|
||||||
|
|
||||||
|
// Only Regions and Sports are supported.
|
||||||
|
if (!(new List<Sax.DataItemType>() { Sax.DataItemType.Sport, Sax.DataItemType.Region }).Contains(itemType))
|
||||||
|
return candidateValue;
|
||||||
|
|
||||||
|
Dictionary<SysId, String> itemIds = data.encryptedIdCache.GetValue(itemType, null);
|
||||||
|
if (itemIds == null)
|
||||||
|
{
|
||||||
|
// Add cache entry for this item type.
|
||||||
|
itemIds = new Dictionary<SysId, string>();
|
||||||
|
data.encryptedIdCache.Add(itemType, itemIds);
|
||||||
|
}
|
||||||
|
String encryptedId = itemIds.GetValue(id, null);
|
||||||
|
if (encryptedId == null && !StringUtil.IsEmpty(candidateValue))
|
||||||
|
{
|
||||||
|
// Use the candidate value and store it.
|
||||||
|
encryptedId = candidateValue;
|
||||||
|
itemIds.Add(id, encryptedId);
|
||||||
|
}
|
||||||
|
return encryptedId;
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
// Regions.
|
// Regions.
|
||||||
public bool RegionsSupported { get; protected set; } = false;
|
public bool RegionsSupported { get; protected set; } = false;
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ namespace Saxonite.Net.Core.Web.Base.Models
|
|||||||
protected SaxItemDataMgr ItemDataMgr { get { return Internals.ItemDataMgr; } }
|
protected SaxItemDataMgr ItemDataMgr { get { return Internals.ItemDataMgr; } }
|
||||||
// System codes.
|
// System codes.
|
||||||
public List<TypeCodeDesc> DataItemTypeCodes { get { return Internals.DataItemTypeCodes; } }
|
public List<TypeCodeDesc> DataItemTypeCodes { get { return Internals.DataItemTypeCodes; } }
|
||||||
|
public List<TypeCodeDesc> YesNoCodes { get { return Internals.YesNoCodes; } }
|
||||||
public List<TypeCodeDesc> SportSpecialityLabelCodes { get { return Internals.SportSpecialityLabelCodes; } }
|
public List<TypeCodeDesc> SportSpecialityLabelCodes { get { return Internals.SportSpecialityLabelCodes; } }
|
||||||
public List<TypeCodeDesc> SportParticipationCodes { get { return Internals.SportParticipationCodes; } }
|
public List<TypeCodeDesc> SportParticipationCodes { get { return Internals.SportParticipationCodes; } }
|
||||||
public List<TypeCodeDesc> SportOfficiatingCodes { get { return Internals.SportOfficiatingCodes; } }
|
public List<TypeCodeDesc> SportOfficiatingCodes { get { return Internals.SportOfficiatingCodes; } }
|
||||||
@@ -127,6 +128,88 @@ namespace Saxonite.Net.Core.Web.Base.Models
|
|||||||
return new SelectList(items, "Code", "Desc");
|
return new SelectList(items, "Code", "Desc");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
// Version parameter for includes.
|
||||||
|
public String HrefVersion
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
DateTime versionDate = SaxSystem.AssemblyBuildAt;
|
||||||
|
if (!DateUtil.IsValid(versionDate) || SaxSystem.DebugMode)
|
||||||
|
versionDate = DateTime.Now;
|
||||||
|
return DateUtil.Format(versionDate, "yyyyMMdd" /*+ (SacsSystem.Debug ? "HHmm" : "")*/);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Additional includes.
|
||||||
|
public List<String> AdditionalFiles_CSS { get; set; } = new List<string>();
|
||||||
|
public List<String> AdditionalFiles_JS { get; set; } = new List<string>();
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
// Redirection locations.
|
||||||
|
public class RedirectLocationData
|
||||||
|
{
|
||||||
|
// Properties populated in Controller_Base.OnActionExecuted.
|
||||||
|
public String Base { get; internal set; }
|
||||||
|
public String Home { get; internal set; }
|
||||||
|
public String Home_SessionExpired { get; internal set; }
|
||||||
|
}
|
||||||
|
public RedirectLocationData RedirectLocation { get; } = new RedirectLocationData();
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
// Link URLs.
|
||||||
|
public class LinksData
|
||||||
|
{
|
||||||
|
public String Facebook { get; } = "https://www.facebook.com/sportierre/";
|
||||||
|
public String LinkedIn { get; } = "https://www.linkedin.com/company/sportierre/about/";
|
||||||
|
}
|
||||||
|
public LinksData Links { get; } = new LinksData();
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
// Copyright notice.
|
||||||
|
public HtmlString CopyrightNotice
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
int initialYear = 2020;
|
||||||
|
int currentYear = DateTime.Today.Year;
|
||||||
|
return Localiser.GetHtmlText("copyright.symbol.year.html", (initialYear != currentYear ? initialYear + "-" : "") + currentYear.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
// Paging properties.
|
||||||
|
public class DataPaging
|
||||||
|
{
|
||||||
|
private DbQuery.Paging paging { get; } = new DbQuery.Paging();
|
||||||
|
public void PopulatePagingTo(DbQuery.Paging resultsPaging)
|
||||||
|
{
|
||||||
|
resultsPaging.PageLength = paging.PageLength;
|
||||||
|
resultsPaging.PageNo = paging.PageNo;
|
||||||
|
}
|
||||||
|
public bool IsPaged { get { return paging.Paged; } }
|
||||||
|
public uint PageNo { get { return paging.PageNo; } set { paging.PageNo = value; } }
|
||||||
|
public ushort PageLength { get { return paging.PageLength; } set { paging.PageLength = value; } }
|
||||||
|
public uint PageCount { get { return (PageLength > 0 ? (uint)Math.Ceiling((decimal)ItemTotal / PageLength) : 0); } }
|
||||||
|
public ushort ItemCount { get; set; }
|
||||||
|
private ulong itemTotal = 0;
|
||||||
|
public ulong ItemTotal
|
||||||
|
{
|
||||||
|
get { return itemTotal; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
itemTotal = value;
|
||||||
|
// Check whether the total number of items is less than the current page and reduce page no if needed.
|
||||||
|
if (IsPaged && (PageNo - 1) * PageLength > itemTotal)
|
||||||
|
PageNo = (uint)((itemTotal - 1) / PageLength + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public DataPaging Paging { get; } = new DataPaging();
|
||||||
|
public void PopulatePagingTo(DbQuery.Paging resultsPaging)
|
||||||
|
{
|
||||||
|
Paging.PopulatePagingTo(resultsPaging);
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Form control value max length.
|
/// Form control value max length.
|
||||||
@@ -157,18 +240,6 @@ namespace Saxonite.Net.Core.Web.Base.Models
|
|||||||
return maxLength;
|
return maxLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
|
||||||
// Copyright notice.
|
|
||||||
public HtmlString CopyrightNotice
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
int initialYear = 2020;
|
|
||||||
int currentYear = DateTime.Today.Year;
|
|
||||||
return Localiser.GetHtmlText("copyright.symbol.year.html", (initialYear != currentYear ? initialYear + "-" : "") + currentYear.ToString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
// Form data - Dates.
|
// Form data - Dates.
|
||||||
// Format may depend on locale, but as long as these methods are used consistently,
|
// Format may depend on locale, but as long as these methods are used consistently,
|
||||||
@@ -205,20 +276,22 @@ namespace Saxonite.Net.Core.Web.Base.Models
|
|||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
// Link URLs.
|
// Form data.
|
||||||
public class LinksData
|
//-------------------------------------------------------------------
|
||||||
{
|
// Common form values.
|
||||||
public String Facebook { get; } = "https://www.facebook.com/saxonite/";
|
public String FormAction { get; set; }
|
||||||
public String LinkedIn { get; } = "https://www.linkedin.com/company/saxonite/about/";
|
|
||||||
}
|
|
||||||
public LinksData Links { get; } = new LinksData();
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
// Form data.
|
|
||||||
/// <summary>List of Yes/No options for dropdown.</summary>
|
/// <summary>List of Yes/No options for dropdown.</summary>
|
||||||
public IEnumerable<SelectListItem> YesNoOptionsForSelect
|
public IEnumerable<SelectListItem> YesNoOptionsForSelect
|
||||||
{
|
{
|
||||||
get { return new SelectList(SaxSystem.GetCodesOfType(Sax.CodeType.YesNo), "Code", "Desc"); }
|
get
|
||||||
|
{
|
||||||
|
List<SelectListItem> values = new List<SelectListItem>();
|
||||||
|
foreach (TypeCodeDesc yesNo in SaxSystem.GetCodesOfType(Sax.CodeType.YesNo))
|
||||||
|
values.Add(new SelectListItem(yesNo.Code, GetYesNoCaption((Sax.YesNo)yesNo.Type)));
|
||||||
|
return values;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>List of Sport Participation options for dropdown.</summary>
|
/// <summary>List of Sport Participation options for dropdown.</summary>
|
||||||
@@ -270,75 +343,18 @@ namespace Saxonite.Net.Core.Web.Base.Models
|
|||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
// Version parameter for includes.
|
// Localisation.
|
||||||
public String HrefVersion
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
DateTime versionDate = SaxSystem.AssemblyBuildAt;
|
|
||||||
if (!DateUtil.IsValid(versionDate) || SaxSystem.DebugMode)
|
|
||||||
versionDate = DateTime.Now;
|
|
||||||
return DateUtil.Format(versionDate, "yyyyMMdd" /*+ (SacsSystem.Debug ? "HHmm" : "")*/);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Additional includes.
|
|
||||||
public List<String> AdditionalFiles_CSS { get; set; } = new List<string>();
|
|
||||||
public List<String> AdditionalFiles_JS { get; set; } = new List<string>();
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
// Redirection locations.
|
public String GetItemDataTypeCaption(Sax.DataItemType itemType)
|
||||||
public class RedirectLocationData
|
|
||||||
{
|
{
|
||||||
// Properties populated in Controller_Base.OnActionExecuted.
|
// Default - return code description.
|
||||||
public String Base { get; internal set; }
|
return DataItemTypeCodes.GetDescForType(itemType);
|
||||||
public String Home { get; internal set; }
|
|
||||||
public String Home_SessionExpired { get; internal set; }
|
|
||||||
}
|
}
|
||||||
public RedirectLocationData RedirectLocation { get; } = new RedirectLocationData();
|
public String GetYesNoCaption(Sax.YesNo yesNo)
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
|
||||||
// Paging properties.
|
|
||||||
public class DataPaging
|
|
||||||
{
|
{
|
||||||
private DbQuery.Paging paging { get; } = new DbQuery.Paging();
|
// Default - return code description.
|
||||||
public void PopulatePagingTo(DbQuery.Paging resultsPaging)
|
return YesNoCodes.GetDescForType(yesNo);
|
||||||
{
|
|
||||||
resultsPaging.PageLength = paging.PageLength;
|
|
||||||
resultsPaging.PageNo = paging.PageNo;
|
|
||||||
}
|
|
||||||
public bool IsPaged { get { return paging.Paged; } }
|
|
||||||
public uint PageNo { get { return paging.PageNo; } set { paging.PageNo = value; } }
|
|
||||||
public ushort PageLength { get { return paging.PageLength; } set { paging.PageLength = value; } }
|
|
||||||
public uint PageCount { get { return (PageLength > 0 ? (uint)Math.Ceiling((decimal)ItemTotal / PageLength) : 0); } }
|
|
||||||
public ushort ItemCount { get; set; }
|
|
||||||
private ulong itemTotal = 0;
|
|
||||||
public ulong ItemTotal
|
|
||||||
{
|
|
||||||
get { return itemTotal; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
itemTotal = value;
|
|
||||||
// Check whether the total number of items is less than the current page and reduce page no if needed.
|
|
||||||
if (IsPaged && (PageNo - 1) * PageLength > itemTotal)
|
|
||||||
PageNo = (uint)((itemTotal - 1) / PageLength + 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
public DataPaging Paging { get; } = new DataPaging();
|
|
||||||
public void PopulatePagingTo(DbQuery.Paging resultsPaging)
|
|
||||||
{
|
|
||||||
Paging.PopulatePagingTo(resultsPaging);
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
|
||||||
// Form properties.
|
|
||||||
/// <summary>
|
|
||||||
/// User session index to identify the site resources, eg. database.
|
|
||||||
/// <para>Equivalent to the Site index on the login form.</para>
|
|
||||||
/// <para>Populates value on logout form to identify default site for next login.</para>
|
|
||||||
/// </summary>
|
|
||||||
public ushort SessionIdx { get { return SessionContext.Index; } }
|
|
||||||
public String FormAction { get; set; }
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
// Messages.
|
// Messages.
|
||||||
|
|||||||
@@ -0,0 +1,116 @@
|
|||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.AspNetCore.Routing;
|
||||||
|
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 Sarand.Net.Standard.Dbas.Data;
|
||||||
|
using Saxonite.Net.Core.Web.Admin.Models;
|
||||||
|
using Saxonite.Net.Standard.Base.App;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace Saxonite.Net.Core.Web.Admin.Controllers
|
||||||
|
{
|
||||||
|
//=======================================================================
|
||||||
|
// Home - Ajax - Awaiting Activation controller
|
||||||
|
//=======================================================================
|
||||||
|
partial class HomeController
|
||||||
|
{
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
// Items Awaiting Activation data.
|
||||||
|
private class ActivationItemData
|
||||||
|
{
|
||||||
|
public String ItemType { get; set; }
|
||||||
|
public String ItemTypeDesc { get; set; }
|
||||||
|
public String ItemTypeDescPlural { get; set; }
|
||||||
|
public long ItemCount { get; set; }
|
||||||
|
public String ViewLink { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
// Get Items Awaiting Activation ajax request.
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
private class AjaxResponse_ItemsAwaitingActivation : AjaxResponse_Data
|
||||||
|
{
|
||||||
|
// Construction.
|
||||||
|
public AjaxResponse_ItemsAwaitingActivation(SaxModel_Admin model) : base(model) { }
|
||||||
|
// Table list.
|
||||||
|
public List<ActivationItemData> Items { get; } = new List<ActivationItemData>();
|
||||||
|
}
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
[HttpPost]
|
||||||
|
[Route("Home/Ajax/GetItemsAwaitingActivation")]
|
||||||
|
public IActionResult Ajax_GetItemsAwaitingActivation(Model_Sport model)
|
||||||
|
{
|
||||||
|
String fn = GetType().Name + ".Ajax_GetItemsAwaitingActivation";
|
||||||
|
String messageTitle = Localiser["home.caption.application"];
|
||||||
|
AjaxResponse_ItemsAwaitingActivation responseData = new AjaxResponse_ItemsAwaitingActivation(model);
|
||||||
|
|
||||||
|
// Validate session.
|
||||||
|
if (!ValidUserSession)
|
||||||
|
return GetAjaxResult_InvalidSession(responseData);
|
||||||
|
|
||||||
|
// Core Database connection.
|
||||||
|
ISacsDatabase db = SaxGlobals.App.GetCoreDatabase(SessionContext);
|
||||||
|
|
||||||
|
// Query to count items awaiting activation.
|
||||||
|
Dictionary<String, int> tableRowCounts = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
|
||||||
|
List<String> query = new List<string>()
|
||||||
|
{
|
||||||
|
// User accounts.
|
||||||
|
"SELECT",
|
||||||
|
"ItemType = '" + DbQuery.FormatForCondition(nameof(Sax.DataItemType.UserAccount)) + "',",
|
||||||
|
"ItemCount = Count(*)",
|
||||||
|
"FROM UserAccount ua",
|
||||||
|
"WHERE ua.Status = 'AWA'",
|
||||||
|
// Organisations.
|
||||||
|
"UNION SELECT",
|
||||||
|
"ItemType = '" + DbQuery.FormatForCondition(nameof(Sax.DataItemType.Organisation)) + "',",
|
||||||
|
"ItemCount = Count(*)",
|
||||||
|
"FROM Organisation org",
|
||||||
|
"WHERE org.Status = 'AWA'",
|
||||||
|
};
|
||||||
|
using (DbResultSet dbResultSet = DbResultSet_DataReader.ExecuteQuery(db, query.Concat("\n")))
|
||||||
|
{
|
||||||
|
while (dbResultSet != null && dbResultSet.NextRecord())
|
||||||
|
{
|
||||||
|
Sax.DataItemType itemType = EnumUtil.ParseEnum(dbResultSet.GetRecordValues().GetValue("ItemType").ToString(), Sax.DataItemType.Unknown);
|
||||||
|
String itemTypeDesc = nameof(itemType);
|
||||||
|
String itemTypeDescPlural = itemTypeDesc;
|
||||||
|
String viewLink = "";
|
||||||
|
switch (itemType)
|
||||||
|
{
|
||||||
|
case Sax.DataItemType.UserAccount:
|
||||||
|
itemTypeDesc = "User Account";
|
||||||
|
itemTypeDescPlural = "User Accounts";
|
||||||
|
viewLink = Url.Action("", "User", new RouteValueDictionary() { { "sta", "Await" } }).TrimStart('/');
|
||||||
|
break;
|
||||||
|
case Sax.DataItemType.Organisation:
|
||||||
|
itemTypeDesc = "Organisation";
|
||||||
|
itemTypeDescPlural = "Organisations";
|
||||||
|
viewLink = Url.Action("", "Organisation", new RouteValueDictionary() { { "sta", "Await" } }).TrimStart('/');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ActivationItemData activationItem = new ActivationItemData()
|
||||||
|
{
|
||||||
|
ItemType = nameof(itemType),
|
||||||
|
ItemTypeDesc = itemTypeDesc,
|
||||||
|
ItemTypeDescPlural = itemTypeDescPlural,
|
||||||
|
ItemCount = dbResultSet.GetRecordValues().GetValue("ItemCount").AsLong(),
|
||||||
|
ViewLink = viewLink,
|
||||||
|
};
|
||||||
|
responseData.Items.Add(activationItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Complete response.
|
||||||
|
responseData.Success = true;
|
||||||
|
return Json(responseData);
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
}
|
||||||
|
//=======================================================================
|
||||||
|
}
|
||||||
@@ -17,7 +17,7 @@ using System.Threading.Tasks;
|
|||||||
namespace Saxonite.Net.Core.Web.Admin.Controllers
|
namespace Saxonite.Net.Core.Web.Admin.Controllers
|
||||||
{
|
{
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
public class HomeController : SaxController_Admin
|
public partial class HomeController : SaxController_Admin
|
||||||
{
|
{
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
// Construction.
|
// Construction.
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
|
|||||||
|
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult Index()
|
public IActionResult Index(String sta)
|
||||||
{
|
{
|
||||||
// Validate session.
|
// Validate session.
|
||||||
if (!ValidUserSession)
|
if (!ValidUserSession)
|
||||||
@@ -37,6 +37,10 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
|
|||||||
model.Paging.PageNo = 1;
|
model.Paging.PageNo = 1;
|
||||||
model.Paging.PageLength = 6;
|
model.Paging.PageLength = 6;
|
||||||
|
|
||||||
|
// Default status.
|
||||||
|
if (sta.StartsWithCI("Awa"))
|
||||||
|
model.Filter.OrganisationStatusCategoryCode = nameof(SaxOrganisation.StatusCat.AwaitingOnly);
|
||||||
|
|
||||||
return View(model);
|
return View(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -138,9 +138,15 @@
|
|||||||
<data name="home.caption.application" xml:space="preserve">
|
<data name="home.caption.application" xml:space="preserve">
|
||||||
<value>Admin</value>
|
<value>Admin</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="home.caption.awaiting.activation" xml:space="preserve">
|
||||||
|
<value>Awaiting Activation</value>
|
||||||
|
</data>
|
||||||
<data name="home.caption.home" xml:space="preserve">
|
<data name="home.caption.home" xml:space="preserve">
|
||||||
<value>Home</value>
|
<value>Home</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="home.msg.no.items.awaiting.activation" xml:space="preserve">
|
||||||
|
<value>No items are awaiting activation</value>
|
||||||
|
</data>
|
||||||
<data name="label.accounts" xml:space="preserve">
|
<data name="label.accounts" xml:space="preserve">
|
||||||
<value>Accounts</value>
|
<value>Accounts</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -237,6 +243,9 @@
|
|||||||
<data name="label.items.available" xml:space="preserve">
|
<data name="label.items.available" xml:space="preserve">
|
||||||
<value>Available items</value>
|
<value>Available items</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="label.items.awaiting.activation" xml:space="preserve">
|
||||||
|
<value>Items awaiting activation</value>
|
||||||
|
</data>
|
||||||
<data name="label.keep.signed.in" xml:space="preserve">
|
<data name="label.keep.signed.in" xml:space="preserve">
|
||||||
<value>Keep me signed-in</value>
|
<value>Keep me signed-in</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -4,9 +4,35 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
sax.msg.noItemsAwaitAct = '@Localiser.GetJavascriptText("home.msg.no.items.awaiting.activation")';
|
||||||
sax.msg.dbSchemaValid = '@Localiser.GetJavascriptText("system.msg.database.schema.valid")';
|
sax.msg.dbSchemaValid = '@Localiser.GetJavascriptText("system.msg.database.schema.valid")';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@* Items Awaiting Activation *@
|
||||||
|
<div class="sax-panel-info sax-panel-results AwaitActivate">
|
||||||
|
|
||||||
|
<div class="sax-header">
|
||||||
|
<div class="sax-caption">@Localiser["home.caption.awaiting.activation"]</div>
|
||||||
|
</div>
|
||||||
|
<div class="sax-content">
|
||||||
|
<div class="sax-panel-messages"></div>
|
||||||
|
<div class="sax-panel-item-list"></div>
|
||||||
|
@* Items awaiting activation templates *@
|
||||||
|
<div class="sax-panel-item-template">
|
||||||
|
<div class="sax-panel-item AwaitActivateItem">
|
||||||
|
<div class="sax-header">
|
||||||
|
<div class="sax-caption sax-action sax-view AwaitActivateItemType"></div>
|
||||||
|
</div>
|
||||||
|
<div class="sax-content">
|
||||||
|
<div class="SchemaIndex">@(Localiser["label.items.awaiting.activation"]): <span class="AwaitActivateItemCount"></span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@* Database Schema *@
|
||||||
<div class="sax-panel-info sax-panel-results DbSchema">
|
<div class="sax-panel-info sax-panel-results DbSchema">
|
||||||
|
|
||||||
<div class="sax-header">
|
<div class="sax-header">
|
||||||
@@ -16,6 +42,7 @@
|
|||||||
<div class="sax-panel-messages"></div>
|
<div class="sax-panel-messages"></div>
|
||||||
<div class="sax-panel-item-list"></div>
|
<div class="sax-panel-item-list"></div>
|
||||||
<div class="sax-panel-item-template">
|
<div class="sax-panel-item-template">
|
||||||
|
@* Db Schema templates *@
|
||||||
<div class="sax-panel-item DbSchemaItem">
|
<div class="sax-panel-item DbSchemaItem">
|
||||||
<div class="sax-header">
|
<div class="sax-header">
|
||||||
<div class="sax-caption SchemaTable">@(Localiser["label.table"]): <span class="TableName"></span></div>
|
<div class="sax-caption SchemaTable">@(Localiser["label.table"]): <span class="TableName"></span></div>
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
margin: 24px auto;
|
margin: 24px auto;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
border: solid 2px #979797;
|
border: solid 1px #979797;
|
||||||
border-color: var(--color-primary);
|
border-color: var(--color-primary);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
-webkit-border-radius: 4px;
|
-webkit-border-radius: 4px;
|
||||||
|
|||||||
@@ -336,7 +336,7 @@ a:focus
|
|||||||
|
|
||||||
.ui-dialog.ui-widget.ui-widget-content
|
.ui-dialog.ui-widget.ui-widget-content
|
||||||
{
|
{
|
||||||
border-width: 2px;
|
border-width: 1px;
|
||||||
border-color: #d4af37;
|
border-color: #d4af37;
|
||||||
-moz-box-shadow: 4px 4px 6px #ccc;
|
-moz-box-shadow: 4px 4px 6px #ccc;
|
||||||
-webkit-box-shadow: 4px 4px 6px #ccc;
|
-webkit-box-shadow: 4px 4px 6px #ccc;
|
||||||
|
|||||||
@@ -5,17 +5,59 @@
|
|||||||
(function (win, doc, undef)
|
(function (win, doc, undef)
|
||||||
{
|
{
|
||||||
"use strict";
|
"use strict";
|
||||||
|
let $pnl = sax.$pnl, $dlg = sax.$dlg, $frm = sax.$frm;
|
||||||
sax.itemIdPrefix = 'Itm_';
|
sax.itemIdPrefix = 'Itm_';
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
sax.refreshDbSchema= function (delay)
|
sax.refreshAwaitActivate = function (delay)
|
||||||
{
|
{
|
||||||
if (sax.awaitingLogin) return;
|
if (sax.awaitingLogin) return;
|
||||||
var $results = $('.sax-panel-results.DbSchema');
|
|
||||||
if (!sax.awaitingRefreshResponse)
|
if (!sax.awaitingRefreshResponse)
|
||||||
{
|
{
|
||||||
var $items = $('.sax-panel-item-list', $results).fadeOut(200).empty();
|
var $items = $('.sax-panel-item-list', $pnl.awaitAct).fadeOut(200).empty();
|
||||||
var $msgs = $('.sax-panel-messages', $results).hide().empty().append($('<div class="sax-message">' + sax.msg.dataQuerying + '</div>')).fadeIn(200);
|
var $msgs = $('.sax-panel-messages', $pnl.awaitAct).hide().empty().append($('<div class="sax-message">' + sax.msg.dataQuerying + '</div>')).fadeIn(200);
|
||||||
|
}
|
||||||
|
sax.ajax.awaitAct = sax.ajax.awaitAct || { url: sax.url.base + 'Home/Ajax/GetItemsAwaitingActivation', formId: 'frmNavigate', callbackFn: sax.handleAwaitActivateResponse, noWaitIcon: true };
|
||||||
|
sax.doAjaxRequest(sax.ajax.awaitAct, delay || 50);
|
||||||
|
sax.awaitingRefreshResponse = true;
|
||||||
|
}
|
||||||
|
sax.handleAwaitActivateResponse = function (response)
|
||||||
|
{
|
||||||
|
//sax.debug('handleAwaitActivateResponse', response);
|
||||||
|
delete sax.awaitingRefreshResponse;
|
||||||
|
var $msgs = $('.sax-panel-messages', $pnl.awaitAct).hide().empty();
|
||||||
|
var $items = $('.sax-panel-item-list', $pnl.awaitAct).hide().empty();
|
||||||
|
var $tmpl = $('.sax-panel-item-template .sax-panel-item.AwaitActivateItem', $pnl.awaitAct);
|
||||||
|
if (!response.success) return;
|
||||||
|
// Items.
|
||||||
|
var items = response.items;
|
||||||
|
if (!items.length)
|
||||||
|
return $msgs.append($('<div class="sax-message">' + sax.msg.noItemsAwaitAct + '</div>')).fadeIn(500);
|
||||||
|
for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
|
||||||
|
$items.append(sax.populateAwaitActivateItem($tmpl.clone(), items[itemIdx]));
|
||||||
|
$items.slideDown(750);
|
||||||
|
}
|
||||||
|
sax.populateAwaitActivateItem = function ($item, item)
|
||||||
|
{
|
||||||
|
if (!item) return;
|
||||||
|
if (item.viewLink)$('.sax-action.sax-view', $item).on('click', function () { sax.goToPage(item.viewLink); });
|
||||||
|
$('.AwaitActivateItemType', $item).text(item.itemTypeDescPlural);
|
||||||
|
$('.AwaitActivateItemCount', $item).text(item.itemCount);
|
||||||
|
return $item;
|
||||||
|
}
|
||||||
|
sax.getAwaitActivateItemTemplate = function ()
|
||||||
|
{
|
||||||
|
return $('.sax-panel-item-template .sax-panel-item.AwaitActivateItem', $pnl.results).clone();
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
sax.refreshDbSchema = function (delay)
|
||||||
|
{
|
||||||
|
if (sax.awaitingLogin) return;
|
||||||
|
if (!sax.awaitingRefreshResponse)
|
||||||
|
{
|
||||||
|
var $items = $('.sax-panel-item-list', $pnl.dbSchema).fadeOut(200).empty();
|
||||||
|
var $msgs = $('.sax-panel-messages', $pnl.dbSchema).hide().empty().append($('<div class="sax-message">' + sax.msg.dataQuerying + '</div>')).fadeIn(200);
|
||||||
}
|
}
|
||||||
sax.ajax.dbSchema = sax.ajax.dbSchema || { url: sax.url.base + 'System/Ajax/ValidateDatabaseSchema', formId: 'frmNavigate', callbackFn: sax.handleDbSchemaResponse, noWaitIcon: true };
|
sax.ajax.dbSchema = sax.ajax.dbSchema || { url: sax.url.base + 'System/Ajax/ValidateDatabaseSchema', formId: 'frmNavigate', callbackFn: sax.handleDbSchemaResponse, noWaitIcon: true };
|
||||||
sax.doAjaxRequest(sax.ajax.dbSchema, delay || 50);
|
sax.doAjaxRequest(sax.ajax.dbSchema, delay || 50);
|
||||||
@@ -25,25 +67,19 @@
|
|||||||
{
|
{
|
||||||
//sax.debug('handleDbSchemaResponse', response);
|
//sax.debug('handleDbSchemaResponse', response);
|
||||||
delete sax.awaitingRefreshResponse;
|
delete sax.awaitingRefreshResponse;
|
||||||
var $results = $('.sax-panel-results.DbSchema');
|
var $msgs = $('.sax-panel-messages', $pnl.dbSchema).hide().empty();
|
||||||
var $msgs = $('.sax-panel-messages', $results).hide().empty();
|
var $items = $('.sax-panel-item-list', $pnl.dbSchema).hide().empty();
|
||||||
var $items = $('.sax-panel-item-list', $results).hide().empty();
|
var $tmpl = $('.sax-panel-item-template .sax-panel-item.DbSchemaItem', $pnl.dbSchema);
|
||||||
var $tmpl = $('.sax-panel-item-template .sax-panel-item.DbSchemaItem', $results);
|
|
||||||
if (!response.success) return;
|
if (!response.success) return;
|
||||||
// Items.
|
// Items.
|
||||||
var items = response.items;
|
var items = response.items;
|
||||||
if (!items.length)
|
if (!items.length)
|
||||||
return $msgs.append($('<div class="sax-message">' + sax.msg.dbSchemaValid + '</div>')).fadeIn(500);
|
return $msgs.append($('<div class="sax-message">' + sax.msg.dbSchemaValid + '</div>')).fadeIn(500);
|
||||||
for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
|
for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
|
||||||
{
|
$items.append(sax.populateDbSchemaItem($tmpl.clone(), items[itemIdx]));
|
||||||
let item = items[itemIdx];
|
$items.slideDown(750);
|
||||||
let $item = $tmpl.clone();
|
|
||||||
sax.populateItem($item, item);
|
|
||||||
$items.append($item);
|
|
||||||
}
|
|
||||||
$items.fadeIn(50);
|
|
||||||
}
|
}
|
||||||
sax.populateItem = function ($item, item)
|
sax.populateDbSchemaItem = function ($item, item)
|
||||||
{
|
{
|
||||||
if (!item) return;
|
if (!item) return;
|
||||||
$item.prop('id', sax.itemIdPrefix + item.id);
|
$item.prop('id', sax.itemIdPrefix + item.id);
|
||||||
@@ -53,11 +89,16 @@
|
|||||||
$('.ColumnName', $item).text(item.columnName);
|
$('.ColumnName', $item).text(item.columnName);
|
||||||
$('.SchemaColumn', $item).toggle(!!item.columnName);
|
$('.SchemaColumn', $item).toggle(!!item.columnName);
|
||||||
$('.Comment', $item).text(item.comment);
|
$('.Comment', $item).text(item.comment);
|
||||||
|
return $item;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
$(function ()
|
$(function ()
|
||||||
{
|
{
|
||||||
|
$pnl.awaitAct = $('.sax-panel-results.AwaitActivate');
|
||||||
|
$pnl.dbSchema = $('.sax-panel-results.DbSchema');
|
||||||
|
|
||||||
|
setTimeout(sax.refreshAwaitActivate, 250);
|
||||||
setTimeout(sax.refreshDbSchema, 250);
|
setTimeout(sax.refreshDbSchema, 250);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
$('.UserFirstName', $item).text(item.firstName);
|
$('.UserFirstName', $item).text(item.firstName);
|
||||||
$('.UserLastName', $item).text(item.lastName);
|
$('.UserLastName', $item).text(item.lastName);
|
||||||
$('.UserRoleCount', $item).text(item.userRoleCount);
|
$('.UserRoleCount', $item).text(item.userRoleCount);
|
||||||
$('.StatusDesc', $item).text(item.statusDesc);
|
$('.StatusDesc', $item).text(item.statusDesc).addClass('sax-status-' + item.statusCode.toLowerCase());
|
||||||
$('.sax-caption .sax-action').toggleClass('sax-action', !item.deleted);
|
$('.sax-caption .sax-action').toggleClass('sax-action', !item.deleted);
|
||||||
let $mnu = $('ul.sax-dropdown-menu', $item);
|
let $mnu = $('ul.sax-dropdown-menu', $item);
|
||||||
if (!item.deleted)
|
if (!item.deleted)
|
||||||
|
|||||||
@@ -231,6 +231,9 @@
|
|||||||
<data name="label.alternatively" xml:space="preserve">
|
<data name="label.alternatively" xml:space="preserve">
|
||||||
<value>Alternatively</value>
|
<value>Alternatively</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="label.any" xml:space="preserve">
|
||||||
|
<value>Any</value>
|
||||||
|
</data>
|
||||||
<data name="label.article" xml:space="preserve">
|
<data name="label.article" xml:space="preserve">
|
||||||
<value>Article</value>
|
<value>Article</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -309,6 +312,9 @@
|
|||||||
<data name="label.first.name" xml:space="preserve">
|
<data name="label.first.name" xml:space="preserve">
|
||||||
<value>First name</value>
|
<value>First name</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="label.follow" xml:space="preserve">
|
||||||
|
<value>Follow</value>
|
||||||
|
</data>
|
||||||
<data name="label.forgotten.password" xml:space="preserve">
|
<data name="label.forgotten.password" xml:space="preserve">
|
||||||
<value>Forgotten password?</value>
|
<value>Forgotten password?</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -501,6 +507,9 @@
|
|||||||
<data name="label.very.good" xml:space="preserve">
|
<data name="label.very.good" xml:space="preserve">
|
||||||
<value>Very Good</value>
|
<value>Very Good</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="label.view" xml:space="preserve">
|
||||||
|
<value>View</value>
|
||||||
|
</data>
|
||||||
<data name="label.year" xml:space="preserve">
|
<data name="label.year" xml:space="preserve">
|
||||||
<value>Year</value>
|
<value>Year</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -42,13 +42,13 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
|||||||
public byte DobMonth { get; set; }
|
public byte DobMonth { get; set; }
|
||||||
public short DobYear { get; set; }
|
public short DobYear { get; set; }
|
||||||
// Regions.
|
// Regions.
|
||||||
public int RegionIdCountry { get; set; }
|
public String RegionIdCountry { get; set; }
|
||||||
public String RegionCaptionCountry { get; set; }
|
public String RegionCaptionCountry { get; set; }
|
||||||
public int RegionIdProvince { get; set; }
|
public String RegionIdProvince { get; set; }
|
||||||
public String RegionCaptionProvince { get; set; }
|
public String RegionCaptionProvince { get; set; }
|
||||||
public String LocationCaption { get; set; }
|
public String LocationCaption { get; set; }
|
||||||
}
|
}
|
||||||
private void PopulateContactResponseData(ContactResponseData data, SaxUserAccount userAccount)
|
private void PopulateContactResponseData(SaxModel_Online model, ContactResponseData data, SaxUserAccount userAccount)
|
||||||
{
|
{
|
||||||
data.EmailAddress = userAccount.EmailAddress;
|
data.EmailAddress = userAccount.EmailAddress;
|
||||||
data.DisplayName = userAccount.GetDisplayName();
|
data.DisplayName = userAccount.GetDisplayName();
|
||||||
@@ -62,8 +62,8 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
|||||||
data.DobMonth = (byte)userAccount.DateOfBirthMonth;
|
data.DobMonth = (byte)userAccount.DateOfBirthMonth;
|
||||||
data.DobYear = (short)userAccount.DateOfBirthYear;
|
data.DobYear = (short)userAccount.DateOfBirthYear;
|
||||||
// Regions.
|
// Regions.
|
||||||
data.RegionIdCountry = SysId.ToInt(userAccount.RegionIdCountry);
|
data.RegionIdCountry = model.GetEncryptedRegionId(userAccount.RegionIdCountry);
|
||||||
data.RegionIdProvince = SysId.ToInt(userAccount.RegionIdProvince);
|
data.RegionIdProvince = model.GetEncryptedRegionId(userAccount.RegionIdProvince);
|
||||||
data.RegionCaptionCountry = Localiser.GetRegionName(Internals.GetRegion(userAccount.RegionIdCountry));
|
data.RegionCaptionCountry = Localiser.GetRegionName(Internals.GetRegion(userAccount.RegionIdCountry));
|
||||||
data.RegionCaptionProvince = Localiser.GetRegionName(Internals.GetRegion(userAccount.RegionIdProvince));
|
data.RegionCaptionProvince = Localiser.GetRegionName(Internals.GetRegion(userAccount.RegionIdProvince));
|
||||||
List<String> locations = new List<string>() { data.RegionCaptionProvince, data.RegionCaptionCountry };
|
List<String> locations = new List<string>() { data.RegionCaptionProvince, data.RegionCaptionCountry };
|
||||||
@@ -134,7 +134,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
|||||||
|
|
||||||
// Populate data to response.
|
// Populate data to response.
|
||||||
responseData.Contact = new ContactResponseData();
|
responseData.Contact = new ContactResponseData();
|
||||||
PopulateContactResponseData(responseData.Contact, userAccount);
|
PopulateContactResponseData(model, responseData.Contact, userAccount);
|
||||||
responseData.Success = true;
|
responseData.Success = true;
|
||||||
return Json(responseData);
|
return Json(responseData);
|
||||||
}
|
}
|
||||||
@@ -363,7 +363,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
|||||||
|
|
||||||
// Construct response.
|
// Construct response.
|
||||||
responseData.Contact = new ContactResponseData();
|
responseData.Contact = new ContactResponseData();
|
||||||
PopulateContactResponseData(responseData.Contact, userAccount);
|
PopulateContactResponseData(model, responseData.Contact, userAccount);
|
||||||
responseData.Success = true;
|
responseData.Success = true;
|
||||||
return Json(responseData);
|
return Json(responseData);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,15 +35,17 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
|||||||
}
|
}
|
||||||
private class ProfileSportResponseData_Item : ProfileSportResponseData_List
|
private class ProfileSportResponseData_Item : ProfileSportResponseData_List
|
||||||
{
|
{
|
||||||
|
public String SportAbout { get; set; }
|
||||||
public String SportParticipationCode { get; set; }
|
public String SportParticipationCode { get; set; }
|
||||||
public String SportOfficiatingCode { get; set; }
|
public String SportOfficiatingCode { get; set; }
|
||||||
}
|
}
|
||||||
private void PopulateProfileSportResponseData(Model_Account model, SaxUserSport userSport, SaxSport sport, ProfileSportResponseData_Item data)
|
private void PopulateProfileSportResponseData(Model_Account model, SaxUserSport userSport, SaxSport sport, ProfileSportResponseData_Item data)
|
||||||
{
|
{
|
||||||
data.Id = SysId.ToString(userSport.Id);
|
data.Id = SysId.ToString(userSport.Id);
|
||||||
data.SportId = SysId.ToString(userSport.SportId);
|
data.SportId = model.GetEncryptedSportId(userSport.SportId);
|
||||||
data.SportName = sport.Name;
|
data.SportName = sport.Name;
|
||||||
data.SportSpecialityLabel = model.GetSportSpecialityLabel(userSport.SportId);
|
data.SportSpecialityLabel = model.GetSportSpecialityLabel(userSport.SportId);
|
||||||
|
data.SportAbout = userSport.About;
|
||||||
data.SportParticipationCode = SportParticipationCodes.GetCodeForType(userSport.Participation);
|
data.SportParticipationCode = SportParticipationCodes.GetCodeForType(userSport.Participation);
|
||||||
data.SportParticipation = Localiser.GetSportParticipationTypeCaption(userSport.Participation);
|
data.SportParticipation = Localiser.GetSportParticipationTypeCaption(userSport.Participation);
|
||||||
data.SportOfficiatingCode = SportOfficiatingCodes.GetCodeForType(userSport.Officiating);
|
data.SportOfficiatingCode = SportOfficiatingCodes.GetCodeForType(userSport.Officiating);
|
||||||
@@ -112,7 +114,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
|||||||
ProfileSportResponseData_List userSportData = new ProfileSportResponseData_List()
|
ProfileSportResponseData_List userSportData = new ProfileSportResponseData_List()
|
||||||
{
|
{
|
||||||
Id = values.GetLong(colId.DataName).ToString(),
|
Id = values.GetLong(colId.DataName).ToString(),
|
||||||
SportId = sportId.ToString(),
|
SportId = model.GetEncryptedSportId(sportId),
|
||||||
SportName = values.GetString(colSportName.DataName),
|
SportName = values.GetString(colSportName.DataName),
|
||||||
SportSpecialityLabel = model.GetSportSpecialityLabel(sportId),
|
SportSpecialityLabel = model.GetSportSpecialityLabel(sportId),
|
||||||
SportParticipation = Localiser.GetSportParticipationTypeCaption((Sax.SportParticipation)values.GetLong(colParticipation.DataName)),
|
SportParticipation = Localiser.GetSportParticipationTypeCaption((Sax.SportParticipation)values.GetLong(colParticipation.DataName)),
|
||||||
@@ -254,14 +256,24 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
|||||||
userSport = AccountMgr.GetUserSport(prmUserSport);
|
userSport = AccountMgr.GetUserSport(prmUserSport);
|
||||||
if (userSport != null)
|
if (userSport != null)
|
||||||
{
|
{
|
||||||
SaLogger.Info(fn + " Resurrecting User Sport with status: " + userSport.StatusDesc + ". Id: " + SysId.ToString(userSport.Id));
|
if (userSport.Status == SaStatus.Deleted)
|
||||||
userSport.Status = SaxUserSport.DefaultStatus;
|
{
|
||||||
|
SaLogger.Info(fn + " Resurrecting User Sport with status: " + userSport.StatusDesc + ". Id: " + SysId.ToString(userSport.Id));
|
||||||
|
userSport.Status = SaxUserSport.DefaultStatus;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
responseData.SetControlError(nameof(model.ProfileSportId), Localiser["msg.validation.duplicate.value"]);
|
||||||
|
return Json(responseData);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
userSport = AccountMgr.CreateUserSport(SessionData.User.UserAccountId, sportId);
|
userSport = AccountMgr.CreateUserSport(SessionData.User.UserAccountId, sportId);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Populate item properties.
|
// Populate item properties.
|
||||||
|
if (model.ProfileSportAbout != null)
|
||||||
|
userSport.About = model.ProfileSportAbout;
|
||||||
if (model.ProfileSportParticipationCode != null)
|
if (model.ProfileSportParticipationCode != null)
|
||||||
userSport.Participation = model.ProfileSportParticipation;
|
userSport.Participation = model.ProfileSportParticipation;
|
||||||
if (model.ProfileSportOfficiatingCode != null)
|
if (model.ProfileSportOfficiatingCode != null)
|
||||||
|
|||||||
+2
-2
@@ -70,8 +70,8 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
|||||||
data.League = userSportExperience.League;
|
data.League = userSportExperience.League;
|
||||||
data.Speciality = userSportExperience.Speciality;
|
data.Speciality = userSportExperience.Speciality;
|
||||||
// Regions.
|
// Regions.
|
||||||
data.RegionIdNation = model.EncryptId(userSportExperience.RegionIdNation);
|
data.RegionIdNation = model.GetEncryptedRegionId(userSportExperience.RegionIdNation);
|
||||||
data.RegionIdProvince = model.EncryptId(userSportExperience.RegionIdProvince);
|
data.RegionIdProvince = model.GetEncryptedRegionId(userSportExperience.RegionIdProvince);
|
||||||
data.RegionCaptionNation = Localiser.GetRegionName(Internals.GetRegion(userSportExperience.RegionIdNation));
|
data.RegionCaptionNation = Localiser.GetRegionName(Internals.GetRegion(userSportExperience.RegionIdNation));
|
||||||
data.RegionCaptionProvince = Localiser.GetRegionName(Internals.GetRegion(userSportExperience.RegionIdProvince));
|
data.RegionCaptionProvince = Localiser.GetRegionName(Internals.GetRegion(userSportExperience.RegionIdProvince));
|
||||||
List<String> locations = new List<string>() { data.RegionCaptionProvince, data.RegionCaptionNation };
|
List<String> locations = new List<string>() { data.RegionCaptionProvince, data.RegionCaptionNation };
|
||||||
|
|||||||
@@ -88,8 +88,8 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
|||||||
private void PopulateArticleResponseData(Model_Article model, SaxArticle article, ArticleData_Full data)
|
private void PopulateArticleResponseData(Model_Article model, SaxArticle article, ArticleData_Full data)
|
||||||
{
|
{
|
||||||
PopulateArticleResponseData(model, article, data as ArticleData_List);
|
PopulateArticleResponseData(model, article, data as ArticleData_List);
|
||||||
data.RegionIdPrimary = SysId.ToString(article.RegionIdPrimary);
|
data.RegionIdPrimary = model.GetEncryptedRegionId(article.RegionIdPrimary);
|
||||||
data.SportIdPrimary = SysId.ToString(article.SportIdPrimary);
|
data.SportIdPrimary = model.GetEncryptedSportId(article.SportIdPrimary);
|
||||||
data.Published = DateUtil.IsValid(article.PublishedAt);
|
data.Published = DateUtil.IsValid(article.PublishedAt);
|
||||||
data.PublishedOn_YYYYMMDD = DateUtil.Format(article.PublishedAt, "yyyyMMdd");
|
data.PublishedOn_YYYYMMDD = DateUtil.Format(article.PublishedAt, "yyyyMMdd");
|
||||||
data.PublishedOn_Calendar = model.FormatDateForForm(article.PublishedAt);
|
data.PublishedOn_Calendar = model.FormatDateForForm(article.PublishedAt);
|
||||||
|
|||||||
+4
-4
@@ -57,8 +57,8 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
|||||||
private void PopulateOpportunityResponseData(Model_Organisation_Opportunities model, SaxOrganisationOpportunity opportunity, OpportunityData_Detail data)
|
private void PopulateOpportunityResponseData(Model_Organisation_Opportunities model, SaxOrganisationOpportunity opportunity, OpportunityData_Detail data)
|
||||||
{
|
{
|
||||||
PopulateOpportunityResponseData(model, opportunity, data as OpportunityData_List);
|
PopulateOpportunityResponseData(model, opportunity, data as OpportunityData_List);
|
||||||
data.RegionIdPrimary = SysId.ToString(opportunity.RegionIdPrimary);
|
data.RegionIdPrimary = model.GetEncryptedRegionId(opportunity.RegionIdPrimary);
|
||||||
data.SportIdPrimary = SysId.ToString(opportunity.SportIdPrimary);
|
data.SportIdPrimary = model.GetEncryptedSportId(opportunity.SportIdPrimary);
|
||||||
data.PublishedOn_YYYYMMDD = DateUtil.Format(opportunity.PublishedAt, "yyyyMMdd");
|
data.PublishedOn_YYYYMMDD = DateUtil.Format(opportunity.PublishedAt, "yyyyMMdd");
|
||||||
data.ExpiresOn_YYYYMMDD = DateUtil.Format(opportunity.ExpiresAt, "yyyyMMdd");
|
data.ExpiresOn_YYYYMMDD = DateUtil.Format(opportunity.ExpiresAt, "yyyyMMdd");
|
||||||
}
|
}
|
||||||
@@ -148,9 +148,9 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
|||||||
// Organisation.
|
// Organisation.
|
||||||
responseData.Organisation.Id = SysId.ToString(organisation.Id);
|
responseData.Organisation.Id = SysId.ToString(organisation.Id);
|
||||||
responseData.Organisation.Name = organisation.Name;
|
responseData.Organisation.Name = organisation.Name;
|
||||||
responseData.Organisation.SportId = SysId.ToString(organisation.SportIdPrimary);
|
responseData.Organisation.SportId = model.GetEncryptedSportId(organisation.SportIdPrimary);
|
||||||
responseData.Organisation.SportName = model.GetSportCaption(organisation.SportIdPrimary);
|
responseData.Organisation.SportName = model.GetSportCaption(organisation.SportIdPrimary);
|
||||||
responseData.Organisation.RegionId = SysId.ToString(organisation.RegionIdPrimary);
|
responseData.Organisation.RegionId = model.GetEncryptedRegionId(organisation.RegionIdPrimary);
|
||||||
responseData.Organisation.RegionName = model.GetRegionCaption(organisation.RegionIdPrimary);
|
responseData.Organisation.RegionName = model.GetRegionCaption(organisation.RegionIdPrimary);
|
||||||
|
|
||||||
// User details.
|
// User details.
|
||||||
|
|||||||
@@ -0,0 +1,195 @@
|
|||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Saxonite.Net.Core.Web.Online.Models;
|
||||||
|
using Saxonite.Net.Core.Web.Base.App;
|
||||||
|
using Saxonite.Net.Core.Web.Base.Controllers;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Saxonite.Net.Standard.Base.Bus;
|
||||||
|
using Sarand.Net.Standard.Base.App;
|
||||||
|
using Sarand.Net.Standard.Base.Bus;
|
||||||
|
using Sarand.Net.Standard.Base.Utils;
|
||||||
|
using Sarand.Net.Standard.Base.Core;
|
||||||
|
using Sarand.Net.Standard.Base.Dbas;
|
||||||
|
|
||||||
|
namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||||
|
{
|
||||||
|
//=======================================================================
|
||||||
|
// Online Search Controller - Organisations - Ajax actions.
|
||||||
|
//=======================================================================
|
||||||
|
partial class SearchController
|
||||||
|
{
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
// Account - Get Organisations.
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
private class OrganisationListData
|
||||||
|
{
|
||||||
|
public String Id { get; set; }
|
||||||
|
public String Name { get; set; }
|
||||||
|
public String SportId { get; set; }
|
||||||
|
public String SportName { get; set; }
|
||||||
|
public String RegionId { get; set; }
|
||||||
|
public String RegionName { get; set; }
|
||||||
|
}
|
||||||
|
private class AjaxResponse_Search_Organisations : AjaxResponse_Data
|
||||||
|
{
|
||||||
|
// Construction.
|
||||||
|
public AjaxResponse_Search_Organisations(SaxModel_Online model) : base(model) { }
|
||||||
|
// Organisation list.
|
||||||
|
public List<OrganisationListData> Organisations { get; } = new List<OrganisationListData>();
|
||||||
|
}
|
||||||
|
// Ajax request.
|
||||||
|
[HttpPost]
|
||||||
|
[Route("Search/Ajax/Organisations")]
|
||||||
|
[Route("Search/Ajax/GetOrganisations")]
|
||||||
|
public IActionResult GetProfileOrganisations(Model_Search_Organisations model)
|
||||||
|
{
|
||||||
|
String fn = GetType().Name + ".GetProfileOrganisations";
|
||||||
|
AjaxResponse_Search_Organisations responseData = new AjaxResponse_Search_Organisations(model);
|
||||||
|
String messageTitle = Localiser["organisation.caption.organisations"];
|
||||||
|
|
||||||
|
// Validate session and referrer.
|
||||||
|
if (!ValidReferer) return Forbid();
|
||||||
|
if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData);
|
||||||
|
RefreshModel(model);
|
||||||
|
|
||||||
|
// Query organisations that user is a member of.
|
||||||
|
SaxOrganisation.Params prmOrganisation = new SaxOrganisation.Params();
|
||||||
|
prmOrganisation.OrganisationFilter = model.Filter.Organisation;
|
||||||
|
prmOrganisation.OrganisationType = model.FilterOrganisationType;
|
||||||
|
prmOrganisation.OrganisationCategory = model.FilterOrganisationCategory;
|
||||||
|
if (SysId.IsValid(model.FilterSportId))
|
||||||
|
prmOrganisation.SportIdsIncluded.Add(model.FilterSportId);
|
||||||
|
if (SysId.IsValid(model.FilterRegionId))
|
||||||
|
prmOrganisation.RegionIdsIncluded.Add(model.FilterRegionId);
|
||||||
|
prmOrganisation.StatusCat = SaxOrganisation.StatusCat.ActiveOnly;
|
||||||
|
model.Paging.ItemTotal = (ulong)AccountMgr.GetOrganisationCount(prmOrganisation);
|
||||||
|
model.PopulatePagingTo(prmOrganisation.ResultsPaging);
|
||||||
|
|
||||||
|
List<SaxOrganisation> organisations = AccountMgr.GetOrganisationList(prmOrganisation);
|
||||||
|
List<SysId> organisationIds = organisations.GetIds();
|
||||||
|
|
||||||
|
// Item columns.
|
||||||
|
ColumnDfn colId = AccountMgr.GetOrganisationColumnDfn(SaxOrganisation.Column.Id);
|
||||||
|
ColumnDfn colName = AccountMgr.GetOrganisationColumnDfn(SaxOrganisation.Column.Name);
|
||||||
|
ColumnDfn colSportId = AccountMgr.GetOrganisationColumnDfn(SaxOrganisation.Column.SportId);
|
||||||
|
ColumnDfn colSportName = AccountMgr.GetOrganisationColumnDfn(SaxOrganisation.Column.Sport_Name);
|
||||||
|
ColumnDfn colRegionId = AccountMgr.GetOrganisationColumnDfn(SaxOrganisation.Column.RegionId);
|
||||||
|
ColumnDfn colRegionName = AccountMgr.GetOrganisationColumnDfn(SaxOrganisation.Column.Region_Name);
|
||||||
|
List<ColumnDfn> columns = new List<ColumnDfn>()
|
||||||
|
{
|
||||||
|
colId, colName,
|
||||||
|
colSportId, colSportName,
|
||||||
|
colRegionId, colRegionName,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Sort columns.
|
||||||
|
colName.SortAscending = true;
|
||||||
|
prmOrganisation.SortColumns.Add(colName);
|
||||||
|
|
||||||
|
// Query items.
|
||||||
|
using (DbResultSet resultSet = AccountMgr.ExecuteOrganisationQuery(columns, prmOrganisation))
|
||||||
|
{
|
||||||
|
while (resultSet != null && resultSet.HasRows && resultSet.NextRecord())
|
||||||
|
{
|
||||||
|
NamedValue.Map values = resultSet.GetRecordValues();
|
||||||
|
OrganisationListData organisationData = new OrganisationListData()
|
||||||
|
{
|
||||||
|
Id = model.EncryptId(new SysId(values.GetLong(colId.DataName))),
|
||||||
|
Name = values.GetString(colName.DataName),
|
||||||
|
SportId = model.GetEncryptedSportId(new SysId(values.GetLong(colSportId.DataName))),
|
||||||
|
SportName = values.GetString(colSportName.DataName),
|
||||||
|
RegionId = model.GetEncryptedRegionId(new SysId(values.GetLong(colRegionId.DataName))),
|
||||||
|
RegionName = values.GetString(colRegionName.DataName),
|
||||||
|
};
|
||||||
|
responseData.Organisations.Add(organisationData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (model.Paging.IsPaged)
|
||||||
|
model.Paging.ItemCount = (ushort)responseData.Organisations.Count;
|
||||||
|
|
||||||
|
// Complete response.
|
||||||
|
responseData.SetPaging(model);
|
||||||
|
responseData.Success = true;
|
||||||
|
return Json(responseData);
|
||||||
|
}
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
// Account - Get Organisations.
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
private class OrganisationData
|
||||||
|
{
|
||||||
|
public String Id { get; set; }
|
||||||
|
public String Name { get; set; }
|
||||||
|
public String SportId { get; set; }
|
||||||
|
public String SportName { get; set; }
|
||||||
|
public String RegionId { get; set; }
|
||||||
|
public String RegionName { get; set; }
|
||||||
|
}
|
||||||
|
private class AjaxResponse_Search_Organisation : AjaxResponse_Data
|
||||||
|
{
|
||||||
|
// Construction.
|
||||||
|
public AjaxResponse_Search_Organisation(SaxModel_Online model) : base(model) { }
|
||||||
|
// Organisation list.
|
||||||
|
public OrganisationData Organisation { get; set; }
|
||||||
|
}
|
||||||
|
// Ajax request.
|
||||||
|
[HttpPost]
|
||||||
|
[Route("Search/Ajax/Organisation")]
|
||||||
|
[Route("Search/Ajax/GetOrganisation")]
|
||||||
|
public IActionResult GetProfileOrganisation(Model_Search_Organisations model)
|
||||||
|
{
|
||||||
|
String fn = GetType().Name + ".GetProfileOrganisation";
|
||||||
|
AjaxResponse_Search_Organisation responseData = new AjaxResponse_Search_Organisation(model);
|
||||||
|
String messageTitle = Localiser["label.organisations"];
|
||||||
|
|
||||||
|
// Validate session and referrer.
|
||||||
|
if (!ValidReferer) return Forbid();
|
||||||
|
if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData);
|
||||||
|
RefreshModel(model);
|
||||||
|
|
||||||
|
|
||||||
|
// Record disposable items as they are created so all can be disposed when needed.
|
||||||
|
using (DisposableCollection<SacsHierarchyItem> disposableItems = new DisposableCollection<SacsHierarchyItem>())
|
||||||
|
{
|
||||||
|
|
||||||
|
// Retrieve organisation.
|
||||||
|
SysId organisationId = model.ExtractSysId(model.OrganisationId);
|
||||||
|
if (!SysId.IsValid(organisationId))
|
||||||
|
{
|
||||||
|
SaLogger.Warn(fn + " Organisation Id not supplied.");
|
||||||
|
return Json(responseData);
|
||||||
|
}
|
||||||
|
SaxOrganisation organisation = AccountMgr.GetOrganisationById(organisationId);
|
||||||
|
if (organisation == null)
|
||||||
|
{
|
||||||
|
SaLogger.Warn(fn + " Failed to retrieve organisation. Id: " + model.OrganisationId);
|
||||||
|
return Json(responseData);
|
||||||
|
}
|
||||||
|
disposableItems.Add(organisation);
|
||||||
|
|
||||||
|
// Populate response.
|
||||||
|
OrganisationData organisationData = new OrganisationData()
|
||||||
|
{
|
||||||
|
Id = model.EncryptId(organisation.Id),
|
||||||
|
Name = organisation.Name,
|
||||||
|
SportId = model.GetEncryptedSportId(organisation.SportIdPrimary),
|
||||||
|
SportName = model.GetSportCaption(organisation.SportIdPrimary),
|
||||||
|
RegionId = model.GetEncryptedRegionId(organisation.RegionIdPrimary),
|
||||||
|
RegionName = model.GetRegionCaption(organisation.RegionIdPrimary),
|
||||||
|
};
|
||||||
|
responseData.Organisation = organisationData;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Complete response.
|
||||||
|
responseData.Success = true;
|
||||||
|
return Json(responseData);
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
}
|
||||||
|
//=======================================================================
|
||||||
|
}
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
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.Net.Core.Web.Base.App;
|
||||||
|
using Saxonite.Net.Core.Web.Online.Models;
|
||||||
|
using Saxonite.Net.Standard.Base.Bus;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||||
|
{
|
||||||
|
//=======================================================================
|
||||||
|
// Online Search Controller.
|
||||||
|
//=======================================================================
|
||||||
|
public partial class SearchController : SaxController_Online
|
||||||
|
{
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
// Construction.
|
||||||
|
public SearchController(SaxLocaliser localiser, ILogger<HomeController> logger) :
|
||||||
|
base(localiser, logger)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult Index()
|
||||||
|
{
|
||||||
|
// Validate session.
|
||||||
|
if (!ValidUserSession)
|
||||||
|
return RedirectToAction("", "");
|
||||||
|
|
||||||
|
// No 'Index' view as yet - default to home page.
|
||||||
|
return RedirectToAction("", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
/// <summary>
|
||||||
|
/// Search - Organisations.
|
||||||
|
/// </summary>
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult Organisations()
|
||||||
|
{
|
||||||
|
// Validate session.
|
||||||
|
if (!ValidUserSession)
|
||||||
|
return RedirectToAction("", "");
|
||||||
|
|
||||||
|
// Model.
|
||||||
|
Model_Search_Organisations model = new Model_Search_Organisations(Localiser);
|
||||||
|
model.Paging.PageNo = 1;
|
||||||
|
model.Paging.PageLength = 12;
|
||||||
|
|
||||||
|
return View(model);
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
}
|
||||||
|
//=======================================================================
|
||||||
|
}
|
||||||
@@ -44,8 +44,8 @@ namespace Saxonite.Net.Core.Web.Online.Models
|
|||||||
return (Sax.Gender)StringUtil.ToShort(AccountGender);
|
return (Sax.Gender)StringUtil.ToShort(AccountGender);
|
||||||
}
|
}
|
||||||
public String AccountDobDay { get; set; }
|
public String AccountDobDay { get; set; }
|
||||||
public String AccountDobMonth{ get; set; }
|
public String AccountDobMonth { get; set; }
|
||||||
public String AccountDobYear{ get; set; }
|
public String AccountDobYear { get; set; }
|
||||||
// Regions.
|
// Regions.
|
||||||
public String AccountRegionIdCountry { get; set; }
|
public String AccountRegionIdCountry { get; set; }
|
||||||
public String AccountRegionCaptionCountry { get; }
|
public String AccountRegionCaptionCountry { get; }
|
||||||
@@ -71,6 +71,7 @@ namespace Saxonite.Net.Core.Web.Online.Models
|
|||||||
get { return (Sax.SportOfficiating)SportOfficiatingCodes.GetTypeForCode(ProfileSportOfficiatingCode); }
|
get { return (Sax.SportOfficiating)SportOfficiatingCodes.GetTypeForCode(ProfileSportOfficiatingCode); }
|
||||||
set { ProfileSportOfficiatingCode = SportOfficiatingCodes.GetCodeForType(value); }
|
set { ProfileSportOfficiatingCode = SportOfficiatingCodes.GetCodeForType(value); }
|
||||||
}
|
}
|
||||||
|
public String ProfileSportAbout { get; set; }
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
// Validate users's contact details.
|
// Validate users's contact details.
|
||||||
@@ -175,6 +176,17 @@ namespace Saxonite.Net.Core.Web.Online.Models
|
|||||||
responseData.SetControlError(nameof(ProfileSportId), Localiser["msg.validation.mandatory.value"]);
|
responseData.SetControlError(nameof(ProfileSportId), Localiser["msg.validation.mandatory.value"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// About.
|
||||||
|
if (ProfileSportAbout != null)
|
||||||
|
{
|
||||||
|
responseData.SetControlValue(nameof(ProfileSportAbout), ProfileSportAbout);
|
||||||
|
if (!StringUtil.IsEmpty(ProfileSportAbout))
|
||||||
|
{
|
||||||
|
if (StringUtil.GetLength(ProfileSportAbout) > GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserSport_About))
|
||||||
|
responseData.SetControlError(nameof(ProfileSportAbout), Localiser["msg.validation.maximum.length", GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserSport_About)]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return !responseData.HasControlErrors();
|
return !responseData.HasControlErrors();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,57 @@
|
|||||||
|
using Sarand.Net.Standard.Base.Bus;
|
||||||
|
using Sarand.Net.Standard.Base.Core;
|
||||||
|
using Sarand.Net.Standard.Base.Helpers;
|
||||||
|
using Sarand.Net.Standard.Base.Utils;
|
||||||
|
using Saxonite.Net.Core.Web.Base.App;
|
||||||
|
using Saxonite.Net.Core.Web.Base.Controllers;
|
||||||
|
using Saxonite.Net.Core.Web.Base.Models;
|
||||||
|
using Saxonite.Net.Standard.Base.App;
|
||||||
|
using Saxonite.Net.Standard.Base.Bus;
|
||||||
|
using Saxonite.Net.Standard.Base.Helpers;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Saxonite.Net.Core.Web.Online.Models
|
||||||
|
{
|
||||||
|
//=======================================================================
|
||||||
|
public class Model_Search_Organisations : SaxModel_Online
|
||||||
|
{
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
// Construction.
|
||||||
|
public Model_Search_Organisations(SaxLocaliser localiser) :
|
||||||
|
base(localiser)
|
||||||
|
{
|
||||||
|
//AdditionalFiles_CSS.Add("css/sax-src-org.css");
|
||||||
|
AdditionalFiles_JS.Add("js/sax-src-org.js");
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
// Page configuration.
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
// Form properties.
|
||||||
|
public class FilterData
|
||||||
|
{
|
||||||
|
public String Organisation { get; set; }
|
||||||
|
public String Type { get; set; }
|
||||||
|
public String Category { get; set; }
|
||||||
|
public String RegionId { get; set; }
|
||||||
|
public String SportId { get; set; }
|
||||||
|
}
|
||||||
|
public FilterData Filter { get; } = new FilterData();
|
||||||
|
public Sax.OrganisationType FilterOrganisationType { get { return (Sax.OrganisationType)OrganisationTypeCodes.GetTypeForCode(Filter.Type); } }
|
||||||
|
public Sax.OrganisationCategory FilterOrganisationCategory { get { return (Sax.OrganisationCategory)OrganisationCategoryCodes.GetTypeForCode(Filter.Category); } }
|
||||||
|
public SysId FilterSportId { get { return ExtractSysId(Filter.SportId); } }
|
||||||
|
public SysId FilterRegionId { get { return ExtractSysId(Filter.RegionId); } }
|
||||||
|
public String OrganisationId { get; set; }
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
// Validation.
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
}
|
||||||
|
//=======================================================================
|
||||||
|
}
|
||||||
@@ -127,6 +127,7 @@ namespace Saxonite.Net.Core.Web.Online.Models
|
|||||||
public static String ParamName_IdObfuscation_Id { get; } = "iob";
|
public static String ParamName_IdObfuscation_Id { get; } = "iob";
|
||||||
public String EncryptId(SysId id)
|
public String EncryptId(SysId id)
|
||||||
{
|
{
|
||||||
|
if (!SysId.IsValid(id)) return "";
|
||||||
NameValueCollection idObfuscationParams = new NameValueCollection();
|
NameValueCollection idObfuscationParams = new NameValueCollection();
|
||||||
idObfuscationParams.Add(ParamName_IdObfuscation_Id, SysId.ToString(id));
|
idObfuscationParams.Add(ParamName_IdObfuscation_Id, SysId.ToString(id));
|
||||||
return SaxController_Base.EncryptParameters(idObfuscationParams, Base64IV_IdObfuscation, Base64Key_IdObfuscation);
|
return SaxController_Base.EncryptParameters(idObfuscationParams, Base64IV_IdObfuscation, Base64Key_IdObfuscation);
|
||||||
@@ -143,9 +144,10 @@ namespace Saxonite.Net.Core.Web.Online.Models
|
|||||||
// Reference Data.
|
// Reference Data.
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
// Regions.
|
// Regions.
|
||||||
/// <summary>Region Data class - to be JSON serialised in Ajax responses.</summary>
|
/// <summary>Region Data - to be JSON serialised in Ajax responses.</summary>
|
||||||
public class RegionData
|
public class RegionData
|
||||||
{
|
{
|
||||||
|
/// <summary>Encrypted Id</summary>
|
||||||
public String Id { get; set; }
|
public String Id { get; set; }
|
||||||
public int RegionType { get; set; }
|
public int RegionType { get; set; }
|
||||||
public String RegionTypeCode { get; set; }
|
public String RegionTypeCode { get; set; }
|
||||||
@@ -162,7 +164,7 @@ namespace Saxonite.Net.Core.Web.Online.Models
|
|||||||
{
|
{
|
||||||
RegionData regionData = new RegionData()
|
RegionData regionData = new RegionData()
|
||||||
{
|
{
|
||||||
Id = SysId.ToString(region.Id),
|
Id = GetEncryptedRegionId(region.Id),
|
||||||
RegionType = (int)region.RegionType,
|
RegionType = (int)region.RegionType,
|
||||||
RegionTypeCode = region.RegionType.ToString(),
|
RegionTypeCode = region.RegionType.ToString(),
|
||||||
RegionTypeDesc = Localiser.GetRegionTypeCaption(region.RegionType),
|
RegionTypeDesc = Localiser.GetRegionTypeCaption(region.RegionType),
|
||||||
@@ -175,6 +177,10 @@ namespace Saxonite.Net.Core.Web.Online.Models
|
|||||||
}
|
}
|
||||||
return regions;
|
return regions;
|
||||||
}
|
}
|
||||||
|
public String GetEncryptedRegionId(SysId regionId)
|
||||||
|
{
|
||||||
|
return DataCacheConsole.GetEncryptedRegionId(regionId, EncryptId(regionId));
|
||||||
|
}
|
||||||
public String GetRegionCaption(SysId regionId)
|
public String GetRegionCaption(SysId regionId)
|
||||||
{
|
{
|
||||||
SaxRegion.Data region = DataCacheConsole.GetAllRegions().Find(item => item.Id.Equals(regionId));
|
SaxRegion.Data region = DataCacheConsole.GetAllRegions().Find(item => item.Id.Equals(regionId));
|
||||||
@@ -187,9 +193,11 @@ namespace Saxonite.Net.Core.Web.Online.Models
|
|||||||
|
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
// Sports.
|
// Sports.
|
||||||
|
/// <summary>Sport Data - to be JSON serialised in Ajax responses.</summary>
|
||||||
public class SportData
|
public class SportData
|
||||||
{
|
{
|
||||||
public Int32 Id { get; set; }
|
/// <summary>Encrypted Id</summary>
|
||||||
|
public String Id { get; set; }
|
||||||
public String Name { get; set; }
|
public String Name { get; set; }
|
||||||
public String StatusCode { get; set; }
|
public String StatusCode { get; set; }
|
||||||
public String StatusDesc { get; set; }
|
public String StatusDesc { get; set; }
|
||||||
@@ -201,7 +209,7 @@ namespace Saxonite.Net.Core.Web.Online.Models
|
|||||||
{
|
{
|
||||||
SportData sportData = new SportData()
|
SportData sportData = new SportData()
|
||||||
{
|
{
|
||||||
Id = SysId.ToInt(sport.Id),
|
Id = GetEncryptedSportId(sport.Id),
|
||||||
Name = GetSportCaption(sport),
|
Name = GetSportCaption(sport),
|
||||||
StatusCode = sport.StatusCode,
|
StatusCode = sport.StatusCode,
|
||||||
StatusDesc = Localiser.GetStatusCaption(sport.Status)
|
StatusDesc = Localiser.GetStatusCaption(sport.Status)
|
||||||
@@ -210,6 +218,10 @@ namespace Saxonite.Net.Core.Web.Online.Models
|
|||||||
}
|
}
|
||||||
return sports;
|
return sports;
|
||||||
}
|
}
|
||||||
|
public String GetEncryptedSportId(SysId sportId)
|
||||||
|
{
|
||||||
|
return DataCacheConsole.GetEncryptedSportId(sportId, EncryptId(sportId));
|
||||||
|
}
|
||||||
// Sport caption.
|
// Sport caption.
|
||||||
public String GetSportCaption(SysId sportId)
|
public String GetSportCaption(SysId sportId)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="navbar-toggler-icon"></span></a>
|
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="navbar-toggler-icon"></span></a>
|
||||||
<ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">
|
<ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">
|
||||||
<li class="sax-dropdown-item sax-action sax-add" onclick="sax.addSportExperience()"><div class="sax-label">@(Localiser["label.add"])</div></li>
|
<li class="sax-dropdown-item sax-action sax-add" onclick="sax.addSportExperience()"><div class="sax-label">@(Localiser["label.add"])</div></li>
|
||||||
|
<li class="sax-dropdown-item sax-action sax-close" onclick="sax.closeProfileSportExperience()"><div class="sax-label">@(Localiser["label.close"])</div></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
@* Sport template *@
|
@* Sport template *@
|
||||||
<div class="sax-panel-item ProfileSport">
|
<div class="sax-panel-item ProfileSport">
|
||||||
<div class="sax-header row">
|
<div class="sax-header row">
|
||||||
<div class="col"><div class="SportName"></div></div>
|
<div class="col"><div class="sax-action sax-edit SportName"></div></div>
|
||||||
<div class="fixed">
|
<div class="fixed">
|
||||||
@* Burger menu *@
|
@* Burger menu *@
|
||||||
<ul class="nav navbar-nav navbar-light navbar-right sax-burger">
|
<ul class="nav navbar-nav navbar-light navbar-right sax-burger">
|
||||||
@@ -77,6 +77,7 @@
|
|||||||
|
|
||||||
<div id="dlgProfileSport" class="sax-dialog">
|
<div id="dlgProfileSport" class="sax-dialog">
|
||||||
|
|
||||||
|
<div class="spacer"></div>
|
||||||
@using (Html.BeginForm(FormMethod.Post, new { @id = "frmProfileSport", @class = "sax-form", @onSubmit = "return false;" }))
|
@using (Html.BeginForm(FormMethod.Post, new { @id = "frmProfileSport", @class = "sax-form", @onSubmit = "return false;" }))
|
||||||
{
|
{
|
||||||
<input type="hidden" class="UserSportId" name="UserSportId" />
|
<input type="hidden" class="UserSportId" name="UserSportId" />
|
||||||
@@ -84,39 +85,75 @@
|
|||||||
|
|
||||||
@* Sport *@
|
@* Sport *@
|
||||||
<div class="sax-form-control ProfileSportId">
|
<div class="sax-form-control ProfileSportId">
|
||||||
<div class="sax-label">
|
<div class="row">
|
||||||
<label for="ifProfileSport"><span>@Localiser["label.sport"]</span><span class="required"> *</span></label>
|
<div class="col-sm-3">
|
||||||
|
<div class="sax-label">
|
||||||
|
<label for="ifProfileSport"><span>@Localiser["label.sport"]</span><span class="required"> *</span></label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm">
|
||||||
|
<div class="sax-control row">
|
||||||
|
<input type="hidden" id="ifProfileSportId" class="ProfileSportId" name="ProfileSportId" />
|
||||||
|
<div class="col"><input type="text" id="ifProfileSport" class="ProfileSport sax-input" name="ProfileSport" readonly="readonly" maxlength=128 /></div>
|
||||||
|
<div class="fixed"><button class="SelectSport sax-button" style="min-width:auto;margin-left:4px;padding:4px 6px" onclick="sax.selectUserSport()">@Localiser["label.select"]</button></div>
|
||||||
|
</div>
|
||||||
|
<div class="sax-message"></div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="sax-control row">
|
</div>
|
||||||
<input type="hidden" id="ifProfileSportId" class="ProfileSportId" name="ProfileSportId" />
|
|
||||||
<div class="col"><input type="text" id="ifProfileSport" class="ProfileSport sax-input" name="ProfileSport" readonly="readonly" maxlength=128 /></div>
|
@* About *@
|
||||||
<div class="fixed"><button class="SelectSport sax-button" style="min-width:auto;margin-left:4px;padding:4px 6px" onclick="sax.selectUserSport()">@Localiser["label.select"]</button></div>
|
<div class="sax-form-control ProfileSportAbout">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-3">
|
||||||
|
<div class="sax-label">
|
||||||
|
<label for="ifProfileSportAbout"><span>@Localiser["label.about"]</span></label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm">
|
||||||
|
<div class="sax-control">
|
||||||
|
@Html.TextAreaFor(model => model.ProfileSportAbout, new { @id = "ifProfileSportAbout", @class = "ProfileSportAbout sax-textarea", @rows = 4, @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserSport_About) })
|
||||||
|
</div>
|
||||||
|
<div class="sax-message"></div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="sax-message"></div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@* Sport Participation *@
|
@* Sport Participation *@
|
||||||
<div class="sax-form-control ProfileSportParticipation">
|
<div class="sax-form-control ProfileSportParticipation">
|
||||||
<div class="sax-label">
|
<div class="row">
|
||||||
<label for="cbProfileSportParticipation"><span>@Localiser["label.participation"]</span></label>
|
<div class="col-sm-3">
|
||||||
|
<div class="sax-label">
|
||||||
|
<label for="cbProfileSportParticipation"><span>@Localiser["label.participation"]</span></label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm">
|
||||||
|
<div class="sax-control">
|
||||||
|
@Html.DropDownListFor(model => model.ProfileSportParticipationCode, Model.SportParticipationCodesForSelect, "", new { @id = "cbProfileSportParticipation", @class = "ProfileSportParticipation sax-select" })
|
||||||
|
</div>
|
||||||
|
<div class="sax-message"></div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="sax-control">
|
|
||||||
@Html.DropDownListFor(model => model.ProfileSportParticipationCode, Model.SportParticipationCodesForSelect, "", new { @id = "cbProfileSportParticipation", @class = "ProfileSportParticipation sax-select" })
|
|
||||||
</div>
|
|
||||||
<div class="sax-message"></div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@* Sport Officiating *@
|
@* Sport Officiating *@
|
||||||
<div class="sax-form-control ProfileSportOfficiating">
|
<div class="sax-form-control ProfileSportOfficiating">
|
||||||
<div class="sax-label">
|
<div class="row">
|
||||||
<label for="cbProfileSportOfficiating"><span>@Localiser["label.officiating"]</span></label>
|
<div class="col-sm-3">
|
||||||
|
<div class="sax-label">
|
||||||
|
<label for="cbProfileSportOfficiating"><span>@Localiser["label.officiating"]</span></label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm">
|
||||||
|
<div class="sax-control">
|
||||||
|
@Html.DropDownListFor(model => model.ProfileSportOfficiatingCode, Model.SportOfficiatingCodesForSelect, "", new { @id = "cbProfileSportOfficiating", @class = "ProfileSportOfficiating sax-select" })
|
||||||
|
</div>
|
||||||
|
<div class="sax-message"></div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="sax-control">
|
|
||||||
@Html.DropDownListFor(model => model.ProfileSportOfficiatingCode, Model.SportOfficiatingCodesForSelect, "", new { @id = "cbProfileSportOfficiating", @class = "ProfileSportOfficiating sax-select" })
|
|
||||||
</div>
|
|
||||||
<div class="sax-message"></div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
<div class="spacer"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
<link rel="stylesheet" href="~/css/sax-reg-sel.css?@Model.HrefVersion" />
|
<link rel="stylesheet" href="~/css/sax-reg-sel.css?@Model.HrefVersion" />
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
sax.data.selectRegion = {};
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div id="dlgSelectRegion" class="sax-dialog sax-form">
|
<div id="dlgSelectRegion" class="sax-dialog sax-form">
|
||||||
@@ -23,7 +22,7 @@
|
|||||||
<div class="RegionFilter sax-form">
|
<div class="RegionFilter sax-form">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col right"><div class="sax-label">@Localiser["label.search"]</div></div>
|
<div class="col right"><div class="sax-label">@Localiser["label.search"]</div></div>
|
||||||
<div class="fixed"><input type="search" id="ifRegionFilter" class="sax-input" maxlength="16" autocomplete="off" onkeyup="sax.data.selectRegion.fn.displayRegions();" /></div>
|
<div class="fixed"><input type="search" id="ifRegionFilter" class="sax-input" maxlength="16" autocomplete="off" onkeyup="sax.mdl.selectRegion.fn.displayRegions();" /></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="spacer2"></div>
|
<div class="spacer2"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
<script src="~/js/sax-resultsPaging.js?@Model.HrefVersion"></script>
|
<script src="~/js/sax-resultsPaging.js?@Model.HrefVersion"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
sax.resultsPaging.msg.pageInfo = '@Localiser.GetJavascriptText("label.page.info","{0}","{1}")';
|
sax.mdl.resultsPaging.msg.pageInfo = '@Localiser.GetJavascriptText("label.page.info","{0}","{1}")';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@* Results paging *@
|
@* Results paging *@
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
<link rel="stylesheet" href="~/css/sax-spt-sel.css?@Model.HrefVersion" />
|
<link rel="stylesheet" href="~/css/sax-spt-sel.css?@Model.HrefVersion" />
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
sax.data.selectSport = {};
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div id="dlgSelectSport" class="sax-dialog sax-form">
|
<div id="dlgSelectSport" class="sax-dialog sax-form">
|
||||||
@@ -23,7 +22,7 @@
|
|||||||
<div class="SportFilter sax-form">
|
<div class="SportFilter sax-form">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col right"><div class="sax-label">@Localiser["label.search"]</div></div>
|
<div class="col right"><div class="sax-label">@Localiser["label.search"]</div></div>
|
||||||
<div class="fixed"><input type="search" id="ifSportFilter" class="sax-input" maxlength="16" autocomplete="off" onkeyup="sax.data.selectSport.fn.displaySports();" /></div>
|
<div class="fixed"><input type="search" id="ifSportFilter" class="sax-input" maxlength="16" autocomplete="off" oninput="sax.mdl.selectSport.fn.displaySports();" /></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="spacer2"></div>
|
<div class="spacer2"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,163 @@
|
|||||||
|
@model Model_Search_Organisations
|
||||||
|
@inject SaxLocaliser Localiser
|
||||||
|
@{
|
||||||
|
ViewData["Title"] = "Search Organisations";
|
||||||
|
}
|
||||||
|
|
||||||
|
<div class="sax-panel Organisations">
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
sax.lbl.view = '@(Localiser.GetJavascriptText("label.view"))';
|
||||||
|
sax.lbl.follow = '@(Localiser.GetJavascriptText("label.follow"))';
|
||||||
|
sax.dlg.title.organisation = '@(Localiser.GetJavascriptText("label.organisation"))';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<div class="col-sm-5">
|
||||||
|
|
||||||
|
@* Filter Form *@
|
||||||
|
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmOrganisationFilter", @class = "sax-form", @action = "#", @method = "POST", onsubmit = "return false;" }))
|
||||||
|
{
|
||||||
|
|
||||||
|
@* Filter panel *@
|
||||||
|
<div class="sax-panel-filter mr-sm-2">
|
||||||
|
@* Filter header *@
|
||||||
|
<div class="sax-header row">
|
||||||
|
@* Filter caption *@
|
||||||
|
<div class="col"><div class="sax-caption">@Localiser["organisation.caption.organisations"]</div></div>
|
||||||
|
<div class="fixed row">
|
||||||
|
<div class="col">
|
||||||
|
<partial name="~/Views/Common/ResultsPaging.cshtml" />
|
||||||
|
</div>
|
||||||
|
<div class="fixed">
|
||||||
|
@* Burger menu *@
|
||||||
|
<ul class="nav navbar-nav navbar-dark navbar-right sax-burger">
|
||||||
|
<li class="dropdown-toggle caret-off">
|
||||||
|
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="navbar-toggler-icon"></span></a>
|
||||||
|
<ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">@* Menu items will be inserted here. *@</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="sax-content">
|
||||||
|
|
||||||
|
@* Generic Organisation filter - name etc. *@
|
||||||
|
<div class="sax-control row">
|
||||||
|
<div class="col-sm-4"><div class="sax-label text-left text-sm-right">@Localiser["label.search"]</div></div>
|
||||||
|
<div class="col-sm row">
|
||||||
|
<div class="col"><input type="search" name="Filter.Organisation" class="sax-input FilterOrganisation" maxlength="32" autocomplete="off" /></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@* Organisation type *@
|
||||||
|
<div class="sax-control row">
|
||||||
|
<div class="col-sm-4"><div class="sax-label text-left text-sm-right">@Localiser["label.type"]</div></div>
|
||||||
|
<div class="col-sm">
|
||||||
|
@Html.DropDownListFor(model => model.Filter.Category, Model.OrganisationCategoriesForSelect, Localiser["label.any"], new { @id = "", @class = "FilterCategory sax-select" })
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@* Organisation sport *@
|
||||||
|
<div class="row pb4">
|
||||||
|
<div class="col-sm-4 sax-label text-left text-sm-right">@Localiser["label.sport"]</div>
|
||||||
|
<div class="col-sm">
|
||||||
|
<div class="row">
|
||||||
|
@Html.HiddenFor(model => model.Filter.SportId, new { @id = "", @class = "FilterSportId" })
|
||||||
|
<div class="col"><input type="text" class="FilterSportCaption sax-input" readonly="readonly" ondblclick="sax.searchOrganisations.selectFilterSport()" /> </div>
|
||||||
|
<div class="fixed row">
|
||||||
|
<div class="sax-action" onclick="sax.searchOrganisations.selectFilterSport();"><img src="~/img/action/search24.png" alt="@(Localiser["label.search"])" title="@(Localiser["label.search"])" /></div>
|
||||||
|
<div class="sax-action" onclick="sax.searchOrganisations.clearFilterSport();"><img src="~/img/action/delete24.png" alt="@(Localiser["label.clear"])" title="@(Localiser["label.clear"])" /></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@* Organisation region *@
|
||||||
|
<div class="row pb4">
|
||||||
|
<div class="col-sm-4 sax-label text-left text-sm-right">@Localiser["label.region"]</div>
|
||||||
|
<div class="col-sm">
|
||||||
|
<div class="row">
|
||||||
|
@Html.HiddenFor(model => model.Filter.RegionId, new { @id = "", @class = "FilterRegionId" })
|
||||||
|
<div class="col"><input type="text" class="FilterRegionCaption sax-input" readonly="readonly" ondblclick="sax.searchOrganisations.selectFilterRegion()" /> </div>
|
||||||
|
<div class="fixed row">
|
||||||
|
<div class="sax-action" onclick="sax.searchOrganisations.selectFilterRegion();"><img src="~/img/action/search24.png" alt="@(Localiser["label.search"])" title="@(Localiser["label.search"])" /></div>
|
||||||
|
<div class="sax-action" onclick="sax.searchOrganisations.clearFilterRegion();"><img src="~/img/action/delete24.png" alt="@(Localiser["label.clear"])" title="@(Localiser["label.clear"])" /></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@* Filter item templates *@
|
||||||
|
<div class="sax-panel-item-template">
|
||||||
|
@* Burger dropdown item template - ul is ignored *@
|
||||||
|
<ul class="sax-dropdown-menu Organisations">
|
||||||
|
<li class="sax-dropdown-item sax-action"><div class="sax-label">...</div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col">
|
||||||
|
|
||||||
|
@* Results Panel *@
|
||||||
|
<div class="sax-panel-results">
|
||||||
|
<div class="sax-panel-messages"></div>
|
||||||
|
<div class="sax-panel-item-list"></div>
|
||||||
|
|
||||||
|
@* Element templates *@
|
||||||
|
<div class="sax-panel-item-template">
|
||||||
|
|
||||||
|
@* Item template *@
|
||||||
|
<div class="sax-panel-item Organisation">
|
||||||
|
<div class="sax-header row">
|
||||||
|
<div class="col">
|
||||||
|
@* Organisation caption *@
|
||||||
|
<div class="sax-caption"><div class="sax-action"><span class="OrganisationName"></span></div></div>
|
||||||
|
</div>
|
||||||
|
<div class="fixed sax-actions">
|
||||||
|
@* Burger menu *@
|
||||||
|
<ul class="nav navbar-nav navbar-light navbar-right sax-burger">
|
||||||
|
<li class="dropdown-toggle caret-off">
|
||||||
|
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="navbar-toggler-icon"></span></a>
|
||||||
|
<ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">@* Menu items will be inserted here. *@</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="sax-content">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-6"><div class="OrganisationCategory"></div></div>
|
||||||
|
<div class="col-sm-6 text-sm-right"><div class="OrganisationLocation"></div></div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-6"><div class="OrganisationSport"></div></div>
|
||||||
|
<div class="col-sm-6 text-sm-right"><div class="OrganisationLocation"></div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@* Burger dropdown item template - ul is ignored *@
|
||||||
|
<ul class="sax-dropdown-menu Organisation">
|
||||||
|
<li class="sax-dropdown-item sax-action"><div class="sax-label">...</div></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<partial name="~/Views/Common/RegionSelect.cshtml" />
|
||||||
|
<partial name="~/Views/Common/SportSelect.cshtml" />
|
||||||
|
<partial name="Panel-OrganisationDialog.cshtml" />
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
@model Model_Search_Organisations
|
||||||
|
@inject SaxLocaliser Localiser
|
||||||
|
@{
|
||||||
|
/* Organisation dialog panel */
|
||||||
|
}
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
</script>
|
||||||
|
|
||||||
|
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmOrganisationId", @class = "sax-form" }))
|
||||||
|
{
|
||||||
|
<input type="hidden" name="OrganisationId" class="OrganisationId" />
|
||||||
|
}
|
||||||
|
<div id="dlgOrganisation" class="sax-dialog" title="">
|
||||||
|
|
||||||
|
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmOrganisation", @class = "sax-form", @onSubmit = "return false;" }))
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
</div>
|
||||||
@@ -55,7 +55,8 @@
|
|||||||
|
|
||||||
@* Scripts *@
|
@* Scripts *@
|
||||||
<script>
|
<script>
|
||||||
var sax = sax || { page: {}, url: {}, links: {}, data: {}, form: {}, ajax: {}, msg: {}, lbl: {}, dlg: { title: {}, btn: {} }, $frm: {}, $dlg: {}, $pnl: {} };
|
var sax = sax || {
|
||||||
|
page: {}, url: {}, links: {}, data: {}, form: {}, mdl: {}, ajax: {}, msg: {}, lbl: {}, dlg: { title: {}, btn: {} }, $frm: {}, $dlg: {}, $pnl: {} };
|
||||||
sax.url.base = '@Model.RedirectLocation.Base';
|
sax.url.base = '@Model.RedirectLocation.Base';
|
||||||
sax.url.home = '@Model.RedirectLocation.Home';
|
sax.url.home = '@Model.RedirectLocation.Home';
|
||||||
sax.url.sessionExpired = '@Model.RedirectLocation.Home_SessionExpired';
|
sax.url.sessionExpired = '@Model.RedirectLocation.Home_SessionExpired';
|
||||||
@@ -143,6 +144,14 @@
|
|||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="nav-item dropdown">
|
||||||
|
<a class="nav-link text-dark dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
|
@Localiser["label.search"]
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||||
|
<div class="dropdown-item text-dark sax-action" onclick="sax.goToPage('Search/Organisations');">@Localiser["organisation.caption.organisations"]</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
<li class="nav-item dropdown">
|
<li class="nav-item dropdown">
|
||||||
<a class="nav-link text-dark dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
<a class="nav-link text-dark dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
@Localiser["label.security"]
|
@Localiser["label.security"]
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
{
|
{
|
||||||
margin: 8px auto;
|
margin: 8px auto;
|
||||||
background-color: #f8f8f8;
|
background-color: #f8f8f8;
|
||||||
border: solid 2px var(--color-primary);
|
border: solid 1px var(--color-primary);
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
-webkit-border-radius: 6px;
|
-webkit-border-radius: 6px;
|
||||||
-moz-border-radius: 6px;
|
-moz-border-radius: 6px;
|
||||||
@@ -159,6 +159,11 @@
|
|||||||
background-image: url('../img/action/process24.png');
|
background-image: url('../img/action/process24.png');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sax-header ul.nav.sax-burger ul.sax-dropdown-menu li.sax-action.sax-dropdown-item.sax-close
|
||||||
|
{
|
||||||
|
background-image: url('../img/action/prev24.png');
|
||||||
|
}
|
||||||
|
|
||||||
.sax-header ul.nav.sax-burger ul.sax-dropdown-menu li.sax-action.sax-dropdown-item:hover
|
.sax-header ul.nav.sax-burger ul.sax-dropdown-menu li.sax-action.sax-dropdown-item:hover
|
||||||
{
|
{
|
||||||
background-color: #f8f8f8;
|
background-color: #f8f8f8;
|
||||||
|
|||||||
@@ -223,9 +223,9 @@
|
|||||||
|
|
||||||
/* Buttons */
|
/* Buttons */
|
||||||
|
|
||||||
.sax-form button.sax-button,
|
button.sax-button,
|
||||||
.sax-form input[type="button"].sax-button,
|
input[type="button"].sax-button,
|
||||||
.sax-form input[type="submit"].sax-button
|
input[type="submit"].sax-button
|
||||||
{
|
{
|
||||||
height: auto;
|
height: auto;
|
||||||
width: auto;
|
width: auto;
|
||||||
@@ -242,9 +242,9 @@
|
|||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sax-form button.sax-button:hover,
|
button.sax-button:hover,
|
||||||
.sax-form input[type="button"].sax-button:hover,
|
input[type="button"].sax-button:hover,
|
||||||
.sax-form input[type="submit"].sax-button:hover
|
input[type="submit"].sax-button:hover
|
||||||
{
|
{
|
||||||
background-color: #EFE8F0;
|
background-color: #EFE8F0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -288,7 +288,7 @@ a:focus
|
|||||||
|
|
||||||
.ui-dialog.ui-widget.ui-widget-content
|
.ui-dialog.ui-widget.ui-widget-content
|
||||||
{
|
{
|
||||||
border-width: 2px;
|
border-width: 1px;
|
||||||
border-color: #606060;
|
border-color: #606060;
|
||||||
border-color: var(--color-dialog);
|
border-color: var(--color-dialog);
|
||||||
-moz-box-shadow: 4px 4px 6px var(--color-dialog);
|
-moz-box-shadow: 4px 4px 6px var(--color-dialog);
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
var $items = $('.sax-panel-item-list', $pnl.results).hide().empty();
|
var $items = $('.sax-panel-item-list', $pnl.results).hide().empty();
|
||||||
if (!response.success) return;
|
if (!response.success) return;
|
||||||
sax.data.articleOrganisations = response.organisations;
|
sax.data.articleOrganisations = response.organisations;
|
||||||
sax.refreshPaging(response);
|
sax.refreshPaging(response, '#frmArticleFilter', sax.refreshResults);
|
||||||
// Menu.
|
// Menu.
|
||||||
let $mnu = $('.sax-burger ul.sax-dropdown-menu', $pnl.filter).empty();
|
let $mnu = $('.sax-burger ul.sax-dropdown-menu', $pnl.filter).empty();
|
||||||
$mnu.append(sax.getFilterMenuOption(sax.lbl.refresh, function () { sax.refreshResults(); }, 'sax-refresh'));
|
$mnu.append(sax.getFilterMenuOption(sax.lbl.refresh, function () { sax.refreshResults(); }, 'sax-refresh'));
|
||||||
@@ -405,7 +405,7 @@
|
|||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
sax.selectSport = function ()
|
sax.selectSport = function ()
|
||||||
{
|
{
|
||||||
sax.data.selectSport.fn.selectSport({ caption: sax.dlg.title.selectSport, sportId: $('#ifArticleSportId').val(), fnCallback: sax.onSelectSport })
|
sax.mdl.selectSport.fn.selectSport({ caption: sax.dlg.title.selectSport, sportId: $('#ifArticleSportId').val(), fnCallback: sax.onSelectSport })
|
||||||
}
|
}
|
||||||
sax.onSelectSport = function (sport)
|
sax.onSelectSport = function (sport)
|
||||||
{
|
{
|
||||||
@@ -416,7 +416,7 @@
|
|||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
sax.selectRegion = function ()
|
sax.selectRegion = function ()
|
||||||
{
|
{
|
||||||
sax.data.selectRegion.fn.selectRegion({ caption: sax.dlg.title.selectRegion, regionId: $('#ifArticleRegionId').val(), fnCallback: sax.onSelectRegion })
|
sax.mdl.selectRegion.fn.selectRegion({ caption: sax.dlg.title.selectRegion, regionId: $('#ifArticleRegionId').val(), fnCallback: sax.onSelectRegion })
|
||||||
}
|
}
|
||||||
sax.onSelectRegion = function (region)
|
sax.onSelectRegion = function (region)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -135,8 +135,8 @@
|
|||||||
}
|
}
|
||||||
sax.refreshPaging = function (response, context, refreshFn)
|
sax.refreshPaging = function (response, context, refreshFn)
|
||||||
{
|
{
|
||||||
if (sax.resultsPaging.fn.refreshPaging)
|
if (sax.mdl.resultsPaging.fn.refreshPaging)
|
||||||
sax.resultsPaging.fn.refreshPaging(response.paging, context, refreshFn);
|
sax.mdl.resultsPaging.fn.refreshPaging(response.paging, context, refreshFn);
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
|
|||||||
@@ -154,10 +154,6 @@
|
|||||||
$('.MemberDisplayName,.MemberTitle,.MemberFirstName,.MemberLastName', $frmM).hide();
|
$('.MemberDisplayName,.MemberTitle,.MemberFirstName,.MemberLastName', $frmM).hide();
|
||||||
sax.clearControlErrors();
|
sax.clearControlErrors();
|
||||||
}
|
}
|
||||||
sax.doCreateItem = function ()
|
|
||||||
{
|
|
||||||
sax.storeItem();
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
sax.updateItem = function (item)
|
sax.updateItem = function (item)
|
||||||
@@ -189,10 +185,6 @@
|
|||||||
$dlg.member.dialog('option', 'title', sax.dlg.title.updateMember);
|
$dlg.member.dialog('option', 'title', sax.dlg.title.updateMember);
|
||||||
sax.openDialog($dlg.member, 600, 600);
|
sax.openDialog($dlg.member, 600, 600);
|
||||||
}
|
}
|
||||||
sax.doUpdateItem = function ()
|
|
||||||
{
|
|
||||||
sax.storeItem();
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
// Member Roles.
|
// Member Roles.
|
||||||
@@ -315,7 +307,7 @@
|
|||||||
$('.sax-input', $frm.member).on('input', function () { sax.clearControlError(this); });
|
$('.sax-input', $frm.member).on('input', function () { sax.clearControlError(this); });
|
||||||
|
|
||||||
var opt = sax.dlgOpts();
|
var opt = sax.dlgOpts();
|
||||||
opt.buttons[sax.dlg.btn.ok] = function () { sax.doCreateItem(); };
|
opt.buttons[sax.dlg.btn.ok] = function () { sax.storeItem()onUpdateItem; };
|
||||||
opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); };
|
opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); };
|
||||||
$dlg.member = $('#dlgMember').dialog(opt);
|
$dlg.member = $('#dlgMember').dialog(opt);
|
||||||
|
|
||||||
|
|||||||
@@ -145,21 +145,10 @@
|
|||||||
sax.refreshResults(50);
|
sax.refreshResults(50);
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
|
||||||
sax.selectRegion = function ()
|
|
||||||
{
|
|
||||||
sax.data.selectRegion.fn.selectRegion({ caption: sax.dlg.title.selectRegion, regionId: $('#ifOpportunityRegionId').val(), fnCallback: sax.onSelectRegion })
|
|
||||||
}
|
|
||||||
sax.onSelectRegion = function (region)
|
|
||||||
{
|
|
||||||
sax.clearControlError($('#ifOpportunityRegionId').val(region.id));
|
|
||||||
$('#ifOpportunityRegionCaption').val(region ? region.name : '');
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
sax.selectSport = function ()
|
sax.selectSport = function ()
|
||||||
{
|
{
|
||||||
sax.data.selectSport.fn.selectSport({ caption: sax.dlg.title.selectSport, sportId: $('#ifOpportunitySportId').val(), fnCallback: sax.onSelectSport })
|
sax.mdl.selectSport.fn.selectSport({ caption: sax.dlg.title.selectSport, sportId: $('#ifOpportunitySportId').val(), fnCallback: sax.onSelectSport })
|
||||||
}
|
}
|
||||||
sax.onSelectSport = function (sport)
|
sax.onSelectSport = function (sport)
|
||||||
{
|
{
|
||||||
@@ -167,6 +156,17 @@
|
|||||||
$('#ifOpportunitySportCaption').val(sport ? sport.name : '');
|
$('#ifOpportunitySportCaption').val(sport ? sport.name : '');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
sax.selectRegion = function ()
|
||||||
|
{
|
||||||
|
sax.mdl.selectRegion.fn.selectRegion({ caption: sax.dlg.title.selectRegion, regionId: $('#ifOpportunityRegionId').val(), fnCallback: sax.onSelectRegion })
|
||||||
|
}
|
||||||
|
sax.onSelectRegion = function (region)
|
||||||
|
{
|
||||||
|
sax.clearControlError($('#ifOpportunityRegionId').val(region.id));
|
||||||
|
$('#ifOpportunityRegionCaption').val(region ? region.name : '');
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
sax.createItem = function ()
|
sax.createItem = function ()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
sax.selectOrgSport = function ()
|
sax.selectOrgSport = function ()
|
||||||
{
|
{
|
||||||
sax.data.selectSport.fn.selectSport({ caption: sax.dlg.title.selectSport, sportId: $('.OrganisationSportId', or.$frm).val(), fnCallback: sax.onSelectOrgSport })
|
sax.mdl.selectSport.fn.selectSport({ caption: sax.dlg.title.selectSport, sportId: $('.OrganisationSportId', or.$frm).val(), fnCallback: sax.onSelectOrgSport })
|
||||||
}
|
}
|
||||||
sax.onSelectOrgSport = function (sport)
|
sax.onSelectOrgSport = function (sport)
|
||||||
{
|
{
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
sax.selectOrgRegion = function ()
|
sax.selectOrgRegion = function ()
|
||||||
{
|
{
|
||||||
sax.data.selectRegion.fn.selectRegion({ caption: sax.dlg.title.selectRegion, regionId: $('.OrganisationRegionIdCountry', or.$frm).val(), typesInc:[30], fnCallback: sax.onSelectOrgRegion })
|
sax.mdl.selectRegion.fn.selectRegion({ caption: sax.dlg.title.selectRegion, regionId: $('.OrganisationRegionIdCountry', or.$frm).val(), typesInc:[30], fnCallback: sax.onSelectOrgRegion })
|
||||||
}
|
}
|
||||||
sax.onSelectOrgRegion = function (region)
|
sax.onSelectOrgRegion = function (region)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
(function (win, doc, undef)
|
(function (win, doc, undef)
|
||||||
{
|
{
|
||||||
"use strict";
|
"use strict";
|
||||||
let sr = sax.data.selectRegion;
|
let sr = sax.mdl.selectRegion = sax.mdl.selectRegion || {};
|
||||||
sr.regions = {}; sr.fn = {}; sr.ajax = {}; sr.itemIdPrefix = 'Rgn_';
|
sr.regions = {}; sr.fn = {}; sr.ajax = {}; sr.itemIdPrefix = 'Rgn_';
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
@@ -31,9 +31,9 @@
|
|||||||
}
|
}
|
||||||
sr.fn.refreshRegionsAndSelect = function (response)
|
sr.fn.refreshRegionsAndSelect = function (response)
|
||||||
{
|
{
|
||||||
|
//sax.debug('refreshRegionsAndSelect', response);
|
||||||
if (!response || !response.success) return;
|
if (!response || !response.success) return;
|
||||||
sr.regions = response.regions;
|
sr.regions = response.regions;
|
||||||
//sax.debug(sr.cfg);
|
|
||||||
sr.fn.showSelectRegion();
|
sr.fn.showSelectRegion();
|
||||||
}
|
}
|
||||||
sr.fn.showSelectRegion = function ()
|
sr.fn.showSelectRegion = function ()
|
||||||
@@ -61,8 +61,8 @@
|
|||||||
let $regionsAvail = $('.sax-selectRegion-regions.AvailableRegions', sr.$dlg).empty();
|
let $regionsAvail = $('.sax-selectRegion-regions.AvailableRegions', sr.$dlg).empty();
|
||||||
let $regionTmpl = $('.sax-panel-item-template .sax-panel-item.Region', sr.$dlg);
|
let $regionTmpl = $('.sax-panel-item-template .sax-panel-item.Region', sr.$dlg);
|
||||||
let regions = [...sr.regions];
|
let regions = [...sr.regions];
|
||||||
let typesInc = sr.cfg.typesInc||[];
|
let typesInc = sr.cfg.typesInc || [];
|
||||||
let typesExc = sr.cfg.typesExc||[];
|
let typesExc = sr.cfg.typesExc || [];
|
||||||
regions.sort(sr.fn.compareRegions);
|
regions.sort(sr.fn.compareRegions);
|
||||||
for (let rgnIdx = 0; rgnIdx < regions.length; rgnIdx++)
|
for (let rgnIdx = 0; rgnIdx < regions.length; rgnIdx++)
|
||||||
{
|
{
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
if (typesInc.length && !typesInc.includes(region.regionType)) continue;
|
if (typesInc.length && !typesInc.includes(region.regionType)) continue;
|
||||||
if (typesExc.length && typesExc.includes(region.regionType)) continue;
|
if (typesExc.length && typesExc.includes(region.regionType)) continue;
|
||||||
let $region = $regionTmpl.clone();
|
let $region = $regionTmpl.clone();
|
||||||
$region.prop('id', sr.itemIdPrefix + id).on('click', function () { sr.fn.onClickRegion(id); }).on('dblclick', function () { sr.fn.onDblClickRegion(id); }).find('.RegionName').text(region.name).end();
|
$region.on('click', function () { sr.fn.onClickRegion(region, $region); }).on('dblclick', function () { sr.fn.onDblClickRegion(region, $region); }).find('.RegionName').text(region.name).end();
|
||||||
if (id == sr.regionId) $region.addClass('sel');
|
if (id == sr.regionId) $region.addClass('sel');
|
||||||
$regionsAvail.append($region);
|
$regionsAvail.append($region);
|
||||||
}
|
}
|
||||||
@@ -92,15 +92,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
sr.fn.onClickRegion = function (id)
|
sr.fn.onClickRegion = function (region, $region)
|
||||||
{
|
{
|
||||||
$('.SelectedRegionName', sr.$dlg).text(sr.fn.getRegionName(sr.regionId = id));
|
$('.SelectedRegionName', sr.$dlg).text(sr.fn.getRegionName(sr.regionId = region.id));
|
||||||
$('.sax-panel-item.Region', sr.$dlg).removeClass('sel');
|
$('.sax-panel-item.Region', sr.$dlg).removeClass('sel');
|
||||||
$('.sax-panel-item.Region#' + sr.itemIdPrefix + id, sr.$dlg).addClass('sel');
|
$region.addClass('sel');
|
||||||
}
|
}
|
||||||
sr.fn.onDblClickRegion = function (id)
|
sr.fn.onDblClickRegion = function (region, $region)
|
||||||
{
|
{
|
||||||
sr.regionId = id;
|
sr.regionId = region.id;
|
||||||
sr.fn.storeSelectRegion();
|
sr.fn.storeSelectRegion();
|
||||||
}
|
}
|
||||||
sr.fn.storeSelectRegion = function ()
|
sr.fn.storeSelectRegion = function ()
|
||||||
|
|||||||
@@ -5,59 +5,77 @@
|
|||||||
(function (win, doc, undef)
|
(function (win, doc, undef)
|
||||||
{
|
{
|
||||||
"use strict";
|
"use strict";
|
||||||
let rp = sax.resultsPaging = sax.resultsPaging || { fn: {}, msg: {} };
|
let rp = sax.mdl.resultsPaging = sax.mdl.resultsPaging || { fn: {}, msg: {}, contexts: [] };
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
rp.fn.refreshPaging = function (paging)
|
rp.fn.refreshPaging = function (paging, contextSel, refreshFn)
|
||||||
{
|
{
|
||||||
//sax.debug('refreshPaging', paging);
|
let context = rp.fn.getContext(contextSel, refreshFn);
|
||||||
rp.fn.init();
|
rp.fn.init(context);
|
||||||
rp.paging = paging = paging || {};
|
context.paging = paging = paging || {};
|
||||||
rp.$rp.toggle(paging.paged);
|
context.$rp.toggle(paging.paged);
|
||||||
$('.sax-paging-info', rp.$rp).text(sax.resultsPaging.msg.pageInfo.format(paging.pageNo, paging.pageCount));
|
context.$pageNo.val(paging.pageNo);
|
||||||
//$('.sax-paging-first,.sax-paging-prev', rp.$rp).toggle(paging.pageNo > 1);
|
context.$pageLen.val(paging.pageLength);
|
||||||
//$('.sax-paging-next,.sax-paging-last', rp.$rp).toggle(paging.pageNo < paging.pageCount);
|
$('.sax-paging-info', context.$rp).text(sax.mdl.resultsPaging.msg.pageInfo.format(paging.pageNo, paging.pageCount));
|
||||||
|
//$('.sax-paging-first,.sax-paging-prev', context.$rp).toggle(paging.pageNo > 1);
|
||||||
|
//$('.sax-paging-next,.sax-paging-last', context.$rp).toggle(paging.pageNo < paging.pageCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
rp.fn.firstPage = function ()
|
rp.fn.getContext = function (contextSel, refreshFn)
|
||||||
{
|
{
|
||||||
let page = rp.$pageNo.val() * 1;
|
for (let idx = 0; idx < rp.contexts.length; idx++)
|
||||||
|
{
|
||||||
|
if (rp.contexts[idx].sel == contextSel) return rp.contexts[idx];
|
||||||
|
}
|
||||||
|
//sax.debug('getContext Creating new context for: ', contextSel);
|
||||||
|
let context = { sel: contextSel, refreshFn: refreshFn }
|
||||||
|
rp.contexts.push(context);
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
rp.fn.firstPage = function (context)
|
||||||
|
{
|
||||||
|
let page = context.$pageNo.val() * 1;
|
||||||
if (page < 2) return;
|
if (page < 2) return;
|
||||||
rp.$pageNo.val(1);
|
context.$pageNo.val(1);
|
||||||
sax.refreshResults();
|
context.refreshFn();
|
||||||
}
|
}
|
||||||
rp.fn.prevPage = function ()
|
rp.fn.prevPage = function (context)
|
||||||
{
|
{
|
||||||
let page = rp.$pageNo.val() * 1;
|
let page = context.$pageNo.val() * 1;
|
||||||
if (page < 2) return;
|
if (page < 2) return;
|
||||||
rp.$pageNo.val(page - 1);
|
context.$pageNo.val(page - 1);
|
||||||
sax.refreshResults();
|
context.refreshFn();
|
||||||
}
|
}
|
||||||
rp.fn.nextPage = function ()
|
rp.fn.nextPage = function (context)
|
||||||
{
|
{
|
||||||
let page = rp.$pageNo.val() * 1;
|
let page = context.$pageNo.val() * 1;
|
||||||
if (page > rp.paging.pageCount - 1) return;
|
if (page > context.paging.pageCount - 1) return;
|
||||||
rp.$pageNo.val(page + 1);
|
context.$pageNo.val(page + 1);
|
||||||
sax.refreshResults();
|
context.refreshFn();
|
||||||
}
|
}
|
||||||
rp.fn.lastPage = function ()
|
rp.fn.lastPage = function (context)
|
||||||
{
|
{
|
||||||
let page = rp.$pageNo.val() * 1;
|
let page = context.$pageNo.val() * 1;
|
||||||
if (page > rp.paging.pageCount - 1) return;
|
if (page > context.paging.pageCount - 1) return;
|
||||||
rp.$pageNo.val(rp.paging.pageCount);
|
context.$pageNo.val(context.paging.pageCount);
|
||||||
sax.refreshResults();
|
context.refreshFn();
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
rp.fn.init = function ()
|
rp.fn.init = function (context)
|
||||||
{
|
{
|
||||||
rp.$rp = $('.sax-results-paging');
|
if (context.$rp) return;
|
||||||
rp.$pageNo = $('.PagingPageNo', rp.$rp);
|
//sax.debug('resultsPaging.init Initialising Paging.', context);
|
||||||
$('.sax-paging-first', rp.$rp).on('click',rp.fn.firstPage);
|
context.$rp = $('.sax-results-paging', $(context.sel));
|
||||||
$('.sax-paging-prev', rp.$rp).on('click', rp.fn.prevPage);
|
context.$pageNo = $('.PagingPageNo', context.$rp);
|
||||||
$('.sax-paging-next', rp.$rp).on('click', rp.fn.nextPage);
|
context.$pageLen = $('.PagingPageLength', context.$rp);
|
||||||
$('.sax-paging-last', rp.$rp).on('click', rp.fn.lastPage);
|
$('.sax-paging-first', context.$rp).off('click').on('click', function () { rp.fn.firstPage(context); });
|
||||||
|
$('.sax-paging-prev', context.$rp).off('click').on('click', function () { rp.fn.prevPage(context); });
|
||||||
|
$('.sax-paging-next', context.$rp).off('click').on('click', function () { rp.fn.nextPage(context); });
|
||||||
|
$('.sax-paging-last', context.$rp).off('click').on('click', function () { rp.fn.lastPage(context); });
|
||||||
}
|
}
|
||||||
|
|
||||||
}(window, window.document));
|
}(window, window.document));
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
(function (win, doc, undef)
|
(function (win, doc, undef)
|
||||||
{
|
{
|
||||||
"use strict";
|
"use strict";
|
||||||
let ss = sax.data.selectSport;
|
let ss = sax.mdl.selectSport = sax.mdl.selectSport || {};
|
||||||
ss.sports = {}; ss.fn = {}; ss.ajax = {}; ss.itemIdPrefix = 'Spt_';
|
ss.sports = {}; ss.fn = {}; ss.ajax = {};;
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
/*
|
/*
|
||||||
@@ -30,6 +30,7 @@
|
|||||||
}
|
}
|
||||||
ss.fn.refreshSportsAndSelect = function (response)
|
ss.fn.refreshSportsAndSelect = function (response)
|
||||||
{
|
{
|
||||||
|
//sax.debug('refreshSportsAndSelect', response);
|
||||||
if (!response || !response.success) return;
|
if (!response || !response.success) return;
|
||||||
ss.sports = response.sports;
|
ss.sports = response.sports;
|
||||||
ss.fn.showSelectSport();
|
ss.fn.showSelectSport();
|
||||||
@@ -67,7 +68,7 @@
|
|||||||
let id = sport.id;
|
let id = sport.id;
|
||||||
if (filter && !sport.name.match(reFilter)) continue;
|
if (filter && !sport.name.match(reFilter)) continue;
|
||||||
let $sport = $sportTmpl.clone();
|
let $sport = $sportTmpl.clone();
|
||||||
$sport.prop('id', ss.itemIdPrefix + id).on('click', function () { ss.fn.onClickSport(id); }).on('dblclick', function () { ss.fn.onDblClickSport(id); }).find('.SportName').text(sport.name).end();
|
$sport.on('click', function () { ss.fn.onClickSport(sport, $sport); }).on('dblclick', function () { ss.fn.onDblClickSport(sport, $sport); }).find('.SportName').text(sport.name).end();
|
||||||
if (id == ss.sportId) $sport.addClass('sel');
|
if (id == ss.sportId) $sport.addClass('sel');
|
||||||
$sportsAvail.append($sport);
|
$sportsAvail.append($sport);
|
||||||
}
|
}
|
||||||
@@ -87,15 +88,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
ss.fn.onClickSport = function (id)
|
ss.fn.onClickSport = function (sport, $sport)
|
||||||
{
|
{
|
||||||
$('.SelectedSportName', ss.$dlg).text(ss.fn.getSportName(ss.sportId = id) || ' ');
|
$('.SelectedSportName', ss.$dlg).text(ss.fn.getSportName(ss.sportId = sport.id) || ' ');
|
||||||
$('.sax-panel-item.Sport', ss.$dlg).removeClass('sel');
|
$('.sax-panel-item.Sport', ss.$dlg).removeClass('sel');
|
||||||
$('.sax-panel-item.Sport#' + ss.itemIdPrefix + id, ss.$dlg).addClass('sel');
|
$sport.addClass('sel');
|
||||||
}
|
}
|
||||||
ss.fn.onDblClickSport = function (id)
|
ss.fn.onDblClickSport = function (sport, $sport)
|
||||||
{
|
{
|
||||||
ss.sportId = id;
|
ss.sportId = sport.id;
|
||||||
ss.fn.storeSelectSport();
|
ss.fn.storeSelectSport();
|
||||||
}
|
}
|
||||||
ss.fn.storeSelectSport = function ()
|
ss.fn.storeSelectSport = function ()
|
||||||
|
|||||||
@@ -0,0 +1,175 @@
|
|||||||
|
/*
|
||||||
|
* Search - Organisations.
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function (win, doc, undef)
|
||||||
|
{
|
||||||
|
"use strict";
|
||||||
|
let so = sax.searchOrganisations = {};
|
||||||
|
so.ajax = {}; so.data = {}; so.fn = {};
|
||||||
|
let $pnl = so.$pnl = {}, $frm = so.$frm = {}, $dlg = so.$dlg = {};
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
so.refreshResults = function (delay)
|
||||||
|
{
|
||||||
|
if (!so.awaitingRefreshResponse)
|
||||||
|
{
|
||||||
|
$('.sax-burger', $pnl.filter).hide();
|
||||||
|
$('.sax-panel-item-list', $pnl.results).fadeOut(200).empty();
|
||||||
|
$('.sax-panel-messages', $pnl.results).hide().empty().append($('<div class="sax-message">' + sax.msg.dataQuerying + '</div>')).fadeIn(200);
|
||||||
|
}
|
||||||
|
so.ajax.refreshResults = so.ajax.refreshResults || { url: sax.url.base + 'Search/Ajax/Organisations', formId: 'frmOrganisationFilter', callbackFn: so.doRefreshResults };
|
||||||
|
sax.doAjaxRequest(so.ajax.refreshResults, delay || 50);
|
||||||
|
so.awaitingRefreshResponse = true;
|
||||||
|
}
|
||||||
|
so.doRefreshResults = function (response)
|
||||||
|
{
|
||||||
|
sax.debug('doRefreshResults', response);
|
||||||
|
delete sax.awaitingRefreshResponse;
|
||||||
|
sax.refreshControlValues(response.controlValues);
|
||||||
|
var $msgs = $('.sax-panel-messages', $pnl.results).hide().empty();
|
||||||
|
var $items = $('.sax-panel-item-list', $pnl.results).hide().empty();
|
||||||
|
if (!response.success) return;
|
||||||
|
sax.refreshPaging(response, '#frmOrganisationFilter', so.refreshResults);
|
||||||
|
// Menu.
|
||||||
|
let $bgr = $('.sax-burger', $pnl.filter);
|
||||||
|
let $mnu = $('ul.sax-dropdown-menu', $bgr).empty();
|
||||||
|
$mnu.append(so.getFilterMenuOption(sax.lbl.refresh, function () { so.refreshResults(); }, 'sax-refresh'));
|
||||||
|
$bgr.toggle(!!$('.sax-dropdown-item', $mnu).length);
|
||||||
|
// Items.
|
||||||
|
var items = response.organisations;
|
||||||
|
if (!items.length)
|
||||||
|
return $msgs.append($('<div class="sax-message">' + sax.msg.dataNoneFound + '</div>')).fadeIn(500);
|
||||||
|
for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
|
||||||
|
$items.append(so.populateItem(so.getItemTemplate(), items[itemIdx]));
|
||||||
|
$items.fadeIn(50);
|
||||||
|
}
|
||||||
|
so.populateItem = function ($item, item)
|
||||||
|
{
|
||||||
|
if (!item) return;
|
||||||
|
$('.sax-panel-messages', $pnl.results).hide().empty();
|
||||||
|
$('.OrganisationName', $item).text(item.name);
|
||||||
|
$('.OrganisationEmail', $item).text(item.emailAddress);
|
||||||
|
let $bgr = $('.sax-burger', $item);
|
||||||
|
let $mnu = $('ul.sax-dropdown-menu', $bgr).empty();
|
||||||
|
{
|
||||||
|
let fnView = function () { so.viewItem(item) };
|
||||||
|
// ToDo $mnu.append(so.getItemMenuOption(sax.lbl.view, fnView, 'sax-view'));
|
||||||
|
$('.sax-caption .sax-action', $item).off('click').on('click', fnView);
|
||||||
|
$('.sax-content', $item).off('dblclick').on('dblclick', fnView);
|
||||||
|
}
|
||||||
|
$bgr.toggle(!!$('.sax-dropdown-menu .sax-dropdown-item', $item).length);
|
||||||
|
return $item;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
so.getFilterDropdownTemplate = function ()
|
||||||
|
{
|
||||||
|
return $('.sax-panel-item-template .sax-dropdown-menu.Organisations li.sax-dropdown-item', $pnl.filter).clone();
|
||||||
|
}
|
||||||
|
so.getFilterMenuOption = function (lbl, fn, cls)
|
||||||
|
{
|
||||||
|
return so.getMenuOption(so.getFilterDropdownTemplate(), lbl, fn, cls);
|
||||||
|
}
|
||||||
|
so.getItemTemplate = function ()
|
||||||
|
{
|
||||||
|
return $('.sax-panel-item-template .sax-panel-item.Organisation', $pnl.results).clone();
|
||||||
|
}
|
||||||
|
so.getItemDropdownTemplate = function ()
|
||||||
|
{
|
||||||
|
return $('.sax-panel-item-template .sax-dropdown-menu.Organisation li.sax-dropdown-item', $pnl.results).clone();
|
||||||
|
}
|
||||||
|
so.getItemMenuOption = function (lbl, fn, cls)
|
||||||
|
{
|
||||||
|
return so.getMenuOption(so.getItemDropdownTemplate(), lbl, fn, cls);
|
||||||
|
}
|
||||||
|
so.getMenuOption = function ($opt, lbl, fn, cls)
|
||||||
|
{
|
||||||
|
return $opt.find('div.sax-label').text(lbl).end().on('click', fn).addClass(cls);
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
so.selectFilterSport = function ()
|
||||||
|
{
|
||||||
|
sax.debug('selectFilterSport');
|
||||||
|
let excludeIds = [];
|
||||||
|
sax.mdl.selectSport.fn.selectSport({ caption: sax.dlg.title.selectSport, sportId: $('.FilterSportId', $frm.filter).val(), excludeIds: excludeIds, fnCallback: so.onFilterSportSelected })
|
||||||
|
}
|
||||||
|
so.onFilterSportSelected = function (spt)
|
||||||
|
{
|
||||||
|
sax.debug('onFilterSportSelected', spt)
|
||||||
|
$('.FilterSportId', $frm.filter).val(spt ? spt.id : '');
|
||||||
|
$('.FilterSportCaption', $frm.filter).val(spt ? spt.name : '');
|
||||||
|
so.refreshResults();
|
||||||
|
}
|
||||||
|
so.clearFilterSport = function ()
|
||||||
|
{
|
||||||
|
$('.FilterSportId,.FilterSportCaption', $frm.filter).val('');
|
||||||
|
so.refreshResults();
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
so.selectFilterRegion = function ()
|
||||||
|
{
|
||||||
|
sax.debug('selectFilterRegion');
|
||||||
|
let excludeIds = [];
|
||||||
|
sax.mdl.selectRegion.fn.selectRegion({ caption: sax.dlg.title.selectRegion, regionId: $('.FilterRegionId', $frm.filter).val(), excludeIds: excludeIds, fnCallback: so.onFilterRegionSelected })
|
||||||
|
}
|
||||||
|
so.onFilterRegionSelected = function (rgn)
|
||||||
|
{
|
||||||
|
sax.debug('onFilterRegionSelected', rgn)
|
||||||
|
$('.FilterRegionId', $frm.filter).val(rgn ? rgn.id : '');
|
||||||
|
$('.FilterRegionCaption', $frm.filter).val(rgn ? rgn.name : '');
|
||||||
|
so.refreshResults();
|
||||||
|
}
|
||||||
|
so.clearFilterRegion = function ()
|
||||||
|
{
|
||||||
|
$('.FilterRegionId,.FilterRegionCaption', $frm.filter).val('');
|
||||||
|
so.refreshResults();
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
so.viewItem = function (item)
|
||||||
|
{
|
||||||
|
$('.OrganisationId', $frm.orgId).val(item.id);
|
||||||
|
so.ajax.organisation = so.ajax.organisation || { url: sax.url.base + 'Search/Ajax/GetOrganisation', formId: 'frmOrganisationId', callbackFn: so.onViewItem };
|
||||||
|
sax.doAjaxRequest(so.ajax.organisation, 50);
|
||||||
|
}
|
||||||
|
so.onViewItem = function (response)
|
||||||
|
{
|
||||||
|
sax.debug('onViewItem', response);
|
||||||
|
if (!response.success) return;
|
||||||
|
let frm = $frm.org;
|
||||||
|
let item = so.data.organisation = response.organisation;
|
||||||
|
$('.OrganisationName', frm).toggle(!item.awaiting).val(item.name);
|
||||||
|
sax.clearControlErrors();
|
||||||
|
$dlg.org.dialog('option', 'title', sax.dlg.title.organisation);
|
||||||
|
sax.openDialog($dlg.org, 600, 600);
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
$(function ()
|
||||||
|
{
|
||||||
|
$pnl.orgs = $('.sax-panel.Organisations');
|
||||||
|
$pnl.filter = $('.sax-panel-filter', $pnl.orgs);
|
||||||
|
$pnl.results = $('.sax-panel-results', $pnl.orgs);
|
||||||
|
|
||||||
|
$frm.filter = $('#frmOrganisationFilter', $pnl.orgs);
|
||||||
|
$('.FilterOrganisation', $frm.filter).on('input', function () { so.refreshResults(250); }).on('keypress', function (event)
|
||||||
|
{
|
||||||
|
if (event.keyCode == 13) setTimeout(so.refreshResults, 50);
|
||||||
|
});
|
||||||
|
$('.FilterCategory', $frm.filter).on('change', function () { so.refreshResults(); });
|
||||||
|
|
||||||
|
var opt = sax.dlgOpts();
|
||||||
|
opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); };
|
||||||
|
$dlg.org = $('#dlgOrganisation').dialog(opt);
|
||||||
|
$frm.orgId = $('#frmOrganisationId');
|
||||||
|
$frm.org = $('#frmOrganisation', $dlg.org);
|
||||||
|
|
||||||
|
setTimeout(so.refreshResults, 250);
|
||||||
|
});
|
||||||
|
|
||||||
|
}(window, window.document));
|
||||||
|
|
||||||
|
/* The End */
|
||||||
@@ -10,10 +10,10 @@
|
|||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
sax.refreshProfileContactInfo = function ()
|
sax.refreshProfileContactInfo = function ()
|
||||||
{
|
{
|
||||||
var $section = $('.sax-panel-section.ProfileContact');
|
if ($pnl.proCon.hasClass('sax-edit'))
|
||||||
$section.removeClass('sax-edit').addClass('sax-populating');
|
$pnl.proCon.slideUp(750, function () { $pnl.proCon.removeClass('sax-edit').addClass('sax-populating').slideDown(750); });
|
||||||
$('.sax-property', $section).hide();
|
$('.sax-property', $pnl.proCon).hide();
|
||||||
sax.showDataRefreshingMsg($section);
|
sax.showDataRefreshingMsg($pnl.proCon);
|
||||||
sax.refreshProfileContact(sax.onRefreshProfileContactInfo);
|
sax.refreshProfileContact(sax.onRefreshProfileContactInfo);
|
||||||
}
|
}
|
||||||
sax.refreshProfileContactForm = function ()
|
sax.refreshProfileContactForm = function ()
|
||||||
@@ -32,16 +32,15 @@
|
|||||||
{
|
{
|
||||||
//sax.debug('onRefreshProfileContactInfo', response);
|
//sax.debug('onRefreshProfileContactInfo', response);
|
||||||
if (!response || !response.success || !response.contact) return;
|
if (!response || !response.success || !response.contact) return;
|
||||||
$('.sax-panel-section').show();
|
$('.sax-panel-section').slideDown(750);
|
||||||
var $section = $('.sax-panel-section.ProfileContact');
|
$('.sax-message', $pnl.proCon).stop(true, false).fadeOut(200).empty();
|
||||||
$('.sax-message', $section).stop(true, false).fadeOut(200).empty();
|
$('.sax-value', $pnl.proConInf).empty();
|
||||||
$('.sax-value', $section).empty();
|
sax.refreshInfo($pnl.proConInf, 'AccountEmailAddress', response.contact.emailAddress);
|
||||||
sax.refreshInfo($section, 'AccountEmailAddress', response.contact.emailAddress);
|
sax.refreshInfo($pnl.proConInf, 'AccountName', response.contact.displayName);
|
||||||
sax.refreshInfo($section, 'AccountName', response.contact.displayName);
|
sax.refreshInfo($pnl.proConInf, 'AccountLocation', response.contact.locationCaption);
|
||||||
sax.refreshInfo($section, 'AccountLocation', response.contact.locationCaption);
|
$('img.AccountContact', $pnl.proConInf).prop('src', 'Image/Account/Contact/Profile?' + (new Date()).getTime());
|
||||||
$('img.AccountContact', $section).prop('src', 'Image/Account/Contact/Profile?' + (new Date()).getTime());
|
sax.showNoInfoMsg($pnl.proConInf);
|
||||||
sax.showNoInfoMsg($section);
|
$pnl.proCon.removeClass('sax-populating');
|
||||||
$section.removeClass('sax-populating');
|
|
||||||
}
|
}
|
||||||
sax.onRefreshProfileContactForm = function (response)
|
sax.onRefreshProfileContactForm = function (response)
|
||||||
{
|
{
|
||||||
@@ -49,30 +48,28 @@
|
|||||||
if (!response || !response.success) return;
|
if (!response || !response.success) return;
|
||||||
sax.data.genders = response.genders;
|
sax.data.genders = response.genders;
|
||||||
sax.data.months = response.months;
|
sax.data.months = response.months;
|
||||||
$('.sax-panel-section').hide();
|
$('.sax-message', $pnl.proCon).stop(true, false).fadeOut(200).empty();
|
||||||
var $section = $('.sax-panel-section.ProfileContact').show();
|
sax.refreshInput($pnl.proConFrm, 'AccountEmailAddress', response.contact.emailAddress);
|
||||||
$('.sax-message', $section).stop(true, false).fadeOut(200).empty();
|
sax.refreshSelect($pnl.proConFrm, 'AccountTitle', response.contact.title);
|
||||||
sax.refreshInput($section, 'AccountEmailAddress', response.contact.emailAddress);
|
sax.refreshInput($pnl.proConFrm, 'AccountFirstName', response.contact.firstName);
|
||||||
sax.refreshSelect($section, 'AccountTitle', response.contact.title);
|
sax.refreshInput($pnl.proConFrm, 'AccountLastName', response.contact.lastName);
|
||||||
sax.refreshInput($section, 'AccountFirstName', response.contact.firstName);
|
sax.refreshTextArea($pnl.proConFrm, 'AccountAbout', response.contact.about);
|
||||||
sax.refreshInput($section, 'AccountLastName', response.contact.lastName);
|
|
||||||
sax.refreshTextArea($section, 'AccountAbout', response.contact.about);
|
|
||||||
let $selGender = $('#cbAccountGender');
|
let $selGender = $('#cbAccountGender');
|
||||||
if (response.genders && response.genders.length)
|
if (response.genders && response.genders.length)
|
||||||
sax.populateSelectCodeDesc($('#cbAccountGender'), response.genders);
|
sax.populateSelectCodeDesc($('#cbAccountGender'), response.genders);
|
||||||
sax.refreshSelect($section, 'AccountGender', response.contact.gender || '');
|
sax.refreshSelect($pnl.proConFrm, 'AccountGender', response.contact.gender || '');
|
||||||
sax.refreshDob();
|
sax.refreshDob();
|
||||||
sax.refreshSelect($section, 'AccountDobYear', response.contact.dobYear);
|
sax.refreshSelect($pnl.proConFrm, 'AccountDobYear', response.contact.dobYear);
|
||||||
sax.refreshDob();
|
sax.refreshDob();
|
||||||
sax.refreshSelect($section, 'AccountDobMonth', response.contact.dobMonth);
|
sax.refreshSelect($pnl.proConFrm, 'AccountDobMonth', response.contact.dobMonth);
|
||||||
sax.refreshDob();
|
sax.refreshDob();
|
||||||
sax.refreshSelect($section, 'AccountDobDay', response.contact.dobDay);
|
sax.refreshSelect($pnl.proConFrm, 'AccountDobDay', response.contact.dobDay);
|
||||||
sax.refreshInput($section, 'AccountRegionIdCountry', response.contact.regionIdCountry);
|
sax.refreshInput($pnl.proConFrm, 'AccountRegionIdCountry', response.contact.regionIdCountry);
|
||||||
sax.refreshInput($section, 'AccountRegionCaptionCountry', response.contact.regionCaptionCountry);
|
sax.refreshInput($pnl.proConFrm, 'AccountRegionCaptionCountry', response.contact.regionCaptionCountry);
|
||||||
sax.refreshInput($section, 'AccountRegionIdProvince', response.contact.regionIdProvince);
|
sax.refreshInput($pnl.proConFrm, 'AccountRegionIdProvince', response.contact.regionIdProvince);
|
||||||
sax.refreshInput($section, 'AccountRegionCaptionProvince', response.contact.regionCaptionProvince);
|
sax.refreshInput($pnl.proConFrm, 'AccountRegionCaptionProvince', response.contact.regionCaptionProvince);
|
||||||
$('img.AccountContact', $section).prop('src', 'Image/Account/Contact/Profile?' + (new Date()).getTime());
|
$('img.AccountContact', $pnl.proConFrm).prop('src', 'Image/Account/Contact/Profile?' + (new Date()).getTime());
|
||||||
$section.addClass('sax-edit');
|
$('.sax-panel-section').slideUp(750, function () { $pnl.proCon.addClass('sax-edit').slideDown(750); });
|
||||||
}
|
}
|
||||||
sax.storeProfileContact = function ()
|
sax.storeProfileContact = function ()
|
||||||
{
|
{
|
||||||
@@ -129,7 +126,7 @@
|
|||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
sax.selectRegionCountry = function ()
|
sax.selectRegionCountry = function ()
|
||||||
{
|
{
|
||||||
sax.data.selectRegion.fn.selectRegion({ caption: sax.dlg.title.selectRegionCountry, regionId: $('#ifAccountRegionIdCountry').val(), fnCallback: sax.onSelectRegionCountry })
|
sax.mdl.selectRegion.fn.selectRegion({ caption: sax.dlg.title.selectRegionCountry, regionId: $('#ifAccountRegionIdCountry').val(), fnCallback: sax.onSelectRegionCountry })
|
||||||
}
|
}
|
||||||
sax.onSelectRegionCountry = function (region)
|
sax.onSelectRegionCountry = function (region)
|
||||||
{
|
{
|
||||||
@@ -154,7 +151,7 @@
|
|||||||
if (file.type != 'image/jpg' && file.type != 'image/jpeg' && file.type != 'image/png') return sax.doAlert(sax.dlg.title.imageUpload, sax.msg.uploadFileTypeInvalid.format(sax.getFileType(file)));
|
if (file.type != 'image/jpg' && file.type != 'image/jpeg' && file.type != 'image/png') return sax.doAlert(sax.dlg.title.imageUpload, sax.msg.uploadFileTypeInvalid.format(sax.getFileType(file)));
|
||||||
$(".UploadMessage", context).text(sax.msg.uploadingFile.format(file.name));
|
$(".UploadMessage", context).text(sax.msg.uploadingFile.format(file.name));
|
||||||
$('img.ContactImageUploadProgress', context).fadeIn(200);
|
$('img.ContactImageUploadProgress', context).fadeIn(200);
|
||||||
sax.clearControlError(sax.$pnl.contactImageDrag);
|
sax.clearControlError($pnl.contactImageDrag);
|
||||||
sax.data.contactImageUploadContext = context;
|
sax.data.contactImageUploadContext = context;
|
||||||
|
|
||||||
sax.ajax.uploadContactImage = sax.ajax.uploadContactImage || { url: sax.url.base + 'Account/Ajax/UploadContactImage', callbackFn: sax.handleContactImageUploadResponse, noWaitIcon: true };
|
sax.ajax.uploadContactImage = sax.ajax.uploadContactImage || { url: sax.url.base + 'Account/Ajax/UploadContactImage', callbackFn: sax.handleContactImageUploadResponse, noWaitIcon: true };
|
||||||
@@ -168,14 +165,13 @@
|
|||||||
let context = sax.data.contactImageUploadContext;
|
let context = sax.data.contactImageUploadContext;
|
||||||
//sax.debug('handleContactImageUploadResponse', response, context);
|
//sax.debug('handleContactImageUploadResponse', response, context);
|
||||||
if (!response) return;
|
if (!response) return;
|
||||||
var $section = $('.sax-panel-section.ProfileContact');
|
|
||||||
sax.refreshControlValues(response.controlValues, context);
|
sax.refreshControlValues(response.controlValues, context);
|
||||||
$(".UploadMessage", context).empty();
|
$(".UploadMessage", context).empty();
|
||||||
$('img.ContactImageUploadProgress', context).hide();
|
$('img.ContactImageUploadProgress', context).hide();
|
||||||
if (response.success)
|
if (response.success)
|
||||||
{
|
{
|
||||||
$dlg.selectContactImage.dialog('close');
|
$dlg.selectContactImage.dialog('close');
|
||||||
$('img.AccountContact', $section).prop('src', 'Image/Account/Contact/Profile?' + (new Date()).getTime());
|
$('img.AccountContact', $pnl.proConFrm).prop('src', 'Image/Account/Contact/Profile?' + (new Date()).getTime());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sax.selectContactImage = function ()
|
sax.selectContactImage = function ()
|
||||||
@@ -198,16 +194,19 @@
|
|||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
$(function ()
|
$(function ()
|
||||||
{
|
{
|
||||||
sax.$pnl.proCon = $('.sax-panel-section.ProfileContact');
|
$pnl.proCon = $('.sax-panel-section.ProfileContact');
|
||||||
$('.sax-action.sax-edit', sax.$pnl.proCon).on('click', function (evt) { sax.refreshProfileContactForm(); });
|
$pnl.proConInf = $('.sax-panel-info', $pnl.proCon);
|
||||||
$('input,textarea', sax.$pnl.proCon).on('input', function () { sax.clearControlErrors(); sax.page.profileContactChanged = true; });
|
$pnl.proConFrm = $('.sax-panel-form', $pnl.proCon);
|
||||||
$('select', sax.$pnl.proCon).on('change', function () { sax.clearControlErrors(); sax.page.profileContactChanged = true; });
|
$('.sax-action.sax-edit', $pnl.proConInf).on('click', function (evt) { sax.refreshProfileContactForm(); });
|
||||||
|
$('.sax-content', $pnl.proConInf).on('dblclick', function (evt) { sax.refreshProfileContactForm(); });
|
||||||
|
$('input,textarea', $pnl.proConFrm).on('input', function () { sax.clearControlErrors(); sax.page.profileContactChanged = true; });
|
||||||
|
$('select', $pnl.proConFrm).on('change', function () { sax.clearControlErrors(); sax.page.profileContactChanged = true; });
|
||||||
|
|
||||||
sax.$pnl.contactImageDrag = $('#pnlContactImageDrop')
|
$pnl.contactImageDrag = $('#pnlContactImageDrop')
|
||||||
.on("dragenter", function (evt) { sax.haltEvent(evt); })
|
.on("dragenter", function (evt) { sax.haltEvent(evt); })
|
||||||
.on("dragover", function (evt) { sax.haltEvent(evt); if (!sax.$pnl.contactImageDrag.hasClass(sax.classFileDrag)) sax.$pnl.contactImageDrag.addClass(sax.classFileDrag); })
|
.on("dragover", function (evt) { sax.haltEvent(evt); if (!$pnl.contactImageDrag.hasClass(sax.classFileDrag)) $pnl.contactImageDrag.addClass(sax.classFileDrag); })
|
||||||
.on("dragleave", function (evt) { sax.haltEvent(evt); sax.$pnl.contactImageDrag.removeClass(sax.classFileDrag); })
|
.on("dragleave", function (evt) { sax.haltEvent(evt); $pnl.contactImageDrag.removeClass(sax.classFileDrag); })
|
||||||
.on("drop", function (evt) { sax.haltEvent(evt); sax.$pnl.contactImageDrag.removeClass(sax.classFileDrag); sax.onDropContactImage(evt); });
|
.on("drop", function (evt) { sax.haltEvent(evt); $pnl.contactImageDrag.removeClass(sax.classFileDrag); sax.onDropContactImage(evt); });
|
||||||
var opt = sax.dlgOpts();
|
var opt = sax.dlgOpts();
|
||||||
opt.buttons[sax.dlg.btn.ok] = function () { sax.uploadContactImage(); };
|
opt.buttons[sax.dlg.btn.ok] = function () { sax.uploadContactImage(); };
|
||||||
opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); };
|
opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); };
|
||||||
|
|||||||
@@ -5,16 +5,17 @@
|
|||||||
(function (win, doc, undef)
|
(function (win, doc, undef)
|
||||||
{
|
{
|
||||||
"use strict";
|
"use strict";
|
||||||
let $pnl = sax.$pnl, $dlg = sax.$dlg, $frm = sax.$frm;
|
let ps = sax.mdl.profileSports = sax.mdl.profileSports || {};
|
||||||
|
let $pnl = ps.$pnl = {}, $dlg = ps.$dlg = {}, $frm = ps.$frm = {};
|
||||||
|
ps.data = { };
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
sax.refreshProfileSportsInfo = function (delay)
|
sax.refreshProfileSportsInfo = function (delay)
|
||||||
{
|
{
|
||||||
var $section = $('.sax-panel-section.ProfileSports');
|
$pnl.proSpt.removeClass('sax-edit').addClass('sax-populating');
|
||||||
$section.removeClass('sax-edit').addClass('sax-populating');
|
$('.sax-property', $pnl.proSpt).hide();
|
||||||
$('.sax-property', $section).hide();
|
sax.showDataRefreshingMsg($pnl.proSpt);
|
||||||
sax.showDataRefreshingMsg($section);
|
sax.refreshProfileSports(ps.onRefreshProfileSportsInfo);
|
||||||
sax.refreshProfileSports(sax.onRefreshProfileSportsInfo);
|
|
||||||
}
|
}
|
||||||
sax.refreshProfileSports = function (callbackFn)
|
sax.refreshProfileSports = function (callbackFn)
|
||||||
{
|
{
|
||||||
@@ -24,23 +25,23 @@
|
|||||||
sax.ajax.profileSports.callbackFn = callbackFn;
|
sax.ajax.profileSports.callbackFn = callbackFn;
|
||||||
sax.doAjaxRequest(sax.ajax.profileSports, 50);
|
sax.doAjaxRequest(sax.ajax.profileSports, 50);
|
||||||
}
|
}
|
||||||
sax.onRefreshProfileSportsInfo = function (response)
|
ps.onRefreshProfileSportsInfo = function (response)
|
||||||
{
|
{
|
||||||
//sax.debug('onRefreshProfileSportsInfo', response);
|
//sax.debug('onRefreshProfileSportsInfo', response);
|
||||||
if (!response || !response.success) return;
|
if (!response || !response.success) return;
|
||||||
var $section = $('.sax-panel-section.ProfileSports');
|
$('.sax-message', $pnl.proSpt).stop(true, false).fadeOut(200).empty();
|
||||||
$('.sax-message', $section).stop(true, false).fadeOut(200).empty();
|
|
||||||
sax.profile.sports.Ids = [];
|
sax.profile.sports.Ids = [];
|
||||||
let items = response.sports;
|
let items = response.sports;
|
||||||
if (!items) return;
|
if (!items) return;
|
||||||
let $items = $('.sax-panel-results.ProfileSports', $section).empty();
|
let $items = $('.sax-panel-results.ProfileSports', $pnl.proSpt).empty();
|
||||||
let $tmpl = $('.sax-panel-item-template .sax-panel-item.ProfileSport', $section);
|
let $tmpl = $('.sax-panel-item-template .sax-panel-item.ProfileSport', $pnl.proSpt);
|
||||||
for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
|
for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
|
||||||
{
|
{
|
||||||
let item = items[itemIdx];
|
let item = items[itemIdx];
|
||||||
sax.profile.sports.Ids.push(item.sportId);
|
sax.profile.sports.Ids.push(item.sportId);
|
||||||
let $item = $tmpl.clone().prop('id', 'ProSpt_' + item.id);
|
let $item = $tmpl.clone().prop('id', 'ProSpt_' + item.id);
|
||||||
$('.sax-header .sax-action.sax-edit', $item).on('click', function (evt) { sax.updateProfileSport(item.id); });
|
$('.sax-header .sax-action.sax-edit', $item).on('click', function (evt) { ps.updateProfileSport(item.id); });
|
||||||
|
$('.sax-content', $item).on('dblclick', function (evt) { ps.updateProfileSport(item.id); });
|
||||||
$('.sax-header .sax-action.sax-experience', $item).on('click', function (evt) { sax.showSportExperience(item); });
|
$('.sax-header .sax-action.sax-experience', $item).on('click', function (evt) { sax.showSportExperience(item); });
|
||||||
$('.SportName', $item).text(item.sportName);
|
$('.SportName', $item).text(item.sportName);
|
||||||
$('.SportParticipationValue', $item).text(item.sportParticipation);
|
$('.SportParticipationValue', $item).text(item.sportParticipation);
|
||||||
@@ -50,74 +51,76 @@
|
|||||||
$items.append($item);
|
$items.append($item);
|
||||||
}
|
}
|
||||||
$items.show();
|
$items.show();
|
||||||
sax.showNoInfoMsg($section);
|
sax.showNoInfoMsg($pnl.proSpt);
|
||||||
$section.removeClass('sax-populating');
|
$pnl.proSpt.removeClass('sax-populating');
|
||||||
}
|
}
|
||||||
sax.addProfileSport = function ()
|
ps.addProfileSport = function ()
|
||||||
{
|
{
|
||||||
//sax.debug('addProfileSport');
|
//sax.debug('addProfileSport');
|
||||||
let dlg = $dlg.profileSport;
|
let dlg = $dlg.proSpt;
|
||||||
$('.UserSportId,.ProfileSportExists,#ifProfileSportId,input.sax-input,select.sax-select', dlg).val('');
|
$('.UserSportId,.ProfileSportExists,#ifProfileSportId,input.sax-input,textarea.sax-textarea,select.sax-select', dlg).val('');
|
||||||
$('.SelectSport', dlg).show();
|
$('.SelectSport', dlg).show();
|
||||||
dlg.dialog('option', 'title', sax.dlg.title.addUserSport);
|
dlg.dialog('option', 'title', sax.dlg.title.addUserSport);
|
||||||
sax.openDialog(dlg, 480, 400);
|
sax.openDialog(dlg, 640, 480);
|
||||||
}
|
}
|
||||||
sax.updateProfileSport = function (id)
|
ps.updateProfileSport = function (id)
|
||||||
{
|
{
|
||||||
//sax.debug('updateProfileSport', id);
|
//sax.debug('updateProfileSport', id);
|
||||||
$('#frmProfileSportId .UserSportId').val(id);
|
$('#frmProfileSportId .UserSportId').val(id);
|
||||||
sax.ajax.profileSport = sax.ajax.profileSport || { url: sax.url.base + 'Account/Ajax/GetProfileSport', formId: 'frmProfileSportId', callbackFn: sax.doUpdateProfileSport };
|
sax.ajax.profileSport = sax.ajax.profileSport || { url: sax.url.base + 'Account/Ajax/GetProfileSport', formId: 'frmProfileSportId', callbackFn: ps.doUpdateProfileSport };
|
||||||
sax.doAjaxRequest(sax.ajax.profileSport, 50);
|
sax.doAjaxRequest(sax.ajax.profileSport, 50);
|
||||||
}
|
}
|
||||||
sax.doUpdateProfileSport = function (response)
|
ps.doUpdateProfileSport = function (response)
|
||||||
{
|
{
|
||||||
//sax.debug('doUpdateProfileSport', response);
|
//sax.debug('doUpdateProfileSport', response);
|
||||||
let dlg = $dlg.profileSport;
|
let dlg = $dlg.proSpt;
|
||||||
let item = response.sport;
|
let item = response.sport;
|
||||||
$('.UserSportId', dlg).val(item.id);
|
$('.UserSportId', dlg).val(item.id);
|
||||||
$('.ProfileSportExists', dlg).val(1);
|
$('.ProfileSportExists', dlg).val(1);
|
||||||
$('#ifProfileSportId', dlg).val(item.sportId);
|
$('#ifProfileSportId', dlg).val(item.sportId);
|
||||||
$('#ifProfileSport', dlg).val(item.sportName);
|
$('#ifProfileSport', dlg).val(item.sportName);
|
||||||
|
$('#ifProfileSportAbout', dlg).val(item.sportAbout);
|
||||||
$('#cbProfileSportParticipation', dlg).val(item.sportParticipationCode);
|
$('#cbProfileSportParticipation', dlg).val(item.sportParticipationCode);
|
||||||
$('#cbProfileSportOfficiating', dlg).val(item.sportOfficiatingCode);
|
$('#cbProfileSportOfficiating', dlg).val(item.sportOfficiatingCode);
|
||||||
$('.SelectSport', dlg).hide();
|
$('.SelectSport', dlg).hide();
|
||||||
dlg.dialog('option', 'title', sax.dlg.title.updateUserSport);
|
dlg.dialog('option', 'title', sax.dlg.title.updateUserSport);
|
||||||
sax.openDialog(dlg, 480, 400);
|
sax.openDialog(dlg, 640, 480);
|
||||||
}
|
}
|
||||||
sax.selectUserSport = function (sport)
|
sax.selectUserSport = function (sport)
|
||||||
{
|
{
|
||||||
//sax.debug('selectUserSport');
|
//sax.debug('selectUserSport');
|
||||||
let excludeIds = $.grep(sax.profile.sports.Ids, function (value) { return !sport || value != sport.id; });
|
let excludeIds = $.grep(sax.profile.sports.Ids, function (value) { return !sport || value != sport.id; });
|
||||||
sax.data.selectSport.fn.selectSport({ caption: sax.dlg.title.selectSport, sportId: $('#frmProfileSport #ifProfileSportId').val(), excludeIds: excludeIds, fnCallback: sax.onSelectUserSport })
|
sax.mdl.selectSport.fn.selectSport({ caption: sax.dlg.title.selectSport, sportId: $('#frmProfileSport #ifProfileSportId').val(), excludeIds: excludeIds, fnCallback: ps.onSelectUserSport })
|
||||||
}
|
}
|
||||||
sax.onSelectUserSport = function (sport)
|
ps.onSelectUserSport = function (sport)
|
||||||
{
|
{
|
||||||
sax.clearControlError($('#ifProfileSportId').val(sport ? sport.id : ''));
|
sax.clearControlError($('#ifProfileSportId').val(sport ? sport.id : ''));
|
||||||
$('#ifProfileSport').val(sport ? sport.name : '');
|
$('#ifProfileSport').val(sport ? sport.name : '');
|
||||||
}
|
}
|
||||||
sax.storeProfileSport = function ()
|
ps.storeProfileSport = function ()
|
||||||
{
|
{
|
||||||
//sax.debug('storeProfileSport');
|
//sax.debug('storeProfileSport');
|
||||||
sax.clearControlErrors();
|
sax.clearControlErrors();
|
||||||
sax.ajax.storeProfileSport = sax.ajax.storeProfileSport || { url: sax.url.base + 'Account/Ajax/StoreProfileSport', formId: 'frmProfileSport', callbackFn: sax.onStoreProfileSport };
|
sax.ajax.storeProfileSport = sax.ajax.storeProfileSport || { url: sax.url.base + 'Account/Ajax/StoreProfileSport', formId: 'frmProfileSport', callbackFn: ps.onStoreProfileSport };
|
||||||
sax.doAjaxRequest(sax.ajax.storeProfileSport, 50);
|
sax.doAjaxRequest(sax.ajax.storeProfileSport, 50);
|
||||||
}
|
}
|
||||||
sax.onStoreProfileSport = function (response)
|
ps.onStoreProfileSport = function (response)
|
||||||
{
|
{
|
||||||
sax.refreshControlValues(response.controlValues);
|
sax.refreshControlValues(response.controlValues);
|
||||||
if (!response || !response.success) return;
|
if (!response || !response.success) return;
|
||||||
$dlg.profileSport.dialog('close');
|
$dlg.proSpt.dialog('close');
|
||||||
sax.refreshProfileSportsInfo();
|
sax.refreshProfileSportsInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
$(function ()
|
$(function ()
|
||||||
{
|
{
|
||||||
$('.sax-panel-section.ProfileSports .sax-action.sax-add').on('click', function (evt) { sax.addProfileSport(); });
|
$pnl.proSpt = $('.sax-panel-section.ProfileSports');
|
||||||
|
$('.sax-action.sax-add', $pnl.proSpt).on('click', function (evt) { ps.addProfileSport(); });
|
||||||
var opt = sax.dlgOpts();
|
var opt = sax.dlgOpts();
|
||||||
opt.buttons[sax.dlg.btn.ok] = function () { sax.storeProfileSport(); };
|
opt.buttons[sax.dlg.btn.ok] = function () { ps.storeProfileSport(); };
|
||||||
opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); };
|
opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); };
|
||||||
$dlg.profileSport = $('#dlgProfileSport').dialog(opt);
|
$dlg.proSpt = $('#dlgProfileSport').dialog(opt);
|
||||||
});
|
});
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ namespace Saxonite.Net.Standard.Base.App
|
|||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
public static class Version
|
public static class Version
|
||||||
{
|
{
|
||||||
private static String version { get; } = "1.1.6.0";
|
private static String version { get; } = "1.1.6.1";
|
||||||
// Retrieve version.
|
// Retrieve version.
|
||||||
public static String GetFullVersion () { return version; }
|
public static String GetFullVersion () { return version; }
|
||||||
public static String GetAppVersion ()
|
public static String GetAppVersion ()
|
||||||
@@ -40,8 +40,16 @@ namespace Saxonite.Net.Standard.Base.App
|
|||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
// Version history.
|
// Version history.
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
// 1.1.6 ?-Aug-2021 ?
|
// 1.1.8 ?-Oct-2021 ?
|
||||||
// - ?
|
// -
|
||||||
|
// 1.1.7 14-Oct-2021 Online Organisation Search
|
||||||
|
// - Online Profile Sport About & snags.
|
||||||
|
// - Online Organisation Search.
|
||||||
|
// - Admin Awaiting item counts on home page.
|
||||||
|
// 1.1.6 19-Sep-2021 Online profile.
|
||||||
|
// - Online burger menus - all menus with icons.
|
||||||
|
// - Online Profile - About.
|
||||||
|
// - Sport specific speciality label.
|
||||||
// 1.1.5 19-Aug-2021 Profile Sport Experience.
|
// 1.1.5 19-Aug-2021 Profile Sport Experience.
|
||||||
// - Online Profile Sport Experience.
|
// - Online Profile Sport Experience.
|
||||||
// 1.1.4 9-Aug-2021 Organisation Articles.
|
// 1.1.4 9-Aug-2021 Organisation Articles.
|
||||||
|
|||||||
@@ -88,6 +88,7 @@ namespace Saxonite.Net.Standard.Base.App
|
|||||||
// System codes.
|
// System codes.
|
||||||
private readonly Dictionary<Sax.CodeType, List<TypeCodeDesc>> codeTypes = new Dictionary<Sax.CodeType, List<TypeCodeDesc>>();
|
private readonly Dictionary<Sax.CodeType, List<TypeCodeDesc>> codeTypes = new Dictionary<Sax.CodeType, List<TypeCodeDesc>>();
|
||||||
public List<TypeCodeDesc> DataItemTypeCodes { get { return GetCodesOfType(Sax.CodeType.DataItemType); } }
|
public List<TypeCodeDesc> DataItemTypeCodes { get { return GetCodesOfType(Sax.CodeType.DataItemType); } }
|
||||||
|
public List<TypeCodeDesc> YesNoCodes { get { return GetCodesOfType(Sax.CodeType.YesNo); } }
|
||||||
public List<TypeCodeDesc> GenderCodes { get { return GetCodesOfType(Sax.CodeType.Gender); } }
|
public List<TypeCodeDesc> GenderCodes { get { return GetCodesOfType(Sax.CodeType.Gender); } }
|
||||||
public List<TypeCodeDesc> SportSpecialityLabelCodes { get { return GetCodesOfType(Sax.CodeType.SportSpecialityLabel); } }
|
public List<TypeCodeDesc> SportSpecialityLabelCodes { get { return GetCodesOfType(Sax.CodeType.SportSpecialityLabel); } }
|
||||||
public List<TypeCodeDesc> SportParticipationCodes { get { return GetCodesOfType(Sax.CodeType.SportParticipation); } }
|
public List<TypeCodeDesc> SportParticipationCodes { get { return GetCodesOfType(Sax.CodeType.SportParticipation); } }
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using Sarand.Net.Standard.Base.Core;
|
|||||||
using Saxonite.Net.Standard.Base.App;
|
using Saxonite.Net.Standard.Base.App;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace Saxonite.Net.Standard.Base.Bus
|
namespace Saxonite.Net.Standard.Base.Bus
|
||||||
@@ -282,6 +283,15 @@ namespace Saxonite.Net.Standard.Base.Bus
|
|||||||
// Item list extension methods.
|
// Item list extension methods.
|
||||||
public static class SaxOrganisationList
|
public static class SaxOrganisationList
|
||||||
{
|
{
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
/// <summary>
|
||||||
|
/// Extract the Organisation Ids.
|
||||||
|
/// </summary>
|
||||||
|
public static List<SysId>GetIds(this List<SaxOrganisation> values)
|
||||||
|
{
|
||||||
|
return values.Select(item => item.Id).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Extract the first Organisation in list with the specified Id.
|
/// Extract the first Organisation in list with the specified Id.
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ namespace Saxonite.Net.Standard.Base.Bus
|
|||||||
// Sport.
|
// Sport.
|
||||||
SportId,
|
SportId,
|
||||||
Sport_Name,
|
Sport_Name,
|
||||||
|
About,
|
||||||
SportParticipation,
|
SportParticipation,
|
||||||
SportParticipation_Code,
|
SportParticipation_Code,
|
||||||
SportParticipation_Desc,
|
SportParticipation_Desc,
|
||||||
@@ -51,6 +52,7 @@ namespace Saxonite.Net.Standard.Base.Bus
|
|||||||
{
|
{
|
||||||
public SysId UserAccountId { get; set; }
|
public SysId UserAccountId { get; set; }
|
||||||
public SysId SportId { get; set; }
|
public SysId SportId { get; set; }
|
||||||
|
public String About { get; set; } = String.Empty;
|
||||||
public Sax.SportParticipation Participation { get; set; }
|
public Sax.SportParticipation Participation { get; set; }
|
||||||
public Sax.SportOfficiating Officiating { get; set; }
|
public Sax.SportOfficiating Officiating { get; set; }
|
||||||
public String UserSportData { get; set; }
|
public String UserSportData { get; set; }
|
||||||
@@ -78,6 +80,11 @@ namespace Saxonite.Net.Standard.Base.Bus
|
|||||||
get { return data.SportId; }
|
get { return data.SportId; }
|
||||||
set { CheckChanged(data.SportId, value); data.SportId = value; }
|
set { CheckChanged(data.SportId, value); data.SportId = value; }
|
||||||
}
|
}
|
||||||
|
public String About
|
||||||
|
{
|
||||||
|
get { return data.About; }
|
||||||
|
set { CheckChanged(data.About, value); data.About = value; }
|
||||||
|
}
|
||||||
public Sax.SportParticipation Participation
|
public Sax.SportParticipation Participation
|
||||||
{
|
{
|
||||||
get { return data.Participation; }
|
get { return data.Participation; }
|
||||||
@@ -98,6 +105,7 @@ namespace Saxonite.Net.Standard.Base.Bus
|
|||||||
{
|
{
|
||||||
UserAccountId = data.UserAccountId;
|
UserAccountId = data.UserAccountId;
|
||||||
SportId = data.SportId;
|
SportId = data.SportId;
|
||||||
|
About = data.About;
|
||||||
Participation = data.Participation;
|
Participation = data.Participation;
|
||||||
Officiating = data.Officiating;
|
Officiating = data.Officiating;
|
||||||
UserSportData = data.UserSportData;
|
UserSportData = data.UserSportData;
|
||||||
@@ -117,9 +125,10 @@ namespace Saxonite.Net.Standard.Base.Bus
|
|||||||
{
|
{
|
||||||
// Identifies the field that has invalid data.
|
// Identifies the field that has invalid data.
|
||||||
public ValidValue UserAccountId { get; set; } = ValidValue.Valid;
|
public ValidValue UserAccountId { get; set; } = ValidValue.Valid;
|
||||||
|
public ValidValue SportId { get; set; } = ValidValue.Valid;
|
||||||
|
public ValidValue About { get; set; } = ValidValue.Valid;
|
||||||
public ValidValue Participation { get; set; } = ValidValue.Valid;
|
public ValidValue Participation { get; set; } = ValidValue.Valid;
|
||||||
public ValidValue Officiating { get; set; } = ValidValue.Valid;
|
public ValidValue Officiating { get; set; } = ValidValue.Valid;
|
||||||
public ValidValue SportId { get; set; } = ValidValue.Valid;
|
|
||||||
public ValidValue UserSportData { get; set; } = ValidValue.Valid;
|
public ValidValue UserSportData { get; set; } = ValidValue.Valid;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -187,6 +196,11 @@ namespace Saxonite.Net.Standard.Base.Bus
|
|||||||
get { return data.SportId; }
|
get { return data.SportId; }
|
||||||
protected set { data.SportId = value; }
|
protected set { data.SportId = value; }
|
||||||
}
|
}
|
||||||
|
public String About
|
||||||
|
{
|
||||||
|
get { return data.About; }
|
||||||
|
set { data.About = value; }
|
||||||
|
}
|
||||||
public Sax.SportParticipation Participation
|
public Sax.SportParticipation Participation
|
||||||
{
|
{
|
||||||
get { return data.Participation; }
|
get { return data.Participation; }
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Sarand.Net.Standard.Base.Core;
|
using Sarand.Net.Standard.Base.Bus;
|
||||||
|
using Sarand.Net.Standard.Base.Core;
|
||||||
using Saxonite.Net.Standard.Base.App;
|
using Saxonite.Net.Standard.Base.App;
|
||||||
using Saxonite.Net.Standard.Base.Bus;
|
using Saxonite.Net.Standard.Base.Bus;
|
||||||
using System;
|
using System;
|
||||||
@@ -25,6 +26,13 @@ namespace Saxonite.Net.Standard.Base.Consoles
|
|||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
// Utilities.
|
// Utilities.
|
||||||
public abstract void PopulateCachedDataToInternals(SaxInternals internals);
|
public abstract void PopulateCachedDataToInternals(SaxInternals internals);
|
||||||
|
/// <summary>
|
||||||
|
/// Encrypted Ids are stored in cache to ensure that they are consistent throughout a user's session
|
||||||
|
/// by persisting them through the life of the cache (application restart).
|
||||||
|
/// <para>Required as the encrypted values are compared in javascript.</para>
|
||||||
|
/// <para>Candidate encrypted value supplied by calling routine as cache doesn't know how to encrypt - used if Id not previously encrypted.</para>
|
||||||
|
/// </summary>
|
||||||
|
public abstract String GetEncryptedId(Sax.DataItemType itemType, SysId id, String candidateValue);
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
// Regions.
|
// Regions.
|
||||||
@@ -36,6 +44,13 @@ namespace Saxonite.Net.Standard.Base.Consoles
|
|||||||
/// Get the cached list of active regions.
|
/// Get the cached list of active regions.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract List<SaxRegion.Data> GetActiveRegions();
|
public abstract List<SaxRegion.Data> GetActiveRegions();
|
||||||
|
/// <summary>
|
||||||
|
/// Persistent encrypted Region Ids.
|
||||||
|
/// </summary>
|
||||||
|
public String GetEncryptedRegionId(SysId regionId, String candidateValue)
|
||||||
|
{
|
||||||
|
return GetEncryptedId(Sax.DataItemType.Region, regionId, candidateValue);
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
// Sports.
|
// Sports.
|
||||||
@@ -47,6 +62,13 @@ namespace Saxonite.Net.Standard.Base.Consoles
|
|||||||
/// Get the cached list of active sports.
|
/// Get the cached list of active sports.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract List<SaxSport.Data> GetActiveSports();
|
public abstract List<SaxSport.Data> GetActiveSports();
|
||||||
|
/// <summary>
|
||||||
|
/// Persistent encrypted Sport Ids.
|
||||||
|
/// </summary>
|
||||||
|
public String GetEncryptedSportId(SysId sportId, String candidateValue)
|
||||||
|
{
|
||||||
|
return GetEncryptedId(Sax.DataItemType.Sport, sportId, candidateValue);
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,6 +91,12 @@ namespace Saxonite.Net.Standard.Base.Mgr
|
|||||||
errField.SportId = SacsHierarchyItem.ValidValue.Invalid;
|
errField.SportId = SacsHierarchyItem.ValidValue.Invalid;
|
||||||
return SetErrorState("User Sport must be specified");
|
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.
|
// Common properties.
|
||||||
|
|||||||
@@ -214,6 +214,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
|
|||||||
dbUserSport._Id = SysId.ToLong(userSport.Id);
|
dbUserSport._Id = SysId.ToLong(userSport.Id);
|
||||||
dbUserSport._UserAccountId = SysId.ToInt(userSport.UserAccountId);
|
dbUserSport._UserAccountId = SysId.ToInt(userSport.UserAccountId);
|
||||||
dbUserSport._SportId = SysId.ToInt(userSport.SportId);
|
dbUserSport._SportId = SysId.ToInt(userSport.SportId);
|
||||||
|
dbUserSport._About = userSport.About;
|
||||||
dbUserSport._Participation = (short)userSport.Participation;
|
dbUserSport._Participation = (short)userSport.Participation;
|
||||||
dbUserSport._Officiating = (short)userSport.Officiating;
|
dbUserSport._Officiating = (short)userSport.Officiating;
|
||||||
dbUserSport._UserSportData = userSport.UserSportData;
|
dbUserSport._UserSportData = userSport.UserSportData;
|
||||||
@@ -236,6 +237,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
|
|||||||
//userSport.Id = new SysId(dbUserSport._Id);
|
//userSport.Id = new SysId(dbUserSport._Id);
|
||||||
//userSport.UserAccountId = new SysId(dbUserSport._UserAccountId);
|
//userSport.UserAccountId = new SysId(dbUserSport._UserAccountId);
|
||||||
//userSport.SportId = new SysId(dbUserSport._SportId);
|
//userSport.SportId = new SysId(dbUserSport._SportId);
|
||||||
|
userSport.About = dbUserSport._About;
|
||||||
userSport.Participation = (Sax.SportParticipation)dbUserSport._Participation;
|
userSport.Participation = (Sax.SportParticipation)dbUserSport._Participation;
|
||||||
userSport.Officiating = (Sax.SportOfficiating)dbUserSport._Officiating;
|
userSport.Officiating = (Sax.SportOfficiating)dbUserSport._Officiating;
|
||||||
userSport.UserSportData = dbUserSport._UserSportData;
|
userSport.UserSportData = dbUserSport._UserSportData;
|
||||||
|
|||||||
Reference in New Issue
Block a user