From df814794a23b0641671b4712d70e7e3c806a2a7c Mon Sep 17 00:00:00 2001 From: vfedosevich Date: Wed, 17 Dec 2014 08:13:29 -0800 Subject: [PATCH] Domain lookup mail template changed --- WebsitePanel/Database/update_db.sql | 11 +++-- .../SchedulerTasks/DomainLookupViewTask.cs | 41 +++++++++++++++++-- .../DomainLookup/DnsRecordInfoChange.cs | 3 +- .../DomainLookup/DomainDnsRecordStatuses.cs | 3 +- 4 files changed, 49 insertions(+), 9 deletions(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 065e83ae..0b4c21ad 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -6393,7 +6393,8 @@ Please, find below details of MX and NS changes. DNS Type Status - Value + Old Value + New Value @@ -6402,7 +6403,8 @@ Please, find below details of MX and NS changes. #DnsChange.DnsServer# #DnsChange.Type# #DnsChange.Status# - #DnsChange.Record.Value# + #DnsChange.OldRecord.Value# + #DnsChange.NewRecord.Value# @@ -6449,8 +6451,9 @@ Please, find below MX and NS Changes Information. DNS: #DnsChange.DnsServer# Type: #DnsChange.Type# - Status: #DnsChange.Status# - Value: #DnsChange.Record.Value# + Status: #DnsChange.Status# + Old Value: #DnsChange.OldRecord.Value# + New Value: #DnsChange.NewRecord.Value# diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainLookupViewTask.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainLookupViewTask.cs index b5a7c8ee..150c9c25 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainLookupViewTask.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainLookupViewTask.cs @@ -99,6 +99,8 @@ namespace WebsitePanel.EnterpriseServer domainChanges.DnsChanges.AddRange(ApplyDomainRecordsChanges(dbDnsRecords.Where(x => x.RecordType == DnsRecordType.MX), dnsMxRecords, dnsServer)); domainChanges.DnsChanges.AddRange(ApplyDomainRecordsChanges(dbDnsRecords.Where(x => x.RecordType == DnsRecordType.NS), dnsNsRecords, dnsServer)); + + domainChanges.DnsChanges = CombineDnsRecordChanges(domainChanges.DnsChanges, dnsServer).ToList(); } domainsChanges.Add(domainChanges); @@ -150,13 +152,13 @@ namespace WebsitePanel.EnterpriseServer if (dnsRecord != null) { - dnsRecordChanges.Add(new DnsRecordInfoChange { Record = record, Type = record.RecordType, Status = DomainDnsRecordStatuses.NotChanged, DnsServer = dnsServer }); + dnsRecordChanges.Add(new DnsRecordInfoChange { OldRecord = record, NewRecord = dnsRecord, Type = record.RecordType, Status = DomainDnsRecordStatuses.NotChanged, DnsServer = dnsServer }); dnsRecords.Remove(dnsRecord); } else { - dnsRecordChanges.Add(new DnsRecordInfoChange { Record = record, Type = record.RecordType, Status = DomainDnsRecordStatuses.Removed, DnsServer = dnsServer }); + dnsRecordChanges.Add(new DnsRecordInfoChange { OldRecord = record, NewRecord = new DnsRecordInfo { Value = string.Empty}, Type = record.RecordType, Status = DomainDnsRecordStatuses.Removed, DnsServer = dnsServer }); RemoveRecord(record); } @@ -164,7 +166,7 @@ namespace WebsitePanel.EnterpriseServer foreach (var record in dnsRecords) { - dnsRecordChanges.Add(new DnsRecordInfoChange { Record = record, Type = record.RecordType, Status = DomainDnsRecordStatuses.Added, DnsServer= dnsServer}); + dnsRecordChanges.Add(new DnsRecordInfoChange { OldRecord = new DnsRecordInfo { Value = string.Empty }, NewRecord = record, Type = record.RecordType, Status = DomainDnsRecordStatuses.Added, DnsServer = dnsServer }); AddRecord(record); } @@ -172,6 +174,39 @@ namespace WebsitePanel.EnterpriseServer return dnsRecordChanges; } + private IEnumerable CombineDnsRecordChanges(IEnumerable records, string dnsServer) + { + var resultRecords = records.Where(x => x.DnsServer == dnsServer).ToList(); + + var recordsToRemove = new List(); + + var removedRecords = records.Where(x => x.Status == DomainDnsRecordStatuses.Removed); + var addedRecords = records.Where(x => x.Status == DomainDnsRecordStatuses.Added); + + foreach (DnsRecordType type in (DnsRecordType[])Enum.GetValues(typeof(DnsRecordType))) + { + foreach (var removedRecord in removedRecords.Where(x => x.Type == type)) + { + var addedRecord = addedRecords.FirstOrDefault(x => x.Type == type && !recordsToRemove.Contains(x)); + + if (addedRecord != null) + { + recordsToRemove.Add(addedRecord); + + removedRecord.NewRecord = addedRecord.NewRecord; + removedRecord.Status = DomainDnsRecordStatuses.Updated; + } + } + } + + foreach (var record in recordsToRemove) + { + resultRecords.Remove(record); + } + + return resultRecords; + } + private void FillRecordData(IEnumerable records, DomainInfo domain, string dnsServer) { foreach (var record in records) diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DnsRecordInfoChange.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DnsRecordInfoChange.cs index 183c16e0..a5c0306b 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DnsRecordInfoChange.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DnsRecordInfoChange.cs @@ -9,7 +9,8 @@ namespace WebsitePanel.Providers.DomainLookup public class DnsRecordInfoChange { public string DnsServer { get; set; } - public DnsRecordInfo Record { get; set; } + public DnsRecordInfo OldRecord { get; set; } + public DnsRecordInfo NewRecord { get; set; } public DomainDnsRecordStatuses Status { get; set; } public DnsRecordType Type { get; set; } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainDnsRecordStatuses.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainDnsRecordStatuses.cs index 88fa25ed..33bddf37 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainDnsRecordStatuses.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainDnsRecordStatuses.cs @@ -9,6 +9,7 @@ namespace WebsitePanel.Providers.DomainLookup { NotChanged, Removed, - Added + Added, + Updated } }