This commit is contained in:
2022-05-23 21:16:36 +01:00
parent 25386026af
commit d631ad0223
41 changed files with 544 additions and 256 deletions
@@ -79,7 +79,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
data.ContactMethods.Add(new AjaxResponse_Data.ContactMethodData() { Method = method.ToString(), MethodCaption = Localiser.GetContactMethodCaption(method), Value = contactData.GetContactMethodValue(method) });
}
// Address.
if (address != null)
if (address != null && !address.IsStatusDeleted)
{
data.Address = new AjaxResponse_Data.AddressData();
data.Address.Id = address.Id.ToString();
@@ -352,64 +352,80 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (model.Address.IsSpecified())
{
// Organisation regions.
SaxRegion.Data regionCountry = Internals.GetRegion(organisation.RegionIdPrimary);
if (regionCountry != null && regionCountry.RegionType != Sax.RegionType.Country)
regionCountry = null;
SaxRegion.Data regionProvince = null;
// The form includes address fields.
if (model.Address.IsPopulated())
{
// Organisation regions.
SaxRegion.Data regionCountry = Internals.GetRegion(organisation.RegionIdPrimary);
if (regionCountry != null && regionCountry.RegionType != Sax.RegionType.Country)
regionCountry = null;
SaxRegion.Data regionProvince = null;
// Create Organisation address if required.
if (organisationAddress == null)
{
organisationAddress = ItemDataMgr.CreateItemAddress(organisation.GetItemId(), SaxItemAddress.DefaultOrganisationAddressType);
disposableItems.Add(organisationAddress);
}
// Store address.
if (model.Address.Line1 != null)
organisationAddress.Line1 = model.Address.Line1;
if (model.Address.Line2 != null)
organisationAddress.Line2 = model.Address.Line2;
if (model.Address.Line3 != null)
organisationAddress.Line3 = model.Address.Line3;
if (model.Address.Town != null)
organisationAddress.Town = model.Address.Town;
if (regionProvince != null)
{
organisationAddress.Province = regionProvince.Name;
organisationAddress.RegionIdProvince = regionProvince.Id;
}
else
{
if (model.Address.Province != null)
organisationAddress.Province = model.Address.Province;
}
if (regionCountry != null)
{
organisationAddress.Country = regionCountry.Name;
organisationAddress.RegionIdCountry = regionCountry.Id;
}
else
{
if (model.Address.Country != null)
organisationAddress.Country = model.Address.Country;
}
organisationAddress.PostalCode = model.Address.PostalCode;
if (!SysId.IsValid(organisationAddress.Id))
{
// Create new address.
if (!ItemDataMgr.InsertItemAddress(organisationAddress, DbUpdateInfo))
// Create Organisation address if required.
if (organisationAddress == null)
{
SaLogger.Warn(fn + " Failed to insert organisation address - " + ItemDataMgr.ErrorStateMessage);
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
organisationAddress = ItemDataMgr.CreateItemAddress(organisation.GetItemId(), SaxItemAddress.DefaultOrganisationAddressType);
disposableItems.Add(organisationAddress);
}
// Store address.
if (model.Address.Line1 != null)
organisationAddress.Line1 = model.Address.Line1;
if (model.Address.Line2 != null)
organisationAddress.Line2 = model.Address.Line2;
if (model.Address.Line3 != null)
organisationAddress.Line3 = model.Address.Line3;
if (model.Address.Town != null)
organisationAddress.Town = model.Address.Town;
if (regionProvince != null)
{
organisationAddress.Province = regionProvince.Name;
organisationAddress.RegionIdProvince = regionProvince.Id;
}
else
{
if (model.Address.Province != null)
organisationAddress.Province = model.Address.Province;
}
if (regionCountry != null)
{
organisationAddress.Country = regionCountry.Name;
organisationAddress.RegionIdCountry = regionCountry.Id;
}
else
{
if (model.Address.Country != null)
organisationAddress.Country = model.Address.Country;
}
organisationAddress.PostalCode = model.Address.PostalCode;
organisationAddress.Status = SaxItemAddress.DefaultStatus;
// Store address.
if (!SysId.IsValid(organisationAddress.Id))
{
// Create new address.
if (!ItemDataMgr.InsertItemAddress(organisationAddress, DbUpdateInfo))
{
SaLogger.Warn(fn + " Failed to insert organisation address - " + ItemDataMgr.ErrorStateMessage);
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
}
}
else
{
// Update existing address.
if (!ItemDataMgr.UpdateItemAddress(organisationAddress, DbUpdateInfo))
{
SaLogger.Warn(fn + " Failed to update organisation address - " + ItemDataMgr.ErrorStateMessage);
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
}
}
}
else
{
// Update existing address.
if (!ItemDataMgr.UpdateItemAddress(organisationAddress, DbUpdateInfo))
// Address not populated - delete it.
if (!ItemDataMgr.DeleteItemAddress(organisationAddress, DbUpdateInfo))
{
SaLogger.Warn(fn + " Failed to update organisation address - " + ItemDataMgr.ErrorStateMessage);
SaLogger.Warn(fn + " Failed to delete organisation address - " + ItemDataMgr.ErrorStateMessage);
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
}
}
@@ -19,22 +19,19 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
{
//-------------------------------------------------------------------
// Region data.
private class RegionData_List
private class RegionListData : AjaxResponse_Data.ItemData_Base
{
public String Id { get; set; }
public String RegionTypeCode { get; set; }
public String RegionTypeDesc { get; set; }
public String CountryIso2Code { get; set; }
public String Name { get; set; }
public String ParentName { get; set; }
public String StatusCode { get; set; }
public String StatusDesc { get; set; }
}
private class RegionData_Full : RegionData_List
private class RegionItemData : RegionListData
{
public int RegionIdParent { get; set; }
public String RegionIdParent { get; set; }
}
private void PopulateRegionResponseData(SaxRegion region, RegionData_List data)
private void PopulateRegionResponseListData(SaxRegion region, RegionListData data)
{
data.Id = SysId.ToString(region.Id);
data.RegionTypeCode = RegionTypeCodes.GetCodeForType(region.RegionType);
@@ -48,10 +45,10 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
data.StatusCode = region.StatusCode;
data.StatusDesc = region.StatusDesc;
}
private void PopulateRegionResponseData(SaxRegion region, RegionData_Full data)
private void PopulateRegionResponseItemData(SaxRegion region, RegionItemData data)
{
PopulateRegionResponseData(region, data as RegionData_List);
data.RegionIdParent = SysId.ToInt(region.RegionIdParent);
PopulateRegionResponseListData(region, data);
data.RegionIdParent = SysId.ToString(region.RegionIdParent);
}
//-------------------------------------------------------------------
@@ -62,7 +59,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
// Construction.
public AjaxResponse_RegionList(SaxModel_Admin model) : base(model) { }
// Region list.
public List<RegionData_List> Regions { get; } = new List<RegionData_List>();
public List<RegionListData> Regions { get; } = new List<RegionListData>();
// Reference data.
public List<CodeDesc> Statuses { get; } = new List<CodeDesc>();
public String DefaultStatusCode { get; set; }
@@ -121,7 +118,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
{
NamedValue.Map values = resultSet.GetRecordValues();
Sax.RegionType regionType = (Sax.RegionType)values.GetLong(colType.DataName);
RegionData_List regionData = new RegionData_List()
RegionListData regionData = new RegionListData()
{
Id = values.GetString(colId.DataName),
RegionTypeCode = RegionTypeCodes.GetCodeForType(regionType),
@@ -152,7 +149,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
// Construction.
public AjaxResponse_Region(SaxModel_Admin model) : base(model) { }
// Region details.
public RegionData_Full region { get; } = new RegionData_Full();
public RegionItemData region { get; } = new RegionItemData();
}
//-------------------------------------------------------------------
[HttpPost]
@@ -186,7 +183,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
}
// Construct response.
PopulateRegionResponseData(region, responseData.region);
PopulateRegionResponseItemData(region, responseData.region);
}
// Complete response.
@@ -267,7 +264,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
}
// Construct response.
PopulateRegionResponseData(region, responseData.region);
PopulateRegionResponseItemData(region, responseData.region);
}
// Complete response.
@@ -19,7 +19,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
{
//-------------------------------------------------------------------
// Sport data.
private class SportData_List : AjaxResponse_Data.ItemData_Base
private class SportListData : AjaxResponse_Data.ItemData_Base
{
public String Name { get; set; }
public String SportIdParent { get; set; }
@@ -27,10 +27,10 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
public String SpecialityLabelCode { get; set; }
public String SpecialityLabelDesc { get; set; }
}
private class SportData_Full : SportData_List
private class SportItemData : SportListData
{
}
private void PopulateSportResponseData(SaxSport sport, SaxSport parentSport, SportData_List data)
private void PopulateSportResponseListData(SaxSport sport, SaxSport parentSport, SportListData data)
{
data.Id = SysId.ToString(sport.Id);
data.SportNameParent = parentSport?.Name ?? null;
@@ -41,9 +41,9 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
data.StatusCode = sport.StatusCode;
data.StatusDesc = sport.StatusDesc;
}
private void PopulateSportResponseData(SaxSport sport, SaxSport parentSport, SportData_Full data)
private void PopulateSportResponseItemData(SaxSport sport, SaxSport parentSport, SportItemData data)
{
PopulateSportResponseData(sport, parentSport, data as SportData_List);
PopulateSportResponseListData(sport, parentSport, data);
}
//-------------------------------------------------------------------
@@ -54,7 +54,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
// Construction.
public AjaxResponse_SportList(SaxModel_Admin model) : base(model) { }
// Sport list.
public List<SportData_List> Sports { get; } = new List<SportData_List>();
public List<SportListData> Sports { get; } = new List<SportListData>();
// Reference data.
public List<CodeDesc> Statuses { get; } = new List<CodeDesc>();
public String DefaultStatusCode { get; set; }
@@ -107,7 +107,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
{
NamedValue.Map values = resultSet.GetRecordValues();
Sax.SportSpecialityLabel specialityLabel = (Sax.SportSpecialityLabel)values.GetLong(colSpecialityLabel.DataName);
SportData_List sportData = new SportData_List()
SportListData sportData = new SportListData()
{
Id = values.GetString(colId.DataName),
SportIdParent = values.GetString(colParentId.DataName),
@@ -138,7 +138,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
// Construction.
public AjaxResponse_Sport(SaxModel_Admin model) : base(model) { }
// Sport details.
public SportData_Full sport { get; } = new SportData_Full();
public SportItemData sport { get; } = new SportItemData();
}
//-------------------------------------------------------------------
[HttpPost]
@@ -176,7 +176,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
disposableItems.Add(parentSport);
// Construct response.
PopulateSportResponseData(sport, parentSport, responseData.sport);
PopulateSportResponseItemData(sport, parentSport, responseData.sport);
}
// Complete response.
@@ -259,7 +259,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
disposableItems.Add(parentSport);
// Construct response.
PopulateSportResponseData(sport, parentSport, responseData.sport);
PopulateSportResponseItemData(sport, parentSport, responseData.sport);
}
// Complete response.