From 2a7d298dfc02e338fae69476d45ed1acdba0ab83 Mon Sep 17 00:00:00 2001 From: robvde Date: Sun, 28 Oct 2012 23:28:22 +0400 Subject: [PATCH 01/17] exchange 2013 provider id added --- .../WebsitePanel.EnterpriseServer/Web.config | 10 +++++++--- .../ProviderControls/Exchange_Settings.ascx.cs | 13 ++++++++++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..97a76d2a 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,11 +5,15 @@ - + - - + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/Exchange_Settings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/Exchange_Settings.ascx.cs index f3ab2ee2..a5e829c2 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/Exchange_Settings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/Exchange_Settings.ascx.cs @@ -42,7 +42,8 @@ namespace WebsitePanel.Portal.ProviderControls public const string ClientAccessData = "ClientAccessData"; public const int EXCHANGE2010_PROVIDER_ID = 32; - public const int EXCHANGE2010SP2_PROVIDER_ID = 90; + public const int EXCHANGE2010SP2_PROVIDER_ID = 90; + public const int EXCHANGE2013_PROVIDER_ID = 91; public string HubTransports { @@ -101,6 +102,16 @@ namespace WebsitePanel.Portal.ProviderControls locMailboxDatabase.Visible = false; break; + case EXCHANGE2013_PROVIDER_ID: + clusteredMailboxServer.Visible = false; + txtMailboxClusterName.Text = ""; + + storageGroup.Visible = false; + txtStorageGroup.Text = ""; + + locMailboxDatabase.Visible = false; + break; + default: storageGroup.Visible = true; From 41ab5f43462e7ef23145acece3650a9de251b64a Mon Sep 17 00:00:00 2001 From: robvde Date: Mon, 29 Oct 2012 08:30:11 +0400 Subject: [PATCH 02/17] Fixed: HostHeaders are not registered as domainpointer when importing --- .../Code/WebServers/WebServerController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index 6df74480..5b29543a 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -3716,6 +3716,7 @@ Please ensure the space has been allocated {0} IP address as a dedicated one and DomainInfo newDomain = new DomainInfo(); newDomain.DomainName = b.Host.ToLower(); newDomain.PackageId = domain.PackageId; + newDomain.IsDomainPointer = true; int newDomainID = ServerController.AddDomain(newDomain, domain.IsInstantAlias, false); if (newDomainID > 0) @@ -3726,7 +3727,6 @@ Please ensure the space has been allocated {0} IP address as a dedicated one and newDomain.WebSiteId = siteId; newDomain.ZoneItemId = domain.ZoneItemId; newDomain.DomainItemId = domain.DomainId; - newDomain.IsDomainPointer = true; ServerController.UpdateDomain(newDomain); } } From 1d3c5a8a2982d4367b676b33284b3a68df88472d Mon Sep 17 00:00:00 2001 From: robvde Date: Mon, 29 Oct 2012 15:05:28 +0400 Subject: [PATCH 03/17] Undo 2013 preparation --- .../ProviderControls/Exchange_Settings.ascx.cs | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/Exchange_Settings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/Exchange_Settings.ascx.cs index a5e829c2..7da1698d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/Exchange_Settings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/Exchange_Settings.ascx.cs @@ -43,7 +43,7 @@ namespace WebsitePanel.Portal.ProviderControls public const int EXCHANGE2010_PROVIDER_ID = 32; public const int EXCHANGE2010SP2_PROVIDER_ID = 90; - public const int EXCHANGE2013_PROVIDER_ID = 91; + public string HubTransports { @@ -102,17 +102,6 @@ namespace WebsitePanel.Portal.ProviderControls locMailboxDatabase.Visible = false; break; - case EXCHANGE2013_PROVIDER_ID: - clusteredMailboxServer.Visible = false; - txtMailboxClusterName.Text = ""; - - storageGroup.Visible = false; - txtStorageGroup.Text = ""; - - locMailboxDatabase.Visible = false; - break; - - default: storageGroup.Visible = true; txtStorageGroup.Text = settings["StorageGroup"]; From 837892e68993902a8280d4f096797557176f96d4 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 29 Oct 2012 11:43:37 -0400 Subject: [PATCH 04/17] Merge --- WebsitePanel.Installer/Sources/VersionInfo.cs | 2 +- .../WebsitePanel.Installer/Updater.exe | Bin 198144 -> 198144 bytes WebsitePanel/Sources/VersionInfo.cs | 2 +- WebsitePanel/Sources/VersionInfo.vb | 2 +- .../Code/WebServers/WebServerController.cs | 12 ++++++++++++ .../WebsitePanel.EnterpriseServer/Web.config | 10 +++------- 6 files changed, 18 insertions(+), 10 deletions(-) diff --git a/WebsitePanel.Installer/Sources/VersionInfo.cs b/WebsitePanel.Installer/Sources/VersionInfo.cs index ee7d4a52..bc5f49ca 100644 --- a/WebsitePanel.Installer/Sources/VersionInfo.cs +++ b/WebsitePanel.Installer/Sources/VersionInfo.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.17929 +// Runtime Version:4.0.30319.18010 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe index c3d6446396c7eebf31d450780eacc4f943ea5666..7812a3351959a200ec9db5483fc79d69acf87508 100644 GIT binary patch delta 45 zcmZqZ;c4jMnb5)Pv9znPyS1BfYd6!u0s+Ir$*m85{&Z<@fDFDZZ B6te&T delta 45 zcmZqZ;c4jMnb5(^@id~byS1BfYd6!u0)gi-@p?+rqdn#|gt;yME#$mCrjTjL6ac37 B63hSq diff --git a/WebsitePanel/Sources/VersionInfo.cs b/WebsitePanel/Sources/VersionInfo.cs index ee7d4a52..bc5f49ca 100644 --- a/WebsitePanel/Sources/VersionInfo.cs +++ b/WebsitePanel/Sources/VersionInfo.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.17929 +// Runtime Version:4.0.30319.18010 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. diff --git a/WebsitePanel/Sources/VersionInfo.vb b/WebsitePanel/Sources/VersionInfo.vb index ded96cbd..d2c94d8f 100644 --- a/WebsitePanel/Sources/VersionInfo.vb +++ b/WebsitePanel/Sources/VersionInfo.vb @@ -1,7 +1,7 @@ '------------------------------------------------------------------------------ ' ' This code was generated by a tool. -' Runtime Version:4.0.30319.17929 +' Runtime Version:4.0.30319.18010 ' ' Changes to this file may cause incorrect behavior and will be lost if ' the code is regenerated. diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index 5b29543a..c80f4edb 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -29,6 +29,7 @@ using System; using System.IO; using System.Data; +using System.Linq; using System.Collections.Specialized; using System.Collections.Generic; using System.Text; @@ -1213,6 +1214,17 @@ namespace WebsitePanel.EnterpriseServer DNSServer dns = new DNSServer(); ServiceProviderProxy.Init(dns, zone.ServiceId); + DnsRecord[] domainRecords = dns.GetZoneRecords(zone.Name); + var duplicateRecords = (from zoneRecord in domainRecords + from resRecord in resourceRecords + where zoneRecord.RecordName == resRecord.RecordName + where zoneRecord.RecordType == resRecord.RecordType + select zoneRecord).ToArray(); + if (duplicateRecords != null && duplicateRecords.Count() > 0) + { + dns.DeleteZoneRecords(zone.Name, duplicateRecords); + } + // add new resource records dns.AddZoneRecords(zone.Name, resourceRecords.ToArray()); } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 97a76d2a..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,15 +5,11 @@ - + - - - + + From 1615095fc2322cbbd178ed7e9feb72ba83cc7431 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 29 Oct 2012 11:54:58 -0400 Subject: [PATCH 05/17] Added tag build-2.0.0.143 for changeset 2c29a2d24954 From dbab36dbd900433e71739f08531cd69edf00d521 Mon Sep 17 00:00:00 2001 From: robvde Date: Mon, 29 Oct 2012 20:55:52 +0400 Subject: [PATCH 06/17] fixed hostheader import: subdomain pointer gets assigned to parent instead of subdomain --- .../Code/WebServers/WebServerController.cs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index 5b29543a..4cc1373f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -3760,19 +3760,21 @@ Please ensure the space has been allocated {0} IP address as a dedicated one and private static int FindDomainForHeader(string header, List domains) { int domainId = 0; - - while (header.IndexOf(".") != -1) + int counter = 0; + while ((header.IndexOf(".") != -1) & (counter < 2)) { - header = header.Substring(header.IndexOf(".") + 1); foreach (DomainInfo d in domains) { if ((header == d.DomainName.ToLower()) && (!d.IsDomainPointer)) { - domainId = d.DomainId; - break; + return d.DomainId; } } + + header = header.Substring(header.IndexOf(".") + 1); + counter++; + } return domainId; From 9dd9348dfb4778eb9626fe9283bbc6a7231256c4 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 29 Oct 2012 14:10:04 -0400 Subject: [PATCH 07/17] Added tag build-2.0.0.144 for changeset 934ebcbb6c51 From 14dfe450ff2f6a62cf3ddbebc097eef8aa426b3b Mon Sep 17 00:00:00 2001 From: robvde Date: Tue, 30 Oct 2012 09:11:35 +0400 Subject: [PATCH 08/17] Readded the organization user summary tab --- .../WebsitePanel.EnterpriseServer/Web.config | 14 +++++++++++--- .../ExchangeServer/UserControls/UserTabs.ascx.cs | 5 ++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..27a5f82b 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,11 +5,19 @@ - + + - - + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/UserTabs.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/UserTabs.ascx.cs index 91bf372d..da968986 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/UserTabs.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/UserTabs.ascx.cs @@ -50,7 +50,10 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls { List tabsList = new List(); tabsList.Add(CreateTab("edit_user", "Tab.General")); - //tabsList.Add(CreateTab("organization_user_setup", "Tab.Setup")); + + string instructions = ES.Services.Organizations.GetOrganizationUserSummuryLetter(PanelRequest.ItemID, PanelRequest.AccountID, false, false, false); + if (!string.IsNullOrEmpty(instructions)) + tabsList.Add(CreateTab("organization_user_setup", "Tab.Setup")); // find selected menu item int idx = 0; From 344ea5e4bd1666bf5bf6901112e548b990dc08e5 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 30 Oct 2012 08:11:05 -0400 Subject: [PATCH 09/17] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 27a5f82b..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,19 +5,11 @@ - - + - - - + + From 4b457fc8c6dd3a7e8865dd7a98f6e7b6edd0d2ac Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 30 Oct 2012 08:20:39 -0400 Subject: [PATCH 10/17] Added tag build-2.0.0.145 for changeset c0c9007136a5 From 90a746bc3c7fe52020b72a066041808834c9c95d Mon Sep 17 00:00:00 2001 From: robvde Date: Tue, 30 Oct 2012 22:30:22 +0400 Subject: [PATCH 11/17] Added: Added Lync to the Scheduled Enterprise HOsting report ReAdded: ability to send summary email when create an user account or a mailbox --- WebsitePanel/Database/update_db.sql | 10 +- .../Code/HostedSolution/LyncController.cs | 7 +- .../HostedSolution/OrganizationController.cs | 2 +- .../Code/HostedSolution/ReportController.cs | 125 ++++++++++++++++-- .../SchedulerTasks/HostedSolutionReport.cs | 10 +- .../WebsitePanel.EnterpriseServer/Web.config | 4 +- .../esLync.asmx.cs | 2 +- .../EnterpriseSolutionStatisticsReport.cs | 2 +- .../ExchangeMailboxStatistics.cs | 1 + .../ExchangeStatisticsReport.cs | 3 +- .../OrganizationStatisticsReport.cs | 4 +- .../OrganizationStatisticsRepotItem.cs | 13 ++ .../WebsitePanel.Providers.Base.csproj | 3 + .../ExchangeServer/ExchangeCreateMailbox.ascx | 10 +- .../ExchangeCreateMailbox.ascx.cs | 25 +++- .../ExchangeCreateMailbox.ascx.designer.cs | 18 +++ .../OrganizationCreateUser.ascx | 9 ++ .../OrganizationCreateUser.ascx.cs | 23 +++- .../OrganizationCreateUser.ascx.designer.cs | 18 +++ .../HostedSolutionReport.ascx.resx | 7 +- .../HostedSolutionReport.ascx | 5 + .../HostedSolutionReport.ascx.cs | 5 +- .../HostedSolutionReport.ascx.designer.cs | 12 +- 23 files changed, 278 insertions(+), 40 deletions(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 2482e5ff..4059e0db 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -6415,4 +6415,12 @@ exec sp_executesql @sql, N'@StartRow int, @MaximumRows int, @PackageID int, @Fil RETURN -GO \ No newline at end of file +GO + + + +IF NOT EXISTS (SELECT * FROM [dbo].[ScheduleTaskParameters] WHERE [ParameterID] = 'LYNC_REPORT') +BEGIN +INSERT [dbo].[ScheduleTaskParameters] ([TaskID], [ParameterID], [DataTypeID], [DefaultValue], [ParameterOrder]) VALUES (N'SCHEDULE_TASK_HOSTED_SOLUTION_REPORT', N'LYNC_REPORT', N'Boolean', N'true', 5) +END +GO diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs index dbbdb260..b7bf20f1 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs @@ -431,7 +431,12 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution } - public static LyncUsersPagedResult GetLyncUsers(int itemId, string sortColumn, string sortDirection, int startRow, int count) + public static LyncUsersPagedResult GetLyncUsers(int itemId) + { + return GetLyncUsersPaged(itemId, string.Empty, string.Empty, 0, int.MaxValue); + } + + public static LyncUsersPagedResult GetLyncUsersPaged(int itemId, string sortColumn, string sortDirection, int startRow, int count) { LyncUsersPagedResult res = TaskManager.StartResultTask("LYNC", "GET_LYNC_USERS"); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs index 3cf73181..d1904c88 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs @@ -517,7 +517,7 @@ namespace WebsitePanel.EnterpriseServer try { - LyncUsersPagedResult res = LyncController.GetLyncUsers(itemId, string.Empty, string.Empty, 0, int.MaxValue); + LyncUsersPagedResult res = LyncController.GetLyncUsers(itemId); if (res.IsSuccess) { diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs index 3692a9c6..fb322d30 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs @@ -123,8 +123,22 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution delegate(CRMOrganizationStatistics stats) { return stats.OrganizationID == org.OrganizationId; }); item.TotalCRMUsers = crmOrganizationStatistics.Count; + } + + if (report.LyncReport != null) + { + List lyncOrganizationStatistics = + report.LyncReport.Items.FindAll( + delegate(LyncUserStatistics stats) { return stats.OrganizationID == org.OrganizationId; }); + + foreach (LyncUserStatistics current in lyncOrganizationStatistics) + { + if (current.EnterpriseVoice) item.TotalLyncEVUsers++; + } + + item.TotalLyncUsers = lyncOrganizationStatistics.Count; } - + report.OrganizationReport.Items.Add(item); } @@ -308,7 +322,20 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution { TaskManager.WriteError(ex); } + } + + if (report.LyncReport != null) + { + try + { + PopulateLyncReportItems(org, report, topReseller); + } + catch (Exception ex) + { + TaskManager.WriteError(ex); + } } + } private static int GetExchangeServiceID(int packageId) @@ -316,6 +343,10 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution return PackageController.GetPackageServiceId(packageId, ResourceGroups.Exchange); } + private static int GetLyncServiceID(int packageId) + { + return PackageController.GetPackageServiceId(packageId, ResourceGroups.Lync); + } private static void PopulateSharePointItem(Organization org, EnterpriseSolutionStatisticsReport report, string topReseller) @@ -422,7 +453,13 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution { PopulateBaseItem(stats, org, topReseller); stats.MailboxType = mailbox.AccountType; + if (mailbox.AccountType == ExchangeAccountType.Mailbox) + { + ExchangeAccount a = ExchangeServerController.GetAccount(mailbox.ItemId, mailbox.AccountId); + stats.MailboxPlan = a.MailboxPlan; + } + stats.BlackberryEnabled = BlackBerryController.CheckBlackBerryUserExists(mailbox.AccountId); report.ExchangeReport.Items.Add(stats); } @@ -436,6 +473,74 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution } + + + private static void PopulateLyncReportItems(Organization org, EnterpriseSolutionStatisticsReport report, string topReseller) + { + + //Check if lync organization + if (string.IsNullOrEmpty(org.LyncTenantId)) + return; + + LyncUser[] lyncUsers = null; + + try + { + LyncUsersPagedResult res = LyncController.GetLyncUsers(org.Id); + if (res.IsSuccess) lyncUsers = res.Value.PageUsers; + } + catch (Exception ex) + { + throw new ApplicationException( + string.Format("Could not get lync users for current organization {0}", org.Id), ex); + } + + + if (lyncUsers == null) + return; + + foreach (LyncUser lyncUser in lyncUsers) + { + try + { + LyncUserStatistics stats = new LyncUserStatistics(); + + try + { + stats.SipAddress = lyncUser.PrimaryEmailAddress; + if (string.IsNullOrEmpty(lyncUser.LineUri)) stats.PhoneNumber = string.Empty; else stats.PhoneNumber = lyncUser.LineUri; + + LyncUserPlan plan = LyncController.GetLyncUserPlan(org.Id, lyncUser.LyncUserPlanId); + stats.Conferencing = plan.Conferencing; + stats.EnterpriseVoice = plan.EnterpriseVoice; + stats.Federation = plan.Federation; + stats.InstantMessaing = plan.IM; + stats.MobileAccess = plan.Mobility; + stats.LyncUserPlan = plan.LyncUserPlanName; + + } + catch (Exception ex) + { + TaskManager.WriteError(ex, "Could not get lync statistics. AccountName: {0}", + lyncUser.DisplayName); + } + + + if (stats != null) + { + PopulateBaseItem(stats, org, topReseller); + report.LyncReport.Items.Add(stats); + } + } + catch (Exception ex) + { + TaskManager.WriteError(ex); + } + } + + } + + private static void PopulateSpaceData(int packageId, EnterpriseSolutionStatisticsReport report, string topReseller) { List organizations; @@ -489,8 +594,8 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution } } - - private static void GetUsersData(EnterpriseSolutionStatisticsReport report, int userId, bool generateExchangeReport, bool generateSharePointReport, bool generateCRMReport, bool generateOrganizationReport, string topReseller) + + private static void GetUsersData(EnterpriseSolutionStatisticsReport report, int userId, bool generateExchangeReport, bool generateSharePointReport, bool generateCRMReport, bool generateOrganizationReport, bool generateLyncReport, string topReseller) { List users; try @@ -514,6 +619,7 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution GetUsersData(report, user.UserId, generateExchangeReport, generateSharePointReport, generateCRMReport, generateOrganizationReport, + generateLyncReport, string.IsNullOrEmpty(topReseller) ? user.Username : topReseller); } } @@ -523,8 +629,8 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution } } } - - public static EnterpriseSolutionStatisticsReport GetEnterpriseSolutionStatisticsReport(int userId, bool generateExchangeReport, bool generateSharePointReport, bool generateCRMReport, bool generateOrganizationReport) + + public static EnterpriseSolutionStatisticsReport GetEnterpriseSolutionStatisticsReport(int userId, bool generateExchangeReport, bool generateSharePointReport, bool generateCRMReport, bool generateOrganizationReport, bool generateLyncReport) { EnterpriseSolutionStatisticsReport report = new EnterpriseSolutionStatisticsReport(); @@ -534,17 +640,20 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution if (generateSharePointReport || generateOrganizationReport) report.SharePointReport = new SharePointStatisticsReport(); + if (generateLyncReport || generateOrganizationReport) + report.LyncReport = new LyncStatisticsReport(); + + if (generateCRMReport || generateOrganizationReport) report.CRMReport = new CRMStatisticsReport(); if (generateOrganizationReport) report.OrganizationReport = new OrganizationStatisticsReport(); - - + try { GetUsersData(report, userId, generateExchangeReport, generateSharePointReport, generateCRMReport, - generateOrganizationReport, null); + generateOrganizationReport, generateLyncReport, null); } catch(Exception ex) { diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/SchedulerTasks/HostedSolutionReport.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/SchedulerTasks/HostedSolutionReport.cs index 10322c79..b82436df 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/SchedulerTasks/HostedSolutionReport.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/SchedulerTasks/HostedSolutionReport.cs @@ -42,6 +42,7 @@ namespace WebsitePanel.EnterpriseServer private static readonly string EXCHANGE_REPORT = "EXCHANGE_REPORT"; private static readonly string ORGANIZATION_REPORT = "ORGANIZATION_REPORT"; private static readonly string SHAREPOINT_REPORT = "SHAREPOINT_REPORT"; + private static readonly string LYNC_REPORT = "LYNC_REPORT"; private static readonly string CRM_REPORT = "CRM_REPORT"; private static readonly string EMAIL = "EMAIL"; @@ -52,6 +53,7 @@ namespace WebsitePanel.EnterpriseServer { bool isExchange = Utils.ParseBool(TaskManager.TaskParameters[EXCHANGE_REPORT], false); bool isSharePoint = Utils.ParseBool(TaskManager.TaskParameters[SHAREPOINT_REPORT], false); + bool isLync = Utils.ParseBool(TaskManager.TaskParameters[LYNC_REPORT], false); bool isCRM = Utils.ParseBool(TaskManager.TaskParameters[CRM_REPORT], false); bool isOrganization = Utils.ParseBool(TaskManager.TaskParameters[ORGANIZATION_REPORT], false); @@ -61,13 +63,14 @@ namespace WebsitePanel.EnterpriseServer UserInfo user = PackageController.GetPackageOwner(TaskManager.PackageId); EnterpriseSolutionStatisticsReport report = ReportController.GetEnterpriseSolutionStatisticsReport(user.UserId, isExchange, isSharePoint, isCRM, - isOrganization); + isOrganization, isLync); SendMessage(user, email, isExchange && report.ExchangeReport != null ? report.ExchangeReport.ToCSV() : string.Empty, isSharePoint && report.SharePointReport != null ? report.SharePointReport.ToCSV() : string.Empty, isCRM && report.CRMReport != null ? report.CRMReport.ToCSV() : string.Empty, - isOrganization && report.OrganizationReport != null ? report.OrganizationReport.ToCSV() : string.Empty); + isOrganization && report.OrganizationReport != null ? report.OrganizationReport.ToCSV() : string.Empty, + isLync && report.LyncReport != null ? report.LyncReport.ToCSV() : string.Empty); } catch(Exception ex) { @@ -90,11 +93,12 @@ namespace WebsitePanel.EnterpriseServer } } - private void SendMessage(UserInfo user,string email, string exchange_csv, string sharepoint_csv, string crm_csv, string organization_csv) + private void SendMessage(UserInfo user,string email, string exchange_csv, string sharepoint_csv, string crm_csv, string organization_csv, string lync_csv) { List attacments = new List(); PrepareAttament("exchange.csv", exchange_csv, attacments); PrepareAttament("sharepoint.csv", sharepoint_csv, attacments); + PrepareAttament("lync.csv", lync_csv, attacments); PrepareAttament("crm.csv", crm_csv, attacments); PrepareAttament("organization.csv", organization_csv, attacments); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 27a5f82b..6c7d9d64 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -9,7 +9,7 @@ --> - + @@ -17,7 +17,7 @@ --> - + diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esLync.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esLync.asmx.cs index 9996fb3d..16c4328b 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esLync.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esLync.asmx.cs @@ -59,7 +59,7 @@ namespace WebsitePanel.EnterpriseServer [WebMethod] public LyncUsersPagedResult GetLyncUsersPaged(int itemId, string sortColumn, string sortDirection, int startRow, int maximumRows) { - return LyncController.GetLyncUsers(itemId, sortColumn, sortDirection, startRow, maximumRows); + return LyncController.GetLyncUsersPaged(itemId, sortColumn, sortDirection, startRow, maximumRows); } [WebMethod] diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/EnterpriseSolutionStatisticsReport.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/EnterpriseSolutionStatisticsReport.cs index 707c0531..f69dd959 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/EnterpriseSolutionStatisticsReport.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/EnterpriseSolutionStatisticsReport.cs @@ -34,6 +34,6 @@ public SharePointStatisticsReport SharePointReport { get; set; } public CRMStatisticsReport CRMReport { get; set; } public OrganizationStatisticsReport OrganizationReport { get; set; } - + public LyncStatisticsReport LyncReport { get; set; } } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeMailboxStatistics.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeMailboxStatistics.cs index 7583893e..7b408e10 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeMailboxStatistics.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeMailboxStatistics.cs @@ -50,5 +50,6 @@ namespace WebsitePanel.Providers.HostedSolution public bool Enabled { get; set; } public ExchangeAccountType MailboxType { get; set; } public bool BlackberryEnabled { get; set; } + public string MailboxPlan { get; set; } } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeStatisticsReport.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeStatisticsReport.cs index 7366c029..111dbae4 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeStatisticsReport.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeStatisticsReport.cs @@ -67,6 +67,7 @@ namespace WebsitePanel.Providers.HostedSolution sb.AppendFormat("{0},", ToCsvString(item.Enabled, "Enabled", "Disabled")); sb.AppendFormat("{0},", ToCsvString(item.MailboxType)); sb.AppendFormat("{0}", ToCsvString(item.BlackberryEnabled)); + sb.AppendFormat("{0}", ToCsvString(item.MailboxPlan)); mainBuilder.Append(sb.ToString()); } return mainBuilder.ToString(); @@ -74,7 +75,7 @@ namespace WebsitePanel.Providers.HostedSolution private void AddCSVHeader(StringBuilder sb) { - sb.Append("Top Reseller,Reseller,Customer,Customer Created,Hosting Space,Hosting Space Created,Ogranization Name,Ogranization Created,Organization ID,Mailbox Display Name,Account Created,Primary E-mail Address,MAPI,OWA,ActiveSync,POP 3,IMAP,Mailbox Size (Mb),Max Mailbox Size (Mb),Last Logon,Enabled,Mailbox Type, BlackBerry"); + sb.Append("Top Reseller,Reseller,Customer,Customer Created,Hosting Space,Hosting Space Created,Ogranization Name,Organization Created,Organization ID,Mailbox Display Name,Account Created,Primary E-mail Address,MAPI,OWA,ActiveSync,POP 3,IMAP,Mailbox Size (Mb),Max Mailbox Size (Mb),Last Logon,Enabled,Mailbox Type, BlackBerry, Mailbox Plan"); } } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsReport.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsReport.cs index 3d94d8be..a6ee3d78 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsReport.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsReport.cs @@ -57,6 +57,8 @@ namespace WebsitePanel.Providers.HostedSolution sb.AppendFormat("{0},", ToCsvString(item.TotalSharePointSiteCollections)); sb.AppendFormat("{0},", ToCsvString(item.TotalSharePointSiteCollectionsSize / 1024.0 / 1024.0)); sb.AppendFormat("{0}", ToCsvString(item.TotalCRMUsers)); + sb.AppendFormat("{0}", ToCsvString(item.TotalLyncUsers)); + sb.AppendFormat("{0}", ToCsvString(item.TotalLyncEVUsers)); mainBuilder.Append(sb.ToString()); } @@ -65,7 +67,7 @@ namespace WebsitePanel.Providers.HostedSolution private static void AddCSVHeader(StringBuilder sb) { - sb.Append("Top Reseller,Reseller,Customer,Customer Created,Hosting Space,Hosting Space Created,Ogranization Name,Ogranization Created,Organization ID,Total mailboxes,Total mailboxes size(Mb),Total Public Folders size(Mb),Total SharePoint site collections,Total SharePoint site collections size(Mb),Total CRM users"); + sb.Append("Top Reseller,Reseller,Customer,Customer Created,Hosting Space,Hosting Space Created,Ogranization Name,Ogranization Created,Organization ID,Total mailboxes,Total mailboxes size(Mb),Total Public Folders size(Mb),Total SharePoint site collections,Total SharePoint site collections size(Mb),Total CRM users,Total Lync users,Total Lync EV users"); } } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsRepotItem.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsRepotItem.cs index d7009b80..b240c79f 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsRepotItem.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsRepotItem.cs @@ -66,5 +66,18 @@ set; } + public int TotalLyncUsers + { + get; + set; + } + + public int TotalLyncEVUsers + { + get; + set; + } + + } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj index e13eb0be..f65c7c25 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj @@ -88,6 +88,9 @@ + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx index 62e671f9..b2deb2cf 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx @@ -147,7 +147,15 @@ - + + + + + +
+ +
+
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.MailboxPlanSelector mailboxPlanSelector; + /// + /// chkSendInstructions control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox chkSendInstructions; + + /// + /// sendInstructionEmail control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.UserControls.EmailControl sendInstructionEmail; + /// /// btnCreate control. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx index 187d5a08..4c8ea62f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx @@ -91,6 +91,15 @@ + + + + + + +
+ +
protected global::WebsitePanel.Portal.PasswordControl password; + /// + /// chkSendInstructions control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox chkSendInstructions; + + /// + /// sendInstructionEmail control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.UserControls.EmailControl sendInstructionEmail; + /// /// btnCreate control. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/App_LocalResources/HostedSolutionReport.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/App_LocalResources/HostedSolutionReport.ascx.resx index f7088cc4..211bf742 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/App_LocalResources/HostedSolutionReport.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/App_LocalResources/HostedSolutionReport.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 CRM Report @@ -123,6 +123,9 @@ Exchange Report + + Lync Report + Organization Report diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx index 58374f7b..4dd58eaa 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx @@ -19,6 +19,11 @@ + + + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx.cs index 56ae7708..d458ebce 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx.cs @@ -37,6 +37,7 @@ namespace WebsitePanel.Portal.ScheduleTaskControls private static readonly string EXCHANGE_REPORT = "EXCHANGE_REPORT"; private static readonly string ORGANIZATION_REPORT = "ORGANIZATION_REPORT"; private static readonly string SHAREPOINT_REPORT = "SHAREPOINT_REPORT"; + private static readonly string LYNC_REPORT = "LYNC_REPORT"; private static readonly string CRM_REPORT = "CRM_REPORT"; private static readonly string EMAIL = "EMAIL"; @@ -51,6 +52,7 @@ namespace WebsitePanel.Portal.ScheduleTaskControls base.SetParameters(parameters); SetParameter(cbExchange, EXCHANGE_REPORT); SetParameter(cbSharePoint, SHAREPOINT_REPORT); + SetParameter(cbLync, LYNC_REPORT); SetParameter(cbCRM, CRM_REPORT); SetParameter(cbOrganization, ORGANIZATION_REPORT); SetParameter(txtMail, EMAIL); @@ -61,12 +63,13 @@ namespace WebsitePanel.Portal.ScheduleTaskControls { ScheduleTaskParameterInfo exchange = GetParameter(cbExchange, EXCHANGE_REPORT); ScheduleTaskParameterInfo sharepoint = GetParameter(cbSharePoint, SHAREPOINT_REPORT); + ScheduleTaskParameterInfo lync = GetParameter(cbLync, LYNC_REPORT); ScheduleTaskParameterInfo crm = GetParameter(cbCRM, CRM_REPORT); ScheduleTaskParameterInfo organization = GetParameter(cbOrganization, ORGANIZATION_REPORT); ScheduleTaskParameterInfo email = GetParameter(txtMail, EMAIL); - return new ScheduleTaskParameterInfo[5] { exchange, sharepoint, crm , organization, email}; + return new ScheduleTaskParameterInfo[6] { exchange, sharepoint, lync, crm , organization, email}; } } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx.designer.cs index 7ecf5644..f2f81ab4 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx.designer.cs @@ -1,10 +1,9 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.1433 // // Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// the code is regenerated. // //------------------------------------------------------------------------------ @@ -49,6 +48,15 @@ namespace WebsitePanel.Portal.ScheduleTaskControls { /// protected global::System.Web.UI.WebControls.CheckBox cbSharePoint; + /// + /// cbLync control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox cbLync; + /// /// cbCRM control. /// From c6d40aedb84cf20b714716bd2a8ead0f17d5cf75 Mon Sep 17 00:00:00 2001 From: robvde Date: Tue, 30 Oct 2012 22:40:03 +0400 Subject: [PATCH 12/17] New files for lync reporting --- .../LyncOrganizationStatistics.cs | 72 +++++++++++++++++ .../HostedSolution/LyncStatisticsReport.cs | 78 +++++++++++++++++++ .../HostedSolution/LyncUserStatistics.cs | 49 ++++++++++++ 3 files changed, 199 insertions(+) create mode 100644 WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncOrganizationStatistics.cs create mode 100644 WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncStatisticsReport.cs create mode 100644 WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncUserStatistics.cs diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncOrganizationStatistics.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncOrganizationStatistics.cs new file mode 100644 index 00000000..9b747767 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncOrganizationStatistics.cs @@ -0,0 +1,72 @@ +// Copyright (c) 2012, Outercurve Foundation. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// - Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// - Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// - Neither the name of the Outercurve Foundation nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace WebsitePanel.Providers.HostedSolution +{ + public class LyncOrganizationStatistics + { + private int allocatedLyncUsers; + private int createdLyncUsers; + + private int allocatedLyncEVUsers; + private int createdLyncEVUsers; + + + public int AllocatedLyncUsers + { + get { return this.allocatedLyncUsers; } + set { this.allocatedLyncUsers = value; } + } + + public int CreatedLyncUsers + { + get { return this.createdLyncUsers; } + set { this.createdLyncUsers = value; } + } + + + public int AllocatedLyncEVUsers + { + get { return this.allocatedLyncEVUsers; } + set { this.allocatedLyncEVUsers = value; } + } + + public int CreatedLyncEVUsers + { + get { return this.createdLyncEVUsers; } + set { this.createdLyncEVUsers = value; } + } + + + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncStatisticsReport.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncStatisticsReport.cs new file mode 100644 index 00000000..f62e4def --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncStatisticsReport.cs @@ -0,0 +1,78 @@ +// Copyright (c) 2012, Outercurve Foundation. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// - Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// - Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// - Neither the name of the Outercurve Foundation nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +using System.Text; + +namespace WebsitePanel.Providers.HostedSolution +{ + public class LyncStatisticsReport : BaseReport + { + public override string ToCSV() + { + StringBuilder mainBuilder = new StringBuilder(); + StringBuilder sb = null; + AddCSVHeader(mainBuilder); + foreach (LyncUserStatistics item in Items) + { + sb = new StringBuilder(); + sb.Append("\n"); + sb.AppendFormat("{0},", ToCsvString(item.TopResellerName)); + sb.AppendFormat("{0},", ToCsvString(item.ResellerName)); + sb.AppendFormat("{0},", ToCsvString(item.CustomerName)); + sb.AppendFormat("{0},", ToCsvString(item.CustomerCreated)); + sb.AppendFormat("{0},", ToCsvString(item.HostingSpace)); + sb.AppendFormat("{0},", ToCsvString(item.HostingSpaceCreated)); + sb.AppendFormat("{0},", ToCsvString(item.OrganizationName)); + sb.AppendFormat("{0},", ToCsvString(item.OrganizationCreated)); + sb.AppendFormat("{0},", ToCsvString(item.OrganizationID)); + + sb.AppendFormat("{0},", ToCsvString(item.DisplayName)); + sb.AppendFormat("{0},", ToCsvString(item.AccountCreated)); + + sb.AppendFormat("{0},", ToCsvString(item.SipAddress)); + sb.AppendFormat("{0},", ToCsvString(item.PhoneNumber)); + sb.AppendFormat("{0},", ToCsvString(item.Conferencing)); + sb.AppendFormat("{0},", ToCsvString(item.EnterpriseVoice)); + sb.AppendFormat("{0},", ToCsvString(item.Federation)); + sb.AppendFormat("{0},", ToCsvString(item.InstantMessaing)); + sb.AppendFormat("{0},", ToCsvString(item.MobileAccess)); + sb.AppendFormat("{0},", ToCsvString(item.LyncUserPlan)); + + mainBuilder.Append(sb.ToString()); + } + + return mainBuilder.ToString(); + + } + + private static void AddCSVHeader(StringBuilder sb) + { + sb.Append("Top Reseller,Reseller,Customer,Customer Created,Hosting Space,Hosting Space Created,Ogranization Name,Organization Created,Organization ID,Display Name,Account Created,SipAddress,PhoneNumber,Conferencing,EnterpriseVoice,Federation,InstantMessaging,MobileAccess"); + } + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncUserStatistics.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncUserStatistics.cs new file mode 100644 index 00000000..2604f3b7 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncUserStatistics.cs @@ -0,0 +1,49 @@ +// Copyright (c) 2012, Outercurve Foundation. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// - Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// - Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// - Neither the name of the Outercurve Foundation nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +using System; +using System.Collections.Generic; +using System.Text; + +namespace WebsitePanel.Providers.HostedSolution +{ + public class LyncUserStatistics : BaseStatistics + { + public string DisplayName { get; set; } + public DateTime AccountCreated { get; set; } + public string SipAddress { get; set; } + public bool InstantMessaing{ get; set; } + public bool MobileAccess { get; set; } + public bool Federation { get; set; } + public bool Conferencing { get; set; } + public bool EnterpriseVoice { get; set; } + public string EVPolicy { get; set; } + public string PhoneNumber { get; set; } + public string LyncUserPlan { get; set; } + } +} From daa87697937f542f5809e6e9d735b077c718c4a6 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 30 Oct 2012 15:39:28 -0400 Subject: [PATCH 13/17] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 ++------- .../ExchangeCreateMailbox.ascx.designer.cs | 28 +++++++++++++++++ .../OrganizationCreateUser.ascx.designer.cs | 28 +++++++++++++++++ .../HostedSolutionReport.ascx.designer.cs | 30 ++++++++++++++++++- 4 files changed, 88 insertions(+), 12 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 6c7d9d64..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,19 +5,11 @@ - - + - - - + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx.designer.cs index 9f748012..f58e8241 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx.designer.cs @@ -1,3 +1,31 @@ +// Copyright (c) 2012, Outercurve Foundation. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// - Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// - Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// - Neither the name of the Outercurve Foundation nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + //------------------------------------------------------------------------------ // // This code was generated by a tool. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx.designer.cs index c2a99a7c..c789b42f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx.designer.cs @@ -1,3 +1,31 @@ +// Copyright (c) 2012, Outercurve Foundation. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// - Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// - Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// - Neither the name of the Outercurve Foundation nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + //------------------------------------------------------------------------------ // // This code was generated by a tool. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx.designer.cs index f2f81ab4..926f9f18 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx.designer.cs @@ -1,4 +1,32 @@ -//------------------------------------------------------------------------------ +// Copyright (c) 2012, Outercurve Foundation. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// - Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// - Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// - Neither the name of the Outercurve Foundation nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +//------------------------------------------------------------------------------ // // This code was generated by a tool. // From 21021eb089534ee1092ce0c307b8b87a33cf8d2d Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 30 Oct 2012 15:50:21 -0400 Subject: [PATCH 14/17] Added tag build-2.0.0.146 for changeset 363922c70d7d From 0033c11d69b2c3f65b817dc9f4151dd07a51443c Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 30 Oct 2012 15:54:25 -0400 Subject: [PATCH 15/17] Added tag build-2.0.0.147 for changeset e961bfc5154d From 645fa48d1ce0212ec20ce96b47dca81d120116cf Mon Sep 17 00:00:00 2001 From: robvde Date: Wed, 31 Oct 2012 10:22:51 +0400 Subject: [PATCH 16/17] Fixed: When webhosting netbios settings are empty, an attempt is made to configure a domain account. --- .../Code/WebServers/WebServerController.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index ca625b5c..d16da4d3 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -2490,7 +2490,7 @@ namespace WebsitePanel.EnterpriseServer WebServer server = GetWebServer(item.ServiceId); StringDictionary webSettings = ServerController.GetServiceSettings(item.ServiceId); - if (webSettings["WmSvc.NETBIOS"] != null) + if (!String.IsNullOrEmpty(webSettings["WmSvc.NETBIOS"])) { accountName = webSettings["WmSvc.NETBIOS"].ToString() + "\\" + accountName; } @@ -3258,7 +3258,7 @@ namespace WebsitePanel.EnterpriseServer WebServer server = GetWebServer(item.ServiceId); StringDictionary webSettings = ServerController.GetServiceSettings(item.ServiceId); - if (webSettings["WmSvc.NETBIOS"] != null) + if (!String.IsNullOrEmpty(webSettings["WmSvc.NETBIOS"])) { accountName = webSettings["WmSvc.NETBIOS"].ToString() + "\\" + accountName; } From 0cf9fb13dc5157f22c7278b96d931ea4ce71b62f Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 31 Oct 2012 09:07:15 -0400 Subject: [PATCH 17/17] Added tag build-2.0.0.148 for changeset 89ac927262c0