Domain Expiration tasks Fixes

This commit is contained in:
vfedosevich 2014-12-10 05:46:38 -08:00
parent 7d753484d9
commit 627572f1c7
8 changed files with 77 additions and 8 deletions

View file

@ -6254,6 +6254,13 @@ BEGIN
END
GO
IF NOT EXISTS(SELECT * FROM sys.columns
WHERE [name] = N'LastUpdateDate' AND [object_id] = OBJECT_ID(N'Domains'))
BEGIN
ALTER TABLE [dbo].[Domains] ADD LastUpdateDate DateTime null;
END
GO
IF EXISTS (SELECT * FROM SYS.TABLES WHERE name = 'ScheduleTasksEmailTemplates')
DROP TABLE ScheduleTasksEmailTemplates
GO
@ -6639,6 +6646,18 @@ AS
UPDATE [dbo].[Domains] SET [ExpirationDate] = @Date WHERE [DomainID] = @DomainId
GO
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'UpdateDomainLastUpdateDate')
DROP PROCEDURE UpdateDomainLastUpdateDate
GO
CREATE PROCEDURE [dbo].UpdateDomainLastUpdateDate
(
@DomainId INT,
@Date DateTime
)
AS
UPDATE [dbo].[Domains] SET [LastUpdateDate] = @Date WHERE [DomainID] = @DomainId
GO
--Updating Domain procedures
@ -6673,6 +6692,7 @@ SELECT
D.IsInstantAlias,
D.CreationDate,
D.ExpirationDate,
D.LastUpdateDate,
D.IsDomainPointer
FROM Domains AS D
INNER JOIN PackagesTree(@PackageID, @Recursive) AS PT ON D.PackageID = PT.PackageID
@ -6754,6 +6774,7 @@ SET @sql = @sql + ' SELECT COUNT(DomainID) FROM @Domains;SELECT
D.IsInstantAlias,
D.IsDomainPointer,
D.ExpirationDate,
D.LastUpdateDate,
P.PackageName,
ISNULL(SRV.ServerID, 0) AS ServerID,
ISNULL(SRV.ServerName, '''') AS ServerName,

View file

@ -150,5 +150,6 @@ namespace WebsitePanel.EnterpriseServer
public DateTime? CreationDate { get; set; }
public DateTime? ExpirationDate { get; set; }
public DateTime? LastUpdateDate { get; set; }
}
}

View file

@ -4787,6 +4787,11 @@ namespace WebsitePanel.EnterpriseServer
UpdateDomainDate(domainId, "UpdateDomainExpirationDate", date);
}
public static void UpdateDomainLastUpdateDate(int domainId, DateTime date)
{
UpdateDomainDate(domainId, "UpdateDomainLastUpdateDate", date);
}
private static void UpdateDomainDate(int domainId, string stroredProcedure, DateTime date)
{
SqlHelper.ExecuteReader(

View file

@ -53,9 +53,11 @@ namespace WebsitePanel.EnterpriseServer
{
var domains = ServerController.GetDomains(package.PackageId);
domains = domains.Where(x => !x.IsSubDomain && !x.IsDomainPointer).ToList(); //Selecting top-level domains
var subDomains = domains.Where(x => x.IsSubDomain).ToList();
domains = domains.Where(x => x.CreationDate == null || x.ExpirationDate == null ? true : CheckDomainExpiration(x.ExpirationDate, daysBeforeNotify)).ToList(); // selecting expired or with empty expire date domains
var topLevelDomains = domains = domains.Where(x => !x.IsSubDomain && !x.IsDomainPointer).ToList(); //Selecting top-level domains
domains = topLevelDomains.Where(x => x.CreationDate == null || x.ExpirationDate == null ? true : CheckDomainExpiration(x.ExpirationDate, daysBeforeNotify)).ToList(); // selecting expired or with empty expire date domains
var domainUser = UserController.GetUser(package.UserId);
@ -80,6 +82,16 @@ namespace WebsitePanel.EnterpriseServer
expiredDomains.Add(domain);
}
}
foreach (var subDomain in subDomains)
{
var mainDomain = topLevelDomains.Where(x => subDomain.DomainName.Contains(x.DomainName)).OrderByDescending(s => s.DomainName.Length).FirstOrDefault(); ;
if (mainDomain != null)
{
ServerController.UpdateDomainRegistrationData(subDomain, mainDomain.CreationDate, mainDomain.ExpirationDate);
}
}
}
expiredDomains = expiredDomains.GroupBy(p => p.DomainId).Select(g => g.First()).ToList();

View file

@ -2664,6 +2664,8 @@ namespace WebsitePanel.EnterpriseServer
{
try
{
DataProvider.UpdateDomainLastUpdateDate(domain.DomainId, DateTime.Now);
var whoisResult = WhoisClient.Query(domain.DomainName);
var createdDate = GetDomainInfoDate(whoisResult.Raw, _createdDatePatterns);
@ -2689,6 +2691,17 @@ namespace WebsitePanel.EnterpriseServer
return domain;
}
public static DomainInfo UpdateDomainRegistrationData(DomainInfo domain, DateTime? creationDate, DateTime? expirationDate)
{
domain.CreationDate = creationDate;
DataProvider.UpdateDomainCreationDate(domain.DomainId, creationDate.Value);
domain.ExpirationDate = expirationDate;
DataProvider.UpdateDomainExpirationDate(domain.DomainId, expirationDate.Value);
DataProvider.UpdateDomainLastUpdateDate(domain.DomainId, DateTime.Now);
return domain;
}
private static DateTime? GetDomainInfoDate(string raw, IEnumerable<string> patterns)
{
foreach (var createdRegex in patterns)

View file

@ -207,4 +207,10 @@
<data name="gvDomainsExpirationDate.Header" xml:space="preserve">
<value>Expiration Date</value>
</data>
<data name="DomainExpirationDate.NotChecked" xml:space="preserve">
<value>Not Checked</value>
</data>
<data name="DomainExpirationDate.NotExist" xml:space="preserve">
<value>Non-Existent</value>
</data>
</root>

View file

@ -40,7 +40,7 @@
<asp:TemplateField HeaderText="gvDomainsExpirationDate">
<ItemStyle Width="15%"></ItemStyle>
<ItemTemplate>
<%# GetDomainExpirationDate(Eval("ExpirationDate"))%>
<%# GetDomainExpirationDate(Eval("ExpirationDate"), Eval("LastUpdateDate"))%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="gvDomainsType">

View file

@ -100,17 +100,28 @@ namespace WebsitePanel.Portal
return GetLocalizedString("DomainType.Domain");
}
public string GetDomainExpirationDate(object expirationDateObject)
public string GetDomainExpirationDate(object expirationDateObject, object LastUpdateDateObject)
{
var expirationDate = expirationDateObject as DateTime?;
var lastUpdateDate = LastUpdateDateObject as DateTime?;
if (expirationDate == null)
return GetLocalizedString("DomainExpirationDate.Unknown");
else if (expirationDate < DateTime.Now)
if (expirationDate != null && expirationDate < DateTime.Now)
{
return GetLocalizedString("DomainExpirationDate.Expired");
else
}
else if(expirationDate != null)
{
return expirationDate.Value.ToShortDateString();
}
else if (lastUpdateDate == null)
{
return GetLocalizedString("DomainExpirationDate.NotChecked");
}
else
{
return GetLocalizedString("DomainExpirationDate.NotExist");
}
}
protected void odsDomainsPaged_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{