@@ -114,7 +126,7 @@
-@code {
+ @code {
public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Edit;
public override string Title => "Module Settings";
@@ -141,7 +153,8 @@
private DateTime createdon;
private string modifiedby;
private DateTime modifiedon;
-
+ private DateTime? _effectivedate = null;
+ private DateTime? _expirydate = null;
protected override void OnInitialized()
{
_module = ModuleState.ModuleDefinition.Name;
@@ -156,6 +169,8 @@
createdon = ModuleState.CreatedOn;
modifiedby = ModuleState.ModifiedBy;
modifiedon = ModuleState.ModifiedOn;
+ _effectivedate = ModuleState.EffectiveDate;
+ _expirydate = ModuleState.ExpiryDate;
if (ModuleState.ModuleDefinition != null)
{
@@ -214,12 +229,20 @@
var interop = new Interop(JSRuntime);
if (await interop.FormValid(form))
{
+
if (!string.IsNullOrEmpty(_title))
{
+ if (!ValidateEffectiveExpiryDates(_effectivedate, _expirydate))
+ {
+ AddModuleMessage(SharedLocalizer["Message.EffectiveExpiryDateError"], MessageType.Warning);
+ return;
+ }
var pagemodule = await PageModuleService.GetPageModuleAsync(ModuleState.PageModuleId);
pagemodule.PageId = int.Parse(_pageId);
pagemodule.Title = _title;
pagemodule.Pane = _pane;
+ pagemodule.EffectiveDate = _effectivedate;
+ pagemodule.ExpiryDate = _expirydate;
pagemodule.ContainerType = (_containerType != "-") ? _containerType : string.Empty;
if (!string.IsNullOrEmpty(pagemodule.ContainerType) && pagemodule.ContainerType == PageState.Page.DefaultContainerType)
{
@@ -269,5 +292,33 @@
AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning);
}
}
+ private bool ValidateEffectiveExpiryDates(DateTime? effectiveDate, DateTime? expiryDate)
+ {
+ // Check if both dates are null, in which case the validation passes
+ if (effectiveDate == DateTime.MinValue && expiryDate == DateTime.MinValue)
+ {
+ return true;
+ }
+ // Check if EffectiveDate is not null and ExpiryDate is null
+ if (effectiveDate != DateTime.MinValue && expiryDate == DateTime.MinValue)
+ {
+ return true;
+ }
+
+ // Check if EffectiveDate is null and ExpiryDate is not null
+ if (effectiveDate == DateTime.MinValue && expiryDate != DateTime.MinValue)
+ {
+ return true;
+ }
+
+ // Check if ExpiryDate is not null and EffectiveDate is after ExpiryDate
+ if (expiryDate != DateTime.MinValue && effectiveDate != DateTime.MinValue && effectiveDate > expiryDate)
+ {
+ return false;
+ }
+
+ // If none of the above conditions are met, validation passes
+ return true;
+ }
}
diff --git a/Oqtane.Client/Modules/Admin/Pages/Add.razor b/Oqtane.Client/Modules/Admin/Pages/Add.razor
index 6e95fdf3..c03a7e0a 100644
--- a/Oqtane.Client/Modules/Admin/Pages/Add.razor
+++ b/Oqtane.Client/Modules/Admin/Pages/Add.razor
@@ -119,6 +119,18 @@