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 END
GO 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') IF EXISTS (SELECT * FROM SYS.TABLES WHERE name = 'ScheduleTasksEmailTemplates')
DROP TABLE ScheduleTasksEmailTemplates DROP TABLE ScheduleTasksEmailTemplates
GO GO
@ -6639,6 +6646,18 @@ AS
UPDATE [dbo].[Domains] SET [ExpirationDate] = @Date WHERE [DomainID] = @DomainId UPDATE [dbo].[Domains] SET [ExpirationDate] = @Date WHERE [DomainID] = @DomainId
GO 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 --Updating Domain procedures
@ -6673,6 +6692,7 @@ SELECT
D.IsInstantAlias, D.IsInstantAlias,
D.CreationDate, D.CreationDate,
D.ExpirationDate, D.ExpirationDate,
D.LastUpdateDate,
D.IsDomainPointer D.IsDomainPointer
FROM Domains AS D FROM Domains AS D
INNER JOIN PackagesTree(@PackageID, @Recursive) AS PT ON D.PackageID = PT.PackageID 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.IsInstantAlias,
D.IsDomainPointer, D.IsDomainPointer,
D.ExpirationDate, D.ExpirationDate,
D.LastUpdateDate,
P.PackageName, P.PackageName,
ISNULL(SRV.ServerID, 0) AS ServerID, ISNULL(SRV.ServerID, 0) AS ServerID,
ISNULL(SRV.ServerName, '''') AS ServerName, ISNULL(SRV.ServerName, '''') AS ServerName,

View file

@ -150,5 +150,6 @@ namespace WebsitePanel.EnterpriseServer
public DateTime? CreationDate { get; set; } public DateTime? CreationDate { get; set; }
public DateTime? ExpirationDate { 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); 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) private static void UpdateDomainDate(int domainId, string stroredProcedure, DateTime date)
{ {
SqlHelper.ExecuteReader( SqlHelper.ExecuteReader(

View file

@ -53,9 +53,11 @@ namespace WebsitePanel.EnterpriseServer
{ {
var domains = ServerController.GetDomains(package.PackageId); 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); var domainUser = UserController.GetUser(package.UserId);
@ -80,6 +82,16 @@ namespace WebsitePanel.EnterpriseServer
expiredDomains.Add(domain); 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(); expiredDomains = expiredDomains.GroupBy(p => p.DomainId).Select(g => g.First()).ToList();

View file

@ -2664,6 +2664,8 @@ namespace WebsitePanel.EnterpriseServer
{ {
try try
{ {
DataProvider.UpdateDomainLastUpdateDate(domain.DomainId, DateTime.Now);
var whoisResult = WhoisClient.Query(domain.DomainName); var whoisResult = WhoisClient.Query(domain.DomainName);
var createdDate = GetDomainInfoDate(whoisResult.Raw, _createdDatePatterns); var createdDate = GetDomainInfoDate(whoisResult.Raw, _createdDatePatterns);
@ -2689,6 +2691,17 @@ namespace WebsitePanel.EnterpriseServer
return domain; 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) private static DateTime? GetDomainInfoDate(string raw, IEnumerable<string> patterns)
{ {
foreach (var createdRegex in patterns) foreach (var createdRegex in patterns)

View file

@ -207,4 +207,10 @@
<data name="gvDomainsExpirationDate.Header" xml:space="preserve"> <data name="gvDomainsExpirationDate.Header" xml:space="preserve">
<value>Expiration Date</value> <value>Expiration Date</value>
</data> </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> </root>

View file

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

View file

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