This commit is contained in:
2021-09-30 18:23:11 +01:00
parent c2d2d7f674
commit 46b90cea74
73 changed files with 1621 additions and 793 deletions
+2 -2
View File
@@ -248,7 +248,7 @@ namespace Saxonite.Net.Core.Web.Base.App
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Region. // Region.
public String GetRegionName(SaxRegion region) public String GetRegionName(SaxRegion.Data region)
{ {
if (region == null) return ""; if (region == null) return "";
// ToDo Region name localisation. // ToDo Region name localisation.
@@ -262,7 +262,7 @@ namespace Saxonite.Net.Core.Web.Base.App
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Sport. // Sport.
public String GetSportName(SaxSport sport) public String GetSportName(SaxSport.Data sport)
{ {
if (sport == null) return ""; if (sport == null) return "";
// ToDo Sport name localisation. // ToDo Sport name localisation.
@@ -68,20 +68,30 @@ namespace Saxonite.Net.Core.Web.Base.Consoles
public List<SaxRegion.Data> activeRegionDataList = null; public List<SaxRegion.Data> activeRegionDataList = null;
} }
private readonly RegionsData regionsData = new RegionsData(); private readonly RegionsData regionsData = new RegionsData();
public override List<SaxRegion> GetActiveRegions() public override List<SaxRegion.Data> GetAllRegions()
{ {
String fn = GetType().Name + ".ActiveRegions"; String fn = GetType().Name + ".ActiveRegions";
if (!RegionsSupported) throw new NotSupportedException(fn + " Regions not supported."); if (!RegionsSupported) throw new NotSupportedException(fn + " Regions not supported.");
List<SaxRegion> activeRegions = new List<SaxRegion>(); List<SaxRegion.Data> activeRegions = new List<SaxRegion.Data>();
List<SaxRegion.Data> activeRegionDataList = new List<SaxRegion.Data>();
if (regionsData.regionDataMap == null) ForceRefresh(); if (regionsData.regionDataMap == null) ForceRefresh();
lock (regionsData) lock (regionsData)
{ {
if (regionsData.regionDataMap == null) throw new NotSupportedException(fn + " Regions not populated."); if (regionsData.regionDataMap == null) throw new NotSupportedException(fn + " Regions not populated.");
activeRegionDataList.AddRange(regionsData.activeRegionDataList); activeRegions.AddRange(regionsData.regionDataMap.Values);
}
return activeRegions;
}
public override List<SaxRegion.Data> GetActiveRegions()
{
String fn = GetType().Name + ".ActiveRegions";
if (!RegionsSupported) throw new NotSupportedException(fn + " Regions not supported.");
List<SaxRegion.Data> activeRegions = new List<SaxRegion.Data>();
if (regionsData.regionDataMap == null) ForceRefresh();
lock (regionsData)
{
if (regionsData.regionDataMap == null) throw new NotSupportedException(fn + " Regions not populated.");
activeRegions.AddRange(regionsData.activeRegionDataList);
} }
foreach (SaxRegion.Data regionData in activeRegionDataList)
activeRegions.Add(GetRegion(regionData));
return activeRegions; return activeRegions;
} }
protected void RefreshRegions() protected void RefreshRegions()
@@ -120,7 +130,7 @@ namespace Saxonite.Net.Core.Web.Base.Consoles
regionsData.regionDataMap = newRegionDataMap; regionsData.regionDataMap = newRegionDataMap;
regionsData.activeRegionDataList = newActiveRegionDataList; regionsData.activeRegionDataList = newActiveRegionDataList;
} }
SaLogger.Info(fn + " END. Regions found: " + regionsData.regionDataMap.Count + ". Elapsed: " + DateUtil.FormatNumberOfSeconds((DateTime.Now - startedAt).TotalSeconds), true); SaLogger.Info(fn + " END. Regions found: " + regionsData.regionDataMap.Count + ". Elapsed: " + DateUtil.FormatNumberOfSeconds((DateTime.Now - startedAt).TotalSeconds));
} }
private static bool IsRegionActive(Dictionary<SysId, SaxRegion.Data> regionDataMap, SaxRegion.Data regionData) private static bool IsRegionActive(Dictionary<SysId, SaxRegion.Data> regionDataMap, SaxRegion.Data regionData)
{ {
@@ -147,20 +157,30 @@ namespace Saxonite.Net.Core.Web.Base.Consoles
public List<SaxSport.Data> activeSportDataList = null; public List<SaxSport.Data> activeSportDataList = null;
} }
private readonly SportsData sportsData = new SportsData(); private readonly SportsData sportsData = new SportsData();
public override List<SaxSport> GetActiveSports() public override List<SaxSport.Data> GetAllSports()
{ {
String fn = GetType().Name + ".ActiveSports"; String fn = GetType().Name + ".GetAllSports";
if (!SportsSupported) throw new NotSupportedException(fn + " Sports not supported."); if (!SportsSupported) throw new NotSupportedException(fn + " Sports not supported.");
List<SaxSport> activeSports = new List<SaxSport>(); List<SaxSport.Data> sports = new List<SaxSport.Data>();
List<SaxSport.Data> activeSportDataList = new List<SaxSport.Data>();
if (sportsData.sportDataMap == null) ForceRefresh(); if (sportsData.sportDataMap == null) ForceRefresh();
lock (sportsData) lock (sportsData)
{ {
if (sportsData.sportDataMap == null) throw new NotSupportedException(fn + " Sports not populated."); if (sportsData.sportDataMap == null) throw new NotSupportedException(fn + " Sports not populated.");
activeSportDataList.AddRange(sportsData.activeSportDataList); sports.AddRange(sportsData.sportDataMap.Values);
}
return sports;
}
public override List<SaxSport.Data> GetActiveSports()
{
String fn = GetType().Name + ".GetActiveSports";
if (!SportsSupported) throw new NotSupportedException(fn + " Sports not supported.");
List<SaxSport.Data> activeSports = new List<SaxSport.Data>();
if (sportsData.sportDataMap == null) ForceRefresh();
lock (sportsData)
{
if (sportsData.sportDataMap == null) throw new NotSupportedException(fn + " Sports not populated.");
activeSports.AddRange(sportsData.activeSportDataList);
} }
foreach (SaxSport.Data sportData in activeSportDataList)
activeSports.Add(GetSport(sportData));
return activeSports; return activeSports;
} }
protected void RefreshSports() protected void RefreshSports()
@@ -199,7 +219,7 @@ namespace Saxonite.Net.Core.Web.Base.Consoles
sportsData.sportDataMap = newSportDataMap; sportsData.sportDataMap = newSportDataMap;
sportsData.activeSportDataList = newActiveSportDataList; sportsData.activeSportDataList = newActiveSportDataList;
} }
SaLogger.Info(fn + " END. Sports found: " + sportsData.sportDataMap.Count + ". Elapsed: " + DateUtil.FormatNumberOfSeconds((DateTime.Now - startedAt).TotalSeconds), true); SaLogger.Info(fn + " END. Sports found: " + sportsData.sportDataMap.Count + ". Elapsed: " + DateUtil.FormatNumberOfSeconds((DateTime.Now - startedAt).TotalSeconds));
} }
private static bool IsSportActive(Dictionary<SysId, SaxSport.Data> sportDataMap, SaxSport.Data sportData) private static bool IsSportActive(Dictionary<SysId, SaxSport.Data> sportDataMap, SaxSport.Data sportData)
{ {
@@ -110,6 +110,7 @@ namespace Saxonite.Net.Core.Web.Base.Controllers
public SaxItemDataMgr ItemDataMgr { get { return Internals.ItemDataMgr; } } public 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> 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; } }
public List<TypeCodeDesc> RegionTypeCodes { get { return Internals.RegionTypeCodes; } } public List<TypeCodeDesc> RegionTypeCodes { get { return Internals.RegionTypeCodes; } }
@@ -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> 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; } }
public List<TypeCodeDesc> RegionTypeCodes { get { return Internals.RegionTypeCodes; } } public List<TypeCodeDesc> RegionTypeCodes { get { return Internals.RegionTypeCodes; } }
@@ -220,6 +221,18 @@ namespace Saxonite.Net.Core.Web.Base.Models
get { return new SelectList(SaxSystem.GetCodesOfType(Sax.CodeType.YesNo), "Code", "Desc"); } get { return new SelectList(SaxSystem.GetCodesOfType(Sax.CodeType.YesNo), "Code", "Desc"); }
} }
/// <summary>List of Sport Participation options for dropdown.</summary>
public IEnumerable<SelectListItem> SportSpecialityLabelCodesForSelect
{
get
{
List<SelectListItem> codes = new List<SelectListItem>();
codes.Add(new SelectListItem("Default", ""));
codes.AddRange(new SelectList(SportSpecialityLabelCodes, "Code", "Desc"));
return codes;
}
}
/// <summary>List of Sport Participation options for dropdown.</summary> /// <summary>List of Sport Participation options for dropdown.</summary>
public IEnumerable<SelectListItem> SportParticipationCodesForSelect public IEnumerable<SelectListItem> SportParticipationCodesForSelect
{ {
@@ -19,12 +19,11 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
{ {
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Sport data. // Sport data.
private class SportData_List private class SportData_List : AjaxResponse_Data.ItemData_Base
{ {
public String Id { get; set; }
public String Name { get; set; } public String Name { get; set; }
public String StatusCode { get; set; } public String SpecialityLabelCode { get; set; }
public String StatusDesc { get; set; } public String SpecialityLabelDesc { get; set; }
} }
private class SportData_Full : SportData_List private class SportData_Full : SportData_List
{ {
@@ -33,6 +32,8 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
{ {
data.Id = SysId.ToString(sport.Id); data.Id = SysId.ToString(sport.Id);
data.Name = sport.Name; data.Name = sport.Name;
data.SpecialityLabelCode = SportSpecialityLabelCodes.GetCodeForType(sport.SpecialityLabel);
data.SpecialityLabelDesc = SportSpecialityLabelCodes.GetDescForType(sport.SpecialityLabel);
data.StatusCode = sport.StatusCode; data.StatusCode = sport.StatusCode;
data.StatusDesc = sport.StatusDesc; data.StatusDesc = sport.StatusDesc;
} }
@@ -82,11 +83,12 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
// Item columns. // Item columns.
ColumnDfn colId = ReferenceMgr.GetSportColumnDfn(SaxSport.Column.Id); ColumnDfn colId = ReferenceMgr.GetSportColumnDfn(SaxSport.Column.Id);
ColumnDfn colName = ReferenceMgr.GetSportColumnDfn(SaxSport.Column.Name); ColumnDfn colName = ReferenceMgr.GetSportColumnDfn(SaxSport.Column.Name);
ColumnDfn colSpecialityLabel = ReferenceMgr.GetSportColumnDfn(SaxSport.Column.SpecialityLabel);
ColumnDfn colStatus = ReferenceMgr.GetSportColumnDfn(SaxSport.Column.Status); ColumnDfn colStatus = ReferenceMgr.GetSportColumnDfn(SaxSport.Column.Status);
List<ColumnDfn> columns = new List<ColumnDfn>() List<ColumnDfn> columns = new List<ColumnDfn>()
{ {
colId, colId,
colName, colName, colSpecialityLabel,
colStatus colStatus
}; };
@@ -99,10 +101,13 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
while (resultSet != null && resultSet.HasRows && resultSet.NextRecord()) while (resultSet != null && resultSet.HasRows && resultSet.NextRecord())
{ {
NamedValue.Map values = resultSet.GetRecordValues(); NamedValue.Map values = resultSet.GetRecordValues();
Sax.SportSpecialityLabel specialityLabel = (Sax.SportSpecialityLabel)values.GetLong(colSpecialityLabel.DataName);
SportData_List sportData = new SportData_List() SportData_List sportData = new SportData_List()
{ {
Id = values.GetString(colId.DataName), Id = values.GetString(colId.DataName),
Name = values.GetString(colName.DataName), Name = values.GetString(colName.DataName),
SpecialityLabelCode = SportSpecialityLabelCodes.GetCodeForType(specialityLabel),
SpecialityLabelDesc = SportSpecialityLabelCodes.GetDescForType(specialityLabel),
StatusCode = values.GetString(colStatus.DataName), StatusCode = values.GetString(colStatus.DataName),
StatusDesc = SacsSystem.GetStatusDescForCode(values.GetString(colStatus.DataName)) StatusDesc = SacsSystem.GetStatusDescForCode(values.GetString(colStatus.DataName))
}; };
@@ -199,6 +204,8 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
// Populate item properties. // Populate item properties.
if (model.SportName != null) if (model.SportName != null)
sport.Name = model.SportName; sport.Name = model.SportName;
if (model.SportSpecialityLabelCode != null)
sport.SpecialityLabel = model.SportSpecialityLabel;
if (model.SportStatusCode != null) if (model.SportStatusCode != null)
sport.Status = model.SportStatus; sport.Status = model.SportStatus;
@@ -38,6 +38,8 @@ namespace Saxonite.Net.Core.Web.Admin.Models
// Sport properties. // Sport properties.
public String SportId { get; set; } public String SportId { get; set; }
public String SportName { get; set; } public String SportName { get; set; }
public String SportSpecialityLabelCode { get; set; }
public Sax.SportSpecialityLabel SportSpecialityLabel { get { return (Sax.SportSpecialityLabel)SportSpecialityLabelCodes.GetTypeForCode(SportSpecialityLabelCode); } }
public String SportStatusCode { get; set; } public String SportStatusCode { get; set; }
public SaStatus SportStatus { get { return SacsSystem.GetStatusForCode(SportStatusCode); } } public SaStatus SportStatus { get { return SacsSystem.GetStatusForCode(SportStatusCode); } }
@@ -69,6 +71,16 @@ namespace Saxonite.Net.Core.Web.Admin.Models
} }
} }
// Sport Speciality Label.
if (SportSpecialityLabelCode != null)
{
if (!StringUtil.IsEmpty(SportSpecialityLabelCode))
{
if (SportSpecialityLabel <= 0)
responseData.SetControlError(nameof(SportSpecialityLabel), Localiser["msg.validation.invalid.value"]);
}
}
// Sport status. // Sport status.
if (SportStatusCode != null) if (SportStatusCode != null)
{ {
@@ -192,6 +192,9 @@
<data name="label.database.table" xml:space="preserve"> <data name="label.database.table" xml:space="preserve">
<value>Database table</value> <value>Database table</value>
</data> </data>
<data name="label.default" xml:space="preserve">
<value>Default</value>
</data>
<data name="label.delete" xml:space="preserve"> <data name="label.delete" xml:space="preserve">
<value>Delete</value> <value>Delete</value>
</data> </data>
@@ -318,6 +321,12 @@
<data name="label.selected.none" xml:space="preserve"> <data name="label.selected.none" xml:space="preserve">
<value>none selected</value> <value>none selected</value>
</data> </data>
<data name="label.speciality" xml:space="preserve">
<value>Speciality</value>
</data>
<data name="label.speciality.label" xml:space="preserve">
<value>Speciality label</value>
</data>
<data name="label.sport" xml:space="preserve"> <data name="label.sport" xml:space="preserve">
<value>Sport</value> <value>Sport</value>
</data> </data>
+54 -11
View File
@@ -5,19 +5,36 @@
ViewData["Title"] = "Sports"; ViewData["Title"] = "Sports";
} }
<div class=""> <div class="sax-panel Sports">
<script type="text/javascript">
sax.lbl.refresh = '@(Localiser.GetJavascriptText("label.refresh"))';
sax.lbl.create = '@(Localiser.GetJavascriptText("label.create"))';
sax.lbl.edit = '@(Localiser.GetJavascriptText("label.edit"))';
</script>
@* Filter Form *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmSportFilter", @class = "sax-form", @onSubmit = "return false;" })) @using (@Html.BeginForm(FormMethod.Post, new { @id = "frmSportFilter", @class = "sax-form", @onSubmit = "return false;" }))
{ {
@* Filter Panel *@
<div class="sax-panel-filter"> <div class="sax-panel-filter">
@* Header - Page caption, paging controls, actions. *@
<div class="sax-header row"> <div class="sax-header row">
<div class="col"><div class="sax-caption">@Localiser["sport.caption.sports"]</div></div> <div class="col"><div class="sax-caption">@Localiser["sport.caption.sports"]</div></div>
<div class="fixed row"> <div class="fixed row">
<div> <div class="col">
<partial name="~/Views/Common/ResultsPaging.cshtml" /> <partial name="~/Views/Common/ResultsPaging.cshtml" />
</div> </div>
<div class="sax-action sax-results-refresh"><img src="~/img/action/refresh24.png" alt="@(Localiser["label.refresh"])" title="@(Localiser["label.refresh"])" /></div> <div class="fixed">
<div class="sax-action sax-item-create"><img src="~/img/action/add24.png" alt="@(Localiser["label.create"])" title="@(Localiser["label.create"])" /></div> @* 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> </div>
<div class="sax-content"> <div class="sax-content">
@@ -26,27 +43,47 @@
<div class="col-sm-7">@Html.TextBoxFor(model => model.Filter.Sport, new { @id = "ifFilterSport", @class = "FilterSport", @maxlength = "32" })</div> <div class="col-sm-7">@Html.TextBoxFor(model => model.Filter.Sport, new { @id = "ifFilterSport", @class = "FilterSport", @maxlength = "32" })</div>
</div> </div>
</div> </div>
@* Filter element templates *@
<div class="sax-panel-item-template">
@* Burger dropdown item template - ul is ignored *@
<ul class="sax-dropdown-menu SportFilter">
<li class="sax-dropdown-item sax-action"><div class="sax-label">XXX</div></li>
</ul>
</div>
</div> </div>
} }
@* Results Panel *@
<div class="sax-panel-results"> <div class="sax-panel-results">
<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>
@* Element templates *@
<div class="sax-panel-item-template"> <div class="sax-panel-item-template">
@* Sport item template *@
<div class="sax-panel-item Sport"> <div class="sax-panel-item Sport">
<div class="sax-header row"> <div class="sax-header row">
<div class="col"> <div class="col">
<div class="sax-caption"><div class=" sax-action SportName">Sport name</div></div> <div class="sax-caption"><div class="sax-action sax-item-update SportName">Sport name</div></div>
</div> </div>
<div class="fixed sax-actions"> <div class="fixed sax-actions">
<div class="sax-action sax-item-update"><img src="~/img/action/edit24.png" alt="@(Localiser["label.update"])" title="@(Localiser["label.update"])" /></div> @* 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> </div>
<div class="sax-content"> <div class="sax-content">
<div class="row"> <div class="row">
<div class="col-sm-4"><div class="SportCategory"></div></div> <div class="col-sm-4"><div class="sax-note SportSpeciality">@Localiser["label.speciality"]:&nbsp;<span class="SportSpecialityLabel"></span></div></div>
<div class="col-sm-4"><div class="SportType"></div></div> <div class="col-sm-4"><div class="sax-note "></div></div>
<div class="col-sm-4 right"><div class="StatusDesc"></div></div> <div class="col-sm-4 right"><div class="sax-note StatusDesc"></div></div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-sm-4"></div> <div class="col-sm-4"></div>
@@ -54,10 +91,16 @@
</div> </div>
</div> </div>
</div> </div>
@* Burger dropdown item template - ul is ignored *@
<ul class="sax-dropdown-menu Sport">
<li class="sax-dropdown-item sax-action"><div class="sax-label">XXX</div></li>
</ul>
</div> </div>
</div> </div>
<partial name="Panel-SportDialog.cshtml" />
</div> </div>
<partial name="Panel-SportDialog.cshtml" />
@@ -14,32 +14,63 @@
} }
<div id="dlgSport" class="sax-dialog" title=""> <div id="dlgSport" class="sax-dialog" title="">
<div class="spacer2"></div>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmSport", @class = "sax-form", @onSubmit = "return false;" })) @using (@Html.BeginForm(FormMethod.Post, new { @id = "frmSport", @class = "sax-form", @onSubmit = "return false;" }))
{ {
@Html.HiddenFor(model => model.SportId, new { @class = "SportId" }) @Html.HiddenFor(model => model.SportId, new { @class = "SportId" })
@* Sport name *@ @* Sport Name *@
<div class="sax-form-control SportName"> <div class="sax-form-control SportName">
<div class="sax-label"> <div class="row">
<label for="ifSportName"><span><span class="required">*</span> @Localiser["label.name"]</span></label> <div class="col-sm-3">
<div class="sax-label">
<label for="ifSportName"><span>@Localiser["label.name"]</span><span class="required">&nbsp;*</span></label>
</div>
</div>
<div class="col-sm-9">
<div class="sax-control">
@Html.TextBoxFor(model => model.SportName, new { @id = "ifSportName", @class = "SportName sax-input", @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.Sport_Name) })
</div>
<div class="sax-message"></div>
</div>
</div> </div>
<div class="sax-control">
@Html.TextBoxFor(model => model.SportName, new { @id = "ifSportName", @class = "SportName sax-input", @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.Sport_Name) })
</div>
<div class="sax-message"></div>
</div> </div>
@* Sport status *@ @* Sport Speciality Label *@
<div class="sax-form-control SportSpecialityLabel">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="cbSportSpecialityLabel"><span>@Localiser["label.speciality.label"]</span></label>
</div>
</div>
<div class="col-sm-9">
<div class="sax-control">
@Html.DropDownListFor(model => model.SportSpecialityLabelCode, Model.SportSpecialityLabelCodesForSelect, new { @id = "cbSportSpecialityLabel", @class = "SportSpecialityLabel sax-select" })
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Sport Status *@
<div class="sax-form-control SportStatus"> <div class="sax-form-control SportStatus">
<div class="sax-label"> <div class="row">
<label for="cbSportStatus"><span><span class="required">*</span> @Localiser["label.status"]</span></label> <div class="col-sm-3">
<div class="sax-label">
<label for="cbSportStatus"><span>@Localiser["label.status"]</span><span class="required">&nbsp;*</span></label>
</div>
</div>
<div class="col-sm-9">
<div class="sax-control">
<select id="cbSportStatus" class="sax-select SportStatus" name="SportStatusCode"></select>
</div>
<div class="sax-message"></div>
</div>
</div> </div>
<div class="sax-control">
<select id="cbSportStatus" class="sax-select SportStatus" name="SportStatusCode"></select>
</div>
<div class="sax-message"></div>
</div> </div>
} }
<div class="spacer2"></div>
</div> </div>
+3 -3
View File
@@ -69,7 +69,7 @@
<div class="sax-header row"> <div class="sax-header row">
<div class="col"> <div class="col">
@* User email *@ @* User email *@
<div class="sax-caption"><div class="sax-action UserEmailAddress"></div></div> <div class="sax-caption"><div class="sax-action sax-item-update UserEmailAddress"></div></div>
</div> </div>
<div class="fixed sax-actions"> <div class="fixed sax-actions">
@* Burger menu *@ @* Burger menu *@
@@ -102,7 +102,7 @@
</div> </div>
</div> </div>
<partial name="Panel-UserDialog.cshtml" />
</div> </div>
<partial name="Panel-UserDialog.cshtml" />
+77 -47
View File
@@ -5,16 +5,17 @@
(function (win, doc, undef) (function (win, doc, undef)
{ {
"use strict"; "use strict";
let $pnl = sax.$pnl, $frm = sax.$frm, $dlg = sax.$dlg;
sax.itemIdPrefix = 'Itm_'; sax.itemIdPrefix = 'Itm_';
//-------------------------------------------------------------- //--------------------------------------------------------------
sax.refreshResults = function (delay) sax.refreshResults = function (delay)
{ {
var $results = $('.sax-panel-results');
if (!sax.awaitingRefreshResponse) if (!sax.awaitingRefreshResponse)
{ {
var $items = $('.sax-panel-item-list', $results).fadeOut(200).empty(); $('.sax-burger', $pnl.filter).hide();
var $msgs = $('.sax-panel-messages', $results).hide().empty().append($('<div class="sax-message">' + sax.msg.dataQuerying + '</div>')).fadeIn(200); var $items = $('.sax-panel-item-list', $pnl.results).fadeOut(200).empty();
var $msgs = $('.sax-panel-messages', $pnl.results).hide().empty().append($('<div class="sax-message">' + sax.msg.dataQuerying + '</div>')).fadeIn(200);
} }
sax.ajax.refreshResults = sax.ajax.refreshResults || { url: sax.url.base + 'Sport/Ajax/GetList', formId: 'frmSportFilter', callbackFn: sax.doRefreshResults }; sax.ajax.refreshResults = sax.ajax.refreshResults || { url: sax.url.base + 'Sport/Ajax/GetList', formId: 'frmSportFilter', callbackFn: sax.doRefreshResults };
sax.doAjaxRequest(sax.ajax.refreshResults, delay || 50); sax.doAjaxRequest(sax.ajax.refreshResults, delay || 50);
@@ -25,27 +26,26 @@
//sax.debug('doRefreshResults', response); //sax.debug('doRefreshResults', response);
delete sax.awaitingRefreshResponse; delete sax.awaitingRefreshResponse;
sax.refreshControlValues(response.controlValues); sax.refreshControlValues(response.controlValues);
var $results = $('.sax-panel-results'); var $msgs = $('.sax-panel-messages', $pnl.results).hide().empty();
var $msgs = $('.sax-panel-messages', $results).hide().empty(); var $items = $('.sax-panel-item-list', $pnl.results).hide().empty();
var $items = $('.sax-panel-item-list', $results).hide().empty();
var $tmpl = $('.sax-panel-item-template .sax-panel-item.Sport', $results);
sax.refreshPaging(response, '#frmSportFilter', sax.refreshResults); sax.refreshPaging(response, '#frmSportFilter', sax.refreshResults);
if (!response.success) return; if (!response.success) return;
// Reference data - Statuses. // Reference data - Statuses.
if (response.defaultStatusCode) sax.data.defaultStatusCode = response.defaultStatusCode; if (response.defaultStatusCode) sax.data.defaultStatusCode = response.defaultStatusCode;
if (response.statuses) if (response.statuses)
sax.populateSelectCodeDesc('#cbSportStatus', response.statuses); sax.populateSelectCodeDesc('#cbSportStatus', response.statuses);
// Menu.
var $bgr = $('.sax-burger', $pnl.filter).hide();
var $mnu = $('ul.sax-dropdown-menu', $bgr).empty();
$mnu.append(sax.getFilterMenuOption(sax.lbl.refresh, function () { sax.refreshResults(); }));
$mnu.append(sax.getFilterMenuOption(sax.lbl.create, function () { sax.createItem(); }));
$bgr.toggle(!!$('.sax-dropdown-item', $mnu).length);
// Items. // Items.
var items = response.sports; var items = response.sports;
if (!items.length) if (!items.length)
return $msgs.append($('<div class="sax-message">' + sax.msg.dataNoneFound + '</div>')).fadeIn(500); return $msgs.append($('<div class="sax-message">' + sax.msg.dataNoneFound + '</div>')).fadeIn(500);
for (let itemIdx = 0; itemIdx < items.length; itemIdx++) for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
{ $items.append(sax.populateItem(sax.getItemTemplate(), items[itemIdx]));
let item = items[itemIdx];
let $item = $tmpl.clone();
sax.populateItem($item, item);
$items.append($item);
}
$items.fadeIn(50); $items.fadeIn(50);
} }
sax.populateItem = function ($item, item) sax.populateItem = function ($item, item)
@@ -53,51 +53,80 @@
if (!item) return; if (!item) return;
$item.prop('id', sax.itemIdPrefix + item.id); $item.prop('id', sax.itemIdPrefix + item.id);
$('.SportName', $item).text(item.name); $('.SportName', $item).text(item.name);
$('.SportSpecialityLabel', $item).text(item.specialityLabelDesc);
$('.SportSpeciality', $item).toggle(!!item.specialityLabelCode);
$('.StatusDesc', $item).text(item.statusDesc); $('.StatusDesc', $item).text(item.statusDesc);
$('.sax-caption .sax-action, .sax-actions .sax-action.sax-item-update', $item).off('click').on('click', function () { sax.updateItem(item.id) }) $('.sax-caption .sax-action').toggleClass('sax-action', !item.deleted);
$item.off('dblclick').on('dblclick', function () { sax.updateItem(item.id) }) let $mnu = $('ul.sax-dropdown-menu', $item);
$('.sax-panel-results .sax-panel-messages').hide().empty(); if (!item.deleted)
{
$mnu.append(sax.getItemMenuOption(sax.lbl.edit, function () { sax.updateItem(item) }));
$('.sax-header .sax-action.sax-item-update', $item).off('click').on('click', function () { sax.updateItem(item) });
$item.off('dblclick').on('dblclick', function () { sax.updateItem(item) });
}
$('.sax-burger', $item).toggle(!!$('.sax-dropdown-item', $mnu).length);
$('.sax-panel-messages', $pnl.results).hide().empty();
return $item;
}
//--------------------------------------------------------------
sax.getFilterDropdownTemplate = function ()
{
return $('.sax-panel-item-template .sax-dropdown-menu.SportFilter li.sax-dropdown-item', $pnl.filter).clone();
}
sax.getItemTemplate = function ()
{
return $('.sax-panel-item-template .sax-panel-item.Sport', $pnl.results).clone();
}
sax.getItemDropdownTemplate = function ()
{
return $('.sax-panel-item-template .sax-dropdown-menu.Sport li.sax-dropdown-item', $pnl.results).clone();
}
sax.getFilterMenuOption = function (lbl, fn)
{
return sax.getMenuOption(sax.getFilterDropdownTemplate(), lbl, fn);
}
sax.getItemMenuOption = function (lbl, fn)
{
return sax.getMenuOption(sax.getItemDropdownTemplate(), lbl, fn);
}
sax.getMenuOption = function ($opt, lbl, fn)
{
return $opt.find('div.sax-label').text(lbl).end().on('click', fn);
} }
//-------------------------------------------------------------- //--------------------------------------------------------------
sax.createItem = function () sax.createItem = function ()
{ {
let $frm = sax.$frm.sport; let frm = $frm.sport;
$('.SportId,input[type="text"],textarea,select', $frm).val(''); $('.SportId,input[type="text"],textarea,select', frm).val('');
$('.SportStatus', $frm).val(sax.data.defaultStatusCode); $('.SportStatus', frm).val(sax.data.defaultStatusCode);
sax.clearControlErrors(); sax.clearControlErrors();
sax.$dlg.sport.dialog('option', 'title', sax.dlg.title.createSport); $dlg.sport.dialog('option', 'title', sax.dlg.title.createSport);
sax.openDialog(sax.$dlg.sport, 600, 600); sax.openDialog($dlg.sport, 600, 600);
}
sax.doCreateItem = function ()
{
sax.storeItem();
} }
//-------------------------------------------------------------- //--------------------------------------------------------------
sax.updateItem = function (id) sax.updateItem = function (item)
{ {
$('.SportId', sax.$frm.sportId).val(id); $('.SportId', $frm.sportId).val(item.id);
sax.ajax.updateItem = sax.ajax.updateItem || { url: sax.url.base + 'Sport/Ajax/GetItem', formId: 'frmSportId', callbackFn: sax.onUpdateItem }; sax.ajax.updateItem = sax.ajax.updateItem || { url: sax.url.base + 'Sport/Ajax/GetItem', formId: 'frmSportId', callbackFn: sax.onUpdateItem };
sax.doAjaxRequest(sax.ajax.updateItem, 50); sax.doAjaxRequest(sax.ajax.updateItem, 50);
} }
sax.onUpdateItem = function (response) sax.onUpdateItem = function (response)
{ {
//sax.debug('onUpdateItem', response); //sax.debug('onUpdateItem', response);
let $frm = sax.$frm.sport; let frm = $frm.sport;
$('.SportId,input[type="text"],textarea,select', $frm).val(''); $('.SportId,input[type="text"],textarea,select', frm).val('');
if (!response.success) return; if (!response.success) return;
let item = response.sport; let item = response.sport;
$('.SportId', $frm).val(item.id); $('.SportId', frm).val(item.id);
$('.SportName', $frm).val(item.name); $('.SportName', frm).val(item.name);
$('.SportStatus', $frm).val(item.statusCode); $('.SportSpecialityLabel', frm).val(item.specialityLabelCode);
$('.SportStatus', frm).val(item.statusCode);
sax.clearControlErrors(); sax.clearControlErrors();
sax.$dlg.sport.dialog('option', 'title', sax.dlg.title.updateSport); $dlg.sport.dialog('option', 'title', sax.dlg.title.updateSport);
sax.openDialog(sax.$dlg.sport, 600, 600); sax.openDialog($dlg.sport, 600, 600);
}
sax.doUpdateItem = function ()
{
sax.storeItem();
} }
//-------------------------------------------------------------- //--------------------------------------------------------------
@@ -111,15 +140,14 @@
//sax.debug('onStoreItem', response); //sax.debug('onStoreItem', response);
sax.refreshControlValues(response.controlValues); sax.refreshControlValues(response.controlValues);
if (!response.success) return; if (!response.success) return;
sax.$dlg.sport.dialog('close'); $dlg.sport.dialog('close');
var item = response.sport; var item = response.sport;
var $item = $('#' + sax.itemIdPrefix + item.id); var $item = $('#' + sax.itemIdPrefix + item.id);
if (!$item.length) if (!$item.length)
{ {
var $results = $('.sax-panel-results'); $item = sax.getItemTemplate();
$item = $('.sax-panel-item-template .sax-panel-item.Sport', $results).clone(); $('.sax-panel-item-list', $pnl.results).prepend($item).show();
$('.sax-panel-item-list', $results).prepend($item).show();
} }
sax.populateItem($item, item) sax.populateItem($item, item)
} }
@@ -127,19 +155,21 @@
//-------------------------------------------------------------- //--------------------------------------------------------------
$(function () $(function ()
{ {
$('.sax-action.sax-item-create').on('click', function () { sax.createItem(); }); $pnl.sports = $('.sax-panel.Sports');
$('.sax-action.sax-results-refresh').on('click', function () { sax.refreshResults(); }); $pnl.filter = $('.sax-panel-filter', $pnl.sports);
$('.sax-input').on('input', function () { sax.clearControlError(this); }); $pnl.results = $('.sax-panel-results', $pnl.sports);
sax.$frm.filter = $('#frmSportFilter'); sax.$frm.filter = $('#frmSportFilter');
$('.FilterSport', sax.$frm.filter).on('input', function () { sax.refreshResults(250); }); $('.FilterSport', sax.$frm.filter).on('input', function () { sax.refreshResults(250); });
sax.$frm.sportId = $('#frmSportId'); sax.$frm.sportId = $('#frmSportId');
sax.$frm.sport = $('#frmSport'); sax.$frm.sport = $('#frmSport');
$('.sax-input', sax.$frm.sport).on('input', function () { sax.clearControlError(this); });
$('.sax-select', sax.$frm.sport).on('change', 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(); };
opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); }; opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); };
sax.$dlg.sport = $('#dlgSport').dialog(opt); $dlg.sport = $('#dlgSport').dialog(opt);
setTimeout(sax.refreshResults, 250); setTimeout(sax.refreshResults, 250);
}); });
+3 -2
View File
@@ -222,8 +222,9 @@
//-------------------------------------------------------------- //--------------------------------------------------------------
$(function () $(function ()
{ {
$pnl.filter = $('.sax-panel-filter'); $pnl.users = $('.sax-panel.Users');
$pnl.results = $('.sax-panel-results'); $pnl.filter = $('.sax-panel-filter', $pnl.users);
$pnl.results = $('.sax-panel-results', $pnl.users);
$frm.filter = $('#frmUserFilter'); $frm.filter = $('#frmUserFilter');
$('.FilterUser', $frm.filter).on('input', function () { sax.refreshResults(250); }); $('.FilterUser', $frm.filter).on('input', function () { sax.refreshResults(250); });
@@ -213,6 +213,9 @@
<data name="home.organisation.request.para2" xml:space="preserve"> <data name="home.organisation.request.para2" xml:space="preserve">
<value>Sign-up now with a few details and we'll let you know when you can login and get going.</value> <value>Sign-up now with a few details and we'll let you know when you can login and get going.</value>
</data> </data>
<data name="label.about" xml:space="preserve">
<value>About</value>
</data>
<data name="label.account" xml:space="preserve"> <data name="label.account" xml:space="preserve">
<value>My Account</value> <value>My Account</value>
</data> </data>
@@ -225,6 +228,9 @@
<data name="label.address" xml:space="preserve"> <data name="label.address" xml:space="preserve">
<value>Address</value> <value>Address</value>
</data> </data>
<data name="label.alternatively" xml:space="preserve">
<value>Alternatively</value>
</data>
<data name="label.article" xml:space="preserve"> <data name="label.article" xml:space="preserve">
<value>Article</value> <value>Article</value>
</data> </data>
@@ -276,6 +282,12 @@
<data name="label.discipline" xml:space="preserve"> <data name="label.discipline" xml:space="preserve">
<value>Discipline</value> <value>Discipline</value>
</data> </data>
<data name="label.download" xml:space="preserve">
<value>Download</value>
</data>
<data name="label.drag.image.here" xml:space="preserve">
<value>Drag your image here.</value>
</data>
<data name="label.edit" xml:space="preserve"> <data name="label.edit" xml:space="preserve">
<value>Edit</value> <value>Edit</value>
</data> </data>
@@ -483,6 +495,9 @@
<data name="label.update" xml:space="preserve"> <data name="label.update" xml:space="preserve">
<value>Update</value> <value>Update</value>
</data> </data>
<data name="label.upload" xml:space="preserve">
<value>Upload</value>
</data>
<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>
@@ -35,11 +35,12 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
public String Title { get; set; } public String Title { get; set; }
public String FirstName { get; set; } public String FirstName { get; set; }
public String LastName { get; set; } public String LastName { get; set; }
public String About { get; set; }
public byte Gender { get; set; } public byte Gender { get; set; }
public String GenderCaption{ get; set; } public String GenderCaption { get; set; }
public byte DobDay { get; set; } public byte DobDay { get; set; }
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 int RegionIdCountry { get; set; }
public String RegionCaptionCountry { get; set; } public String RegionCaptionCountry { get; set; }
@@ -54,22 +55,19 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
data.Title = userAccount.Title; data.Title = userAccount.Title;
data.FirstName = userAccount.FirstName; data.FirstName = userAccount.FirstName;
data.LastName = userAccount.LastName; data.LastName = userAccount.LastName;
data.About = userAccount.About;
data.Gender = (byte)userAccount.Gender; data.Gender = (byte)userAccount.Gender;
data.GenderCaption = Localiser.GetGenderCaption(userAccount.Gender); data.GenderCaption = Localiser.GetGenderCaption(userAccount.Gender);
data.DobDay= (byte)userAccount.DateOfBirthDay; data.DobDay = (byte)userAccount.DateOfBirthDay;
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 = SysId.ToInt(userAccount.RegionIdCountry);
data.RegionIdProvince = SysId.ToInt(userAccount.RegionIdProvince); data.RegionIdProvince = SysId.ToInt(userAccount.RegionIdProvince);
using (SaxRegion regionCountry = Internals.GetRegion(userAccount.RegionIdCountry)) data.RegionCaptionCountry = Localiser.GetRegionName(Internals.GetRegion(userAccount.RegionIdCountry));
using (SaxRegion regionProvince = Internals.GetRegion(userAccount.RegionIdProvince)) data.RegionCaptionProvince = Localiser.GetRegionName(Internals.GetRegion(userAccount.RegionIdProvince));
{ List<String> locations = new List<string>() { data.RegionCaptionProvince, data.RegionCaptionCountry };
data.RegionCaptionCountry = Localiser.GetRegionName(regionCountry); data.LocationCaption = locations.Concat(", ", "", "", true, true);
data.RegionCaptionProvince = Localiser.GetRegionName(regionProvince);
List<String> locations = new List<string>() { data.RegionCaptionProvince, data.RegionCaptionCountry };
data.LocationCaption = locations.Concat(", ", "", "", true, true);
}
} }
//------------------------------------------------------------------- //-------------------------------------------------------------------
@@ -112,7 +110,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
responseData.Genders.Add(gender.Type.ToString(), Localiser.GetGenderCaption((Sax.Gender)gender.Type)); responseData.Genders.Add(gender.Type.ToString(), Localiser.GetGenderCaption((Sax.Gender)gender.Type));
// Reference data - Months. // Reference data - Months.
for (int month= 1; month <= 12; month++) for (int month = 1; month <= 12; month++)
responseData.Months.Add(month.ToString(), DateUtil.Format(new DateTime(DateTime.Today.Year, month, 1), "MMMM", SessionCulture)); responseData.Months.Add(month.ToString(), DateUtil.Format(new DateTime(DateTime.Today.Year, month, 1), "MMMM", SessionCulture));
// Retrieve user details. // Retrieve user details.
@@ -280,6 +278,8 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
userAccount.FirstName = model.AccountFirstName; userAccount.FirstName = model.AccountFirstName;
if (model.AccountLastName != null) if (model.AccountLastName != null)
userAccount.LastName = model.AccountLastName; userAccount.LastName = model.AccountLastName;
if (model.AccountAbout != null)
userAccount.About = model.AccountAbout;
if (model.AccountGender != null) if (model.AccountGender != null)
userAccount.Gender = model.GetAccountGender(); userAccount.Gender = model.GetAccountGender();
// Date of birth. // Date of birth.
@@ -299,7 +299,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
else else
{ {
userAccount.DateOfBirthMonth = 0; userAccount.DateOfBirthMonth = 0;
userAccount.DateOfBirthDay= 0; userAccount.DateOfBirthDay = 0;
} }
// Regions. // Regions.
if (model.AccountRegionIdCountry != null) if (model.AccountRegionIdCountry != null)
@@ -25,27 +25,25 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
{ {
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Data definitions. // Data definitions.
private class ProfileSportResponseData_List private class ProfileSportResponseData_List : AjaxResponse_Data.ItemData_Base
{ {
public long Id { get; set; } public String SportId { get; set; }
public long SportId { get; set; }
public String SportName { get; set; } public String SportName { get; set; }
public String SportSpecialityLabel { get; set; }
public String SportParticipation { get; set; } public String SportParticipation { get; set; }
public String SportOfficiating { get; set; } public String SportOfficiating { get; set; }
public String StatusCode { get; set; }
public String StatusDesc { get; set; }
} }
private class ProfileSportResponseData_Item : ProfileSportResponseData_List private class ProfileSportResponseData_Item : ProfileSportResponseData_List
{ {
public String SportParticipationCode { get; set; } public String SportParticipationCode { get; set; }
public String SportOfficiatingCode { get; set; } public String SportOfficiatingCode { get; set; }
public String CreatedOnFmt { 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.ToLong(userSport.Id); data.Id = SysId.ToString(userSport.Id);
data.SportId = SysId.ToLong(userSport.SportId); data.SportId = SysId.ToString(userSport.SportId);
data.SportName = sport.Name; data.SportName = sport.Name;
data.SportSpecialityLabel = model.GetSportSpecialityLabel(userSport.SportId);
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);
@@ -110,11 +108,13 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
while (resultSet != null && resultSet.HasRows && resultSet.NextRecord()) while (resultSet != null && resultSet.HasRows && resultSet.NextRecord())
{ {
NamedValue.Map values = resultSet.GetRecordValues(); NamedValue.Map values = resultSet.GetRecordValues();
SysId sportId = new SysId(values.GetLong(colSportId.DataName));
ProfileSportResponseData_List userSportData = new ProfileSportResponseData_List() ProfileSportResponseData_List userSportData = new ProfileSportResponseData_List()
{ {
Id = values.GetLong(colId.DataName), Id = values.GetLong(colId.DataName).ToString(),
SportId = values.GetLong(colSportId.DataName), SportId = sportId.ToString(),
SportName = values.GetString(colSportName.DataName), SportName = values.GetString(colSportName.DataName),
SportSpecialityLabel = model.GetSportSpecialityLabel(sportId),
SportParticipation = Localiser.GetSportParticipationTypeCaption((Sax.SportParticipation)values.GetLong(colParticipation.DataName)), SportParticipation = Localiser.GetSportParticipationTypeCaption((Sax.SportParticipation)values.GetLong(colParticipation.DataName)),
SportOfficiating = Localiser.GetSportOfficiatingTypeCaption((Sax.SportOfficiating)values.GetLong(colOfficiating.DataName)), SportOfficiating = Localiser.GetSportOfficiatingTypeCaption((Sax.SportOfficiating)values.GetLong(colOfficiating.DataName)),
StatusCode = values.GetString(colStatus.DataName), StatusCode = values.GetString(colStatus.DataName),
@@ -54,7 +54,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
public String RegionIdNation { get; set; } public String RegionIdNation { get; set; }
public String RegionIdProvince { get; set; } public String RegionIdProvince { get; set; }
} }
private void PopulateSportExperienceResponseData(Model_UserSportExperience model, SportExperienceResponseData_Detail data, SaxUserSportExperience userSportExperience) private void PopulateSportExperienceResponseData(Model_UserSportExperience model, SportExperienceResponseData_Detail data, SaxUserSport userSport, SaxUserSportExperience userSportExperience)
{ {
data.Id = model.EncryptId(userSportExperience.Id); data.Id = model.EncryptId(userSportExperience.Id);
data.UserSportId = model.EncryptId(userSportExperience.UserSportId); data.UserSportId = model.EncryptId(userSportExperience.UserSportId);
@@ -72,14 +72,10 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
// Regions. // Regions.
data.RegionIdNation = model.EncryptId(userSportExperience.RegionIdNation); data.RegionIdNation = model.EncryptId(userSportExperience.RegionIdNation);
data.RegionIdProvince = model.EncryptId(userSportExperience.RegionIdProvince); data.RegionIdProvince = model.EncryptId(userSportExperience.RegionIdProvince);
using (SaxRegion regionNation = Internals.GetRegion(userSportExperience.RegionIdNation)) data.RegionCaptionNation = Localiser.GetRegionName(Internals.GetRegion(userSportExperience.RegionIdNation));
using (SaxRegion regionProvince = Internals.GetRegion(userSportExperience.RegionIdProvince)) data.RegionCaptionProvince = Localiser.GetRegionName(Internals.GetRegion(userSportExperience.RegionIdProvince));
{ List<String> locations = new List<string>() { data.RegionCaptionProvince, data.RegionCaptionNation };
data.RegionCaptionNation = Localiser.GetRegionName(regionNation); data.RegionRepresentation = locations.Concat(", ", "", "", true, true);
data.RegionCaptionProvince = Localiser.GetRegionName(regionProvince);
List<String> locations = new List<string>() { data.RegionCaptionProvince, data.RegionCaptionNation };
data.RegionRepresentation = locations.Concat(", ", "", "", true, true);
}
} }
//------------------------------------------------------------------- //-------------------------------------------------------------------
@@ -94,6 +90,17 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
public AjaxResponse_UserSportExperienceList(SaxModel_Online model) : base(model) { } public AjaxResponse_UserSportExperienceList(SaxModel_Online model) : base(model) { }
// Contact details. // Contact details.
public List<SportExperienceResponseData_List> Experiences { get; } = new List<SportExperienceResponseData_List>(); public List<SportExperienceResponseData_List> Experiences { get; } = new List<SportExperienceResponseData_List>();
// Sport details.
public class SportData
{
public class SpecialityData
{
public bool? NotRelevant { get; set; } = null;
public String Label { get; set; }
}
public SpecialityData Speciality { get; } = new SpecialityData();
}
public SportData Sport { get; } = new SportData();
} }
// Ajax request. // Ajax request.
[HttpPost] [HttpPost]
@@ -119,6 +126,10 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
if (userSport == null || !userSport.UserAccountId.Equals(SessionData.User.UserAccountId)) if (userSport == null || !userSport.UserAccountId.Equals(SessionData.User.UserAccountId))
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.something.gone.wrong"])); return Json(responseData.SetGoHome(messageTitle, Localiser["msg.something.gone.wrong"]));
// Sport details.
if (model.SportSpecialityNotRelevant(userSport.SportId)) responseData.Sport.Speciality.NotRelevant = true;
responseData.Sport.Speciality.Label = model.GetSportSpecialityLabel(userSport.SportId);
// Columns. // Columns.
ColumnDfn colId = AccountMgr.GetUserSportExperienceColumnDfn(SaxUserSportExperience.Column.Id); ColumnDfn colId = AccountMgr.GetUserSportExperienceColumnDfn(SaxUserSportExperience.Column.Id);
ColumnDfn colUserSportId = AccountMgr.GetUserSportExperienceColumnDfn(SaxUserSportExperience.Column.UserSportId); ColumnDfn colUserSportId = AccountMgr.GetUserSportExperienceColumnDfn(SaxUserSportExperience.Column.UserSportId);
@@ -214,7 +225,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
// Populate data to response. // Populate data to response.
responseData.Experience = new SportExperienceResponseData_Detail(); responseData.Experience = new SportExperienceResponseData_Detail();
PopulateSportExperienceResponseData(model, responseData.Experience, userSportExperience); PopulateSportExperienceResponseData(model, responseData.Experience, userSport, userSportExperience);
} }
// Complete response. // Complete response.
@@ -337,7 +348,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
// Populate data to response. // Populate data to response.
responseData.Experience = new SportExperienceResponseData_Detail(); responseData.Experience = new SportExperienceResponseData_Detail();
PopulateSportExperienceResponseData(model, responseData.Experience, userSportExperience); PopulateSportExperienceResponseData(model, responseData.Experience, userSport, userSportExperience);
} }
// Complete response. // Complete response.
@@ -50,8 +50,9 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
/// <summary>Article activity info. </summary> /// <summary>Article activity info. </summary>
private class ActivityResponseData_Article private class ActivityResponseData_Article
{ {
public ActivityResponseData_Article(SaxController_Online controller, SaxModel_Online model, SaxArticle article) public ActivityResponseData_Article(SaxController_Online controller, SaxModel_Online model, SaxArticle article, SaxOrganisation organisation)
{ {
Organisation = organisation?.Name ?? null;
Author = model.GetUserAccountDisplayName(article.UserAccountIdAuthor); Author = model.GetUserAccountDisplayName(article.UserAccountIdAuthor);
Headline = article.Headline; Headline = article.Headline;
Summary = article.Summary; Summary = article.Summary;
@@ -218,44 +219,53 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
RefreshModel(model); RefreshModel(model);
SaxSessionData_Online sessionData = SessionData_Online; SaxSessionData_Online sessionData = SessionData_Online;
// Identify activity. // Record disposable items as they are created so all can be disposed when needed.
Sax.DataItemType itemType = (Sax.DataItemType)StringUtil.ToShort(model.ActivityType); using (DisposableCollection<SacsHierarchyItem> disposableItems = new DisposableCollection<SacsHierarchyItem>())
SysId itemId = model.ExtractSysId(model.ActivityIdx);
if (itemType <= 0 || !SysId.IsValid(itemId))
{ {
SaLogger.Warn(fn + " Activity type/Id inncorrectly specified." + GetLogSuffix());
return Json(responseData);
}
// Retrieve activity details. // Identify activity.
if (itemType == Sax.DataItemType.Article) Sax.DataItemType itemType = (Sax.DataItemType)StringUtil.ToShort(model.ActivityType);
{ SysId itemId = model.ExtractSysId(model.ActivityIdx);
// Article. if (itemType <= 0 || !SysId.IsValid(itemId))
SaxArticle article = ActivityMgr.GetArticleById(itemId);
if (article == null)
{ {
SaLogger.Warn(fn + " Article not found for Activity Id: " + itemId.ToString() + "." + GetLogSuffix()); SaLogger.Warn(fn + " Activity type/Id inncorrectly specified." + GetLogSuffix());
return Json(responseData); return Json(responseData);
} }
responseData.Article = new ActivityResponseData_Article(this, model, article);
} // Retrieve activity details.
else if (itemType == Sax.DataItemType.OrganisationOpportunity) if (itemType == Sax.DataItemType.Article)
{
// Organisation Opportunity.
SaxOrganisationOpportunity opportunity = ActivityMgr.GetOrganisationOpportunityById(itemId);
if (opportunity == null)
{ {
SaLogger.Warn(fn + " Opportunity not found for Activity Id: " + itemId.ToString() + "." + GetLogSuffix()); // Article.
SaxArticle article = ActivityMgr.GetArticleById(itemId);
disposableItems.Add(article);
if (article == null)
{
SaLogger.Warn(fn + " Article not found for Activity Id: " + itemId.ToString() + "." + GetLogSuffix());
return Json(responseData);
}
SaxOrganisation organisation = AccountMgr.GetOrganisationById(article.OrganisationId);
disposableItems.Add(organisation);
responseData.Article = new ActivityResponseData_Article(this, model, article, organisation);
}
else if (itemType == Sax.DataItemType.OrganisationOpportunity)
{
// Organisation Opportunity.
SaxOrganisationOpportunity opportunity = ActivityMgr.GetOrganisationOpportunityById(itemId);
disposableItems.Add(opportunity);
if (opportunity == null)
{
SaLogger.Warn(fn + " Opportunity not found for Activity Id: " + itemId.ToString() + "." + GetLogSuffix());
return Json(responseData);
}
responseData.Opportunity = new ActivityResponseData_Opportunity(model, opportunity);
}
// Record activty viewing.
if (!ActivityConsole.RecordUserActivityViewed(SessionData.User.UserAccountId, new ItemId((short)itemType, itemId), DbUpdateInfo))
{
SaLogger.Warn(fn + " Failed to record Activity Viewing: " + ActivityConsole.ErrorStateMessage + "." + GetLogSuffix());
return Json(responseData); return Json(responseData);
} }
responseData.Opportunity = new ActivityResponseData_Opportunity(model, opportunity);
}
// Record activty viewing.
if (!ActivityConsole.RecordUserActivityViewed(SessionData.User.UserAccountId, new ItemId((short)itemType, itemId), DbUpdateInfo))
{
SaLogger.Warn(fn + " Failed to record Activity Viewing: " + ActivityConsole.ErrorStateMessage + "." + GetLogSuffix());
return Json(responseData);
} }
// Complete response. // Complete response.
@@ -78,6 +78,17 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
public bool CanManage { get; set; } public bool CanManage { get; set; }
} }
public UserData User { get; } = new UserData(); public UserData User { get; } = new UserData();
// Organisation.
public 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; }
}
public OrganisationData Organisation { get; } = new OrganisationData();
// Reference data. // Reference data.
public List<CodeDesc> OpportunityTypes { get; } = new List<CodeDesc>(); public List<CodeDesc> OpportunityTypes { get; } = new List<CodeDesc>();
} }
@@ -95,11 +106,16 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
if (!ValidReferer) return Forbid(); if (!ValidReferer) return Forbid();
if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData); if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData);
RefreshModel(model); RefreshModel(model);
SysId userAccountId = SessionData.User.UserAccountId;
// Organisation. // Record disposable items as they are created so all can be disposed when needed.
SysId organisationId = model.ExtractSysId(model.Filter.OrganisationId); using (DisposableCollection<SacsHierarchyItem> disposableItems = new DisposableCollection<SacsHierarchyItem>())
using (SaxOrganisation organisation = AccountMgr.GetOrganisationById(organisationId))
{ {
// Organisation.
SysId organisationId = model.ExtractSysId(model.Filter.OrganisationId);
SaxOrganisation organisation = AccountMgr.GetOrganisationById(organisationId);
disposableItems.Add(organisation);
if (organisation == null || !organisation.IsStatusActive) if (organisation == null || !organisation.IsStatusActive)
{ {
SaLogger.Warn(fn + " " + (organisation == null ? "Invalid" : "Inactive") + " organisation for Opportunity list. OrganisationId: '" + model.Filter.OrganisationId + "'"); SaLogger.Warn(fn + " " + (organisation == null ? "Invalid" : "Inactive") + " organisation for Opportunity list. OrganisationId: '" + model.Filter.OrganisationId + "'");
@@ -117,73 +133,85 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
// User organisation. // User organisation.
SaxUserOrganisation.Params prmUserOrganisation = new SaxUserOrganisation.Params(); SaxUserOrganisation.Params prmUserOrganisation = new SaxUserOrganisation.Params();
prmUserOrganisation.UserAccountIdsIncluded.Add(SessionData.User.UserAccountId); prmUserOrganisation.UserAccountIdsIncluded.Add(userAccountId);
prmUserOrganisation.OrganisationIdsIncluded.Add(organisationId); prmUserOrganisation.OrganisationIdsIncluded.Add(organisationId);
prmUserOrganisation.UserAccountStatusCat = SaxUserAccount.StatusCat.ActiveOnly; prmUserOrganisation.UserAccountStatusCat = SaxUserAccount.StatusCat.ActiveOnly;
prmUserOrganisation.StatusCat = SaxUserOrganisation.StatusCat.ActiveOnly; prmUserOrganisation.StatusCat = SaxUserOrganisation.StatusCat.ActiveOnly;
using (SaxUserOrganisation userOrganisation = AccountMgr.GetUserOrganisation(prmUserOrganisation)) SaxUserOrganisation userOrganisation = AccountMgr.GetUserOrganisation(prmUserOrganisation);
disposableItems.Add(userOrganisation);
if (userOrganisation == null)
{ {
SaLogger.Warn(fn + " Invalid/inactive user organisation for Opportunity list. UserAccountId: " + SysId.ToString(userAccountId) + ". OrganisationId: " + model.Filter.OrganisationId + ".");
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"]));
}
// User details. // Organisation.
responseData.User.CanManage = userOrganisation?.HasOrganisationRole(Sax.OrganisationRole.OpportunityAdmin) ?? false; responseData.Organisation.Id = SysId.ToString(organisation.Id);
responseData.Organisation.Name = organisation.Name;
responseData.Organisation.SportId = SysId.ToString(organisation.SportIdPrimary);
responseData.Organisation.SportName = model.GetSportCaption(organisation.SportIdPrimary);
responseData.Organisation.RegionId = SysId.ToString(organisation.RegionIdPrimary);
responseData.Organisation.RegionName = model.GetRegionCaption(organisation.RegionIdPrimary);
// Item filter. // User details.
SaxOrganisationOpportunity.Params prmOpportunity = new SaxOrganisationOpportunity.Params(); responseData.User.CanManage = userOrganisation?.HasOrganisationRole(Sax.OrganisationRole.OpportunityAdmin) ?? false;
prmOpportunity.UserAccountIdsIncluded.Add(SessionData.User.UserAccountId);
prmOpportunity.OrganisationIdsIncluded.Add(organisationId);
prmOpportunity.OpportunityFilter = model.Filter.Opportunity;
prmOpportunity.StatusCat = SaxOrganisationOpportunity.StatusCat.NotDeleted;
model.Paging.ItemTotal = (ulong)ActivityMgr.GetOrganisationOpportunityCount(prmOpportunity);
model.PopulatePagingTo(prmOpportunity.ResultsPaging);
// Item columns. // Item filter.
ColumnDfn colId = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.Id); SaxOrganisationOpportunity.Params prmOpportunity = new SaxOrganisationOpportunity.Params();
ColumnDfn colOpportunityTypeCode = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.OpportunityTypeCode); prmOpportunity.UserAccountIdsIncluded.Add(userAccountId);
ColumnDfn colPosition = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.Position); prmOpportunity.OrganisationIdsIncluded.Add(organisationId);
ColumnDfn colOutline = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.Outline); prmOpportunity.OpportunityFilter = model.Filter.Opportunity;
ColumnDfn colRegionId = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.RegionIdPrimary); prmOpportunity.StatusCat = SaxOrganisationOpportunity.StatusCat.NotDeleted;
ColumnDfn colRegionName = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.Region_Name); model.Paging.ItemTotal = (ulong)ActivityMgr.GetOrganisationOpportunityCount(prmOpportunity);
ColumnDfn colSportId = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.SportIdPrimary); model.PopulatePagingTo(prmOpportunity.ResultsPaging);
ColumnDfn colSportName = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.Sport_Name);
ColumnDfn colPublishedOn = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.PublishedAt_Date); // Item columns.
ColumnDfn colExpiresOn = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.ExpiresAt_Date); ColumnDfn colId = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.Id);
ColumnDfn colStatus = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.Status); ColumnDfn colOpportunityTypeCode = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.OpportunityTypeCode);
ColumnDfn colCreatedOn = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.CreateOn_Date); ColumnDfn colPosition = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.Position);
List<ColumnDfn> columns = new List<ColumnDfn>() ColumnDfn colOutline = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.Outline);
ColumnDfn colRegionId = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.RegionIdPrimary);
ColumnDfn colRegionName = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.Region_Name);
ColumnDfn colSportId = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.SportIdPrimary);
ColumnDfn colSportName = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.Sport_Name);
ColumnDfn colPublishedOn = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.PublishedAt_Date);
ColumnDfn colExpiresOn = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.ExpiresAt_Date);
ColumnDfn colStatus = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.Status);
ColumnDfn colCreatedOn = ActivityMgr.GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column.CreateOn_Date);
List<ColumnDfn> columns = new List<ColumnDfn>()
{
colId, colOpportunityTypeCode, colPosition, colOutline,
colRegionId, colRegionName, colSportId, colSportName,
colPublishedOn, colExpiresOn,
colStatus, colCreatedOn
};
// Sort columns.
colCreatedOn.SortAscending = false;
prmOpportunity.SortColumns.Add(colCreatedOn);
// Query items.
using (DbResultSet resultSet = ActivityMgr.ExecuteOrganisationOpportunityQuery(columns, prmOpportunity))
{
while (resultSet != null && resultSet.HasRows && resultSet.NextRecord())
{ {
colId, colOpportunityTypeCode, colPosition, colOutline, NamedValue.Map values = resultSet.GetRecordValues();
colRegionId, colRegionName, colSportId, colSportName, OpportunityData_List opportunityData = new OpportunityData_List()
colPublishedOn, colExpiresOn,
colStatus, colCreatedOn
};
// Sort columns.
colCreatedOn.SortAscending = false;
prmOpportunity.SortColumns.Add(colCreatedOn);
// Query items.
using (DbResultSet resultSet = ActivityMgr.ExecuteOrganisationOpportunityQuery(columns, prmOpportunity))
{
while (resultSet != null && resultSet.HasRows && resultSet.NextRecord())
{ {
NamedValue.Map values = resultSet.GetRecordValues(); Id = values.GetLong(colId.DataName).ToString(),
OpportunityData_List opportunityData = new OpportunityData_List() TypeCode = values.GetString(colOpportunityTypeCode.DataName),
{ TypeDesc = Localiser.GetOpportunityTypeCaption((Sax.OpportunityType)OpportunityTypeCodes.GetTypeForCode(values.GetString(colOpportunityTypeCode.DataName))),
Id = values.GetLong(colId.DataName).ToString(), Position = values.GetString(colPosition.DataName),
TypeCode = values.GetString(colOpportunityTypeCode.DataName), Outline = values.GetString(colOutline.DataName),
TypeDesc = Localiser.GetOpportunityTypeCaption((Sax.OpportunityType)OpportunityTypeCodes.GetTypeForCode(values.GetString(colOpportunityTypeCode.DataName))), RegionCaption = model.GetRegionCaption(values.GetString(colRegionId.DataName).ToSysId()),
Position = values.GetString(colPosition.DataName), SportCaption = model.GetSportCaption(values.GetString(colSportId.DataName).ToSysId()),
Outline = values.GetString(colOutline.DataName), CreatedOnFmt = Localiser.FormatDate(values.GetDateTime(colCreatedOn.DataName)),
RegionCaption = model.GetRegionCaption(values.GetString(colRegionId.DataName).ToSysId()), PublishedOnFmt = Localiser.FormatDate(values.GetDateTime(colPublishedOn.DataName)),
SportCaption = model.GetSportCaption(values.GetString(colSportId.DataName).ToSysId()), ExpiresOnFmt = Localiser.FormatDate(values.GetDateTime(colExpiresOn.DataName)),
CreatedOnFmt = Localiser.FormatDate(values.GetDateTime(colCreatedOn.DataName)), StatusCode = values.GetString(colStatus.DataName),
PublishedOnFmt = Localiser.FormatDate(values.GetDateTime(colPublishedOn.DataName)), StatusDesc = SacsSystem.GetStatusDescForCode(values.GetString(colStatus.DataName))
ExpiresOnFmt = Localiser.FormatDate(values.GetDateTime(colExpiresOn.DataName)), };
StatusCode = values.GetString(colStatus.DataName), responseData.Opportunities.Add(opportunityData);
StatusDesc = SacsSystem.GetStatusDescForCode(values.GetString(colStatus.DataName))
};
responseData.Opportunities.Add(opportunityData);
}
} }
} }
} }
@@ -49,14 +49,14 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
// Check Regions. // Check Regions.
SysId regionIdCountry = model.ExtractSysId(model.OrganisationRegionIdCountry); SysId regionIdCountry = model.ExtractSysId(model.OrganisationRegionIdCountry);
SaxRegion regionCountry = Internals.GetRegion(regionIdCountry); SaxRegion.Data regionCountry = Internals.GetRegion(regionIdCountry);
if (SysId.IsValid(regionIdCountry) && regionCountry == null) if (SysId.IsValid(regionIdCountry) && regionCountry == null)
{ {
SaLogger.Warn(fn + " Country region not found. Id: " + model.OrganisationRegionIdCountry + ". " + GetLogSuffix()); SaLogger.Warn(fn + " Country region not found. Id: " + model.OrganisationRegionIdCountry + ". " + GetLogSuffix());
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"])); return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
} }
SysId regionIdAddressProvince= model.ExtractSysId(model.OrganisationAddressRegionIdProvince); SysId regionIdAddressProvince= model.ExtractSysId(model.OrganisationAddressRegionIdProvince);
SaxRegion regionProvince = Internals.GetRegion(regionIdAddressProvince); SaxRegion.Data regionProvince = Internals.GetRegion(regionIdAddressProvince);
if (SysId.IsValid(regionIdAddressProvince) && regionProvince == null) if (SysId.IsValid(regionIdAddressProvince) && regionProvince == null)
{ {
SaLogger.Warn(fn + " Province region not found. Id: " + model.OrganisationAddressRegionIdProvince + ". " + GetLogSuffix()); SaLogger.Warn(fn + " Province region not found. Id: " + model.OrganisationAddressRegionIdProvince + ". " + GetLogSuffix());
@@ -37,6 +37,7 @@ namespace Saxonite.Net.Core.Web.Online.Models
public String AccountTitle { get; set; } public String AccountTitle { get; set; }
public String AccountFirstName { get; set; } public String AccountFirstName { get; set; }
public String AccountLastName { get; set; } public String AccountLastName { get; set; }
public String AccountAbout { get; set; }
public String AccountGender { get; set; } public String AccountGender { get; set; }
public Sax.Gender GetAccountGender() public Sax.Gender GetAccountGender()
{ {
@@ -106,6 +107,17 @@ namespace Saxonite.Net.Core.Web.Online.Models
responseData.SetControlError(nameof(AccountLastName), Localiser["msg.validation.maximum.length", GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName)]); responseData.SetControlError(nameof(AccountLastName), Localiser["msg.validation.maximum.length", GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName)]);
} }
// About.
if (AccountAbout != null)
{
responseData.SetControlValue(nameof(AccountAbout), AccountAbout);
if (!StringUtil.IsEmpty(AccountAbout))
{
if (StringUtil.GetLength(AccountAbout) > GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserAccount_About))
responseData.SetControlError(nameof(AccountAbout), Localiser["msg.validation.maximum.length", GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserAccount_About)]);
}
}
//--------------------------------------------------------------- //---------------------------------------------------------------
// Date of birth. // Date of birth.
if (AccountDobYear != null) if (AccountDobYear != null)
@@ -135,7 +147,7 @@ namespace Saxonite.Net.Core.Web.Online.Models
SysId regionIdCountry = ExtractSysId(AccountRegionIdCountry); SysId regionIdCountry = ExtractSysId(AccountRegionIdCountry);
if (AccountRegionIdCountry != null && SysId.IsValid(regionIdCountry)) if (AccountRegionIdCountry != null && SysId.IsValid(regionIdCountry))
{ {
SaxRegion regionCountry = Internals.GetRegion(regionIdCountry); SaxRegion.Data regionCountry = Internals.GetRegion(regionIdCountry);
if (regionCountry == null) if (regionCountry == null)
responseData.SetControlError(nameof(AccountRegionIdCountry), Localiser["msg.validation.invalid.value"]); responseData.SetControlError(nameof(AccountRegionIdCountry), Localiser["msg.validation.invalid.value"]);
} }
@@ -144,7 +156,7 @@ namespace Saxonite.Net.Core.Web.Online.Models
if (AccountRegionIdProvince != null) if (AccountRegionIdProvince != null)
{ {
SysId regionIdProvince = ExtractSysId(AccountRegionIdProvince); SysId regionIdProvince = ExtractSysId(AccountRegionIdProvince);
SaxRegion regionProvince = Internals.GetRegion(regionIdProvince); SaxRegion.Data regionProvince = Internals.GetRegion(regionIdProvince);
if (regionProvince == null) if (regionProvince == null)
responseData.SetControlError(nameof(AccountRegionIdProvince), Localiser["msg.validation.invalid.value"]); responseData.SetControlError(nameof(AccountRegionIdProvince), Localiser["msg.validation.invalid.value"]);
} }
@@ -46,7 +46,7 @@ namespace Saxonite.Net.Core.Web.Online.Models
{ {
get get
{ {
if (userCanManageOrganisationMembers == null && ValidUserSession) if (userCanManageOrganisationMembers == null && ValidUserSession)
{ {
SaxUserOrganisation.Params prmUserOrganisation = new SaxUserOrganisation.Params(); SaxUserOrganisation.Params prmUserOrganisation = new SaxUserOrganisation.Params();
prmUserOrganisation.UserAccountIdsIncluded.Add(SessionData.User.UserAccountId); prmUserOrganisation.UserAccountIdsIncluded.Add(SessionData.User.UserAccountId);
@@ -158,7 +158,7 @@ namespace Saxonite.Net.Core.Web.Online.Models
public List<RegionData> GetRegionDataList_Active() public List<RegionData> GetRegionDataList_Active()
{ {
List<RegionData> regions = new List<RegionData>(); List<RegionData> regions = new List<RegionData>();
foreach (SaxRegion region in DataCacheConsole.GetActiveRegions()) foreach (SaxRegion.Data region in DataCacheConsole.GetActiveRegions())
{ {
RegionData regionData = new RegionData() RegionData regionData = new RegionData()
{ {
@@ -177,10 +177,10 @@ namespace Saxonite.Net.Core.Web.Online.Models
} }
public String GetRegionCaption(SysId regionId) public String GetRegionCaption(SysId regionId)
{ {
SaxRegion region = DataCacheConsole.GetActiveRegions().Find(item => item.Id.Equals(regionId)); SaxRegion.Data region = DataCacheConsole.GetAllRegions().Find(item => item.Id.Equals(regionId));
return Localiser.GetRegionName(region); return Localiser.GetRegionName(region);
} }
public String GetRegionCaption(SaxRegion region) public String GetRegionCaption(SaxRegion.Data region)
{ {
return Localiser.GetRegionName(region); return Localiser.GetRegionName(region);
} }
@@ -197,7 +197,7 @@ namespace Saxonite.Net.Core.Web.Online.Models
public List<SportData> GetSportDataList_Active() public List<SportData> GetSportDataList_Active()
{ {
List<SportData> sports = new List<SportData>(); List<SportData> sports = new List<SportData>();
foreach (SaxSport sport in DataCacheConsole.GetActiveSports()) foreach (SaxSport.Data sport in DataCacheConsole.GetActiveSports())
{ {
SportData sportData = new SportData() SportData sportData = new SportData()
{ {
@@ -210,14 +210,45 @@ namespace Saxonite.Net.Core.Web.Online.Models
} }
return sports; return sports;
} }
// Sport caption.
public String GetSportCaption(SysId sportId) public String GetSportCaption(SysId sportId)
{ {
SaxSport sport = DataCacheConsole.GetActiveSports().Find(item => item.Id.Equals(sportId)); SaxSport.Data sport = DataCacheConsole.GetAllSports().Find(item => item.Id.Equals(sportId));
return GetSportCaption(sport);
}
public String GetSportCaption(SaxSport.Data sport)
{
if (sport == null) return "";
return Localiser.GetSportName(sport); return Localiser.GetSportName(sport);
} }
public String GetSportCaption(SaxSport sport) // Speciality type.
public bool SportSpecialityNotRelevant(SysId sportId)
{ {
return Localiser.GetSportName(sport); SaxSport.Data sport = DataCacheConsole.GetAllSports().Find(item => item.Id.Equals(sportId));
return SportSpecialityNotRelevant(sport);
}
public bool SportSpecialityNotRelevant(SaxSport.Data sport)
{
if (sport == null) return true;
return sport.SpecialityLabel == Sax.SportSpecialityLabel.NotRelevant;
}
// Speciality label.
public String GetSportSpecialityLabel(SysId sportId)
{
SaxSport.Data sport = DataCacheConsole.GetAllSports().Find(item => item.Id.Equals(sportId));
return GetSportSpecialityLabel(sport);
}
public String GetSportSpecialityLabel(SaxSport.Data sport)
{
if (sport == null) return "";
switch (sport.SpecialityLabel)
{
case Sax.SportSpecialityLabel.Positon:
return Localiser["label.position"];
case Sax.SportSpecialityLabel.Discipline:
return Localiser["label.discipline"];
}
return Localiser["label.speciality"];
} }
//------------------------------------------------------------------- //-------------------------------------------------------------------
@@ -68,8 +68,10 @@
</div> </div>
</div> </div>
@* User Contact Details form *@
<div class="sax-panel-form"> <div class="sax-panel-form">
@* User Contact Details form - Header *@
<div class="sax-header"> <div class="sax-header">
<div class="row"> <div class="row">
<div class="col"><div class="sax-caption">@Localiser["account.caption.profile.contact"]</div></div> <div class="col"><div class="sax-caption">@Localiser["account.caption.profile.contact"]</div></div>
@@ -78,74 +80,110 @@
</div> </div>
</div> </div>
@* User Contact Details form - Content *@
<div class="sax-content"> <div class="sax-content">
<div class="spacer2"></div>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmProfileContact", @class = "sax-form", @onSubmit = "return false;" })) @using (@Html.BeginForm(FormMethod.Post, new { @id = "frmProfileContact", @class = "sax-form", @onSubmit = "return false;" }))
{ {
@* User email *@ @* User email *@
<div class="sax-form-control AccountEmailAddress"> <div class="sax-form-control AccountEmailAddress">
<div class="sax-label"> <div class="row">
<label for="ifAccountEmailAddress"><span>@Localiser["label.email"]</span><span class="required">&nbsp;*</span></label> <div class="col-sm-3">
<div class="sax-label">
<label for="ifAccountEmailAddress"><span>@Localiser["label.email"]</span><span class="required">&nbsp;*</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
@Html.TextBoxFor(model => model.AccountEmailAddress, new { @id = "ifAccountEmailAddress", @class = "AccountEmailAddress sax-input", @readonly = "readonly", @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress) })
</div>
<div class="sax-message"></div>
</div>
</div> </div>
<div class="sax-control">
@Html.TextBoxFor(model => model.AccountEmailAddress, new { @id = "ifAccountEmailAddress", @class = "AccountEmailAddress sax-input", @readonly = "readonly", @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress) })
</div>
<div class="sax-message"></div>
</div> </div>
@* User Name *@
<div class="row"> <div class="row">
<div class="col-sm-4"> <div class="col-sm-3">
@* User first Title *@ <div class="sax-label d-none d-sm-block">
<div class="sax-form-control AccountTitle pr8"> <label for="ifAccountEmailAddress"><span>@Localiser["label.name"]</span></label>
<div class="sax-label"> </div>
<label for="cbAccountTitle"><span>@Localiser["label.title"]</span></label> </div>
<div class="col-sm row">
<div class="col-sm-4">
@* User first Title *@
<div class="sax-form-control AccountTitle pr8">
<div class="sax-label">
<label for="cbAccountTitle"><span>@Localiser["label.title"]</span></label>
</div>
<div class="sax-control">
@Html.DropDownListFor(model => model.AccountTitle, Model.TitlesForSelect, Localiser["label.select"], new { @id = "cbAccountTitle", @class = "AccountTitle sax-select" })
</div>
<div class="sax-message"></div>
</div> </div>
</div>
<div class="col-sm-4">
@* User first name *@
<div class="sax-form-control AccountFirstName pr8">
<div class="sax-label">
<label for="ifAccountFirstName"><span>@Localiser["label.first.name"]</span><span class="required">&nbsp;*</span></label>
</div>
<div class="sax-control">
@Html.TextBoxFor(model => model.AccountFirstName, new { @id = "ifAccountFirstName", @class = "AccountFirstName sax-input", @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName) })
</div>
<div class="sax-message"></div>
</div>
</div>
<div class="col-sm-4">
@* User last name *@
<div class="sax-form-control AccountLastName">
<div class="sax-label">
<label for="ifAccountLastName"><span>@Localiser["label.last.name"]</span><span class="required">&nbsp;*</span></label>
</div>
<div class="sax-control">
@Html.TextBoxFor(model => model.AccountLastName, new { @id = "ifAccountLastName", @class = "AccountLastName sax-input", @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName) })
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
</div>
@* About *@
<div class="sax-form-control AccountAbout">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="ifAccountAbout"><span>@Localiser["label.about"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control"> <div class="sax-control">
@Html.DropDownListFor(model => model.AccountTitle, Model.TitlesForSelect, Localiser["label.select"], new { @id = "cbAccountTitle", @class = "AccountTitle sax-select" }) @Html.TextAreaFor(model => model.AccountAbout, new { @id = "ifAccountAbout", @class = "AccountAbout sax-input", @rows = 4, @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserAccount_About) })
</div> </div>
<div class="sax-message"></div> <div class="sax-message"></div>
</div> </div>
</div> </div>
<div class="col-sm-4">
@* User first name *@
<div class="sax-form-control AccountFirstName pr8">
<div class="sax-label">
<label for="ifAccountFirstName"><span>@Localiser["label.first.name"]</span><span class="required">&nbsp;*</span></label>
</div>
<div class="sax-control">
@Html.TextBoxFor(model => model.AccountFirstName, new { @id = "ifAccountFirstName", @class = "AccountFirstName sax-input", @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName) })
</div>
<div class="sax-message"></div>
</div>
</div>
<div class="col-sm-4">
@* User last name *@
<div class="sax-form-control AccountLastName">
<div class="sax-label">
<label for="ifAccountLastName"><span>@Localiser["label.last.name"]</span><span class="required">&nbsp;*</span></label>
</div>
<div class="sax-control">
@Html.TextBoxFor(model => model.AccountLastName, new { @id = "ifAccountLastName", @class = "AccountLastName sax-input", @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName) })
</div>
<div class="sax-message"></div>
</div>
</div>
</div> </div>
@* Gender *@ @* Gender *@
<div class="sax-form-control AccountGender"> <div class="sax-form-control AccountGender">
<div class="row"> <div class="row">
<div class="col-sm-4"> <div class="col-sm-3">
<div class="sax-label"> <div class="sax-label">
<label for="cbAccountGender"><span>@Localiser["label.gender"]</span></label> <label for="cbAccountGender"><span>@Localiser["label.gender"]</span></label>
</div> </div>
</div> </div>
<div class="col-sm-8"> <div class="col-sm">
<div class="sax-control"> <div class="sax-control">
<select name="AccountGender" id="cbAccountGender" class="AccountGender sax-select"></select> <select name="AccountGender" id="cbAccountGender" class="AccountGender sax-select"></select>
</div> </div>
@@ -157,7 +195,7 @@
@* Date of birth *@ @* Date of birth *@
<div class="row"> <div class="row">
<div class="col-sm-4"> <div class="col-sm-3">
<div class="sax-form-control AccountDob"> <div class="sax-form-control AccountDob">
<div class="sax-label"> <div class="sax-label">
<label for="ifAccountRegionIdCountry"><span>@Localiser["label.date.of.birth"]</span></label> <label for="ifAccountRegionIdCountry"><span>@Localiser["label.date.of.birth"]</span></label>
@@ -165,17 +203,17 @@
</div> </div>
</div> </div>
<div class="col-sm-8"> <div class="col-sm">
<div class="row"> <div class="row">
@* DOB Day *@ @* DOB Year *@
<div class="col-4"> <div class="col-4">
<div class="sax-form-control AccountDobDay pr8"> <div class="sax-form-control AccountDobYear pr8">
<div class="sax-label"> <div class="sax-label">
<label for="cbAccountDobDay"><span>@Localiser["label.day"]</span></label> <label for="cbAccountDobYear"><span>@Localiser["label.year"]</span></label>
</div> </div>
<div class="sax-control"> <div class="sax-control">
<select name="AccountDobDay" id="cbAccountDobDay" class="AccountDobDay sax-select" onchange="sax.refreshDob();"></select> <select name="AccountDobYear" id="cbAccountDobYear" class="AccountDobYear sax-select" onchange="sax.refreshDob();"></select>
</div> </div>
<div class="sax-message"></div> <div class="sax-message"></div>
</div> </div>
@@ -194,14 +232,14 @@
</div> </div>
</div> </div>
@* DOB Year *@ @* DOB Day *@
<div class="col-4"> <div class="col-4">
<div class="sax-form-control AccountDobYear"> <div class="sax-form-control AccountDobDay">
<div class="sax-label"> <div class="sax-label">
<label for="cbAccountDobYear"><span>@Localiser["label.year"]</span></label> <label for="cbAccountDobDay"><span>@Localiser["label.day"]</span></label>
</div> </div>
<div class="sax-control"> <div class="sax-control">
<select name="AccountDobYear" id="cbAccountDobYear" class="AccountDobYear sax-select" onchange="sax.refreshDob();"></select> <select name="AccountDobDay" id="cbAccountDobDay" class="AccountDobDay sax-select" onchange="sax.refreshDob();"></select>
</div> </div>
<div class="sax-message"></div> <div class="sax-message"></div>
</div> </div>
@@ -216,12 +254,12 @@
@* Country Region *@ @* Country Region *@
<div class="sax-form-control AccountRegionIdCountry"> <div class="sax-form-control AccountRegionIdCountry">
<div class="row"> <div class="row">
<div class="col-sm-4"> <div class="col-sm-3">
<div class="sax-label"> <div class="sax-label">
<label for="ifAccountRegionIdCountry"><span>@Localiser["label.country"]</span><span class="required">&nbsp;*</span></label> <label for="ifAccountRegionIdCountry"><span>@Localiser["label.country"]</span><span class="required">&nbsp;*</span></label>
</div> </div>
</div> </div>
<div class="col-sm-8"> <div class="col-sm">
<div class="sax-control row"> <div class="sax-control row">
@Html.HiddenFor(model => model.AccountRegionIdCountry, new { @id = "ifAccountRegionIdCountry", @class = "AccountRegionIdCountry" }) @Html.HiddenFor(model => model.AccountRegionIdCountry, new { @id = "ifAccountRegionIdCountry", @class = "AccountRegionIdCountry" })
<div class="col"><input type="text" id="ifAccountRegionCaptionCountry" class="AccountRegionCaptionCountry sax-input" readonly="readonly" onDblClick="sax.selectRegionCountry()" /></div> <div class="col"><input type="text" id="ifAccountRegionCaptionCountry" class="AccountRegionCaptionCountry sax-input" readonly="readonly" onDblClick="sax.selectRegionCountry()" /></div>
@@ -234,27 +272,34 @@
@* Account image *@ @* Account image *@
<div class="sax-form-control AccountContactImage"> <div class="sax-form-control AccountContactImage">
<div class="sax-label"> <div class="row">
<label for="ifAccountImage"><span>@Localiser["label.image"]</span></label> <div class="col-sm-3">
</div> <div class="sax-label">
<div class="sax-control"> <label for="ifAccountImage"><span>@Localiser["label.image"]</span></label>
<div id="pnlContactImageDrop" class="sax-panel-drop row">
<div class="fixed">
<div class=""><img src="" class="sax-contact-image AccountContact" alt="" title="" /></div>
</div>
<div class="col">
Drag your image here.
<div class="DropMessage"></div>
<div class="UploadMessage"></div>
<div class="spacer4"></div>
<button id="pbSelectContactImage" class="sax-button" style="min-width:auto;margin-left:4px;padding:4px 6px" onclick="sax.selectContactImage()">@Localiser["label.select"]</button>
</div>
<div class="fixed">
<img id="" class="ContactImageUploadProgress" src="~/img/animated/progress-basketball-32.gif" style="display:none;margin:8px 4px;" />
</div> </div>
</div> </div>
<div class="col-sm">
<div class="sax-control">
<div id="pnlContactImageDrop" class="sax-panel-drop row">
<div class="fixed">
<div class=""><img src="" class="sax-contact-image AccountContact" alt="" title="" /></div>
</div>
<div class="col">
@Localiser["label.drag.image.here"]
<div class="DropMessage"></div>
<div class="UploadMessage"></div>
<div class="spacer4"></div>
@Localiser["label.alternatively"]:&nbsp;
<button id="pbSelectContactImage" class="sax-button" style="min-width:auto;margin-left:4px;padding:4px 6px;z-index:999;" onclick="sax.selectContactImage()">@Localiser["label.upload"]</button>
</div>
<div class="fixed">
<img id="" class="ContactImageUploadProgress" src="~/img/animated/progress-basketball-32.gif" style="display:none;margin:8px 4px;" />
</div>
</div>
</div>
<div class="sax-message"></div>
</div>
</div> </div>
<div class="sax-message"></div>
</div> </div>
@* Action buttons *@ @* Action buttons *@
@@ -266,6 +311,8 @@
} }
<div class="spacer2"></div>
</div> </div>
<div id="dlgSelectContactImage" class="sax-dialog"> <div id="dlgSelectContactImage" class="sax-dialog">
@@ -288,8 +335,6 @@
} }
</div> </div>
<div class="spacer2"></div>
</div> </div>
</div> </div>
@@ -13,7 +13,7 @@
<li class="dropdown-toggle caret-off"> <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> <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><div class="sax-action sax-dropdown-item" onclick="sax.orgReq.fn.requestOrganisation();">@Localiser["organisation.caption.organisation.request"]</div></li> <li class="sax-action sax-users sax-dropdown-item" onclick="sax.orgReq.fn.requestOrganisation();"><div class="sax-label">@Localiser["organisation.caption.organisation.request"]</div></li>
</ul> </ul>
</li> </li>
</ul> </ul>
@@ -1,8 +1,13 @@
@model SaxModel_Online @model SaxModel_Online
@inject SaxLocaliser Localiser @inject SaxLocaliser Localiser
@* Sport Experience panel - list experience for sport *@ @* Sport Experience panel - list experience for sport *@
<div class="sax-panel sax-panel-info ProfileSportExperience hidden"> <div class="sax-panel sax-panel-info ProfileSportExperience hidden">
<script type="text/javascript">
sax.lbl.speciality = '@Localiser.GetJavascriptText("label.speciality")';
</script>
<div class="sax-header"> <div class="sax-header">
<div class="row"> <div class="row">
<div class="col"><div class="sax-caption"><span>@Localiser["account.caption.profile.sports.experience"] - </span><span class="SportName"></span></div></div> <div class="col"><div class="sax-caption"><span>@Localiser["account.caption.profile.sports.experience"] - </span><span class="SportName"></span></div></div>
@@ -12,7 +17,7 @@
<li class="dropdown-toggle caret-off"> <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> <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" 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>
</ul> </ul>
</li> </li>
</ul> </ul>
@@ -172,7 +177,7 @@
<div class="row"> <div class="row">
<div class="col-sm-3"> <div class="col-sm-3">
<div class="sax-label"> <div class="sax-label">
<label for=""><span>@Localiser["label.speciality"]</span></label> <label for=""><span class="sax-label-text">@Localiser["label.speciality"]</span></label>
</div> </div>
</div> </div>
<div class="col-sm-9"> <div class="col-sm-9">
@@ -4,19 +4,34 @@
ViewData["Title"] = "Journalist - Articles"; ViewData["Title"] = "Journalist - Articles";
} }
<div class=""> <div class="sax-panel Articles">
<script type="text/javascript">
sax.lbl.edit = '@(Localiser.GetJavascriptText("label.edit"))';
sax.lbl.remove = '@(Localiser.GetJavascriptText("label.remove"))';
</script>
@* Filter Form *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmArticleFilter", @class = "sax-form", @action = "#", @method = "POST", onsubmit = "return false;" })) @using (@Html.BeginForm(FormMethod.Post, new { @id = "frmArticleFilter", @class = "sax-form", @action = "#", @method = "POST", onsubmit = "return false;" }))
{ {
@* Filter panel *@
<div class="sax-panel-filter"> <div class="sax-panel-filter">
<div class="sax-header row"> <div class="sax-header row">
<div class="col"><div class="sax-caption">@Localiser["article.caption.articles"]</div></div> <div class="col"><div class="sax-caption">@Localiser["article.caption.articles"]</div></div>
<div class="fixed row"> <div class="fixed row">
<div> <div class="col">
<partial name="~/Views/Common/ResultsPaging.cshtml" /> <partial name="~/Views/Common/ResultsPaging.cshtml" />
</div> </div>
<div class="sax-action sax-results-refresh"><img src="~/img/action/refresh24.png" alt="@(Localiser["label.refresh"])" title="@(Localiser["label.refresh"])" /></div> <div class="fixed">
<div class="sax-action sax-item-create"><img src="~/img/action/add24.png" alt="@(Localiser["label.create"])" title="@(Localiser["label.create"])" /></div> @* 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> </div>
<div class="sax-content"> <div class="sax-content">
@@ -36,20 +51,40 @@
<div class="col-sm-8"><input type="search" name="Filter.Article" id="ifArticleFilter" class="ArticleFilter sax-input" maxlength="64" /></div> <div class="col-sm-8"><input type="search" name="Filter.Article" id="ifArticleFilter" class="ArticleFilter sax-input" maxlength="64" /></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 Articles">
<li class="sax-dropdown-item sax-action"><div class="sax-label">...</div></li>
</ul>
</div>
</div> </div>
} }
@* Results Panel *@
<div class="sax-panel-results"> <div class="sax-panel-results">
<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>
@* Element templates *@
<div class="sax-panel-item-template"> <div class="sax-panel-item-template">
@* Article item template *@
<div class="sax-panel-item Article"> <div class="sax-panel-item Article">
<div class="sax-header row"> <div class="sax-header row">
<div class="col"> <div class="col">
<div class="sax-caption"><div class="sax-action ArticleHeadline"></div></div> <div class="sax-caption"><div class="sax-action ArticleHeadline"></div></div>
</div> </div>
<div class="fixed sax-actions"> <div class="fixed sax-actions">
<div class="sax-action sax-item-update"><img src="~/img/action/edit24.png" alt="@(Localiser["label.update"])" title="@(Localiser["label.update"])" /></div> @* 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> </div>
<div class="sax-content"> <div class="sax-content">
@@ -65,6 +100,12 @@
</div> </div>
</div> </div>
</div> </div>
@* Burger dropdown item template - ul is ignored *@
<ul class="sax-dropdown-menu Article">
<li class="sax-dropdown-item sax-action"><div class="sax-label">...</div></li>
</ul>
</div> </div>
</div> </div>
@@ -72,4 +113,3 @@
<partial name="~/Views/Common/OrganisationSelect.cshtml" /> <partial name="~/Views/Common/OrganisationSelect.cshtml" />
<partial name="Panel-ArticleDialog.cshtml" /> <partial name="Panel-ArticleDialog.cshtml" />
@@ -10,12 +10,17 @@
sax.dlg.title.selectRegion = '@Localiser.GetJavascriptText("reference.caption.region.select")'; sax.dlg.title.selectRegion = '@Localiser.GetJavascriptText("reference.caption.region.select")';
sax.dlg.title.selectSport = '@Localiser.GetJavascriptText("reference.caption.sport.select")'; sax.dlg.title.selectSport = '@Localiser.GetJavascriptText("reference.caption.sport.select")';
</script> </script>
@* Article Id form *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmArticleId", @class = "sax-form" })) @using (@Html.BeginForm(FormMethod.Post, new { @id = "frmArticleId", @class = "sax-form" }))
{ {
@Html.HiddenFor(model => model.ArticleId, new { @class = "ArticleId" }) @Html.HiddenFor(model => model.ArticleId, new { @class = "ArticleId" })
} }
@* Article dialog and form *@
<div id="dlgArticle" class="sax-dialog" title=""> <div id="dlgArticle" class="sax-dialog" title="">
<div class="spacer2"></div>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmArticle", @class = "sax-form", @onSubmit = "return false;" })) @using (@Html.BeginForm(FormMethod.Post, new { @id = "frmArticle", @class = "sax-form", @onSubmit = "return false;" }))
{ {
@Html.HiddenFor(model => model.ArticleId, new { @id = "ifArticleId", @class = "ArticleId" }) @Html.HiddenFor(model => model.ArticleId, new { @id = "ifArticleId", @class = "ArticleId" })
@@ -29,8 +34,8 @@
@* Organisation *@ @* Organisation *@
<div class="sax-form-control ArticleOrganisation"> <div class="sax-form-control ArticleOrganisation">
<div class="row"> <div class="row">
<div class="col-sm-4"> <div class="col-sm-3">
<div class="sax-label right pt4 pr8"> <div class="sax-label pt4 pr8">
<label for="ifArticleOrganisation"><span>@Localiser["label.organisation"]</span></label> <label for="ifArticleOrganisation"><span>@Localiser["label.organisation"]</span></label>
</div> </div>
</div> </div>
@@ -66,45 +71,63 @@
@* Sport *@ @* Sport *@
<div class="sax-form-control ArticleSportId"> <div class="sax-form-control ArticleSportId">
<div class="sax-label"> <div class="row">
<label for="ifArticleSportId"><span>@Localiser["label.sport"]</span><span class="required">&nbsp;*</span></label> <div class="col-sm-3">
<div class="sax-label">
<label for="ifArticleSportId"><span>@Localiser["label.sport"]</span><span class="required">&nbsp;*</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control row">
@Html.HiddenFor(model => model.ArticleSportId, new { @id = "ifArticleSportId", @class = "ArticleSportId" })
<div class="col">@Html.TextBoxFor(model => model.ArticleSportCaption, new { @id = "ifArticleSportCaption", @class = "ArticleSportCaption sax-input", @readonly = "readonly", @onDblClick = "sax.selectSport()" }) </div>
<div class="fixed"><button class="SelectSport sax-button" style="min-width:auto;margin-left:4px;padding:4px 6px" onclick="sax.selectSport()">@Localiser["label.select"]</button></div>
</div>
<div class="sax-message"></div>
</div>
</div> </div>
<div class="sax-control row">
@Html.HiddenFor(model => model.ArticleSportId, new { @id = "ifArticleSportId", @class = "ArticleSportId" })
<div class="col">@Html.TextBoxFor(model => model.ArticleSportCaption, new { @id = "ifArticleSportCaption", @class = "ArticleSportCaption sax-input", @readonly = "readonly", @onDblClick = "sax.selectSport()" }) </div>
<div class="fixed"><button class="SelectSport sax-button" style="min-width:auto;margin-left:4px;padding:4px 6px" onclick="sax.selectSport()">@Localiser["label.select"]</button></div>
</div>
<div class="sax-message"></div>
</div> </div>
@* Region *@ @* Region *@
<div class="sax-form-control ArticleRegionId"> <div class="sax-form-control ArticleRegionId">
<div class="sax-label"> <div class="row">
<label for="ifArticleRegionId"><span>@Localiser["label.region"]</span><span class="required">&nbsp;*</span></label> <div class="col-sm-3">
<div class="sax-label">
<label for="ifArticleRegionId"><span>@Localiser["label.region"]</span><span class="required">&nbsp;*</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control row">
@Html.HiddenFor(model => model.ArticleRegionId, new { @id = "ifArticleRegionId", @class = "ArticleRegionId" })
<div class="col">@Html.TextBoxFor(model => model.ArticleRegionCaption, new { @id = "ifArticleRegionCaption", @class = "ArticleRegionCaption sax-input", @readonly = "readonly", @onDblClick = "sax.selectRegion()" }) </div>
<div class="fixed"><button class="SelectRegion sax-button" style="min-width:auto;margin-left:4px;padding:4px 6px" onclick="sax.selectRegion()">@Localiser["label.select"]</button></div>
</div>
<div class="sax-message"></div>
</div>
</div> </div>
<div class="sax-control row">
@Html.HiddenFor(model => model.ArticleRegionId, new { @id = "ifArticleRegionId", @class = "ArticleRegionId" })
<div class="col">@Html.TextBoxFor(model => model.ArticleRegionCaption, new { @id = "ifArticleRegionCaption", @class = "ArticleRegionCaption sax-input", @readonly = "readonly", @onDblClick = "sax.selectRegion()" }) </div>
<div class="fixed"><button class="SelectRegion sax-button" style="min-width:auto;margin-left:4px;padding:4px 6px" onclick="sax.selectRegion()">@Localiser["label.select"]</button></div>
</div>
<div class="sax-message"></div>
</div> </div>
@* Publication *@ @* Publication *@
<div class="sax-form-control ArticlePublication"> <div class="sax-form-control ArticlePublication">
<div class="sax-label"> <div class="row">
<label for="ifArticleRegionId"><span>@Localiser["label.publication"]</span></label> <div class="col-sm-3">
</div> <div class="sax-label">
<div class="sax-control"> <label for="ifArticleRegionId"><span>@Localiser["label.publication"]</span></label>
<div class="row ArticlePublish"> </div>
<div class="fixed"><div class="pl16 pt4 pr8">@Html.CheckBoxFor(model => model.ArticlePublish, new { @id = "chkArticlePublish", @class = "ArticlePublish" })&nbsp;<span class="" onclick="$('#chkArticlePublish').click()">@Localiser["label.publish"]</span></div></div>
<div class="col">@Html.TextBoxFor(model => model.ArticlePublishOn, new { @id = "ifArticlePublishOn", @class = "sax-input sax-calendar ArticlePublishOn", @readonly = "readonly" })</div>
</div> </div>
<div class="row ArticlePublished"> <div class="col-sm">
<div class="col"><div class="pl16">@Localiser["label.published"]: <span class="ArticlePublishedOn"></span></div></div> <div class="sax-control">
<div class="row ArticlePublish">
<div class="fixed"><div class="pl16 pt4 pr8">@Html.CheckBoxFor(model => model.ArticlePublish, new { @id = "chkArticlePublish", @class = "ArticlePublish" })&nbsp;<span class="" onclick="$('#chkArticlePublish').click()">@Localiser["label.publish"]</span></div></div>
<div class="col">@Html.TextBoxFor(model => model.ArticlePublishOn, new { @id = "ifArticlePublishOn", @class = "sax-input sax-calendar ArticlePublishOn", @readonly = "readonly" })</div>
</div>
<div class="row ArticlePublished">
<div class="col"><div class="pl16">@Localiser["label.published"]: <span class="ArticlePublishedOn"></span></div></div>
</div>
</div>
<div class="sax-message"></div>
</div> </div>
</div> </div>
<div class="sax-message"></div>
</div> </div>
</div> </div>
@@ -151,37 +174,39 @@
</div> </div>
} }
<div class="spacer2"></div>
<div id="dlgSelectArticleImage" class="sax-dialog"> </div>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmSelectArticleImage", @class = "sax-form", @onSubmit = "return false;" }))
{ @* Article Image upload dialog and form *@
<input type="hidden" class="SegmentIdx" /> <div id="dlgSelectArticleImage" class="sax-dialog">
<div class="spacer4"></div> @using (@Html.BeginForm(FormMethod.Post, new { @id = "frmSelectArticleImage", @class = "sax-form", @onSubmit = "return false;" }))
<div class="sax-form-control ArticleImage"> {
<div class="row"> <input type="hidden" class="SegmentIdx" />
<div class="fixed"><div style="padding:0 12px;">@Localiser["label.image"]</div></div> <div class="spacer4"></div>
<div class="col"><input type="file" id="ifArticleImage" name="" class="fullwidth" style="" /></div> <div class="sax-form-control ArticleImage">
</div>
<div class="sax-message"></div>
</div>
<div class="spacer2"></div>
<div class="row"> <div class="row">
<div class="col"><div class="UploadMessage"></div></div> <div class="fixed"><div style="padding:0 12px;">@Localiser["label.image"]</div></div>
<div class="fixed"><img class="ArticleImageUploadProgress" src="~/img/animated/progress-basketball-32.gif" style="display:none;margin:8px 4px;" /></div> <div class="col"><input type="file" id="ifArticleImage" name="" class="fullwidth" style="" /></div>
</div> </div>
<div class="spacer2"></div> <div class="sax-message"></div>
} </div>
</div> <div class="spacer2"></div>
<div class="row">
<div class="col"><div class="UploadMessage"></div></div>
<div class="fixed"><img class="ArticleImageUploadProgress" src="~/img/animated/progress-basketball-32.gif" style="display:none;margin:8px 4px;" /></div>
</div>
<div class="spacer2"></div>
}
</div>
<script type="text/javascript"> <script type="text/javascript">
sax.dlg.title.imageUpload = '@Localiser.GetJavascriptText("account.caption.image.upload")'; sax.dlg.title.imageUpload = '@Localiser.GetJavascriptText("account.caption.image.upload")';
sax.msg.uploadFileSelect = '@Localiser.GetJavascriptText("msg.upload.file.select")'; sax.msg.uploadFileSelect = '@Localiser.GetJavascriptText("msg.upload.file.select")';
sax.msg.uploadImageSingle = '@Localiser.GetJavascriptText("msg.upload.image.single")'; sax.msg.uploadImageSingle = '@Localiser.GetJavascriptText("msg.upload.image.single")';
sax.msg.uploadFileSizeMax = '@Localiser.GetJavascriptText("msg.upload.file.size.max","{0}")'; sax.msg.uploadFileSizeMax = '@Localiser.GetJavascriptText("msg.upload.file.size.max","{0}")';
sax.msg.uploadFileTypeInvalid = '@Localiser.GetJavascriptText("msg.upload.file.type.invalid","{0}")'; sax.msg.uploadFileTypeInvalid = '@Localiser.GetJavascriptText("msg.upload.file.type.invalid","{0}")';
sax.msg.uploadingFile = '@Localiser.GetJavascriptText("msg.upload.file.uploading","{0}")'; sax.msg.uploadingFile = '@Localiser.GetJavascriptText("msg.upload.file.uploading","{0}")';
</script> </script>
<partial name="~/Views/Common/SportSelect.cshtml" /> <partial name="~/Views/Common/SportSelect.cshtml" />
<partial name="~/Views/Common/RegionSelect.cshtml" /> <partial name="~/Views/Common/RegionSelect.cshtml" />
</div>
@@ -106,7 +106,12 @@ else
<div class="sax-panel-item Article"> <div class="sax-panel-item Article">
<div class="ArticleHeadline"></div> <div class="ArticleHeadline"></div>
<div class="ArticleSummary"></div> <div class="ArticleSummary"></div>
<div class="ArticleAuthor"></div> <div class="ArticleOrigin">
<div class="row">
<div class="col"><div class="ArticleAuthor"></div></div>
<div class="fixed right"><div class="ArticleOrganisation"></div></div>
</div>
</div>
<div class="ArticleContent"> <div class="ArticleContent">
<div class="ArticleContentSegments"></div> <div class="ArticleContentSegments"></div>
</div> </div>
@@ -4,7 +4,7 @@
ViewData["Title"] = "Organisation - Members"; ViewData["Title"] = "Organisation - Members";
} }
<div id="pnlMembers" class="sax-panel"> <div class="sax-panel Members">
<script type="text/javascript"> <script type="text/javascript">
sax.lbl.edit = '@(Localiser.GetJavascriptText("label.edit"))'; sax.lbl.edit = '@(Localiser.GetJavascriptText("label.edit"))';
@@ -17,32 +17,27 @@
sax.dlg.title.activate = '@(Localiser.GetJavascriptText("account.activate.caption"))'; sax.dlg.title.activate = '@(Localiser.GetJavascriptText("account.activate.caption"))';
</script> </script>
@* Filter panel *@ @* Filter Form *@
<div class="sax-panel-filter"> @using (@Html.BeginForm(FormMethod.Post, new { @id = "frmMemberFilter", @class = "sax-form", @action = "#", @method = "POST", onsubmit = "return false;" }))
@* Filter header *@ {
<div class="sax-header row">
@* Filter caption *@ @* Filter panel *@
<div class="col"><div class="sax-caption">@Localiser["organisation.members"]</div></div> <div class="sax-panel-filter">
<div class="fixed row"> @* Filter header *@
@* Burger menu *@ <div class="sax-header row">
<ul class="nav navbar-nav navbar-dark navbar-right sax-burger"> @* Filter caption *@
<li class="dropdown-toggle caret-off"> <div class="col"><div class="sax-caption">@Localiser["organisation.members"]</div></div>
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="navbar-toggler-icon"></span></a> <div class="fixed row">
<ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">@* Menu items will be inserted here. *@</ul> @* Burger menu *@
</li> <ul class="nav navbar-nav navbar-dark navbar-right sax-burger">
</ul> <li class="dropdown-toggle caret-off">
@* Filter item templates *@ <a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="navbar-toggler-icon"></span></a>
<div class="sax-panel-item-template"> <ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">@* Menu items will be inserted here. *@</ul>
@* Burger dropdown item template - ul is ignored *@ </li>
<ul class="sax-dropdown-menu Members">
<li class="sax-dropdown-item sax-action"><div class="sax-label">...</div></li>
</ul> </ul>
</div> </div>
</div> </div>
</div> <div class="sax-content">
<div class="sax-content">
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmMemberFilter", @class = "sax-form", @action = "#", @method = "POST", onsubmit = "return false;" }))
{
<div class="sax-control row"> <div class="sax-control row">
<div class="col-sm-4"><div class="sax-label text-left text-sm-right">@Localiser["label.organisation"]</div></div> <div class="col-sm-4"><div class="sax-label text-left text-sm-right">@Localiser["label.organisation"]</div></div>
<div class="col-sm-8 row"> <div class="col-sm-8 row">
@@ -55,19 +50,29 @@
<div class="col-sm-4"><div class="sax-label text-left text-sm-right">@Localiser["label.search"]</div></div> <div class="col-sm-4"><div class="sax-label text-left text-sm-right">@Localiser["label.search"]</div></div>
<div class="col-sm-8"><input type="search" id="ifMemberFilter" name="Filter.Member" class="MemberFilter sax-input" maxlength="64" autocomplete="off" /></div> <div class="col-sm-8"><input type="search" id="ifMemberFilter" name="Filter.Member" class="MemberFilter sax-input" maxlength="64" autocomplete="off" /></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 Members">
<li class="sax-dropdown-item sax-action"><div class="sax-label">...</div></li>
</ul>
</div>
</div> </div>
</div>
}
@* Results Panel *@ @* Results Panel *@
<div class="sax-panel-results"> <div class="sax-panel-results">
<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>
@* element templates *@ @* Element templates *@
<div class="sax-panel-item-template"> <div class="sax-panel-item-template">
@* Member item template *@ @* Item template *@
<div class="sax-panel-item Member"> <div class="sax-panel-item Member">
<div class="sax-header row"> <div class="sax-header row">
<div class="col"> <div class="col">
@@ -4,19 +4,32 @@
ViewData["Title"] = "Organisation - Opportunities"; ViewData["Title"] = "Organisation - Opportunities";
} }
<div id="pnlOpportunities"> <div class="sax-panel Opportunities">
<div class="sax-panel-filter"> <script type="text/javascript">
<div class="sax-header row"> sax.lbl.edit = '@(Localiser.GetJavascriptText("label.edit"))';
<div class="col"><div class="sax-caption">@Localiser["organisation.caption.opportunities"]</div></div> </script>
<div class="fixed row">
<div class="sax-action sax-results-refresh"><img src="~/img/action/refresh24.png" alt="@(Localiser["label.refresh"])" title="@(Localiser["label.refresh"])" /></div> @* Filter Form *@
<div class="sax-action sax-item-create hidden"><img src="~/img/action/add24.png" alt="@(Localiser["label.create"])" title="@(Localiser["label.create"])" /></div> @using (@Html.BeginForm(FormMethod.Post, new { @id = "frmOpportunityFilter", @class = "sax-form", @action = "#", @method = "POST", onsubmit = "return false;" }))
{
@* Filter Panel *@
<div class="sax-panel-filter">
@* Filter header *@
<div class="sax-header row">
<div class="col"><div class="sax-caption">@Localiser["organisation.caption.opportunities"]</div></div>
<div class="fixed row">
@* 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> <div class="sax-content">
<div class="sax-content">
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmOpportunityFilter", @class = "sax-form", @action = "#", @method = "POST", onsubmit = "return false;" }))
{
<div class="sax-control row"> <div class="sax-control row">
<div class="col-sm-4"><div class="sax-label text-left text-sm-right">@Localiser["label.organisation"]</div></div> <div class="col-sm-4"><div class="sax-label text-left text-sm-right">@Localiser["label.organisation"]</div></div>
<div class="col-sm-8 row"> <div class="col-sm-8 row">
@@ -29,21 +42,42 @@
<div class="col-sm-4"><div class="sax-label text-left text-sm-right">@Localiser["label.search"]</div></div> <div class="col-sm-4"><div class="sax-label text-left text-sm-right">@Localiser["label.search"]</div></div>
<div class="col-sm-8"><input type="search" id="ifOpportunityFilter" name="Filter.Opportunity" class="OpportunityFilter sax-input" maxlength="64" autocomplete="off" /></div> <div class="col-sm-8"><input type="search" id="ifOpportunityFilter" name="Filter.Opportunity" class="OpportunityFilter sax-input" maxlength="64" autocomplete="off" /></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 Opportunities">
<li class="sax-dropdown-item sax-action"><div class="sax-label">...</div></li>
</ul>
</div>
</div>
}
@* Results Panel *@
<div class="sax-panel-results"> <div class="sax-panel-results">
<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>
@* Element templates *@
<div class="sax-panel-item-template"> <div class="sax-panel-item-template">
@* Item template *@
<div class="sax-panel-item Opportunity"> <div class="sax-panel-item Opportunity">
<div class="sax-header row"> <div class="sax-header row">
<div class="col"> <div class="col">
<div class="sax-caption"><div class="sax-action"><span class="OpportunityType"></span> - <span class="OpportunityPosition"></span></div></div> <div class="sax-caption"><div class="sax-action"><span class="OpportunityType"></span> - <span class="OpportunityPosition"></span></div></div>
</div> </div>
<div class="fixed sax-actions"> <div class="fixed sax-actions">
<div class="sax-action sax-item-update hidden"><img src="~/img/action/edit24.png" alt="@(Localiser["label.update"])" title="@(Localiser["label.update"])" /></div> @* 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> </div>
<div class="sax-content"> <div class="sax-content">
@@ -59,6 +93,12 @@
</div> </div>
</div> </div>
</div> </div>
@* Burger dropdown item template - ul is ignored *@
<ul class="sax-dropdown-menu Opportunity">
<li class="sax-dropdown-item sax-action"><div class="sax-label">...</div></li>
</ul>
</div> </div>
</div> </div>
@@ -16,32 +16,46 @@
} }
<div id="dlgOpportunity" class="sax-dialog" title=""> <div id="dlgOpportunity" class="sax-dialog" title="">
<div class="spacer2"></div>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmOpportunity", @class = "sax-form", @onSubmit = "return false;" })) @using (@Html.BeginForm(FormMethod.Post, new { @id = "frmOpportunity", @class = "sax-form", @onSubmit = "return false;" }))
{ {
@Html.HiddenFor(model => model.OpportunityId, new { @id = "ifOpportunityId", @class = "OpportunityId" }) @Html.HiddenFor(model => model.OpportunityId, new { @id = "ifOpportunityId", @class = "OpportunityId" })
@Html.HiddenFor(model => model.OpportunityExists, new { @id = "ifOpportunityExists", @class = "OpportunityExists" }) @Html.HiddenFor(model => model.OpportunityExists, new { @id = "ifOpportunityExists", @class = "OpportunityExists" })
<input type="hidden" id="ifOpportunityOrganisationId" class="OpportunityOrganisationId" name="OpportunityOrganisationId" value="@(Model.Filter.OrganisationId)" /> <input type="hidden" id="ifOpportunityOrganisationId" class="OpportunityOrganisationId" name="OpportunityOrganisationId" value="@(Model.Filter.OrganisationId)" />
@* Opportunity type *@ @* Opportunity type *@
<div class="sax-form-control OpportunityTypeCode"> <div class="sax-form-control OpportunityTypeCode">
<div class="sax-label"> <div class="row">
<label for="cbOpportunityType"><span>@Localiser["label.type"]</span><span class="required">&nbsp;*</span></label> <div class="col-sm-3">
<div class="sax-label">
<label for="cbOpportunityType"><span>@Localiser["label.type"]</span><span class="required">&nbsp;*</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
<select id="cbOpportunityType" class="OpportunityType sax-select" name="OpportunityTypeCode"></select>
</div>
<div class="sax-message"></div>
</div>
</div> </div>
<div class="sax-control">
<select id="cbOpportunityType" class="OpportunityType sax-select" name="OpportunityTypeCode"></select>
</div>
<div class="sax-message"></div>
</div> </div>
@* Opportunity position *@ @* Opportunity position *@
<div class="sax-form-control OpportunityPosition"> <div class="sax-form-control OpportunityPosition">
<div class="sax-label"> <div class="row">
<label for="ifOpportunityPosition"><span>@Localiser["label.position"]</span><span class="required">&nbsp;*</span></label> <div class="col-sm-3">
<div class="sax-label">
<label for="ifOpportunityPosition"><span>@Localiser["label.position"]</span><span class="required">&nbsp;*</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
@Html.TextBoxFor(model => model.OpportunityPosition, new { @id = "ifOpportunityPosition", @class = "OpportunityPosition sax-input", @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Position) })
</div>
<div class="sax-message"></div>
</div>
</div> </div>
<div class="sax-control">
@Html.TextBoxFor(model => model.OpportunityPosition, new { @id = "ifOpportunityPosition", @class = "OpportunityPosition sax-input", @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Position) })
</div>
<div class="sax-message"></div>
</div> </div>
@* Opportunity outline *@ @* Opportunity outline *@
@@ -50,40 +64,53 @@
<label for="ifOpportunityOutline"><span>@Localiser["label.outline"]</span><span class="required">&nbsp;*</span></label> <label for="ifOpportunityOutline"><span>@Localiser["label.outline"]</span><span class="required">&nbsp;*</span></label>
</div> </div>
<div class="sax-control"> <div class="sax-control">
@Html.TextAreaFor(model => model.OpportunityOutline, new { @id = "ifOpportunityOutline", @class = "OpportunityOutline sax-input", @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Outline) }) @Html.TextAreaFor(model => model.OpportunityOutline, new { @id = "ifOpportunityOutline", @class = "OpportunityOutline sax-input", @rows = 4, @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Outline) })
</div> </div>
<div class="sax-message"></div> <div class="sax-message"></div>
</div> </div>
@* Sport *@ @* Sport *@
<div class="sax-form-control OpportunitySportId"> <div class="sax-form-control OpportunitySportId">
<div class="sax-label"> <div class="row">
<label for="ifOpportunitySportCaption"><span>@Localiser["label.sport"]</span><span class="required">&nbsp;*</span></label> <div class="col-sm-3">
<div class="sax-label">
<label for="ifOpportunitySportCaption"><span>@Localiser["label.sport"]</span><span class="required">&nbsp;*</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control row">
@Html.HiddenFor(model => model.OpportunitySportId, new { @id = "ifOpportunitySportId", @class = "OpportunitySportId" })
<div class="col"><input type="text" id="ifOpportunitySportCaption" class="OpportunitySportCaption sax-input" readonly="readonly" ondblclick="sax.selectSport()" /></div>
<div class="fixed"><button class="SelectSport sax-button" style="min-width:auto;margin-left:4px;padding:4px 6px" onclick="sax.selectSport()">@Localiser["label.select"]</button></div>
</div>
<div class="sax-message"></div>
</div>
</div> </div>
<div class="sax-control row">
@Html.HiddenFor(model => model.OpportunitySportId, new { @id = "ifOpportunitySportId", @class = "OpportunitySportId" })
<div class="col"><input type="text" id="ifOpportunitySportCaption" class="OpportunitySportCaption sax-input" readonly="readonly" ondblclick="sax.selectSport()" /></div>
<div class="fixed"><button class="SelectSport sax-button" style="min-width:auto;margin-left:4px;padding:4px 6px" onclick="sax.selectSport()">@Localiser["label.select"]</button></div>
</div>
<div class="sax-message"></div>
</div> </div>
@* Region *@ @* Region *@
<div class="sax-form-control OpportunityRegionId"> <div class="sax-form-control OpportunityRegionId">
<div class="sax-label"> <div class="row">
<label for="ifOpportunityRegionCaption"><span>@Localiser["label.region"]</span><span class="required">&nbsp;*</span></label> <div class="col-sm-3">
<div class="sax-label">
<label for="ifOpportunityRegionCaption"><span>@Localiser["label.region"]</span><span class="required">&nbsp;*</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control row">
@Html.HiddenFor(model => model.OpportunityRegionId, new { @id = "ifOpportunityRegionId", @class = "OpportunityRegionId" })
<div class="col"><input type="text" id="ifOpportunityRegionCaption" class="OpportunityRegionCaption sax-input" readonly="readonly" ondblclick="sax.selectRegion()" /></div>
<div class="fixed"><button class="SelectRegion sax-button" style="min-width:auto;margin-left:4px;padding:4px 6px" onclick="sax.selectRegion()">@Localiser["label.select"]</button></div>
</div>
<div class="sax-message"></div>
</div>
</div> </div>
<div class="sax-control row">
@Html.HiddenFor(model => model.OpportunityRegionId, new { @id = "ifOpportunityRegionId", @class = "OpportunityRegionId" })
<div class="col"><input type="text" id="ifOpportunityRegionCaption" class="OpportunityRegionCaption sax-input" readonly="readonly" ondblclick="sax.selectRegion()" /></div>
<div class="fixed"><button class="SelectRegion sax-button" style="min-width:auto;margin-left:4px;padding:4px 6px" onclick="sax.selectRegion()">@Localiser["label.select"]</button></div>
</div>
<div class="sax-message"></div>
</div> </div>
} }
<div class="spacer2"></div>
<partial name="~/Views/Common/RegionSelect.cshtml" />
<partial name="~/Views/Common/SportSelect.cshtml" />
</div> </div>
<partial name="~/Views/Common/RegionSelect.cshtml" />
<partial name="~/Views/Common/SportSelect.cshtml" />
@@ -101,7 +101,7 @@
.sax-profile #pnlContactImageDrop.sax-panel-drop * .sax-profile #pnlContactImageDrop.sax-panel-drop *
{ {
pointer-events: none; /*pointer-events: none;*/
} }
.sax-profile #pnlContactImageDrop.sax-panel-drop.sax-file-drag .sax-profile #pnlContactImageDrop.sax-panel-drop.sax-file-drag
+81 -10
View File
@@ -98,6 +98,85 @@
background-color: #c0c0c0; background-color: #c0c0c0;
} }
/* Panel header - Burger */
.sax-header ul.nav.sax-burger
{
margin: 0;
}
.sax-header ul.nav.sax-burger ul.sax-dropdown-menu
{
padding: 4px 8px 4px 4px;
box-shadow: 0 0 8px 2px #80808080;
}
.sax-header ul.nav.sax-burger ul.sax-dropdown-menu li.sax-action.sax-dropdown-item
{
margin: 2px 4px 2px 0;
padding: 2px 4px 2px 30px;
background-repeat: no-repeat;
background-position: left center;
}
.sax-header ul.nav.sax-burger ul.sax-dropdown-menu li.sax-action.sax-dropdown-item.sax-refresh
{
background-image: url('../img/action/refresh24.png');
}
.sax-header ul.nav.sax-burger ul.sax-dropdown-menu li.sax-action.sax-dropdown-item.sax-add
{
background-image: url('../img/action/add24.png');
}
.sax-header ul.nav.sax-burger ul.sax-dropdown-menu li.sax-action.sax-dropdown-item.sax-edit
{
background-image: url('../img/action/edit24.png');
}
.sax-header ul.nav.sax-burger ul.sax-dropdown-menu li.sax-action.sax-dropdown-item.sax-remove
{
background-image: url('../img/action/delete24.png');
}
.sax-header ul.nav.sax-burger ul.sax-dropdown-menu li.sax-action.sax-dropdown-item.sax-experience
{
background-image: url('../img/action/trophy24.png');
}
.sax-header ul.nav.sax-burger ul.sax-dropdown-menu li.sax-action.sax-dropdown-item.sax-user
{
background-image: url('../img/action/user24.png');
}
.sax-header ul.nav.sax-burger ul.sax-dropdown-menu li.sax-action.sax-dropdown-item.sax-users
{
background-image: url('../img/action/users24.png');
}
.sax-header ul.nav.sax-burger ul.sax-dropdown-menu li.sax-action.sax-dropdown-item.sax-process
{
background-image: url('../img/action/process24.png');
}
.sax-header ul.nav.sax-burger ul.sax-dropdown-menu li.sax-action.sax-dropdown-item:hover
{
background-color: #f8f8f8;
box-shadow: none;
}
.sax-header ul.nav.sax-burger ul.sax-dropdown-menu li.sax-action.sax-dropdown-item .sax-label
{
margin: 0;
padding: 0;
}
.sax-header ul.nav.sax-burger ul.sax-dropdown-menu li.sax-action.sax-dropdown-item:hover .sax-label
{
background-color: #f8f8f8;
box-shadow: 0 0 2px 1px #80808080;
}
/* Data Items panel */ /* Data Items panel */
.sax-panel-results .sax-panel-results
@@ -154,15 +233,7 @@
font-weight: bold; font-weight: bold;
} }
.sax-panel-item > .sax-header ul.nav.sax-burger /* Actions */
{
margin: 0;
}
.sax-panel-item > .sax-header .dropdown-menu
{
padding: 4px 8px;
}
.sax-panel-item > .sax-header .sax-action .sax-panel-item > .sax-header .sax-action
{ {
@@ -233,7 +304,7 @@
background-color: var(--color-article-pale); background-color: var(--color-article-pale);
} }
/* Opportunitys */ /* Opportunities */
.sax-panel-item.Opportunity, .sax-panel-item.Opportunity,
.sax-panel-item.Opportunity > .sax-header .sax-panel-item.Opportunity > .sax-header
+10 -4
View File
@@ -55,23 +55,29 @@
} }
#dlgActivity .sax-panel-item.Article .ArticleSummary, #dlgActivity .sax-panel-item.Article .ArticleSummary,
#dlgActivity .sax-panel-item.Article .ArticleAuthor,
#dlgActivity .sax-panel-item.Opportunity .OpportunityOrganisation, #dlgActivity .sax-panel-item.Opportunity .OpportunityOrganisation,
#dlgActivity .sax-panel-item.Opportunity .OpportunityPosition, #dlgActivity .sax-panel-item.Opportunity .OpportunityPosition,
#dlgActivity .sax-panel-item.Opportunity .OpportunityOutline #dlgActivity .sax-panel-item.Opportunity .OpportunityOutline
{ {
margin: 0; margin: 0;
padding: 8px 8px; padding: 8px 8px;
font-size: 1.5rem; font-size: 1.25rem;
font-weight: bold; font-weight: bold;
border-bottom: 1px solid #b0b0b0; border-bottom: 1px solid #b0b0b0;
} }
#dlgActivity .sax-panel-item.Article .ArticleAuthor #dlgActivity .sax-panel-item.Article .ArticleOrigin
{ {
padding: 4px 8px; padding: 4px 8px;
font-size: .9rem; font-weight: bold;
background-color: #f8f8f8; background-color: #f8f8f8;
border-bottom: 1px solid #b0b0b0;
}
#dlgActivity .sax-panel-item.Article .ArticleAuthor,
#dlgActivity .sax-panel-item.Article .ArticleOrganisation
{
font-size: .9rem;
} }
#dlgActivity .sax-panel-item.Opportunity #dlgActivity .sax-panel-item.Opportunity
Binary file not shown.

After

Width:  |  Height:  |  Size: 767 B

+84 -40
View File
@@ -5,7 +5,6 @@
(function (win, doc, undef) (function (win, doc, undef)
{ {
"use strict"; "use strict";
sax.itemIdPrefix = 'Itm_';
sax.segIdPrefix = 'Seg_'; sax.segIdPrefix = 'Seg_';
sax.classFileDrag = 'sax-file-drag'; sax.classFileDrag = 'sax-file-drag';
let $pnl = sax.$pnl, $frm = sax.$frm; let $pnl = sax.$pnl, $frm = sax.$frm;
@@ -16,8 +15,9 @@
{ {
if (!sax.awaitingRefreshResponse) if (!sax.awaitingRefreshResponse)
{ {
var $items = $('.sax-panel-item-list', $pnl.results).fadeOut(200).empty(); $('.sax-burger', $pnl.filter).hide();
var $msgs = $('.sax-panel-messages', $pnl.results).hide().empty().append($('<div class="sax-message">' + sax.msg.dataQuerying + '</div>')).fadeIn(200); $('.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);
} }
sax.ajax.refreshResults = sax.ajax.refreshResults || { url: sax.url.base + 'Article/Ajax/GetList', formId: 'frmArticleFilter', callbackFn: sax.doRefreshResults }; sax.ajax.refreshResults = sax.ajax.refreshResults || { url: sax.url.base + 'Article/Ajax/GetList', formId: 'frmArticleFilter', callbackFn: sax.doRefreshResults };
sax.doAjaxRequest(sax.ajax.refreshResults, delay || 50); sax.doAjaxRequest(sax.ajax.refreshResults, delay || 50);
@@ -30,26 +30,27 @@
sax.refreshControlValues(response.controlValues); sax.refreshControlValues(response.controlValues);
var $msgs = $('.sax-panel-messages', $pnl.results).hide().empty(); var $msgs = $('.sax-panel-messages', $pnl.results).hide().empty();
var $items = $('.sax-panel-item-list', $pnl.results).hide().empty(); var $items = $('.sax-panel-item-list', $pnl.results).hide().empty();
var $tmpl = $('.sax-panel-item-template .sax-panel-item', $pnl.results);
if (!response.success) return; if (!response.success) return;
sax.data.articleOrganisations = response.organisations; sax.data.articleOrganisations = response.organisations;
sax.refreshPaging(response); sax.refreshPaging(response);
// Menu.
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.add, function () { sax.createItem(); }, 'sax-add'));
$('.sax-burger', $pnl.filter).toggle(!!$('.sax-dropdown-item', $mnu).length);
// Items.
var items = response.articles; var items = response.articles;
if (!items.length) if (!items.length)
return $msgs.append($('<div class="sax-message">' + sax.msg.dataNoneFound + '</div>')).fadeIn(500); return $msgs.append($('<div class="sax-message">' + sax.msg.dataNoneFound + '</div>')).fadeIn(500);
for (let itemIdx = 0; itemIdx < items.length; itemIdx++) for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
{ $items.append(sax.populateItem(sax.getItemTemplate(), items[itemIdx]));
let item = items[itemIdx];
let $item = $tmpl.clone();
sax.populateItem($item, item);
$items.append($item);
}
$items.fadeIn(50); $items.fadeIn(50);
} }
sax.populateItem = function ($item, item) sax.populateItem = function ($item, item)
{ {
if (!item) return; if (!item) return;
$item.prop('id', sax.itemIdPrefix + item.id); $('.sax-panel-messages', $pnl.results).hide().empty();
$item.prop('id', sax.getItemId(item.id));
$('.ArticleHeadline', $item).text(item.headline); $('.ArticleHeadline', $item).text(item.headline);
$('.ArticleSummary', $item).text(item.summary); $('.ArticleSummary', $item).text(item.summary);
$('.ArticleRegionCaption', $item).text(item.regionCaptionPrimary); $('.ArticleRegionCaption', $item).text(item.regionCaptionPrimary);
@@ -58,9 +59,51 @@
$('.ArticlePublishedOn', $item).text(item.publishedOnFmt); $('.ArticlePublishedOn', $item).text(item.publishedOnFmt);
$('.ArticlePublished', $item).toggle(!!item.publishedOnFmt); $('.ArticlePublished', $item).toggle(!!item.publishedOnFmt);
$('.ArticleStatusDesc', $item).text(item.statusDesc); $('.ArticleStatusDesc', $item).text(item.statusDesc);
$('.sax-caption .sax-action, .sax-actions .sax-action.sax-item-update', $item).off('click').on('click', function () { sax.updateItem(item.id) }) let $bgr = $('.sax-burger', $item);
$item.off('dblclick').on('dblclick', function () { sax.updateItem(item.id) }) let $mnu = $('ul.sax-dropdown-menu', $bgr).empty();
$('.sax-panel-messages', $pnl.results).hide().empty(); if (!item.deleted)
{
let fnUpd = function () { sax.updateItem(item) };
$mnu.append(sax.getItemMenuOption(sax.lbl.edit, fnUpd, 'sax-edit'));
$('.sax-caption .sax-action', $item).off('click').on('click', fnUpd);
}
else $('.sax-caption .sax-action', $item).removeClass('sax-action');
$bgr.toggle(!!$('.sax-dropdown-menu .sax-dropdown-item', $item).length);
return $item;
}
//--------------------------------------------------------------
sax.getItemId = function (id)
{
return 'Itm_' + id;
}
sax.getFilterDropdownTemplate = function ()
{
return $('.sax-panel-item-template .sax-dropdown-menu.Articles li.sax-dropdown-item', $pnl.filter).clone();
}
sax.getItemTemplate = function ()
{
return $('.sax-panel-item-template .sax-panel-item.Article', $pnl.results).clone();
}
sax.getItemDropdownTemplate = function ()
{
return $('.sax-panel-item-template .sax-dropdown-menu.Article li.sax-dropdown-item', $pnl.results).clone();
}
sax.getSegmentTemplate = function ()
{
return $('.sax-panel-item-template .sax-panel-item.ArticleSegment', ac.$content).clone();
}
sax.getFilterMenuOption = function (lbl, fn, cls)
{
return sax.getMenuOption(sax.getFilterDropdownTemplate(), lbl, fn, cls);
}
sax.getItemMenuOption = function (lbl, fn, cls)
{
return sax.getMenuOption(sax.getItemDropdownTemplate(), lbl, fn, cls);
}
sax.getMenuOption = function ($opt, lbl, fn, cls)
{
return $opt.find('div.sax-label').text(lbl).end().on('click', fn).addClass(cls);
} }
//-------------------------------------------------------------- //--------------------------------------------------------------
@@ -106,7 +149,7 @@
{ {
return; return;
} }
let $seg = $('.sax-panel-item-template .sax-panel-item.ArticleSegment', ac.$content).clone().prop('id', segId) let $seg = sax.getSegmentTemplate().prop('id', segId)
if (seg.body) if (seg.body)
{ {
$('.sax-article-segment-body', $seg).html(seg.body.html); $('.sax-article-segment-body', $seg).html(seg.body.html);
@@ -294,19 +337,20 @@
sax.createItem = function () sax.createItem = function ()
{ {
sax.clearItem(); sax.clearItem();
let orgId = $('#ifFilterOrganisationId', $frm.filter).val();
$('#ifArticleOrganisationId', $frm.article).val(orgId);
$('#ifArticleOrganisation', $frm.article).val($('#ifFilterOrganisation', $frm.filter).val());
$('.sax-form-control.ArticleOrganisation', $frm.article).toggle(!!orgId);
sax.populateArticleContent({}); sax.populateArticleContent({});
sax.openArticleDialog(sax.dlg.title.createArticle); sax.openArticleDialog(sax.dlg.title.createArticle);
} }
sax.clearItem = function () sax.clearItem = function ()
{ {
let frm = $frm.article; let $frmF = $frm.filter;
$('#ifArticleId,#ifArticleExists,#ifArticleOrganisationId,#ifArticleRegionId,#ifArticleSportId,input[type="text"],textarea,select', frm).val(''); let $frmA = $frm.article;
$('#chkArticlePublish', frm).prop("checked", false); $('#ifArticleId,#ifArticleExists,#ifArticleOrganisationId,#ifArticleRegionId,#ifArticleSportId,input[type="text"],textarea,select', $frmA).val('');
$('.sax-input.sax-calendar.ArticlePublishOn', frm).datepicker('setDate', 'today'); let orgId = $('#ifFilterOrganisationId', $frmF).val();
$('#ifArticleOrganisationId', $frmA).val(orgId);
$('#ifArticleOrganisation', $frmA).val($('#ifFilterOrganisation', $frmF).val());
$('.sax-form-control.ArticleOrganisation', $frmA).toggle(!!orgId);
$('#chkArticlePublish', $frmA).prop("checked", false);
$('.sax-input.sax-calendar.ArticlePublishOn', $frmA).datepicker('setDate', 'today');
sax.clearControlErrors(); sax.clearControlErrors();
} }
sax.openArticleDialog = function (title) sax.openArticleDialog = function (title)
@@ -318,9 +362,9 @@
} }
//-------------------------------------------------------------- //--------------------------------------------------------------
sax.updateItem = function (id) sax.updateItem = function (item)
{ {
$('.ArticleId', $frm.articleId).val(id); $('.ArticleId', $frm.articleId).val(item.id);
sax.ajax.updateItem = sax.ajax.updateItem || { url: sax.url.base + 'Article/Ajax/GetItem', formId: 'frmArticleId', callbackFn: sax.onUpdateItem }; sax.ajax.updateItem = sax.ajax.updateItem || { url: sax.url.base + 'Article/Ajax/GetItem', formId: 'frmArticleId', callbackFn: sax.onUpdateItem };
sax.doAjaxRequest(sax.ajax.updateItem, 50); sax.doAjaxRequest(sax.ajax.updateItem, 50);
} }
@@ -329,21 +373,21 @@
//sax.debug('onUpdateItem', response); //sax.debug('onUpdateItem', response);
sax.clearItem(); sax.clearItem();
if (!response.success) return; if (!response.success) return;
let frm = $frm.article; let $frmA = $frm.article;
let item = response.article; let item = response.article;
$('#ifArticleId', frm).val(item.id); $('#ifArticleId', $frmA).val(item.id);
$('#ifArticleExists', frm).val(1); $('#ifArticleExists', $frmA).val(1);
$('#ifArticleHeadline', frm).val(item.headline); $('#ifArticleHeadline', $frmA).val(item.headline);
$('#ifArticleSummary', frm).val(item.summary); $('#ifArticleSummary', $frmA).val(item.summary);
$('#ifArticleRegionId', frm).val(item.regionIdPrimary); $('#ifArticleRegionId', $frmA).val(item.regionIdPrimary);
$('#ifArticleRegionCaption', frm).val(item.regionCaptionPrimary); $('#ifArticleRegionCaption', $frmA).val(item.regionCaptionPrimary);
$('#ifArticleSportId', frm).val(item.sportIdPrimary); $('#ifArticleSportId', $frmA).val(item.sportIdPrimary);
$('#ifArticleSportCaption', frm).val(item.sportCaptionPrimary); $('#ifArticleSportCaption', $frmA).val(item.sportCaptionPrimary);
if (item.published) if (item.published)
$('span.ArticlePublishedOn', frm).text(item.publishedOnFmt); $('span.ArticlePublishedOn', $frmA).text(item.publishedOnFmt);
$('div.ArticlePublish', frm).toggle(!item.published); $('div.ArticlePublish', $frmA).toggle(!item.published);
$('div.ArticlePublished', frm).toggle(!!item.published); $('div.ArticlePublished', $frmA).toggle(!!item.published);
$('#cbArticleStatusCode', frm).val(item.statusCode); $('#cbArticleStatusCode', $frmA).val(item.statusCode);
sax.populateArticleContent(item.content); sax.populateArticleContent(item.content);
sax.openArticleDialog(sax.dlg.title.updateArticle); sax.openArticleDialog(sax.dlg.title.updateArticle);
} }
@@ -394,10 +438,10 @@
sax.$dlg.article.dialog('close'); sax.$dlg.article.dialog('close');
var item = response.article; var item = response.article;
var $item = $('#' + sax.itemIdPrefix + item.id); var $item = $('#' + sax.getItemId(item.id));
if (!$item.length) if (!$item.length)
{ {
$item = $('.sax-panel-item-template .sax-panel-item', $pnl.results).clone(); $item = sax.getItemTemplate();
$('.sax-panel-item-list', $pnl.results).prepend($item).show(); $('.sax-panel-item-list', $pnl.results).prepend($item).show();
} }
sax.populateItem($item, item) sax.populateItem($item, item)
+4 -2
View File
@@ -77,7 +77,7 @@
} }
sax.showActivityDetails = function (response) sax.showActivityDetails = function (response)
{ {
//sax.debug('showActivityDetails', response); sax.debug('showActivityDetails', response);
let $act = $('#dlgActivity .sax-content').empty(); let $act = $('#dlgActivity .sax-content').empty();
let item; let item;
if (item = response.article) if (item = response.article)
@@ -86,7 +86,9 @@
let $segs = $('.ArticleContentSegments', $itm); let $segs = $('.ArticleContentSegments', $itm);
$('.ArticleHeadline', $itm).text(item.headline); $('.ArticleHeadline', $itm).text(item.headline);
$('.ArticleSummary', $itm).text(item.summary).toggle(!!item.summary); $('.ArticleSummary', $itm).text(item.summary).toggle(!!item.summary);
$('.ArticleAuthor', $itm).text(item.author).toggle(!!item.author); $('.ArticleAuthor', $itm).text(item.author);
$('.ArticleOrganisation', $itm).text(item.organisation);
$('.ArticleOrigin', $itm).toggle(!!(item.author||item.organisation));
let segs = item.content.segments; let segs = item.content.segments;
for (let segIdx = 0; segIdx < segs.length; segIdx++) for (let segIdx = 0; segIdx < segs.length; segIdx++)
{ {
+97 -92
View File
@@ -5,8 +5,8 @@
(function (win, doc, undef) (function (win, doc, undef)
{ {
"use strict"; "use strict";
let $pnl = sax.$pnl, $frm = sax.$frm, $dlg = sax.$dlg;
sax.members = {}; sax.members = {};
sax.itemIdPrefix = 'Itm_';
//-------------------------------------------------------------- //--------------------------------------------------------------
sax.refreshResults = function (delay) sax.refreshResults = function (delay)
@@ -14,89 +14,94 @@
sax.data.userCanManageMembers = false; sax.data.userCanManageMembers = false;
if (!sax.awaitingRefreshResponse) if (!sax.awaitingRefreshResponse)
{ {
var $items = $('.sax-panel-item-list', sax.$pnl.results).fadeOut(200).empty(); $('.sax-burger', $pnl.filter).hide();
var $msgs = $('.sax-panel-messages', sax.$pnl.results).hide().empty().append($('<div class="sax-message">' + sax.msg.dataQuerying + '</div>')).fadeIn(200); $('.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);
} }
sax.ajax.refreshResults = sax.ajax.refreshResults || { url: sax.url.base + 'Organisation/Ajax/GetMemberList', formId: 'frmMemberFilter', callbackFn: sax.doRefreshResults }; sax.ajax.refreshResults = sax.ajax.refreshResults || { url: sax.url.base + 'Organisation/Ajax/GetMemberList', formId: 'frmMemberFilter', callbackFn: sax.doRefreshResults };
sax.doAjaxRequest(sax.ajax.refreshResults, delay || 50); sax.doAjaxRequest(sax.ajax.refreshResults, delay || 50);
sax.awaitingRefreshResponse = true; sax.awaitingRefreshResponse = true;
} }
sax.getFilterDropdownTemplate = function ()
{
return $('.sax-panel-item-template .sax-dropdown-menu.Members li.sax-dropdown-item', sax.$pnl.filter).clone();
}
sax.getItemTemplate = function ()
{
return $('.sax-panel-item-template .sax-panel-item.Member', sax.$pnl.results).clone();
}
sax.getItemDropdownTemplate = function ()
{
return $('.sax-panel-item-template .sax-dropdown-menu.Member li.sax-dropdown-item', sax.$pnl.results).clone();
}
sax.doRefreshResults = function (response) sax.doRefreshResults = function (response)
{ {
//sax.debug('doRefreshResults', response); //sax.debug('doRefreshResults', response);
delete sax.awaitingRefreshResponse; delete sax.awaitingRefreshResponse;
sax.refreshControlValues(response.controlValues); sax.refreshControlValues(response.controlValues);
let $mnu = $('.sax-burger ul.sax-dropdown-menu', sax.$pnl.filter).empty(); var $msgs = $('.sax-panel-messages', $pnl.results).hide().empty();
var $msgs = $('.sax-panel-messages', sax.$pnl.results).hide().empty(); var $items = $('.sax-panel-item-list', $pnl.results).hide().empty();
var $items = $('.sax-panel-item-list', sax.$pnl.results).hide().empty();
if (!response.success) return; if (!response.success) return;
// Reference data - roles. // Reference data - roles.
if (response.memberRoles && response.memberRoles.length) if (response.memberRoles && response.memberRoles.length)
sax.data.memberRoles = response.memberRoles; sax.data.memberRoles = response.memberRoles;
// Menu. // Menu.
$mnu.append(sax.getFilterMenuOption(sax.lbl.refresh, function () { sax.refreshResults(); })); let $bgr = $('.sax-burger', $pnl.filter);
let $mnu = $('ul.sax-dropdown-menu', $bgr).empty();
$mnu.append(sax.getFilterMenuOption(sax.lbl.refresh, function () { sax.refreshResults(); }, 'sax-refresh'));
if (sax.data.userCanManageMembers = (response.user && response.user.canManage)) if (sax.data.userCanManageMembers = (response.user && response.user.canManage))
$mnu.append(sax.getFilterMenuOption(sax.lbl.add, function () { sax.createItem(); })); $mnu.append(sax.getFilterMenuOption(sax.lbl.add, function () { sax.createItem(); }, 'sax-edit'));
$('.sax-burger', sax.$pnl.filter).toggle(!!$('.sax-dropdown-item', $mnu).length); $bgr.toggle(!!$('.sax-dropdown-item', $mnu).length);
// Items. // Items.
var items = response.members; var items = response.members;
if (!items.length) if (!items.length)
return $msgs.append($('<div class="sax-message">' + sax.msg.dataNoneFound + '</div>')).fadeIn(500); return $msgs.append($('<div class="sax-message">' + sax.msg.dataNoneFound + '</div>')).fadeIn(500);
for (let itemIdx = 0; itemIdx < items.length; itemIdx++) for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
{ $items.append(sax.populateItem(sax.getItemTemplate(), items[itemIdx]));
let item = items[itemIdx];
let $item = sax.getItemTemplate();
sax.populateItem($item, item);
$items.append($item);
}
$items.fadeIn(50); $items.fadeIn(50);
} }
sax.getFilterMenuOption = function (lbl, fn)
{
return sax.getMenuOption(sax.getFilterDropdownTemplate(), lbl, fn);
}
sax.getMenuOption = function ($opt, lbl, fn)
{
return $opt.find('div.sax-label').text(lbl).end().on('click', fn);
}
sax.populateItem = function ($item, item) sax.populateItem = function ($item, item)
{ {
if (!item) return; if (!item) return;
$item.prop('id', sax.itemIdPrefix + item.id); $('.sax-panel-messages', $pnl.results).hide().empty();
$item.prop('id', sax.getItemId(item.id));
$('.MemberEmail', $item).text(item.emailAddress); $('.MemberEmail', $item).text(item.emailAddress);
$('.MemberDisplayName', $item).text(item.displayName); $('.MemberDisplayName', $item).text(item.displayName);
$('.MemberAdminComment', $item).text(item.adminComment); $('.MemberAdminComment', $item).text(item.adminComment);
$('.MemberStatus', $item).text(item.statusDesc).addClass('sax-status-' + item.statusCode.toLowerCase()); $('.MemberStatus', $item).text(item.statusDesc).addClass('sax-status-' + item.statusCode.toLowerCase());
let $mnu = $('ul.sax-dropdown-menu', $item).empty(); let $bgr = $('.sax-burger', $item);
let $mnu = $('ul.sax-dropdown-menu', $bgr).empty();
if (sax.data.userCanManageMembers) if (sax.data.userCanManageMembers)
{ {
let fnUpd = function () { sax.updateItem(item.id) }; let fnUpd = function () { sax.updateItem(item) };
$mnu.append(sax.getItemMenuOption(sax.lbl.edit, fnUpd)); $mnu.append(sax.getItemMenuOption(sax.lbl.edit, fnUpd, 'sax-edit'));
if (!item.currentUser) if (!item.currentUser)
$mnu.append(sax.getItemMenuOption(sax.lbl.remove, function () { sax.removeItem(item.id) })); $mnu.append(sax.getItemMenuOption(sax.lbl.remove, function () { sax.removeItem(item.id) }, 'sax-remove'));
if (item.awaiting) if (item.awaiting)
$mnu.append(sax.getItemMenuOption(sax.lbl.activate, function () { sax.activateItem(item.id) })); $mnu.append(sax.getItemMenuOption(sax.lbl.activate, function () { sax.activateItem(item.id) }, 'sax-user'));
$('.sax-caption .sax-action', $item).off('click').on('click', fnUpd); $('.sax-caption .sax-action', $item).off('click').on('click', fnUpd);
} }
else $('.sax-caption .sax-action', $item).removeClass('sax-action'); else $('.sax-caption .sax-action', $item).removeClass('sax-action');
$('.sax-burger', $item).toggle(!!$('.sax-dropdown-menu .sax-dropdown-item', $item).length); $bgr.toggle(!!$('.sax-dropdown-menu .sax-dropdown-item', $item).length);
$('.sax-panel-messages', sax.$pnl.results).hide().empty(); return $item;
} }
sax.getItemMenuOption = function (lbl, fn)
//--------------------------------------------------------------
sax.getItemId = function (id)
{ {
return sax.getMenuOption(sax.getItemDropdownTemplate(), lbl, fn); return 'Itm_' + id;
}
sax.getFilterDropdownTemplate = function ()
{
return $('.sax-panel-item-template .sax-dropdown-menu.Members li.sax-dropdown-item', $pnl.filter).clone();
}
sax.getItemTemplate = function ()
{
return $('.sax-panel-item-template .sax-panel-item.Member', $pnl.results).clone();
}
sax.getItemDropdownTemplate = function ()
{
return $('.sax-panel-item-template .sax-dropdown-menu.Member li.sax-dropdown-item', $pnl.results).clone();
}
sax.getFilterMenuOption = function (lbl, fn, cls)
{
return sax.getMenuOption(sax.getFilterDropdownTemplate(), lbl, fn, cls);
}
sax.getItemMenuOption = function (lbl, fn, cls)
{
return sax.getMenuOption(sax.getItemDropdownTemplate(), lbl, fn, cls);
}
sax.getMenuOption = function ($opt, lbl, fn, cls)
{
return $opt.find('div.sax-label').text(lbl).end().on('click', fn).addClass(cls);
} }
//-------------------------------------------------------------- //--------------------------------------------------------------
@@ -136,17 +141,17 @@
{ {
if (!sax.data.userCanManageMembers) return; if (!sax.data.userCanManageMembers) return;
sax.clearItem(); sax.clearItem();
$('.MemberOrganisationId', sax.$frm.member).val($('.FilterOrganisationId', sax.$frm.filter).val()); $('.MemberOrganisationId', $frm.member).val($('.FilterOrganisationId', $frm.filter).val());
sax.$dlg.member.dialog('option', 'title', sax.dlg.title.createMember); $dlg.member.dialog('option', 'title', sax.dlg.title.createMember);
sax.openDialog(sax.$dlg.member, 600, 600); sax.openDialog($dlg.member, 600, 600);
} }
sax.clearItem = function () sax.clearItem = function ()
{ {
sax.member = { roleCodes: [] }; sax.member = { roleCodes: [] };
let $frm = sax.$frm.member; let $frmM = $frm.member;
$('.MemberId,.MemberExists,.MemberRoleCodes,input[type="text"],textarea,select', $frm).val(''); $('.MemberId,.MemberExists,.MemberRoleCodes,input[type="text"],textarea,select', $frmM).val('');
$('.MemberEmailAddress', $frm).prop('readonly', false); $('.MemberEmailAddress', $frmM).prop('readonly', false);
$('.MemberDisplayName,.MemberTitle,.MemberFirstName,.MemberLastName', $frm).hide(); $('.MemberDisplayName,.MemberTitle,.MemberFirstName,.MemberLastName', $frmM).hide();
sax.clearControlErrors(); sax.clearControlErrors();
} }
sax.doCreateItem = function () sax.doCreateItem = function ()
@@ -155,10 +160,10 @@
} }
//-------------------------------------------------------------- //--------------------------------------------------------------
sax.updateItem = function (id) sax.updateItem = function (item)
{ {
if (!sax.data.userCanManageMembers) return; if (!sax.data.userCanManageMembers) return;
$('.MemberId', sax.$frm.memberId).val(id); $('.MemberId', $frm.memberId).val(item.id);
sax.ajax.updateItem = sax.ajax.updateItem || { url: sax.url.base + 'Organisation/Ajax/GetMember', formId: 'frmMemberId', callbackFn: sax.onUpdateItem }; sax.ajax.updateItem = sax.ajax.updateItem || { url: sax.url.base + 'Organisation/Ajax/GetMember', formId: 'frmMemberId', callbackFn: sax.onUpdateItem };
sax.doAjaxRequest(sax.ajax.updateItem, 50); sax.doAjaxRequest(sax.ajax.updateItem, 50);
} }
@@ -167,22 +172,22 @@
//sax.debug('onUpdateItem', response); //sax.debug('onUpdateItem', response);
sax.clearItem(); sax.clearItem();
if (!response.success) return; if (!response.success) return;
let $frm = sax.$frm.member; let $frmM = $frm.member;
let item = sax.member = response.member; let item = sax.member = response.member;
$('.MemberId', $frm).val(item.id); $('.MemberId', $frmM).val(item.id);
$('.MemberExists', $frm).val(1); $('.MemberExists', $frmM).val(1);
$('.MemberOrganisationId', $frm).val(); $('.MemberOrganisationId', $frmM).val();
$('.MemberEmailAddress', $frm).val(item.emailAddress).prop('readonly', true); $('.MemberEmailAddress', $frmM).val(item.emailAddress).prop('readonly', true);
$('.MemberDisplayName', $frm).toggle(!item.awaiting).val(item.displayName); $('.MemberDisplayName', $frmM).toggle(!item.awaiting).val(item.displayName);
$('.MemberTitle', $frm).toggle(!!item.awaiting).val(item.title); $('.MemberTitle', $frmM).toggle(!!item.awaiting).val(item.title);
$('.MemberFirstName', $frm).toggle(!!item.awaiting).val(item.firstName); $('.MemberFirstName', $frmM).toggle(!!item.awaiting).val(item.firstName);
$('.MemberLastName', $frm).toggle(!!item.awaiting).val(item.lastName); $('.MemberLastName', $frmM).toggle(!!item.awaiting).val(item.lastName);
$('.MemberRoleCodes', $frm).val(item.roleCodes); $('.MemberRoleCodes', $frmM).val(item.roleCodes);
$('.MemberRoles', $frm).val(sax.getSelectedMemberRoleDescs().join('\n')); $('.MemberRoles', $frmM).val(sax.getSelectedMemberRoleDescs().join('\n'));
$('.MemberAdminComment', $frm).val(item.adminComment); $('.MemberAdminComment', $frmM).val(item.adminComment);
sax.clearControlErrors(); sax.clearControlErrors();
sax.$dlg.member.dialog('option', 'title', sax.dlg.title.updateMember); $dlg.member.dialog('option', 'title', sax.dlg.title.updateMember);
sax.openDialog(sax.$dlg.member, 600, 600); sax.openDialog($dlg.member, 600, 600);
} }
sax.doUpdateItem = function () sax.doUpdateItem = function ()
{ {
@@ -202,10 +207,10 @@
sax.updateMemberRoles = function (memberRoleCodes) sax.updateMemberRoles = function (memberRoleCodes)
{ {
//sax.debug('updateMemberRoles', memberRoleCodes); //sax.debug('updateMemberRoles', memberRoleCodes);
let $frm = sax.$frm.member; let $frmM = $frm.member;
sax.member.roleCodes = memberRoleCodes; sax.member.roleCodes = memberRoleCodes;
$('.MemberRoleCodes',$frm).val(memberRoleCodes.join(sax.data.memberRoleCodeDelim)); $('.MemberRoleCodes', $frmM).val(memberRoleCodes.join(sax.data.memberRoleCodeDelim));
$('.MemberRoles', $frm).val(sax.getSelectedMemberRoleDescs().join('\n')); $('.MemberRoles', $frmM).val(sax.getSelectedMemberRoleDescs().join('\n'));
} }
sax.getSelectedMemberRoleDescs = function () sax.getSelectedMemberRoleDescs = function ()
{ {
@@ -223,8 +228,8 @@
//-------------------------------------------------------------- //--------------------------------------------------------------
sax.storeItem = function () sax.storeItem = function ()
{ {
let $frm = sax.$frm.member; let $frmM = $frm.member;
$('.MemberNameSupplied', $frm).val($('.MemberLastName', $frm).is(":visible") ? 1 : 0); $('.MemberNameSupplied', $frmM).val($('.MemberLastName', $frmM).is(":visible") ? 1 : 0);
sax.ajax.storeItem = sax.ajax.storeItem || { url: sax.url.base + 'Organisation/Ajax/StoreMember', formId: 'frmMember', callbackFn: sax.onStoreItem }; sax.ajax.storeItem = sax.ajax.storeItem || { url: sax.url.base + 'Organisation/Ajax/StoreMember', formId: 'frmMember', callbackFn: sax.onStoreItem };
sax.doAjaxRequest(sax.ajax.storeItem, 50); sax.doAjaxRequest(sax.ajax.storeItem, 50);
} }
@@ -233,20 +238,20 @@
//sax.debug('onStoreItem', response); //sax.debug('onStoreItem', response);
sax.refreshControlValues(response.controlValues); sax.refreshControlValues(response.controlValues);
if (!response.success) return; if (!response.success) return;
let $frm = sax.$frm.member; let $frmM = $frm.member;
if (response.memberNameRequired) if (response.memberNameRequired)
{ {
$('.MemberEmailAddress', $frm).prop('readonly', true); $('.MemberEmailAddress', $frmM).prop('readonly', true);
$('.MemberTitle,.MemberFirstName,.MemberLastName', $frm).show(); $('.MemberTitle,.MemberFirstName,.MemberLastName', $frmM).show();
return; return;
} }
sax.$dlg.member.dialog('close'); $dlg.member.dialog('close');
var item = response.member; var item = response.member;
var $item = $('#' + sax.itemIdPrefix + item.id); var $item = $('#' + sax.getItemId(item.id));
if (!$item.length) if (!$item.length)
{ {
$item = sax.getItemTemplate(); $item = sax.getItemTemplate();
$('.sax-panel-item-list', sax.$pnl.results).prepend($item).show(); $('.sax-panel-item-list', $pnl.results).prepend($item).show();
} }
sax.populateItem($item, item) sax.populateItem($item, item)
} }
@@ -256,7 +261,7 @@
{ {
let fn = function () let fn = function ()
{ {
$('.MemberId', sax.$frm.memberId).val(id); $('.MemberId', $frm.memberId).val(id);
sax.ajax.removeItem = sax.ajax.removeItem || { url: sax.url.base + 'Organisation/Ajax/RemoveMember', formId: 'frmMemberId', callbackFn: sax.onItemRemoved }; sax.ajax.removeItem = sax.ajax.removeItem || { url: sax.url.base + 'Organisation/Ajax/RemoveMember', formId: 'frmMemberId', callbackFn: sax.onItemRemoved };
sax.doAjaxRequest(sax.ajax.removeItem, 50); sax.doAjaxRequest(sax.ajax.removeItem, 50);
} }
@@ -267,7 +272,7 @@
{ {
if (!response.success) return; if (!response.success) return;
var item = response.member; var item = response.member;
var $item = $('#' + sax.itemIdPrefix + item.id); var $item = $('#' + sax.getItemId(item.id));
//sax.debug(item, $item); //sax.debug(item, $item);
if ($item.length) if ($item.length)
$item.remove(); $item.remove();
@@ -278,7 +283,7 @@
{ {
let fn = function () let fn = function ()
{ {
$('.MemberId', sax.$frm.memberId).val(id); $('.MemberId', $frm.memberId).val(id);
sax.ajax.activateItem = sax.ajax.activateItem || { url: sax.url.base + 'Organisation/Ajax/ActivateMember', formId: 'frmMemberId', callbackFn: sax.onItemActivated }; sax.ajax.activateItem = sax.ajax.activateItem || { url: sax.url.base + 'Organisation/Ajax/ActivateMember', formId: 'frmMemberId', callbackFn: sax.onItemActivated };
sax.doAjaxRequest(sax.ajax.activateItem, 50); sax.doAjaxRequest(sax.ajax.activateItem, 50);
} }
@@ -288,7 +293,7 @@
{ {
if (!response.success) return; if (!response.success) return;
var item = response.member; var item = response.member;
var $item = $('#' + sax.itemIdPrefix + item.id); var $item = $('#' + sax.getItemId(item.id));
//sax.debug(item, $item); //sax.debug(item, $item);
if ($item.length) if ($item.length)
sax.populateItem($item, item) sax.populateItem($item, item)
@@ -297,22 +302,22 @@
//-------------------------------------------------------------- //--------------------------------------------------------------
$(function () $(function ()
{ {
sax.$pnl.members = $('#pnlMembers'); $pnl.members = $('.sax-panel.Members');
sax.$pnl.filter = $('.sax-panel-filter', sax.$pnl.members); $pnl.filter = $('.sax-panel-filter', $pnl.members);
sax.$pnl.results = $('.sax-panel-results', sax.$pnl.members); $pnl.results = $('.sax-panel-results', $pnl.members);
sax.$frm.filter = $('#frmMemberFilter'); $frm.filter = $('#frmMemberFilter');
$('.MemberFilter', sax.$frm.filter).on('input', function () { sax.refreshResults(250); }).on('keypress', function (event) $('.MemberFilter', $frm.filter).on('input', function () { sax.refreshResults(250); }).on('keypress', function (event)
{ {
if (event.keyCode == 13) setTimeout(sax.refreshResults, 50); if (event.keyCode == 13) setTimeout(sax.refreshResults, 50);
}); });
sax.$frm.memberId = $('#frmMemberId'); $frm.memberId = $('#frmMemberId');
sax.$frm.member = $('#frmMember'); $frm.member = $('#frmMember');
$('.sax-input', sax.$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.doCreateItem(); };
opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); }; opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); };
sax.$dlg.member = $('#dlgMember').dialog(opt); $dlg.member = $('#dlgMember').dialog(opt);
setTimeout(sax.refreshResults, 250); setTimeout(sax.refreshResults, 250);
}); });
+100 -54
View File
@@ -5,17 +5,18 @@
(function (win, doc, undef) (function (win, doc, undef)
{ {
"use strict"; "use strict";
sax.itemIdPrefix = 'Itm_'; let $pnl = sax.$pnl, $frm = sax.$frm, $dlg = sax.$dlg;
let oo = sax.OrgOpp = { data: {}, fn: {} };
//-------------------------------------------------------------- //--------------------------------------------------------------
sax.refreshResults = function (delay) sax.refreshResults = function (delay)
{ {
var $results = $('.sax-panel-results');
sax.data.userCanManageOpportunities = false; sax.data.userCanManageOpportunities = false;
if (!sax.awaitingRefreshResponse) if (!sax.awaitingRefreshResponse)
{ {
var $items = $('.sax-panel-item-list', $results).fadeOut(200).empty(); $('.sax-burger', $pnl.filter).hide();
var $msgs = $('.sax-panel-messages', $results).hide().empty().append($('<div class="sax-message">' + sax.msg.dataQuerying + '</div>')).fadeIn(200); $('.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);
} }
sax.ajax.refreshResults = sax.ajax.refreshResults || { url: sax.url.base + 'Organisation/Ajax/GetOpportunityList', formId: 'frmOpportunityFilter', callbackFn: sax.doRefreshResults }; sax.ajax.refreshResults = sax.ajax.refreshResults || { url: sax.url.base + 'Organisation/Ajax/GetOpportunityList', formId: 'frmOpportunityFilter', callbackFn: sax.doRefreshResults };
sax.doAjaxRequest(sax.ajax.refreshResults, delay || 50); sax.doAjaxRequest(sax.ajax.refreshResults, delay || 50);
@@ -26,35 +27,33 @@
//sax.debug('doRefreshResults', response); //sax.debug('doRefreshResults', response);
delete sax.awaitingRefreshResponse; delete sax.awaitingRefreshResponse;
sax.refreshControlValues(response.controlValues); sax.refreshControlValues(response.controlValues);
var $panel = $('#pnlOpportunities'); var $msgs = $('.sax-panel-messages', $pnl.results).hide().empty();
$('.sax-action.sax-item-create', $panel).hide(); var $items = $('.sax-panel-item-list', $pnl.results).hide().empty();
var $results = $('.sax-panel-results', $panel);
var $msgs = $('.sax-panel-messages', $results).hide().empty();
var $items = $('.sax-panel-item-list', $results).hide().empty();
var $tmpl = $('.sax-panel-item-template .sax-panel-item', $results);
if (!response.success) return; if (!response.success) return;
oo.data.organisation = response.organisation;
// Reference data - Opportunity types. // Reference data - Opportunity types.
if (response.opportunityTypes) if (response.opportunityTypes)
sax.populateSelectCodeDesc('#cbOpportunityType', response.opportunityTypes); sax.populateSelectCodeDesc('#cbOpportunityType', response.opportunityTypes);
// Menu.
let $bgr = $('.sax-burger', $pnl.filter);
let $mnu = $('ul.sax-dropdown-menu', $bgr).empty();
$mnu.append(sax.getFilterMenuOption(sax.lbl.refresh, function () { sax.refreshResults(); }, 'sax-refresh'));
if (sax.data.userCanManageOpportunities = (response.user && response.user.canManage))
$mnu.append(sax.getFilterMenuOption(sax.lbl.add, function () { sax.createItem(); }, 'sax-edit'));
$bgr.toggle(!!$('.sax-dropdown-item', $mnu).length);
// Items. // Items.
sax.data.userCanManageOpportunities = (response.user && response.user.canManage);
$('#pnlOpportunities .sax-panel-filter .sax-action.sax-item-create').toggle(sax.data.userCanManageOpportunities);
var items = response.opportunities; var items = response.opportunities;
if (!items.length) if (!items.length)
return $msgs.append($('<div class="sax-message">' + sax.msg.dataNoneFound + '</div>')).fadeIn(500); return $msgs.append($('<div class="sax-message">' + sax.msg.dataNoneFound + '</div>')).fadeIn(500);
for (let itemIdx = 0; itemIdx < items.length; itemIdx++) for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
{ $items.append(sax.populateItem(sax.getItemTemplate(), items[itemIdx]));
let item = items[itemIdx];
let $item = $tmpl.clone();
sax.populateItem($item, item);
$items.append($item);
}
$items.fadeIn(50); $items.fadeIn(50);
} }
sax.populateItem = function ($item, item) sax.populateItem = function ($item, item)
{ {
if (!item) return; if (!item) return;
$item.prop('id', sax.itemIdPrefix + item.id); $('.sax-panel-results .sax-panel-messages').hide().empty();
$item.prop('id', sax.getItemId(item.id));
$('.OpportunityType', $item).text(item.typeDesc); $('.OpportunityType', $item).text(item.typeDesc);
$('.OpportunityPosition', $item).text(item.position); $('.OpportunityPosition', $item).text(item.position);
$('.OpportunityOutline', $item).text(item.outline); $('.OpportunityOutline', $item).text(item.outline);
@@ -66,10 +65,52 @@
$('.OpportunityExpiresOn', $item).text(item.expiresOnFmt); $('.OpportunityExpiresOn', $item).text(item.expiresOnFmt);
$('.OpportunityExpires', $item).toggle(!!item.expiresOnFmt); $('.OpportunityExpires', $item).toggle(!!item.expiresOnFmt);
$('.OpportunityStatusDesc', $item).text(item.statusDesc); $('.OpportunityStatusDesc', $item).text(item.statusDesc);
if (sax.data.userCanManageOpportunities)
$('.sax-caption .sax-action, .sax-actions .sax-action.sax-item-update', $item).off('click').on('click', function () { sax.updateItem(item.id) }).removeClass('hidden'); let $bgr = $('.sax-burger', $item);
$item.off('dblclick').on('dblclick', function () { sax.updateItem(item.id) }); let $mnu = $('ul.sax-dropdown-menu', $bgr).empty();
$('.sax-panel-results .sax-panel-messages').hide().empty(); if (!item.deleted)
{
if (sax.data.userCanManageOpportunities)
{
let fnUpd = function () { sax.updateItem(item) };
$mnu.append(sax.getItemMenuOption(sax.lbl.edit, fnUpd, 'sax-edit'));
$('.sax-caption .sax-action', $item).off('click').on('click', fnUpd);
$item.off('dblclick').on('dblclick', fnUpd);
}
}
else $('.sax-caption .sax-action', $item).removeClass('sax-action');
$bgr.toggle(!!$('.sax-dropdown-menu .sax-dropdown-item', $item).length);
return $item;
}
//--------------------------------------------------------------
sax.getItemId = function (id)
{
return 'Itm_' + id;
}
sax.getFilterDropdownTemplate = function ()
{
return $('.sax-panel-item-template .sax-dropdown-menu.Opportunities li.sax-dropdown-item', sax.$pnl.filter).clone();
}
sax.getItemTemplate = function ()
{
return $('.sax-panel-item-template .sax-panel-item.Opportunity', sax.$pnl.results).clone();
}
sax.getItemDropdownTemplate = function ()
{
return $('.sax-panel-item-template .sax-dropdown-menu.Opportunity li.sax-dropdown-item', sax.$pnl.results).clone();
}
sax.getFilterMenuOption = function (lbl, fn, cls)
{
return sax.getMenuOption(sax.getFilterDropdownTemplate(), lbl, fn, cls);
}
sax.getItemMenuOption = function (lbl, fn, cls)
{
return sax.getMenuOption(sax.getItemDropdownTemplate(), lbl, fn, cls);
}
sax.getMenuOption = function ($opt, lbl, fn, cls)
{
return $opt.find('div.sax-label').text(lbl).end().on('click', fn).addClass(cls);
} }
//-------------------------------------------------------------- //--------------------------------------------------------------
@@ -131,12 +172,17 @@
{ {
if (!sax.data.userCanManageOpportunities) return; if (!sax.data.userCanManageOpportunities) return;
sax.clearItem(); sax.clearItem();
sax.$dlg.opportunity.dialog('option', 'title', sax.dlg.title.createOpportunity); let $frmO = $frm.opportunity;
sax.openDialog(sax.$dlg.opportunity, 600, 600); $('#ifOpportunitySportId', $frmO).val(oo.data.organisation.sportId);
$('#ifOpportunitySportCaption', $frmO).val(oo.data.organisation.sportName);
$('#ifOpportunityRegionId', $frmO).val(oo.data.organisation.regionId);
$('#ifOpportunityRegionCaption', $frmO).val(oo.data.organisation.regionName);
$dlg.opportunity.dialog('option', 'title', sax.dlg.title.createOpportunity);
sax.openDialog($dlg.opportunity, 600, 600);
} }
sax.clearItem = function () sax.clearItem = function ()
{ {
$('#ifOpportunityId,#ifOpportunityExists,#ifOpportunityRegionId,#ifOpportunitySportId,input[type="text"],textarea,select', sax.$frm.opportunity).val(''); $('#ifOpportunityId,#ifOpportunityExists,#ifOpportunityRegionId,#ifOpportunitySportId,input[type="text"],textarea,select', $frm.opportunity).val('');
sax.clearControlErrors(); sax.clearControlErrors();
} }
sax.doCreateItem = function () sax.doCreateItem = function ()
@@ -145,10 +191,10 @@
} }
//-------------------------------------------------------------- //--------------------------------------------------------------
sax.updateItem = function (id) sax.updateItem = function (item)
{ {
if (!sax.data.userCanManageOpportunities) return; if (!sax.data.userCanManageOpportunities) return;
$('.OpportunityId', sax.$frm.opportunityId).val(id); $('.OpportunityId', $frm.opportunityId).val(item.id);
sax.ajax.updateItem = sax.ajax.updateItem || { url: sax.url.base + 'Organisation/Ajax/GetOpportunity', formId: 'frmOpportunityId', callbackFn: sax.onUpdateItem }; sax.ajax.updateItem = sax.ajax.updateItem || { url: sax.url.base + 'Organisation/Ajax/GetOpportunity', formId: 'frmOpportunityId', callbackFn: sax.onUpdateItem };
sax.doAjaxRequest(sax.ajax.updateItem, 50); sax.doAjaxRequest(sax.ajax.updateItem, 50);
} }
@@ -157,21 +203,21 @@
//sax.debug('onUpdateItem', response); //sax.debug('onUpdateItem', response);
sax.clearItem(); sax.clearItem();
if (!response.success) return; if (!response.success) return;
let $frm = sax.$frm.opportunity; let $frmO = $frm.opportunity;
let item = response.opportunity; let item = response.opportunity;
$('#ifOpportunityId', $frm).val(item.id); $('#ifOpportunityId', $frmO).val(item.id);
$('#ifOpportunityExists', $frm).val(1); $('#ifOpportunityExists', $frmO).val(1);
$('#cbOpportunityType', $frm).val(item.typeCode); $('#cbOpportunityType', $frmO).val(item.typeCode);
$('#ifOpportunityPosition', $frm).val(item.position); $('#ifOpportunityPosition', $frmO).val(item.position);
$('#ifOpportunityOutline', $frm).val(item.outline); $('#ifOpportunityOutline', $frmO).val(item.outline);
$('#ifOpportunityRegionId', $frm).val(item.regionIdPrimary); $('#ifOpportunityRegionId', $frmO).val(item.regionIdPrimary);
$('#ifOpportunityRegionCaption', $frm).val(item.regionCaption); $('#ifOpportunityRegionCaption', $frmO).val(item.regionCaption);
$('#ifOpportunitySportId', $frm).val(item.sportIdPrimary); $('#ifOpportunitySportId', $frmO).val(item.sportIdPrimary);
$('#ifOpportunitySportCaption', $frm).val(item.sportCaption); $('#ifOpportunitySportCaption', $frmO).val(item.sportCaption);
$('#cbOpportunityStatusCode', $frm).val(item.statusCode); $('#cbOpportunityStatusCode', $frmO).val(item.statusCode);
sax.clearControlErrors(); sax.clearControlErrors();
sax.$dlg.opportunity.dialog('option', 'title', sax.dlg.title.updateOpportunity); $dlg.opportunity.dialog('option', 'title', sax.dlg.title.updateOpportunity);
sax.openDialog(sax.$dlg.opportunity, 600, 600); sax.openDialog($dlg.opportunity, 600, 600);
} }
sax.doUpdateItem = function () sax.doUpdateItem = function ()
{ {
@@ -189,15 +235,14 @@
//sax.debug('onStoreItem', response); //sax.debug('onStoreItem', response);
sax.refreshControlValues(response.controlValues); sax.refreshControlValues(response.controlValues);
if (!response.success) return; if (!response.success) return;
sax.$dlg.opportunity.dialog('close'); $dlg.opportunity.dialog('close');
var item = response.opportunity; var item = response.opportunity;
var $item = $('#' + sax.itemIdPrefix + item.id); var $item = $('#' + sax.getItemId(item.id));
if (!$item.length) if (!$item.length)
{ {
var $results = $('.sax-panel-results'); $item = $('.sax-panel-item-template .sax-panel-item', $pnl.results).clone();
$item = $('.sax-panel-item-template .sax-panel-item', $results).clone(); $('.sax-panel-item-list', $pnl.results).prepend($item).show();
$('.sax-panel-item-list', $results).prepend($item).show();
} }
sax.populateItem($item, item) sax.populateItem($item, item)
} }
@@ -205,21 +250,22 @@
//-------------------------------------------------------------- //--------------------------------------------------------------
$(function () $(function ()
{ {
sax.$frm.filter = $('#frmOpportunityFilter'); $pnl.opportunities = $('.sax-panel.Opportunities');
$('.sax-panel-filter .sax-action.sax-item-create').on('click', function () { sax.createItem(); }); $pnl.filter = $('.sax-panel-filter', $pnl.opportunities);
$('.sax-panel-filter .sax-action.sax-results-refresh').on('click', function () { sax.refreshResults(); }); $pnl.results = $('.sax-panel-results', $pnl.opportunities);
$('.OpportunityFilter', sax.$frm.filter).on('input', function () { sax.refreshResults(250); }).on('keypress', function (event) $frm.filter = $('#frmOpportunityFilter', $pnl.filter);
$('.OpportunityFilter', $frm.filter).on('input', function () { sax.refreshResults(250); }).on('keypress', function (event)
{ {
if (event.keyCode == 13) setTimeout(sax.refreshResults, 50); if (event.keyCode == 13) setTimeout(sax.refreshResults, 50);
}); });
sax.$frm.opportunityId = $('#frmOpportunityId'); $frm.opportunityId = $('#frmOpportunityId');
sax.$frm.opportunity = $('#frmOpportunity'); $frm.opportunity = $('#frmOpportunity');
$('.sax-input', sax.$frm.opportunity).on('input', function () { sax.clearControlError(this); }); $('.sax-input', $frm.opportunity).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.doCreateItem(); };
opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); }; opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); };
sax.$dlg.opportunity = $('#dlgOpportunity').dialog(opt); $dlg.opportunity = $('#dlgOpportunity').dialog(opt);
setTimeout(sax.refreshResults, 250); setTimeout(sax.refreshResults, 250);
}); });
@@ -56,6 +56,7 @@
sax.refreshSelect($section, 'AccountTitle', response.contact.title); sax.refreshSelect($section, 'AccountTitle', response.contact.title);
sax.refreshInput($section, 'AccountFirstName', response.contact.firstName); sax.refreshInput($section, 'AccountFirstName', response.contact.firstName);
sax.refreshInput($section, 'AccountLastName', response.contact.lastName); 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);
@@ -179,6 +180,7 @@
} }
sax.selectContactImage = function () sax.selectContactImage = function ()
{ {
sax.debug('selectContactImage');
let dlg = $dlg.selectContactImage.dialog('option', { title: sax.dlg.title.imageUpload }); let dlg = $dlg.selectContactImage.dialog('option', { title: sax.dlg.title.imageUpload });
$('#ifContactImage', dlg).val(''); $('#ifContactImage', dlg).val('');
sax.openDialog(dlg, 560, 240); sax.openDialog(dlg, 560, 240);
@@ -10,7 +10,7 @@
//-------------------------------------------------------------- //--------------------------------------------------------------
sax.showSportExperience = function (usrSpt) sax.showSportExperience = function (usrSpt)
{ {
sax.debug('showSportExperience', usrSpt); //sax.debug('showSportExperience', usrSpt);
$('.sax-header .SportName', se.$pnl.sportExp).text(usrSpt.sportName); $('.sax-header .SportName', se.$pnl.sportExp).text(usrSpt.sportName);
$('.sax-panel-section').slideUp(750, function () { se.$pnl.sportExp.slideDown(750); }); $('.sax-panel-section').slideUp(750, function () { se.$pnl.sportExp.slideDown(750); });
se.$dlg.sportExp.dialog('option', { 'title': sax.lbl.sportExperience + ' - ' + usrSpt.sportName }); se.$dlg.sportExp.dialog('option', { 'title': sax.lbl.sportExperience + ' - ' + usrSpt.sportName });
@@ -27,7 +27,11 @@
} }
se.fn.handleSportExperiencesResponse = function (response) se.fn.handleSportExperiencesResponse = function (response)
{ {
sax.debug('handleSportExperiencesResponse', response); //sax.debug('handleSportExperiencesResponse', response);
if (!response.success) return;
let sport = response.sport;
$('.sax-form-control.ExperienceSpeciality', se.$dlg.sportExp).toggle(!sport.speciality.notRelevant);
$('.sax-form-control.ExperienceSpeciality .sax-label-text', se.$dlg.sportExp).text(sport.speciality.label || sax.lbl.speciality);
let $results = se.$pnl.results; let $results = se.$pnl.results;
let $msgs = $('.sax-panel-messages', $results).empty(); let $msgs = $('.sax-panel-messages', $results).empty();
let $list = $('.sax-panel-item-list', $results).hide().empty(); let $list = $('.sax-panel-item-list', $results).hide().empty();
@@ -38,20 +42,22 @@
let item = items[itemIdx]; let item = items[itemIdx];
item.idx = ++se.idx; item.idx = ++se.idx;
let $item = se.fn.getItemTemplate(item.idx); let $item = se.fn.getItemTemplate(item.idx);
sax.debug(item, $item); //sax.debug(item, $item);
$('.ExperiencePeriod', $item).text(item.period); $('.ExperiencePeriod', $item).text(item.period);
$('.ExperienceSummary', $item).text(item.summary); $('.ExperienceSummary', $item).text(item.summary);
$('.ExperienceTeam', $item).text(item.team); $('.ExperienceTeam', $item).text(item.team);
$('.ExperienceLeague', $item).text(item.league); $('.ExperienceLeague', $item).text(item.league);
$('.ExperienceSpeciality', $item).text(item.speciality); $('.ExperienceSpeciality', $item).text(item.speciality);
let $mnu = $('.sax-burger .sax-dropdown-menu', $item).empty(); let $mnu = $('.sax-burger .sax-dropdown-menu', $item).empty();
$mnu.append(se.fn.getMenuOption(se.fn.getItemActionTemplate(), sax.lbl.edit, function () { se.fn.updateSportExperience(item, $item); })); $mnu.append(se.fn.getMenuOption(se.fn.getItemActionTemplate(), sax.lbl.edit, function () { se.fn.updateSportExperience(item, $item); }, 'sax-edit'));
$('.sax-header .sax-caption', $item).on('click', function () { se.fn.updateSportExperience(item, $item); }); $('.sax-header .sax-caption', $item).on('click', function () { se.fn.updateSportExperience(item, $item); });
$('.sax-content', $item).on('dblclick', function () { se.fn.updateSportExperience(item, $item); }); $('.sax-content', $item).on('dblclick', function () { se.fn.updateSportExperience(item, $item); });
$list.append($item); $list.append($item);
} }
$list.show(); $list.show();
} }
//--------------------------------------------------------------
se.fn.getItemId = function (idx) se.fn.getItemId = function (idx)
{ {
return 'SptExp_' + idx; return 'SptExp_' + idx;
@@ -64,15 +70,15 @@
{ {
return $('.sax-panel-item-template .sax-panel-item.SportExperience', se.$pnl.results).clone().prop('id', se.fn.getItemId(idx)); return $('.sax-panel-item-template .sax-panel-item.SportExperience', se.$pnl.results).clone().prop('id', se.fn.getItemId(idx));
} }
se.fn.getMenuOption = function ($opt, lbl, fn) se.fn.getMenuOption = function ($opt, lbl, fn, cls)
{ {
return $opt.find('div.sax-label').text(lbl).end().on('click', fn); return $opt.find('div.sax-label').text(lbl).end().on('click', fn).addClass(cls);
} }
//-------------------------------------------------------------- //--------------------------------------------------------------
sax.addSportExperience = function () sax.addSportExperience = function ()
{ {
sax.debug('addSportExperience') //sax.debug('addSportExperience')
se.fn.clearSportExperience(); se.fn.clearSportExperience();
sax.openDialog(se.$dlg.sportExp, 560, 600); sax.openDialog(se.$dlg.sportExp, 560, 600);
} }
@@ -83,7 +89,7 @@
} }
se.fn.updateSportExperience = function (item, $item) se.fn.updateSportExperience = function (item, $item)
{ {
sax.debug('updateSportExperience', item); //sax.debug('updateSportExperience', item);
let frm = se.$frm.sportExpId; let frm = se.$frm.sportExpId;
$('.UserSportExperienceId', se.$frm.sportExpId).val(item.id); $('.UserSportExperienceId', se.$frm.sportExpId).val(item.id);
sax.ajax.sportExp = sax.ajax.sportExp || { url: sax.url.base + 'UserSport/Ajax/GetExperience', formId: frm.prop('id'), callbackFn: se.fn.doUpdateSportExperience }; sax.ajax.sportExp = sax.ajax.sportExp || { url: sax.url.base + 'UserSport/Ajax/GetExperience', formId: frm.prop('id'), callbackFn: se.fn.doUpdateSportExperience };
@@ -91,14 +97,14 @@
} }
se.fn.doUpdateSportExperience = function (response) se.fn.doUpdateSportExperience = function (response)
{ {
sax.debug('doUpdateSportExperience', response); //sax.debug('doUpdateSportExperience', response);
if (!response.success) return; if (!response.success) return;
let item = response.experience; let item = response.experience;
let frm = se.$frm.sportExp; let frm = se.$frm.sportExp;
se.fn.clearSportExperience(); se.fn.clearSportExperience();
$('input.UserSportExperienceId', frm).val(item.id); $('input.UserSportExperienceId', frm).val(item.id);
$('input.UserSportExperienceExists', frm).val(1); $('input.UserSportExperienceExists', frm).val(1);
sax.debug(Date.parse(item.periodFrom_YMD)); //sax.debug(Date.parse(item.periodFrom_YMD));
$('.sax-input.ExperiencePeriodFrom', frm).datepicker('setDate', new Date(item.periodFrom_YMD)); $('.sax-input.ExperiencePeriodFrom', frm).datepicker('setDate', new Date(item.periodFrom_YMD));
$('.sax-input.ExperiencePeriodTo', frm).datepicker('setDate', item.periodTo_YMD ? new Date(item.periodTo_YMD) : null); $('.sax-input.ExperiencePeriodTo', frm).datepicker('setDate', item.periodTo_YMD ? new Date(item.periodTo_YMD) : null);
$('.sax-textarea.ExperienceSummary', frm).val(item.summary).prop('autofocus', true); $('.sax-textarea.ExperienceSummary', frm).val(item.summary).prop('autofocus', true);
@@ -110,14 +116,14 @@
} }
se.fn.storeSportExperience = function () se.fn.storeSportExperience = function ()
{ {
sax.debug('storeSportExperience'); //sax.debug('storeSportExperience');
let frm = se.$frm.sportExp; let frm = se.$frm.sportExp;
sax.ajax.storeSportExp = sax.ajax.storeSportExp || { url: sax.url.base + 'UserSport/Ajax/StoreExperience', formId: frm.prop('id'), callbackFn: se.fn.onStoreSportExperience }; sax.ajax.storeSportExp = sax.ajax.storeSportExp || { url: sax.url.base + 'UserSport/Ajax/StoreExperience', formId: frm.prop('id'), callbackFn: se.fn.onStoreSportExperience };
sax.doAjaxRequest(sax.ajax.storeSportExp, 50); sax.doAjaxRequest(sax.ajax.storeSportExp, 50);
} }
se.fn.onStoreSportExperience = function (response) se.fn.onStoreSportExperience = function (response)
{ {
sax.debug('onStoreSportExperience', response); //sax.debug('onStoreSportExperience', response);
sax.refreshControlValues(response.controlValues, se.$dlg.sprExp); sax.refreshControlValues(response.controlValues, se.$dlg.sprExp);
if (!response.success) return; if (!response.success) return;
se.$dlg.sportExp.dialog('close'); se.$dlg.sportExp.dialog('close');
+3 -1
View File
@@ -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.5.1"; private static String version { get; } = "1.1.6.0";
// 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,6 +40,8 @@ namespace Saxonite.Net.Standard.Base.App
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Version history. // Version history.
//------------------------------------------------------------------- //-------------------------------------------------------------------
// 1.1.6 ?-Aug-2021 ?
// - ?
// 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.
+12
View File
@@ -90,6 +90,7 @@ namespace Saxonite.Net.Standard.Base.App
YesNo, YesNo,
DataItemType, DataItemType,
Gender, Gender,
SportSpecialityLabel,
SportParticipation, SportParticipation,
SportOfficiating, SportOfficiating,
RegionType, RegionType,
@@ -199,6 +200,17 @@ namespace Saxonite.Net.Standard.Base.App
SystemAdmin, SystemAdmin,
} }
//-------------------------------------------------------------------
/// <summary>Sport Speciality Label</summary>
public enum SportSpecialityLabel
{
Default = 0,
/* Do not change the values/codes - tied to database. */
Positon = 10,
Discipline = 20,
NotRelevant = 90,
}
//------------------------------------------------------------------- //-------------------------------------------------------------------
/// <summary>Sport Participation</summary> /// <summary>Sport Participation</summary>
public enum SportParticipation public enum SportParticipation
@@ -6,7 +6,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 19-Aug-2021 17:19:49 // Code generated by Sarand Database Utilities Thu 26-Aug-2021 12:36:27
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
namespace Saxonite.Base.App namespace Saxonite.Base.App
{ {
@@ -195,6 +195,7 @@ namespace Saxonite.Base.App
Region_UpdateHost, Region_UpdateHost,
Sport_Id, Sport_Id,
Sport_Name, Sport_Name,
Sport_SpecialityLabel,
Sport_Notes, Sport_Notes,
Sport_Flags, Sport_Flags,
Sport_Status, Sport_Status,
@@ -210,6 +211,7 @@ namespace Saxonite.Base.App
UserAccount_FirstName, UserAccount_FirstName,
UserAccount_Initials, UserAccount_Initials,
UserAccount_LastName, UserAccount_LastName,
UserAccount_About,
UserAccount_PhoneMain, UserAccount_PhoneMain,
UserAccount_PhoneMobile, UserAccount_PhoneMobile,
UserAccount_PhoneAlt, UserAccount_PhoneAlt,
@@ -293,6 +295,7 @@ namespace Saxonite.Base.App
UserSport_Id, UserSport_Id,
UserSport_UserAccountId, UserSport_UserAccountId,
UserSport_SportId, UserSport_SportId,
UserSport_About,
UserSport_Participation, UserSport_Participation,
UserSport_Officiating, UserSport_Officiating,
UserSport_UserSportData, UserSport_UserSportData,
@@ -333,7 +336,7 @@ namespace Saxonite.Base.App
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Data members. // Data members.
private static readonly int tableCount = 16; private static readonly int tableCount = 16;
private static readonly int columnCount = 288; private static readonly int columnCount = 291;
private static ulong maxTextLen = 0; private static ulong maxTextLen = 0;
//------------------------------------------------------------------- //-------------------------------------------------------------------
@@ -676,6 +679,7 @@ namespace Saxonite.Base.App
new ColumnDfn(8,"UpdateHost",0,12,false,100), new ColumnDfn(8,"UpdateHost",0,12,false,100),
new ColumnDfn(9,"Id",4,4,true,10), new ColumnDfn(9,"Id",4,4,true,10),
new ColumnDfn(9,"Name",0,-9,false,100), new ColumnDfn(9,"Name",0,-9,false,100),
new ColumnDfn(9,"SpecialityLabel",3,5,false,5),
new ColumnDfn(9,"Notes",0,-9,false,2000), new ColumnDfn(9,"Notes",0,-9,false,2000),
new ColumnDfn(9,"Flags",3,5,false,5), new ColumnDfn(9,"Flags",3,5,false,5),
new ColumnDfn(9,"Status",0,12,false,3), new ColumnDfn(9,"Status",0,12,false,3),
@@ -691,6 +695,7 @@ namespace Saxonite.Base.App
new ColumnDfn(10,"FirstName",0,-9,false,100), new ColumnDfn(10,"FirstName",0,-9,false,100),
new ColumnDfn(10,"Initials",0,-9,false,10), new ColumnDfn(10,"Initials",0,-9,false,10),
new ColumnDfn(10,"LastName",0,-9,false,100), new ColumnDfn(10,"LastName",0,-9,false,100),
new ColumnDfn(10,"About",0,-9,false,2000),
new ColumnDfn(10,"PhoneMain",0,-9,false,50), new ColumnDfn(10,"PhoneMain",0,-9,false,50),
new ColumnDfn(10,"PhoneMobile",0,-9,false,50), new ColumnDfn(10,"PhoneMobile",0,-9,false,50),
new ColumnDfn(10,"PhoneAlt",0,-9,false,50), new ColumnDfn(10,"PhoneAlt",0,-9,false,50),
@@ -774,6 +779,7 @@ namespace Saxonite.Base.App
new ColumnDfn(15,"Id",5,-5,true,19), new ColumnDfn(15,"Id",5,-5,true,19),
new ColumnDfn(15,"UserAccountId",4,4,false,10), new ColumnDfn(15,"UserAccountId",4,4,false,10),
new ColumnDfn(15,"SportId",4,4,false,10), new ColumnDfn(15,"SportId",4,4,false,10),
new ColumnDfn(15,"About",0,-9,false,2000),
new ColumnDfn(15,"Participation",3,5,false,5), new ColumnDfn(15,"Participation",3,5,false,5),
new ColumnDfn(15,"Officiating",3,5,false,5), new ColumnDfn(15,"Officiating",3,5,false,5),
new ColumnDfn(15,"UserSportData",0,-9,false,0), new ColumnDfn(15,"UserSportData",0,-9,false,0),
+11 -24
View File
@@ -89,6 +89,7 @@ namespace Saxonite.Net.Standard.Base.App
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> 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> SportParticipationCodes { get { return GetCodesOfType(Sax.CodeType.SportParticipation); } } public List<TypeCodeDesc> SportParticipationCodes { get { return GetCodesOfType(Sax.CodeType.SportParticipation); } }
public List<TypeCodeDesc> SportOfficiatingCodes { get { return GetCodesOfType(Sax.CodeType.SportOfficiating); } } public List<TypeCodeDesc> SportOfficiatingCodes { get { return GetCodesOfType(Sax.CodeType.SportOfficiating); } }
public List<TypeCodeDesc> RegionTypeCodes { get { return GetCodesOfType(Sax.CodeType.RegionType); } } public List<TypeCodeDesc> RegionTypeCodes { get { return GetCodesOfType(Sax.CodeType.RegionType); } }
@@ -201,31 +202,24 @@ namespace Saxonite.Net.Standard.Base.App
SaLogger.Debug(GetType().Name + ".QueryRegionsToCache(regionIds) Regions queried: " + regionsQueried + ". Regions in cache: " + regionCache.Count + ". Elapsed: " + DateUtil.FormatNumberOfSeconds((DateTime.Now - startedAt).TotalSeconds)); SaLogger.Debug(GetType().Name + ".QueryRegionsToCache(regionIds) Regions queried: " + regionsQueried + ". Regions in cache: " + regionCache.Count + ". Elapsed: " + DateUtil.FormatNumberOfSeconds((DateTime.Now - startedAt).TotalSeconds));
} }
} }
public SaxRegion GetRegion(SysId regionId) public SaxRegion.Data GetRegion(SysId regionId)
{ {
QueryRegionsToCache(new List<SysId>() { regionId }); QueryRegionsToCache(new List<SysId>() { regionId });
return GetRegion(regionCache.GetValue(regionId, null)); return regionCache.GetValue(regionId, null);
} }
public List<SaxRegion> GetRegions(List<SysId> regionIds) public List<SaxRegion.Data> GetRegions(List<SysId> regionIds)
{ {
List<SaxRegion> regions = new List<SaxRegion>(); List<SaxRegion.Data> regions = new List<SaxRegion.Data>();
QueryRegionsToCache(regionIds); QueryRegionsToCache(regionIds);
foreach (SysId regionId in regionIds) foreach (SysId regionId in regionIds)
{ {
if (!SysId.IsValid(regionId)) continue; if (!SysId.IsValid(regionId)) continue;
SaxRegion region = GetRegion(regionCache.GetValue(regionId, null)); SaxRegion.Data region = regionCache.GetValue(regionId, null);
if (region != null) if (region != null)
regions.Add(region); regions.Add(region);
} }
return regions; return regions;
} }
private SaxRegion GetRegion(SaxRegion.Data regionData)
{
if (regionData == null) return null;
SaxRegion region = ReferenceMgr.CreateRegion();
region.SetData(regionData);
return region;
}
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Sports. // Sports.
@@ -276,31 +270,24 @@ namespace Saxonite.Net.Standard.Base.App
SaLogger.Debug(GetType().Name + ".QuerySportsToCache(sportIds) Sports queried: " + sportsQueried + ". Sports in cache: " + sportCache.Count + ". Elapsed: " + DateUtil.FormatNumberOfSeconds((DateTime.Now - startedAt).TotalSeconds)); SaLogger.Debug(GetType().Name + ".QuerySportsToCache(sportIds) Sports queried: " + sportsQueried + ". Sports in cache: " + sportCache.Count + ". Elapsed: " + DateUtil.FormatNumberOfSeconds((DateTime.Now - startedAt).TotalSeconds));
} }
} }
public SaxSport GetSport(SysId sportId) public SaxSport.Data GetSport(SysId sportId)
{ {
QuerySportsToCache(new List<SysId>() { sportId }); QuerySportsToCache(new List<SysId>() { sportId });
return GetSport(sportCache.GetValue(sportId, null)); return sportCache.GetValue(sportId, null);
} }
public List<SaxSport> GetSports(List<SysId> sportIds) public List<SaxSport.Data> GetSports(List<SysId> sportIds)
{ {
List<SaxSport> sports = new List<SaxSport>(); List<SaxSport.Data> sports = new List<SaxSport.Data>();
QuerySportsToCache(sportIds); QuerySportsToCache(sportIds);
foreach (SysId sportId in sportIds) foreach (SysId sportId in sportIds)
{ {
if (!SysId.IsValid(sportId)) continue; if (!SysId.IsValid(sportId)) continue;
SaxSport sport = GetSport(sportCache.GetValue(sportId, null)); SaxSport.Data sport = sportCache.GetValue(sportId, null);
if (sport != null) if (sport != null)
sports.Add(sport); sports.Add(sport);
} }
return sports; return sports;
} }
private SaxSport GetSport(SaxSport.Data sportData)
{
if (sportData == null) return null;
SaxSport sport = ReferenceMgr.CreateSport();
sport.SetData(sportData);
return sport;
}
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Common Data Components // Common Data Components
@@ -17,6 +17,7 @@ namespace Saxonite.Net.Standard.Base.App
private static readonly List<TypeCodeDesc> yesNoCodes = new List<TypeCodeDesc>(); private static readonly List<TypeCodeDesc> yesNoCodes = new List<TypeCodeDesc>();
private static readonly List<TypeCodeDesc> dataItemTypeCodes = new List<TypeCodeDesc>(); private static readonly List<TypeCodeDesc> dataItemTypeCodes = new List<TypeCodeDesc>();
private static readonly List<TypeCodeDesc> genderCodes = new List<TypeCodeDesc>(); private static readonly List<TypeCodeDesc> genderCodes = new List<TypeCodeDesc>();
private static readonly List<TypeCodeDesc> sportSpecialityLabelCodes = new List<TypeCodeDesc>();
private static readonly List<TypeCodeDesc> sportParticipationCodes = new List<TypeCodeDesc>(); private static readonly List<TypeCodeDesc> sportParticipationCodes = new List<TypeCodeDesc>();
private static readonly List<TypeCodeDesc> sportOfficiatingCodes = new List<TypeCodeDesc>(); private static readonly List<TypeCodeDesc> sportOfficiatingCodes = new List<TypeCodeDesc>();
private static readonly List<TypeCodeDesc> regionTypeCodes = new List<TypeCodeDesc>(); private static readonly List<TypeCodeDesc> regionTypeCodes = new List<TypeCodeDesc>();
@@ -69,6 +70,12 @@ namespace Saxonite.Net.Standard.Base.App
genderCodes.Add(Sax.Gender.Nonconforming, "Nonconforming", "Nonconforming"); genderCodes.Add(Sax.Gender.Nonconforming, "Nonconforming", "Nonconforming");
genderCodes.Add(Sax.Gender.PreferNotToSay, "PreferNotToSay", "Prefer not to say"); genderCodes.Add(Sax.Gender.PreferNotToSay, "PreferNotToSay", "Prefer not to say");
//---------------------------------------------------------------
// Sport speciality label.
sportSpecialityLabelCodes.Add(Sax.SportSpecialityLabel.Positon, "POS", "Positon");
sportSpecialityLabelCodes.Add(Sax.SportSpecialityLabel.Discipline, "DIS", "Discipline");
sportSpecialityLabelCodes.Add(Sax.SportSpecialityLabel.NotRelevant, "NRE", "Not relevant");
//--------------------------------------------------------------- //---------------------------------------------------------------
// Sport participation. // Sport participation.
sportParticipationCodes.Add(Sax.SportParticipation.Professional, "PRO", "Professional"); sportParticipationCodes.Add(Sax.SportParticipation.Professional, "PRO", "Professional");
@@ -42,6 +42,8 @@ namespace Saxonite.Net.Standard.Base.App
return new List<TypeCodeDesc>(dataItemTypeCodes); return new List<TypeCodeDesc>(dataItemTypeCodes);
case Sax.CodeType.Gender: case Sax.CodeType.Gender:
return new List<TypeCodeDesc>(genderCodes); return new List<TypeCodeDesc>(genderCodes);
case Sax.CodeType.SportSpecialityLabel:
return new List<TypeCodeDesc>(sportSpecialityLabelCodes);
case Sax.CodeType.SportParticipation: case Sax.CodeType.SportParticipation:
return new List<TypeCodeDesc>(sportParticipationCodes); return new List<TypeCodeDesc>(sportParticipationCodes);
case Sax.CodeType.SportOfficiating: case Sax.CodeType.SportOfficiating:
+15
View File
@@ -19,6 +19,8 @@ namespace Saxonite.Net.Standard.Base.Bus
Pos, Pos,
Id, Id,
Name, Name,
SpecialityLabel,
SpecialityLabel_Desc,
// Associated data. // Associated data.
// Common. // Common.
Notes, Notes,
@@ -35,6 +37,7 @@ namespace Saxonite.Net.Standard.Base.Bus
public class DataProperties public class DataProperties
{ {
public String Name { get; set; } = String.Empty; public String Name { get; set; } = String.Empty;
public Sax.SportSpecialityLabel SpecialityLabel { get; set; }
} }
//------------------------------------------------------------------- //-------------------------------------------------------------------
@@ -54,10 +57,16 @@ namespace Saxonite.Net.Standard.Base.Bus
get { return data.Name; } get { return data.Name; }
set { CheckChanged(data.Name, value); data.Name = value; } set { CheckChanged(data.Name, value); data.Name = value; }
} }
public Sax.SportSpecialityLabel SpecialityLabel
{
get { return data.SpecialityLabel; }
set { CheckChanged((short)data.SpecialityLabel, (short)value); data.SpecialityLabel = value; }
}
// Population. // Population.
internal void PopulateFrom (Data data) internal void PopulateFrom (Data data)
{ {
Name = data.Name; Name = data.Name;
SpecialityLabel = data.SpecialityLabel;
base.PopulateFrom(data); base.PopulateFrom(data);
} }
public Data Clone () public Data Clone ()
@@ -74,6 +83,7 @@ namespace Saxonite.Net.Standard.Base.Bus
{ {
// Identifies the field that has invalid data. // Identifies the field that has invalid data.
public ValidValue Name { get; set; } = ValidValue.Valid; public ValidValue Name { get; set; } = ValidValue.Valid;
public ValidValue SpecialityLabel { get; set; } = ValidValue.Valid;
} }
//------------------------------------------------------------------- //-------------------------------------------------------------------
@@ -129,6 +139,11 @@ namespace Saxonite.Net.Standard.Base.Bus
get { return data.Name; } get { return data.Name; }
set { data.Name = value; } set { data.Name = value; }
} }
public Sax.SportSpecialityLabel SpecialityLabel
{
get { return data.SpecialityLabel; }
set { data.SpecialityLabel = value; }
}
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Flags - positions 1-16 available. // Flags - positions 1-16 available.
@@ -22,6 +22,7 @@ namespace Saxonite.Net.Standard.Base.Bus
FirstName, FirstName,
Initials, Initials,
LastName, LastName,
About,
PhoneMain, PhoneMain,
PhoneMobile, PhoneMobile,
DateOfBirthDay, DateOfBirthDay,
@@ -65,6 +66,7 @@ namespace Saxonite.Net.Standard.Base.Bus
public String FirstName { get; set; } = String.Empty; public String FirstName { get; set; } = String.Empty;
public String Initials { get; set; } = String.Empty; public String Initials { get; set; } = String.Empty;
public String LastName { get; set; } = String.Empty; public String LastName { get; set; } = String.Empty;
public String About { get; set; } = String.Empty;
public String PhoneMain { get; set; } = String.Empty; public String PhoneMain { get; set; } = String.Empty;
public String PhoneMobile { get; set; } = String.Empty; public String PhoneMobile { get; set; } = String.Empty;
public Sax.Gender Gender { get; set; } public Sax.Gender Gender { get; set; }
@@ -121,6 +123,11 @@ namespace Saxonite.Net.Standard.Base.Bus
get { return data.LastName; } get { return data.LastName; }
set { CheckChanged(data.LastName, value); data.LastName = value; } set { CheckChanged(data.LastName, value); data.LastName = value; }
} }
public String About
{
get { return data.About; }
set { CheckChanged(data.About, value); data.About = value; }
}
public String PhoneMain public String PhoneMain
{ {
get { return data.PhoneMain; } get { return data.PhoneMain; }
@@ -211,6 +218,7 @@ namespace Saxonite.Net.Standard.Base.Bus
FirstName = data.FirstName; FirstName = data.FirstName;
Initials = data.Initials; Initials = data.Initials;
LastName = data.LastName; LastName = data.LastName;
About = data.About;
PhoneMain = data.PhoneMain; PhoneMain = data.PhoneMain;
PhoneMobile = data.PhoneMobile; PhoneMobile = data.PhoneMobile;
Gender = data.Gender; Gender = data.Gender;
@@ -248,6 +256,7 @@ namespace Saxonite.Net.Standard.Base.Bus
public ValidValue FirstName { get; set; } = ValidValue.Valid; public ValidValue FirstName { get; set; } = ValidValue.Valid;
public ValidValue Initials { get; set; } = ValidValue.Valid; public ValidValue Initials { get; set; } = ValidValue.Valid;
public ValidValue LastName { get; set; } = ValidValue.Valid; public ValidValue LastName { get; set; } = ValidValue.Valid;
public ValidValue About { get; set; } = ValidValue.Valid;
public ValidValue PhoneMain { get; set; } = ValidValue.Valid; public ValidValue PhoneMain { get; set; } = ValidValue.Valid;
public ValidValue PhoneMobile { get; set; } = ValidValue.Valid; public ValidValue PhoneMobile { get; set; } = ValidValue.Valid;
public ValidValue Gender { get; set; } = ValidValue.Valid; public ValidValue Gender { get; set; } = ValidValue.Valid;
@@ -356,6 +365,11 @@ namespace Saxonite.Net.Standard.Base.Bus
get { return data.LastName; } get { return data.LastName; }
set { data.LastName = value; } set { data.LastName = value; }
} }
public String About
{
get { return data.About; }
set { data.About = value; }
}
public String PhoneMain public String PhoneMain
{ {
get { return data.PhoneMain; } get { return data.PhoneMain; }
@@ -22,6 +22,8 @@ namespace Saxonite.Net.Standard.Base.Bus
Pos, Pos,
Id, Id,
UserSportId, UserSportId,
// Sport.
Sport_Id,
// Period. // Period.
PeriodFrom, PeriodFrom,
PeriodTo, PeriodTo,
@@ -29,16 +29,24 @@ namespace Saxonite.Net.Standard.Base.Consoles
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Regions. // Regions.
/// <summary> /// <summary>
/// Get the cached list of regions. NB These should be disposed after use. /// Get the cached list of regions.
/// </summary> /// </summary>
public abstract List<SaxRegion> GetActiveRegions(); public abstract List<SaxRegion.Data> GetAllRegions();
/// <summary>
/// Get the cached list of active regions.
/// </summary>
public abstract List<SaxRegion.Data> GetActiveRegions();
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Sports. // Sports.
/// <summary> /// <summary>
/// Get the cached list of sports. NB These should be disposed after use. /// Get the cached list of sports.
/// </summary> /// </summary>
public abstract List<SaxSport> GetActiveSports(); public abstract List<SaxSport.Data> GetAllSports();
/// <summary>
/// Get the cached list of active sports.
/// </summary>
public abstract List<SaxSport.Data> GetActiveSports();
//------------------------------------------------------------------- //-------------------------------------------------------------------
} }
@@ -119,6 +119,12 @@ namespace Saxonite.Net.Standard.Base.Mgr
errField.LastName = SacsHierarchyItem.ValidValue.Invalid; errField.LastName = SacsHierarchyItem.ValidValue.Invalid;
return false; return false;
} }
// About.
if (errField.About != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.About, "about", (long)SaxDbDfn_Core.GetColTextLen(SaxDbDfn_Core.ColumnIdx.UserAccount_About)))
{
errField.About = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
// Phone - main. // Phone - main.
if (errField.PhoneMain != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneMain, "phone", (long)SaxDbDfn_Core.GetColTextLen(SaxDbDfn_Core.ColumnIdx.UserAccount_PhoneMain))) if (errField.PhoneMain != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneMain, "phone", (long)SaxDbDfn_Core.GetColTextLen(SaxDbDfn_Core.ColumnIdx.UserAccount_PhoneMain)))
{ {
@@ -196,13 +202,12 @@ namespace Saxonite.Net.Standard.Base.Mgr
// Associated data - ignore for deleted items. // Associated data - ignore for deleted items.
if (!data.IsStatusDeleted) if (!data.IsStatusDeleted)
{ {
// Regions. // Regions.
if (errField.RegionIdCountry != SacsHierarchyItem.ValidValue.Ignore || errField.RegionIdProvince != SacsHierarchyItem.ValidValue.Ignore) if (errField.RegionIdCountry != SacsHierarchyItem.ValidValue.Ignore || errField.RegionIdProvince != SacsHierarchyItem.ValidValue.Ignore)
{ {
List<SaxRegion> regions = Internals.GetRegions(new List<SysId>() { data.RegionIdCountry, data.RegionIdProvince }); List<SaxRegion.Data> regions = Internals.GetRegions(new List<SysId>() { data.RegionIdCountry, data.RegionIdProvince });
SaxRegion regionCountry = regions.GetRegionById(data.RegionIdCountry); SaxRegion.Data regionCountry = regions.Find(item => item.Id.Equals(data.RegionIdCountry));
SaxRegion regionProvince = regions.GetRegionById(data.RegionIdProvince); SaxRegion.Data regionProvince = regions.Find(item => item.Id.Equals(data.RegionIdProvince));
if (errField.RegionIdCountry != SacsHierarchyItem.ValidValue.Ignore) if (errField.RegionIdCountry != SacsHierarchyItem.ValidValue.Ignore)
{ {
if (SysId.IsValid(data.RegionIdCountry) && regionCountry == null) if (SysId.IsValid(data.RegionIdCountry) && regionCountry == null)
@@ -214,7 +219,6 @@ namespace Saxonite.Net.Standard.Base.Mgr
return SetErrorState("Invalid country specified"); return SetErrorState("Invalid country specified");
} }
} }
} }
//--------------------------------------------------------------- //---------------------------------------------------------------
@@ -67,6 +67,7 @@ namespace Saxonite.Net.Standard.Base.Mgr
public SaxItemDataMgr ItemDataMgr { get { return Internals.ItemDataMgr; } } public SaxItemDataMgr ItemDataMgr { get { return Internals.ItemDataMgr; } }
// Application codes. // Application codes.
public List<TypeCodeDesc> DataItemTypeCodes { get { return Internals.DataItemTypeCodes; } } public List<TypeCodeDesc> DataItemTypeCodes { get { return Internals.DataItemTypeCodes; } }
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; } }
public List<TypeCodeDesc> RegionTypeCodes { get { return Internals.RegionTypeCodes; } } public List<TypeCodeDesc> RegionTypeCodes { get { return Internals.RegionTypeCodes; } }
@@ -21,11 +21,11 @@ namespace Saxonite.Net.Standard.Base.Mgr
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Create item. // Create item.
public abstract SaxSport CreateSport (); public abstract SaxSport CreateSport();
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Item exists. // Item exists.
public bool SportExistsById (SysId id) public bool SportExistsById(SysId id)
{ {
ClearErrorState(); ClearErrorState();
if (!SysId.IsValid(id)) return false; if (!SysId.IsValid(id)) return false;
@@ -34,7 +34,7 @@ namespace Saxonite.Net.Standard.Base.Mgr
prmSport.StatusCat = SaxSport.StatusCat.Any; prmSport.StatusCat = SaxSport.StatusCat.Any;
return GetSportCount(prmSport) == 1; return GetSportCount(prmSport) == 1;
} }
public bool SportExistsByName (String name) public bool SportExistsByName(String name)
{ {
ClearErrorState(); ClearErrorState();
if (StringUtil.IsEmpty(name)) return false; if (StringUtil.IsEmpty(name)) return false;
@@ -46,8 +46,8 @@ namespace Saxonite.Net.Standard.Base.Mgr
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Retrieve individual items. // Retrieve individual items.
public abstract SaxSport GetSport (SaxSport.Params prmSport); public abstract SaxSport GetSport(SaxSport.Params prmSport);
public SaxSport GetSportById (SysId id) public SaxSport GetSportById(SysId id)
{ {
ClearErrorState(); ClearErrorState();
if (!SysId.IsValid(id)) return null; if (!SysId.IsValid(id)) return null;
@@ -56,7 +56,7 @@ namespace Saxonite.Net.Standard.Base.Mgr
prmSport.StatusCat = SaxSport.StatusCat.Any; prmSport.StatusCat = SaxSport.StatusCat.Any;
return GetSport(prmSport); return GetSport(prmSport);
} }
public SaxSport GetSportByName (String name) public SaxSport GetSportByName(String name)
{ {
ClearErrorState(); ClearErrorState();
if (StringUtil.IsEmpty(name)) return null; if (StringUtil.IsEmpty(name)) return null;
@@ -68,13 +68,13 @@ namespace Saxonite.Net.Standard.Base.Mgr
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Validate item data. // Validate item data.
public bool IsValidSport (SaxSport sport) public bool IsValidSport(SaxSport sport)
{ {
ClearErrorState(); ClearErrorState();
if (sport == null) return SetErrorState(ErrorMessage.ItemNotSpecified); if (sport == null) return SetErrorState(ErrorMessage.ItemNotSpecified);
return IsValidSportData(sport.GetData(), new SaxSport.ErrField()); return IsValidSportData(sport.GetData(), new SaxSport.ErrField());
} }
public virtual bool IsValidSportData (SaxSport.Data data, SaxSport.ErrField errField) public virtual bool IsValidSportData(SaxSport.Data data, SaxSport.ErrField errField)
{ {
ClearErrorState(); ClearErrorState();
@@ -109,33 +109,39 @@ namespace Saxonite.Net.Standard.Base.Mgr
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Sport database interface. // Sport database interface.
public abstract bool InsertSport (SaxSport sport, DbUpdateInfo dbUpdateInfo); public abstract bool InsertSport(SaxSport sport, DbUpdateInfo dbUpdateInfo);
public abstract bool UpdateSport (SaxSport sport, DbUpdateInfo dbUpdateInfo); public abstract bool UpdateSport(SaxSport sport, DbUpdateInfo dbUpdateInfo);
public virtual bool SportCanBeDeleted (SaxSport sport) public virtual bool SportCanBeDeleted(SaxSport sport)
{ {
ClearErrorState(); ClearErrorState();
return true; return true;
} }
public abstract bool DeleteSport (SaxSport sport, DbUpdateInfo dbUpdateInfo); public abstract bool DeleteSport(SaxSport sport, DbUpdateInfo dbUpdateInfo);
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Sport list: // Sport list:
public abstract ColumnDfn GetSportColumnDfn (SaxSport.Column columnId, String caption = "", int width = 0); public abstract ColumnDfn GetSportColumnDfn(SaxSport.Column columnId, String caption = "", int width = 0);
public abstract List<String> GetSportQueryFilter (SaxSport.Params prmSport); public abstract List<String> GetSportQueryFilter(SaxSport.Params prmSport);
public abstract long GetSportCount (SaxSport.Params prmSport); public abstract long GetSportCount(SaxSport.Params prmSport);
public abstract List<SaxSport> GetSportList (SaxSport.Params prmSport); public abstract List<SaxSport> GetSportList(SaxSport.Params prmSport);
public abstract DbResultSet ExecuteSportQuery (List<ColumnDfn> columns, SaxSport.Params prmSport); public abstract DbResultSet ExecuteSportQuery(List<ColumnDfn> columns, SaxSport.Params prmSport);
//------------------------------------------------------------------- //-------------------------------------------------------------------
/// <summary> /// <summary>
/// Extract and format result set data value where specific handling is required. /// Extract and format result set data value where specific handling is required.
/// <para>Where response is an invalid data value, format value using column.FormatValue(values).</para> /// <para>Where response is an invalid data value, format value using column.FormatValue(values).</para>
/// </summary> /// </summary>
public virtual DataValue GetSportDataValue (ColumnDfn column, NamedValue.Map values) public virtual DataValue GetSportDataValue(ColumnDfn column, NamedValue.Map values)
{ {
DataValue value = new DataValue(); DataValue value = new DataValue();
switch ((SaxSport.Column)column.Id) switch ((SaxSport.Column)column.Id)
{ {
//-----------------------------------------------------------
// Speciality label.
case SaxSport.Column.SpecialityLabel_Desc:
value = new DataValue(Internals.SportSpecialityLabelCodes.GetDescForType(values.GetValue(column.DataName).AsLong()));
break;
//----------------------------------------------------------- //-----------------------------------------------------------
// Notes - limit to 200 chars. // Notes - limit to 200 chars.
case SaxSport.Column.Notes: case SaxSport.Column.Notes:
@@ -146,17 +152,17 @@ namespace Saxonite.Net.Standard.Base.Mgr
// Status. // Status.
case SaxSport.Column.Status_Desc: case SaxSport.Column.Status_Desc:
case SaxSport.Column.Status_Ind: case SaxSport.Column.Status_Ind:
{ {
String statusCode = values.GetValue(column.DataName).ToString(); String statusCode = values.GetValue(column.DataName).ToString();
SaStatus status = SacsSystem.GetStatusForCode(statusCode); SaStatus status = SacsSystem.GetStatusForCode(statusCode);
if (column.Id == (int)SaxSport.Column.Status_Desc) if (column.Id == (int)SaxSport.Column.Status_Desc)
value = new DataValue(SacsSystem.GetStatusDesc(status)); value = new DataValue(SacsSystem.GetStatusDesc(status));
else if (column.Id == (int)SaxSport.Column.Status_Ind) else if (column.Id == (int)SaxSport.Column.Status_Ind)
value = new DataValue(SaxSport.GetStatusTriState(status)); value = new DataValue(SaxSport.GetStatusTriState(status));
} }
break; break;
//----------------------------------------------------------- //-----------------------------------------------------------
} }
return value; return value;
} }
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq; using System.Linq;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 19-Aug-2021 17:19:49 // Code generated by Sarand Database Utilities Thu 26-Aug-2021 12:36:27
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal namespace Saxonite.Net.Standard.Dbas.Internal
{ {
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq; using System.Linq;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 19-Aug-2021 17:19:49 // Code generated by Sarand Database Utilities Thu 26-Aug-2021 12:36:27
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal namespace Saxonite.Net.Standard.Dbas.Internal
{ {
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq; using System.Linq;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 19-Aug-2021 17:19:49 // Code generated by Sarand Database Utilities Thu 26-Aug-2021 12:36:27
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal namespace Saxonite.Net.Standard.Dbas.Internal
{ {
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq; using System.Linq;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 19-Aug-2021 17:19:49 // Code generated by Sarand Database Utilities Thu 26-Aug-2021 12:36:27
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal namespace Saxonite.Net.Standard.Dbas.Internal
{ {
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq; using System.Linq;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 19-Aug-2021 17:19:49 // Code generated by Sarand Database Utilities Thu 26-Aug-2021 12:36:27
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal namespace Saxonite.Net.Standard.Dbas.Internal
{ {
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq; using System.Linq;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 19-Aug-2021 17:19:49 // Code generated by Sarand Database Utilities Thu 26-Aug-2021 12:36:27
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal namespace Saxonite.Net.Standard.Dbas.Internal
{ {
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq; using System.Linq;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 19-Aug-2021 17:19:49 // Code generated by Sarand Database Utilities Thu 26-Aug-2021 12:36:27
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal namespace Saxonite.Net.Standard.Dbas.Internal
{ {
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq; using System.Linq;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 19-Aug-2021 17:19:49 // Code generated by Sarand Database Utilities Thu 26-Aug-2021 12:36:27
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal namespace Saxonite.Net.Standard.Dbas.Internal
{ {
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq; using System.Linq;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 19-Aug-2021 17:19:49 // Code generated by Sarand Database Utilities Thu 26-Aug-2021 12:36:27
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal namespace Saxonite.Net.Standard.Dbas.Internal
{ {
@@ -21,6 +21,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal
{ {
public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id", true); public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id", true);
public ColumnDataString _Name { get; } = new ColumnDataString("Name"); public ColumnDataString _Name { get; } = new ColumnDataString("Name");
public ColumnDataInt16 _SpecialityLabel { get; } = new ColumnDataInt16("SpecialityLabel");
public ColumnDataString _Notes { get; } = new ColumnDataString("Notes"); public ColumnDataString _Notes { get; } = new ColumnDataString("Notes");
public ColumnDataInt16 _Flags { get; } = new ColumnDataInt16("Flags"); public ColumnDataInt16 _Flags { get; } = new ColumnDataInt16("Flags");
public ColumnDataString _Status { get; } = new ColumnDataString("Status"); public ColumnDataString _Status { get; } = new ColumnDataString("Status");
@@ -38,6 +39,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal
{ {
"Id", "Id",
"Name", "Name",
"SpecialityLabel",
"Notes", "Notes",
"Flags", "Flags",
"Status", "Status",
@@ -81,6 +83,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal
public ColumnsData Cols { get; } = new ColumnsData(); public ColumnsData Cols { get; } = new ColumnsData();
public Int32 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } } public Int32 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } }
public String _Name { get { return Cols._Name.Value; } set { Cols._Name.Value = value; } } public String _Name { get { return Cols._Name.Value; } set { Cols._Name.Value = value; } }
public Int16 _SpecialityLabel { get { return Cols._SpecialityLabel.Value; } set { Cols._SpecialityLabel.Value = value; } }
public String _Notes { get { return Cols._Notes.Value; } set { Cols._Notes.Value = value; } } public String _Notes { get { return Cols._Notes.Value; } set { Cols._Notes.Value = value; } }
public Int16 _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } } public Int16 _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } }
public String _Status { get { return Cols._Status.Value; } set { Cols._Status.Value = value; } } public String _Status { get { return Cols._Status.Value; } set { Cols._Status.Value = value; } }
@@ -113,6 +116,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal
{ {
_Id = GetFieldInt32(dbDataReader, "Id", _Id); _Id = GetFieldInt32(dbDataReader, "Id", _Id);
_Name = GetFieldString(dbDataReader, "Name", _Name); _Name = GetFieldString(dbDataReader, "Name", _Name);
_SpecialityLabel = GetFieldInt16(dbDataReader, "SpecialityLabel", _SpecialityLabel);
_Notes = GetFieldString(dbDataReader, "Notes", _Notes); _Notes = GetFieldString(dbDataReader, "Notes", _Notes);
_Flags = GetFieldInt16(dbDataReader, "Flags", _Flags); _Flags = GetFieldInt16(dbDataReader, "Flags", _Flags);
_Status = GetFieldString(dbDataReader, "Status", _Status); _Status = GetFieldString(dbDataReader, "Status", _Status);
@@ -144,6 +148,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal
// Populate parameters. // Populate parameters.
dbCommand.Parameters.Clear(); dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("Name")) AddCommandParameter(dbCommand, "@Name", _Name); if (columnNames.ContainsCI("Name")) AddCommandParameter(dbCommand, "@Name", _Name);
if (columnNames.ContainsCI("SpecialityLabel")) AddCommandParameter(dbCommand, "@SpecialityLabel", _SpecialityLabel);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes); if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags); if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status); if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
@@ -190,6 +195,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal
// Populate parameters. // Populate parameters.
dbCommand.Parameters.Clear(); dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("Name")) AddCommandParameter(dbCommand, "@Name", _Name); if (columnNames.ContainsCI("Name")) AddCommandParameter(dbCommand, "@Name", _Name);
if (columnNames.ContainsCI("SpecialityLabel")) AddCommandParameter(dbCommand, "@SpecialityLabel", _SpecialityLabel);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes); if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags); if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status); if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq; using System.Linq;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 19-Aug-2021 17:19:49 // Code generated by Sarand Database Utilities Thu 26-Aug-2021 12:36:27
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal namespace Saxonite.Net.Standard.Dbas.Internal
{ {
@@ -25,6 +25,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal
public ColumnDataString _FirstName { get; } = new ColumnDataString("FirstName"); public ColumnDataString _FirstName { get; } = new ColumnDataString("FirstName");
public ColumnDataString _Initials { get; } = new ColumnDataString("Initials"); public ColumnDataString _Initials { get; } = new ColumnDataString("Initials");
public ColumnDataString _LastName { get; } = new ColumnDataString("LastName"); public ColumnDataString _LastName { get; } = new ColumnDataString("LastName");
public ColumnDataString _About { get; } = new ColumnDataString("About");
public ColumnDataString _PhoneMain { get; } = new ColumnDataString("PhoneMain"); public ColumnDataString _PhoneMain { get; } = new ColumnDataString("PhoneMain");
public ColumnDataString _PhoneMobile { get; } = new ColumnDataString("PhoneMobile"); public ColumnDataString _PhoneMobile { get; } = new ColumnDataString("PhoneMobile");
public ColumnDataString _PhoneAlt { get; } = new ColumnDataString("PhoneAlt"); public ColumnDataString _PhoneAlt { get; } = new ColumnDataString("PhoneAlt");
@@ -62,6 +63,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal
"FirstName", "FirstName",
"Initials", "Initials",
"LastName", "LastName",
"About",
"PhoneMain", "PhoneMain",
"PhoneMobile", "PhoneMobile",
"PhoneAlt", "PhoneAlt",
@@ -125,6 +127,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal
public String _FirstName { get { return Cols._FirstName.Value; } set { Cols._FirstName.Value = value; } } public String _FirstName { get { return Cols._FirstName.Value; } set { Cols._FirstName.Value = value; } }
public String _Initials { get { return Cols._Initials.Value; } set { Cols._Initials.Value = value; } } public String _Initials { get { return Cols._Initials.Value; } set { Cols._Initials.Value = value; } }
public String _LastName { get { return Cols._LastName.Value; } set { Cols._LastName.Value = value; } } public String _LastName { get { return Cols._LastName.Value; } set { Cols._LastName.Value = value; } }
public String _About { get { return Cols._About.Value; } set { Cols._About.Value = value; } }
public String _PhoneMain { get { return Cols._PhoneMain.Value; } set { Cols._PhoneMain.Value = value; } } public String _PhoneMain { get { return Cols._PhoneMain.Value; } set { Cols._PhoneMain.Value = value; } }
public String _PhoneMobile { get { return Cols._PhoneMobile.Value; } set { Cols._PhoneMobile.Value = value; } } public String _PhoneMobile { get { return Cols._PhoneMobile.Value; } set { Cols._PhoneMobile.Value = value; } }
public String _PhoneAlt { get { return Cols._PhoneAlt.Value; } set { Cols._PhoneAlt.Value = value; } } public String _PhoneAlt { get { return Cols._PhoneAlt.Value; } set { Cols._PhoneAlt.Value = value; } }
@@ -177,6 +180,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal
_FirstName = GetFieldString(dbDataReader, "FirstName", _FirstName); _FirstName = GetFieldString(dbDataReader, "FirstName", _FirstName);
_Initials = GetFieldString(dbDataReader, "Initials", _Initials); _Initials = GetFieldString(dbDataReader, "Initials", _Initials);
_LastName = GetFieldString(dbDataReader, "LastName", _LastName); _LastName = GetFieldString(dbDataReader, "LastName", _LastName);
_About = GetFieldString(dbDataReader, "About", _About);
_PhoneMain = GetFieldString(dbDataReader, "PhoneMain", _PhoneMain); _PhoneMain = GetFieldString(dbDataReader, "PhoneMain", _PhoneMain);
_PhoneMobile = GetFieldString(dbDataReader, "PhoneMobile", _PhoneMobile); _PhoneMobile = GetFieldString(dbDataReader, "PhoneMobile", _PhoneMobile);
_PhoneAlt = GetFieldString(dbDataReader, "PhoneAlt", _PhoneAlt); _PhoneAlt = GetFieldString(dbDataReader, "PhoneAlt", _PhoneAlt);
@@ -228,6 +232,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal
if (columnNames.ContainsCI("FirstName")) AddCommandParameter(dbCommand, "@FirstName", _FirstName); if (columnNames.ContainsCI("FirstName")) AddCommandParameter(dbCommand, "@FirstName", _FirstName);
if (columnNames.ContainsCI("Initials")) AddCommandParameter(dbCommand, "@Initials", _Initials); if (columnNames.ContainsCI("Initials")) AddCommandParameter(dbCommand, "@Initials", _Initials);
if (columnNames.ContainsCI("LastName")) AddCommandParameter(dbCommand, "@LastName", _LastName); if (columnNames.ContainsCI("LastName")) AddCommandParameter(dbCommand, "@LastName", _LastName);
if (columnNames.ContainsCI("About")) AddCommandParameter(dbCommand, "@About", _About);
if (columnNames.ContainsCI("PhoneMain")) AddCommandParameter(dbCommand, "@PhoneMain", _PhoneMain); if (columnNames.ContainsCI("PhoneMain")) AddCommandParameter(dbCommand, "@PhoneMain", _PhoneMain);
if (columnNames.ContainsCI("PhoneMobile")) AddCommandParameter(dbCommand, "@PhoneMobile", _PhoneMobile); if (columnNames.ContainsCI("PhoneMobile")) AddCommandParameter(dbCommand, "@PhoneMobile", _PhoneMobile);
if (columnNames.ContainsCI("PhoneAlt")) AddCommandParameter(dbCommand, "@PhoneAlt", _PhoneAlt); if (columnNames.ContainsCI("PhoneAlt")) AddCommandParameter(dbCommand, "@PhoneAlt", _PhoneAlt);
@@ -294,6 +299,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal
if (columnNames.ContainsCI("FirstName")) AddCommandParameter(dbCommand, "@FirstName", _FirstName); if (columnNames.ContainsCI("FirstName")) AddCommandParameter(dbCommand, "@FirstName", _FirstName);
if (columnNames.ContainsCI("Initials")) AddCommandParameter(dbCommand, "@Initials", _Initials); if (columnNames.ContainsCI("Initials")) AddCommandParameter(dbCommand, "@Initials", _Initials);
if (columnNames.ContainsCI("LastName")) AddCommandParameter(dbCommand, "@LastName", _LastName); if (columnNames.ContainsCI("LastName")) AddCommandParameter(dbCommand, "@LastName", _LastName);
if (columnNames.ContainsCI("About")) AddCommandParameter(dbCommand, "@About", _About);
if (columnNames.ContainsCI("PhoneMain")) AddCommandParameter(dbCommand, "@PhoneMain", _PhoneMain); if (columnNames.ContainsCI("PhoneMain")) AddCommandParameter(dbCommand, "@PhoneMain", _PhoneMain);
if (columnNames.ContainsCI("PhoneMobile")) AddCommandParameter(dbCommand, "@PhoneMobile", _PhoneMobile); if (columnNames.ContainsCI("PhoneMobile")) AddCommandParameter(dbCommand, "@PhoneMobile", _PhoneMobile);
if (columnNames.ContainsCI("PhoneAlt")) AddCommandParameter(dbCommand, "@PhoneAlt", _PhoneAlt); if (columnNames.ContainsCI("PhoneAlt")) AddCommandParameter(dbCommand, "@PhoneAlt", _PhoneAlt);
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq; using System.Linq;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 19-Aug-2021 17:19:49 // Code generated by Sarand Database Utilities Thu 26-Aug-2021 12:36:27
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal namespace Saxonite.Net.Standard.Dbas.Internal
{ {
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq; using System.Linq;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 19-Aug-2021 17:19:49 // Code generated by Sarand Database Utilities Thu 26-Aug-2021 12:36:27
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal namespace Saxonite.Net.Standard.Dbas.Internal
{ {
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq; using System.Linq;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 19-Aug-2021 17:19:49 // Code generated by Sarand Database Utilities Thu 26-Aug-2021 12:36:27
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal namespace Saxonite.Net.Standard.Dbas.Internal
{ {
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq; using System.Linq;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 19-Aug-2021 17:19:49 // Code generated by Sarand Database Utilities Thu 26-Aug-2021 12:36:27
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal namespace Saxonite.Net.Standard.Dbas.Internal
{ {
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq; using System.Linq;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 19-Aug-2021 17:19:49 // Code generated by Sarand Database Utilities Thu 26-Aug-2021 12:36:27
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal namespace Saxonite.Net.Standard.Dbas.Internal
{ {
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq; using System.Linq;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 19-Aug-2021 17:19:49 // Code generated by Sarand Database Utilities Thu 26-Aug-2021 12:36:27
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal namespace Saxonite.Net.Standard.Dbas.Internal
{ {
@@ -22,6 +22,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal
public ColumnDataInt64 _Id { get; } = new ColumnDataInt64("Id", true); public ColumnDataInt64 _Id { get; } = new ColumnDataInt64("Id", true);
public ColumnDataInt32 _UserAccountId { get; } = new ColumnDataInt32("UserAccountId"); public ColumnDataInt32 _UserAccountId { get; } = new ColumnDataInt32("UserAccountId");
public ColumnDataInt32 _SportId { get; } = new ColumnDataInt32("SportId"); public ColumnDataInt32 _SportId { get; } = new ColumnDataInt32("SportId");
public ColumnDataString _About { get; } = new ColumnDataString("About");
public ColumnDataInt16 _Participation { get; } = new ColumnDataInt16("Participation"); public ColumnDataInt16 _Participation { get; } = new ColumnDataInt16("Participation");
public ColumnDataInt16 _Officiating { get; } = new ColumnDataInt16("Officiating"); public ColumnDataInt16 _Officiating { get; } = new ColumnDataInt16("Officiating");
public ColumnDataString _UserSportData { get; } = new ColumnDataString("UserSportData"); public ColumnDataString _UserSportData { get; } = new ColumnDataString("UserSportData");
@@ -43,6 +44,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal
"Id", "Id",
"UserAccountId", "UserAccountId",
"SportId", "SportId",
"About",
"Participation", "Participation",
"Officiating", "Officiating",
"UserSportData", "UserSportData",
@@ -90,6 +92,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal
public Int64 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } } public Int64 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } }
public Int32 _UserAccountId { get { return Cols._UserAccountId.Value; } set { Cols._UserAccountId.Value = value; } } public Int32 _UserAccountId { get { return Cols._UserAccountId.Value; } set { Cols._UserAccountId.Value = value; } }
public Int32 _SportId { get { return Cols._SportId.Value; } set { Cols._SportId.Value = value; } } public Int32 _SportId { get { return Cols._SportId.Value; } set { Cols._SportId.Value = value; } }
public String _About { get { return Cols._About.Value; } set { Cols._About.Value = value; } }
public Int16 _Participation { get { return Cols._Participation.Value; } set { Cols._Participation.Value = value; } } public Int16 _Participation { get { return Cols._Participation.Value; } set { Cols._Participation.Value = value; } }
public Int16 _Officiating { get { return Cols._Officiating.Value; } set { Cols._Officiating.Value = value; } } public Int16 _Officiating { get { return Cols._Officiating.Value; } set { Cols._Officiating.Value = value; } }
public String _UserSportData { get { return Cols._UserSportData.Value; } set { Cols._UserSportData.Value = value; } } public String _UserSportData { get { return Cols._UserSportData.Value; } set { Cols._UserSportData.Value = value; } }
@@ -126,6 +129,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal
_Id = GetFieldInt64(dbDataReader, "Id", _Id); _Id = GetFieldInt64(dbDataReader, "Id", _Id);
_UserAccountId = GetFieldInt32(dbDataReader, "UserAccountId", _UserAccountId); _UserAccountId = GetFieldInt32(dbDataReader, "UserAccountId", _UserAccountId);
_SportId = GetFieldInt32(dbDataReader, "SportId", _SportId); _SportId = GetFieldInt32(dbDataReader, "SportId", _SportId);
_About = GetFieldString(dbDataReader, "About", _About);
_Participation = GetFieldInt16(dbDataReader, "Participation", _Participation); _Participation = GetFieldInt16(dbDataReader, "Participation", _Participation);
_Officiating = GetFieldInt16(dbDataReader, "Officiating", _Officiating); _Officiating = GetFieldInt16(dbDataReader, "Officiating", _Officiating);
_UserSportData = GetFieldString(dbDataReader, "UserSportData", _UserSportData); _UserSportData = GetFieldString(dbDataReader, "UserSportData", _UserSportData);
@@ -161,6 +165,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal
dbCommand.Parameters.Clear(); dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("UserAccountId")) AddCommandParameter(dbCommand, "@UserAccountId", _UserAccountId); if (columnNames.ContainsCI("UserAccountId")) AddCommandParameter(dbCommand, "@UserAccountId", _UserAccountId);
if (columnNames.ContainsCI("SportId")) AddCommandParameter(dbCommand, "@SportId", _SportId); if (columnNames.ContainsCI("SportId")) AddCommandParameter(dbCommand, "@SportId", _SportId);
if (columnNames.ContainsCI("About")) AddCommandParameter(dbCommand, "@About", _About);
if (columnNames.ContainsCI("Participation")) AddCommandParameter(dbCommand, "@Participation", _Participation); if (columnNames.ContainsCI("Participation")) AddCommandParameter(dbCommand, "@Participation", _Participation);
if (columnNames.ContainsCI("Officiating")) AddCommandParameter(dbCommand, "@Officiating", _Officiating); if (columnNames.ContainsCI("Officiating")) AddCommandParameter(dbCommand, "@Officiating", _Officiating);
if (columnNames.ContainsCI("UserSportData")) AddCommandParameter(dbCommand, "@UserSportData", _UserSportData); if (columnNames.ContainsCI("UserSportData")) AddCommandParameter(dbCommand, "@UserSportData", _UserSportData);
@@ -211,6 +216,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal
dbCommand.Parameters.Clear(); dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("UserAccountId")) AddCommandParameter(dbCommand, "@UserAccountId", _UserAccountId); if (columnNames.ContainsCI("UserAccountId")) AddCommandParameter(dbCommand, "@UserAccountId", _UserAccountId);
if (columnNames.ContainsCI("SportId")) AddCommandParameter(dbCommand, "@SportId", _SportId); if (columnNames.ContainsCI("SportId")) AddCommandParameter(dbCommand, "@SportId", _SportId);
if (columnNames.ContainsCI("About")) AddCommandParameter(dbCommand, "@About", _About);
if (columnNames.ContainsCI("Participation")) AddCommandParameter(dbCommand, "@Participation", _Participation); if (columnNames.ContainsCI("Participation")) AddCommandParameter(dbCommand, "@Participation", _Participation);
if (columnNames.ContainsCI("Officiating")) AddCommandParameter(dbCommand, "@Officiating", _Officiating); if (columnNames.ContainsCI("Officiating")) AddCommandParameter(dbCommand, "@Officiating", _Officiating);
if (columnNames.ContainsCI("UserSportData")) AddCommandParameter(dbCommand, "@UserSportData", _UserSportData); if (columnNames.ContainsCI("UserSportData")) AddCommandParameter(dbCommand, "@UserSportData", _UserSportData);
@@ -216,6 +216,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
dbUserAccount._FirstName = userAccount.FirstName; dbUserAccount._FirstName = userAccount.FirstName;
dbUserAccount._Initials = userAccount.Initials; dbUserAccount._Initials = userAccount.Initials;
dbUserAccount._LastName = userAccount.LastName; dbUserAccount._LastName = userAccount.LastName;
dbUserAccount._About = userAccount.About;
dbUserAccount._PhoneMain = StringUtil.EmptyOnNull(userAccount.PhoneMain); dbUserAccount._PhoneMain = StringUtil.EmptyOnNull(userAccount.PhoneMain);
dbUserAccount._PhoneMobile = StringUtil.EmptyOnNull(userAccount.PhoneMobile); dbUserAccount._PhoneMobile = StringUtil.EmptyOnNull(userAccount.PhoneMobile);
dbUserAccount._Gender = (byte)userAccount.Gender; dbUserAccount._Gender = (byte)userAccount.Gender;
@@ -255,6 +256,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
userAccount.FirstName = dbUserAccount._FirstName; userAccount.FirstName = dbUserAccount._FirstName;
userAccount.Initials = dbUserAccount._Initials; userAccount.Initials = dbUserAccount._Initials;
userAccount.LastName = dbUserAccount._LastName; userAccount.LastName = dbUserAccount._LastName;
userAccount.About = dbUserAccount._About;
userAccount.PhoneMain = dbUserAccount._PhoneMain; userAccount.PhoneMain = dbUserAccount._PhoneMain;
userAccount.PhoneMobile = dbUserAccount._PhoneMobile; userAccount.PhoneMobile = dbUserAccount._PhoneMobile;
userAccount.Gender = (Sax.Gender)dbUserAccount._Gender; userAccount.Gender = (Sax.Gender)dbUserAccount._Gender;
@@ -265,13 +265,15 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Item column definitions. // Item column definitions.
private static readonly String aliasUserSportExperience = "UsrSpt"; private static readonly String aliasUserSportExperience = "SptExp";
private static readonly String aliasUserSportExperience_Organisation = "UsrSpt_Org"; private static readonly String aliasUserSportExperience_UserSport = "SptExp_UsrSpt";
private static readonly String prefixUserSportExperience_Organisation = "UsrSpt_Org_"; private static readonly String prefixUserSportExperience_UserSport = "SptExp_UsrSpt_";
private static readonly String aliasUserSportExperience_Region_Nation = "UsrSpt_Rgn_Nat"; private static readonly String aliasUserSportExperience_Organisation = "SptExp_Org";
private static readonly String prefixUserSportExperience_Region_Nation = "UsrSpt_Rgn_Nat_"; private static readonly String prefixUserSportExperience_Organisation = "SptExp_Org_";
private static readonly String aliasUserSportExperience_Region_Province = "UsrSpt_Rgn_Pro"; private static readonly String aliasUserSportExperience_Region_Nation = "SptExp_Rgn_Nat";
private static readonly String prefixUserSportExperience_Region_Province = "UsrSpt_Rgn_Pro_"; private static readonly String prefixUserSportExperience_Region_Nation = "SptExp_Rgn_Nat_";
private static readonly String aliasUserSportExperience_Region_Province = "SptExp_Rgn_Pro";
private static readonly String prefixUserSportExperience_Region_Province = "SptExp_Rgn_Pro_";
private void SetUserSportExperienceColDfn private void SetUserSportExperienceColDfn
(ColumnDfn col, String caption, int width, SaxDbDfn_Core.ColumnIdx dbCol, (ColumnDfn col, String caption, int width, SaxDbDfn_Core.ColumnIdx dbCol,
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String, ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
@@ -307,6 +309,13 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
columnDfn.ReadOnly = true; columnDfn.ReadOnly = true;
break; break;
//-------------------------------------------------------
// Sport.
case SaxUserSportExperience.Column.Sport_Id:
SetUserSportExperienceColDfn(columnDfn, "Sport Id", 80, SaxDbDfn_Core.ColumnIdx.UserSport_SportId, ColumnAlignment.Right, DataValue.DataType.Long, aliasUserSportExperience_UserSport, prefixUserSportExperience_UserSport);
columnDfn.ReadOnly = true;
break;
//------------------------------------------------------- //-------------------------------------------------------
// Period. // Period.
case SaxUserSportExperience.Column.PeriodFrom: case SaxUserSportExperience.Column.PeriodFrom:
@@ -550,6 +559,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
// Add columns as defined in query list. // Add columns as defined in query list.
if (columns.HasId(SaxUserSportExperience.Column.Id)) if (columns.HasId(SaxUserSportExperience.Column.Id))
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_Id, aliasUserSportExperience)); query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_Id, aliasUserSportExperience));
bool hasUserSportCols = (columns.HasId(SaxUserSportExperience.Column.Sport_Id));
if (columns.HasId(SaxUserSportExperience.Column.UserSportId)) if (columns.HasId(SaxUserSportExperience.Column.UserSportId))
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_UserSportId, aliasUserSportExperience)); query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_UserSportId, aliasUserSportExperience));
if (columns.HasId(SaxUserSportExperience.Column.PeriodFrom)) if (columns.HasId(SaxUserSportExperience.Column.PeriodFrom))
@@ -587,6 +597,20 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
if (columns.HasId(SaxUserSportExperience.Column.UpdateOn_Date)) if (columns.HasId(SaxUserSportExperience.Column.UpdateOn_Date))
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_UpdateOn, aliasUserSportExperience)); query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_UpdateOn, aliasUserSportExperience));
//---------------------------------------------------------------------
// User Sport.
if (hasUserSportCols)
{
DbQueryJoin joinUserSport = new DbQueryJoin(DbJoinType.LeftOuter);
joinUserSport.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserSport), aliasUserSportExperience_UserSport);
joinUserSport.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Id, aliasUserSportExperience_UserSport) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_UserSportId, aliasUserSportExperience));
query.Joins.Add(joinUserSport);
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
cols.Add(SaxDbDfn_Core.ColumnIdx.UserSport_SportId);
foreach (var col in cols)
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserSportExperience_UserSport), prefixUserSportExperience_UserSport + SaxDbDfn_Core.GetColumnName(col, false));
}
//--------------------------------------------------------------------- //---------------------------------------------------------------------
// Organisation. // Organisation.
if (hasOrganisationCols) if (hasOrganisationCols)
@@ -212,6 +212,8 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
{ {
dbSport._Id = SysId.ToInt(sport.Id); dbSport._Id = SysId.ToInt(sport.Id);
dbSport._Name = sport.Name; dbSport._Name = sport.Name;
dbSport._SpecialityLabel = (short)sport.SpecialityLabel;
// Common properties.
dbSport._Notes = sport.Notes; dbSport._Notes = sport.Notes;
dbSport._Status = SacsSystem.GetStatusCode(sport.Status); dbSport._Status = SacsSystem.GetStatusCode(sport.Status);
dbSport._Flags = (short)sport.Flags; dbSport._Flags = (short)sport.Flags;
@@ -229,6 +231,8 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
{ {
//sport.Id = new SysId(dbSport._Id); //sport.Id = new SysId(dbSport._Id);
sport.Name = dbSport._Name; sport.Name = dbSport._Name;
sport.SpecialityLabel = (Sax.SportSpecialityLabel)dbSport._SpecialityLabel;
// Common properties.
sport.Notes = dbSport._Notes; sport.Notes = dbSport._Notes;
sport.Status = SacsSystem.GetStatusForCode(dbSport._Status); sport.Status = SacsSystem.GetStatusForCode(dbSport._Status);
sport.SetCreateStamp(dbSport._CreateOn, new SysId(dbSport._CreateBy), dbSport._CreateHost); sport.SetCreateStamp(dbSport._CreateOn, new SysId(dbSport._CreateBy), dbSport._CreateHost);
@@ -257,6 +261,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
switch (columnId) switch (columnId)
{ {
//----------------------------------------------------------- //-----------------------------------------------------------
// Identification.
case SaxSport.Column.Pos: case SaxSport.Column.Pos:
SetSportColDfn(columnDfn, "Pos", 60, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Right); SetSportColDfn(columnDfn, "Pos", 60, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Right);
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off; columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
@@ -267,11 +272,22 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
SetSportColDfn(columnDfn, "Id", 80, SaxDbDfn_Core.ColumnIdx.Sport_Id, ColumnAlignment.Right, DataValue.DataType.Long); SetSportColDfn(columnDfn, "Id", 80, SaxDbDfn_Core.ColumnIdx.Sport_Id, ColumnAlignment.Right, DataValue.DataType.Long);
columnDfn.ReadOnly = true; columnDfn.ReadOnly = true;
break; break;
//-----------------------------------------------------------
// Properties.
case SaxSport.Column.Name: case SaxSport.Column.Name:
SetSportColDfn(columnDfn, "Name", 120, SaxDbDfn_Core.ColumnIdx.Sport_Name); SetSportColDfn(columnDfn, "Name", 120, SaxDbDfn_Core.ColumnIdx.Sport_Name);
break; break;
case SaxSport.Column.SpecialityLabel:
SetSportColDfn(columnDfn, "Speciality label", 80, SaxDbDfn_Core.ColumnIdx.Sport_SpecialityLabel, ColumnAlignment.Center, DataValue.DataType.Long);
break;
case SaxSport.Column.SpecialityLabel_Desc:
SetSportColDfn(columnDfn, "Speciality label", 100, SaxDbDfn_Core.ColumnIdx.Sport_SpecialityLabel, ColumnAlignment.Center);
break;
//----------------------------------------------------------- //-----------------------------------------------------------
// Derived properties. // Derived properties.
//----------------------------------------------------------- //-----------------------------------------------------------
// Common properties. // Common properties.
case SaxSport.Column.Notes: case SaxSport.Column.Notes:
@@ -298,6 +314,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
SetSportColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.ColumnIdx.Sport_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date); SetSportColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.ColumnIdx.Sport_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.ReadOnly = true; columnDfn.ReadOnly = true;
break; break;
//----------------------------------------------------------- //-----------------------------------------------------------
} }
if (!String.IsNullOrEmpty(caption)) if (!String.IsNullOrEmpty(caption))
@@ -465,6 +482,8 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Id, aliasSport)); query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Id, aliasSport));
if (columns.HasId(SaxSport.Column.Name)) if (columns.HasId(SaxSport.Column.Name))
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Name, aliasSport)); query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Name, aliasSport));
if (columns.HasId(SaxSport.Column.SpecialityLabel) || columns.HasId(SaxSport.Column.SpecialityLabel_Desc))
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_SpecialityLabel, aliasSport));
// Common properties. // Common properties.
if (columns.HasId(SaxSport.Column.Notes)) if (columns.HasId(SaxSport.Column.Notes))
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Notes, aliasSport)); query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Notes, aliasSport));
@@ -3342,6 +3342,23 @@
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>Sport</Table> <Table>Sport</Table>
<Pos>3</Pos> <Pos>3</Pos>
<Name>SpecialityLabel</Name>
<DataType>SmallInt</DataType>
<DataTypeName />
<DataTypeNative>5</DataTypeNative>
<DataTypeNameNative>smallint</DataTypeNameNative>
<IsIdentity>false</IsIdentity>
<Size>5</Size>
<BufferLen>2</BufferLen>
<DecimalDigits>0</DecimalDigits>
<Nullable>Nullable</Nullable>
<IsNullable>true</IsNullable>
<Remarks />
</DbDfnColumn>
<DbDfnColumn>
<Schema>dbo</Schema>
<Table>Sport</Table>
<Pos>4</Pos>
<Name>Notes</Name> <Name>Notes</Name>
<DataType>VarChar</DataType> <DataType>VarChar</DataType>
<DataTypeName /> <DataTypeName />
@@ -3358,7 +3375,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>Sport</Table> <Table>Sport</Table>
<Pos>4</Pos> <Pos>5</Pos>
<Name>Flags</Name> <Name>Flags</Name>
<DataType>SmallInt</DataType> <DataType>SmallInt</DataType>
<DataTypeName /> <DataTypeName />
@@ -3375,7 +3392,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>Sport</Table> <Table>Sport</Table>
<Pos>5</Pos> <Pos>6</Pos>
<Name>Status</Name> <Name>Status</Name>
<DataType>VarChar</DataType> <DataType>VarChar</DataType>
<DataTypeName /> <DataTypeName />
@@ -3392,7 +3409,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>Sport</Table> <Table>Sport</Table>
<Pos>6</Pos> <Pos>7</Pos>
<Name>CreateOn</Name> <Name>CreateOn</Name>
<DataType>DateTime</DataType> <DataType>DateTime</DataType>
<DataTypeName /> <DataTypeName />
@@ -3409,7 +3426,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>Sport</Table> <Table>Sport</Table>
<Pos>7</Pos> <Pos>8</Pos>
<Name>CreateBy</Name> <Name>CreateBy</Name>
<DataType>Int</DataType> <DataType>Int</DataType>
<DataTypeName /> <DataTypeName />
@@ -3426,7 +3443,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>Sport</Table> <Table>Sport</Table>
<Pos>8</Pos> <Pos>9</Pos>
<Name>CreateHost</Name> <Name>CreateHost</Name>
<DataType>VarChar</DataType> <DataType>VarChar</DataType>
<DataTypeName /> <DataTypeName />
@@ -3443,7 +3460,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>Sport</Table> <Table>Sport</Table>
<Pos>9</Pos> <Pos>10</Pos>
<Name>UpdateOn</Name> <Name>UpdateOn</Name>
<DataType>DateTime</DataType> <DataType>DateTime</DataType>
<DataTypeName /> <DataTypeName />
@@ -3460,7 +3477,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>Sport</Table> <Table>Sport</Table>
<Pos>10</Pos> <Pos>11</Pos>
<Name>UpdateBy</Name> <Name>UpdateBy</Name>
<DataType>Int</DataType> <DataType>Int</DataType>
<DataTypeName /> <DataTypeName />
@@ -3477,7 +3494,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>Sport</Table> <Table>Sport</Table>
<Pos>11</Pos> <Pos>12</Pos>
<Name>UpdateHost</Name> <Name>UpdateHost</Name>
<DataType>VarChar</DataType> <DataType>VarChar</DataType>
<DataTypeName /> <DataTypeName />
@@ -3646,6 +3663,23 @@
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>7</Pos> <Pos>7</Pos>
<Name>About</Name>
<DataType>VarChar</DataType>
<DataTypeName />
<DataTypeNative>-9</DataTypeNative>
<DataTypeNameNative>nvarchar</DataTypeNameNative>
<IsIdentity>false</IsIdentity>
<Size>2000</Size>
<BufferLen>4000</BufferLen>
<DecimalDigits>0</DecimalDigits>
<Nullable>Nullable</Nullable>
<IsNullable>true</IsNullable>
<Remarks />
</DbDfnColumn>
<DbDfnColumn>
<Schema>dbo</Schema>
<Table>UserAccount</Table>
<Pos>8</Pos>
<Name>PhoneMain</Name> <Name>PhoneMain</Name>
<DataType>VarChar</DataType> <DataType>VarChar</DataType>
<DataTypeName /> <DataTypeName />
@@ -3662,7 +3696,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>8</Pos> <Pos>9</Pos>
<Name>PhoneMobile</Name> <Name>PhoneMobile</Name>
<DataType>VarChar</DataType> <DataType>VarChar</DataType>
<DataTypeName /> <DataTypeName />
@@ -3679,7 +3713,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>9</Pos> <Pos>10</Pos>
<Name>PhoneAlt</Name> <Name>PhoneAlt</Name>
<DataType>VarChar</DataType> <DataType>VarChar</DataType>
<DataTypeName /> <DataTypeName />
@@ -3696,7 +3730,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>10</Pos> <Pos>11</Pos>
<Name>Gender</Name> <Name>Gender</Name>
<DataType>TinyInt</DataType> <DataType>TinyInt</DataType>
<DataTypeName /> <DataTypeName />
@@ -3713,7 +3747,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>11</Pos> <Pos>12</Pos>
<Name>DateOfBirthDay</Name> <Name>DateOfBirthDay</Name>
<DataType>TinyInt</DataType> <DataType>TinyInt</DataType>
<DataTypeName /> <DataTypeName />
@@ -3730,7 +3764,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>12</Pos> <Pos>13</Pos>
<Name>DateOfBirthMonth</Name> <Name>DateOfBirthMonth</Name>
<DataType>TinyInt</DataType> <DataType>TinyInt</DataType>
<DataTypeName /> <DataTypeName />
@@ -3747,7 +3781,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>13</Pos> <Pos>14</Pos>
<Name>DateOfBirthYear</Name> <Name>DateOfBirthYear</Name>
<DataType>SmallInt</DataType> <DataType>SmallInt</DataType>
<DataTypeName /> <DataTypeName />
@@ -3764,7 +3798,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>14</Pos> <Pos>15</Pos>
<Name>RegionIdCountry</Name> <Name>RegionIdCountry</Name>
<DataType>Int</DataType> <DataType>Int</DataType>
<DataTypeName /> <DataTypeName />
@@ -3781,7 +3815,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>15</Pos> <Pos>16</Pos>
<Name>RegionIdProvince</Name> <Name>RegionIdProvince</Name>
<DataType>Int</DataType> <DataType>Int</DataType>
<DataTypeName /> <DataTypeName />
@@ -3798,7 +3832,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>16</Pos> <Pos>17</Pos>
<Name>PasswordToken</Name> <Name>PasswordToken</Name>
<DataType>VarChar</DataType> <DataType>VarChar</DataType>
<DataTypeName /> <DataTypeName />
@@ -3815,7 +3849,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>17</Pos> <Pos>18</Pos>
<Name>PasswordHashed</Name> <Name>PasswordHashed</Name>
<DataType>VarChar</DataType> <DataType>VarChar</DataType>
<DataTypeName /> <DataTypeName />
@@ -3832,7 +3866,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>18</Pos> <Pos>19</Pos>
<Name>PasswordHistory</Name> <Name>PasswordHistory</Name>
<DataType>VarChar</DataType> <DataType>VarChar</DataType>
<DataTypeName /> <DataTypeName />
@@ -3849,7 +3883,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>19</Pos> <Pos>20</Pos>
<Name>PasswordChangedAt</Name> <Name>PasswordChangedAt</Name>
<DataType>DateTime</DataType> <DataType>DateTime</DataType>
<DataTypeName /> <DataTypeName />
@@ -3866,7 +3900,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>20</Pos> <Pos>21</Pos>
<Name>LastLoginAt</Name> <Name>LastLoginAt</Name>
<DataType>DateTime</DataType> <DataType>DateTime</DataType>
<DataTypeName /> <DataTypeName />
@@ -3883,7 +3917,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>21</Pos> <Pos>22</Pos>
<Name>LastInvalidLoginAt</Name> <Name>LastInvalidLoginAt</Name>
<DataType>DateTime</DataType> <DataType>DateTime</DataType>
<DataTypeName /> <DataTypeName />
@@ -3900,7 +3934,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>22</Pos> <Pos>23</Pos>
<Name>InvalidLoginCount</Name> <Name>InvalidLoginCount</Name>
<DataType>SmallInt</DataType> <DataType>SmallInt</DataType>
<DataTypeName /> <DataTypeName />
@@ -3917,7 +3951,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>23</Pos> <Pos>24</Pos>
<Name>Notes</Name> <Name>Notes</Name>
<DataType>VarChar</DataType> <DataType>VarChar</DataType>
<DataTypeName /> <DataTypeName />
@@ -3934,7 +3968,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>24</Pos> <Pos>25</Pos>
<Name>Flags</Name> <Name>Flags</Name>
<DataType>SmallInt</DataType> <DataType>SmallInt</DataType>
<DataTypeName /> <DataTypeName />
@@ -3951,7 +3985,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>25</Pos> <Pos>26</Pos>
<Name>Status</Name> <Name>Status</Name>
<DataType>VarChar</DataType> <DataType>VarChar</DataType>
<DataTypeName /> <DataTypeName />
@@ -3968,7 +4002,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>26</Pos> <Pos>27</Pos>
<Name>CreateOn</Name> <Name>CreateOn</Name>
<DataType>DateTime</DataType> <DataType>DateTime</DataType>
<DataTypeName /> <DataTypeName />
@@ -3985,7 +4019,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>27</Pos> <Pos>28</Pos>
<Name>CreateBy</Name> <Name>CreateBy</Name>
<DataType>Int</DataType> <DataType>Int</DataType>
<DataTypeName /> <DataTypeName />
@@ -4002,7 +4036,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>28</Pos> <Pos>29</Pos>
<Name>CreateHost</Name> <Name>CreateHost</Name>
<DataType>VarChar</DataType> <DataType>VarChar</DataType>
<DataTypeName /> <DataTypeName />
@@ -4019,7 +4053,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>29</Pos> <Pos>30</Pos>
<Name>UpdateOn</Name> <Name>UpdateOn</Name>
<DataType>DateTime</DataType> <DataType>DateTime</DataType>
<DataTypeName /> <DataTypeName />
@@ -4036,7 +4070,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>30</Pos> <Pos>31</Pos>
<Name>UpdateBy</Name> <Name>UpdateBy</Name>
<DataType>Int</DataType> <DataType>Int</DataType>
<DataTypeName /> <DataTypeName />
@@ -4053,7 +4087,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserAccount</Table> <Table>UserAccount</Table>
<Pos>31</Pos> <Pos>32</Pos>
<Name>UpdateHost</Name> <Name>UpdateHost</Name>
<DataType>VarChar</DataType> <DataType>VarChar</DataType>
<DataTypeName /> <DataTypeName />
@@ -5497,6 +5531,23 @@
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserSport</Table> <Table>UserSport</Table>
<Pos>4</Pos> <Pos>4</Pos>
<Name>About</Name>
<DataType>VarChar</DataType>
<DataTypeName />
<DataTypeNative>-9</DataTypeNative>
<DataTypeNameNative>nvarchar</DataTypeNameNative>
<IsIdentity>false</IsIdentity>
<Size>2000</Size>
<BufferLen>4000</BufferLen>
<DecimalDigits>0</DecimalDigits>
<Nullable>Nullable</Nullable>
<IsNullable>true</IsNullable>
<Remarks />
</DbDfnColumn>
<DbDfnColumn>
<Schema>dbo</Schema>
<Table>UserSport</Table>
<Pos>5</Pos>
<Name>Participation</Name> <Name>Participation</Name>
<DataType>SmallInt</DataType> <DataType>SmallInt</DataType>
<DataTypeName /> <DataTypeName />
@@ -5513,7 +5564,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserSport</Table> <Table>UserSport</Table>
<Pos>5</Pos> <Pos>6</Pos>
<Name>Officiating</Name> <Name>Officiating</Name>
<DataType>SmallInt</DataType> <DataType>SmallInt</DataType>
<DataTypeName /> <DataTypeName />
@@ -5530,7 +5581,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserSport</Table> <Table>UserSport</Table>
<Pos>6</Pos> <Pos>7</Pos>
<Name>UserSportData</Name> <Name>UserSportData</Name>
<DataType>VarChar</DataType> <DataType>VarChar</DataType>
<DataTypeName /> <DataTypeName />
@@ -5547,7 +5598,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserSport</Table> <Table>UserSport</Table>
<Pos>7</Pos> <Pos>8</Pos>
<Name>Notes</Name> <Name>Notes</Name>
<DataType>VarChar</DataType> <DataType>VarChar</DataType>
<DataTypeName /> <DataTypeName />
@@ -5564,7 +5615,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserSport</Table> <Table>UserSport</Table>
<Pos>8</Pos> <Pos>9</Pos>
<Name>Flags</Name> <Name>Flags</Name>
<DataType>SmallInt</DataType> <DataType>SmallInt</DataType>
<DataTypeName /> <DataTypeName />
@@ -5581,7 +5632,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserSport</Table> <Table>UserSport</Table>
<Pos>9</Pos> <Pos>10</Pos>
<Name>Status</Name> <Name>Status</Name>
<DataType>VarChar</DataType> <DataType>VarChar</DataType>
<DataTypeName /> <DataTypeName />
@@ -5598,7 +5649,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserSport</Table> <Table>UserSport</Table>
<Pos>10</Pos> <Pos>11</Pos>
<Name>CreateOn</Name> <Name>CreateOn</Name>
<DataType>DateTime</DataType> <DataType>DateTime</DataType>
<DataTypeName /> <DataTypeName />
@@ -5615,7 +5666,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserSport</Table> <Table>UserSport</Table>
<Pos>11</Pos> <Pos>12</Pos>
<Name>CreateBy</Name> <Name>CreateBy</Name>
<DataType>Int</DataType> <DataType>Int</DataType>
<DataTypeName /> <DataTypeName />
@@ -5632,7 +5683,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserSport</Table> <Table>UserSport</Table>
<Pos>12</Pos> <Pos>13</Pos>
<Name>CreateHost</Name> <Name>CreateHost</Name>
<DataType>VarChar</DataType> <DataType>VarChar</DataType>
<DataTypeName /> <DataTypeName />
@@ -5649,7 +5700,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserSport</Table> <Table>UserSport</Table>
<Pos>13</Pos> <Pos>14</Pos>
<Name>UpdateOn</Name> <Name>UpdateOn</Name>
<DataType>DateTime</DataType> <DataType>DateTime</DataType>
<DataTypeName /> <DataTypeName />
@@ -5666,7 +5717,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserSport</Table> <Table>UserSport</Table>
<Pos>14</Pos> <Pos>15</Pos>
<Name>UpdateBy</Name> <Name>UpdateBy</Name>
<DataType>Int</DataType> <DataType>Int</DataType>
<DataTypeName /> <DataTypeName />
@@ -5683,7 +5734,7 @@
<DbDfnColumn> <DbDfnColumn>
<Schema>dbo</Schema> <Schema>dbo</Schema>
<Table>UserSport</Table> <Table>UserSport</Table>
<Pos>15</Pos> <Pos>16</Pos>
<Name>UpdateHost</Name> <Name>UpdateHost</Name>
<DataType>VarChar</DataType> <DataType>VarChar</DataType>
<DataTypeName /> <DataTypeName />