Merge
This commit is contained in:
commit
226f94ed56
99 changed files with 3685 additions and 662 deletions
|
@ -1,7 +1,7 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 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.
|
||||
|
|
Binary file not shown.
|
@ -6220,7 +6220,7 @@ GO
|
|||
|
||||
|
||||
CREATE PROCEDURE [dbo].[GetItemIdByOrganizationId]
|
||||
@OrganizationId nvarchar(10)
|
||||
@OrganizationId nvarchar(128)
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
|
|
@ -559,6 +559,30 @@ GO
|
|||
UPDATE [dbo].[ResourceGroups] SET ShowGroup=1
|
||||
GO
|
||||
|
||||
IF NOT EXISTS(select 1 from sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.object_id=COLS.object_id and OBJS.type='U' AND OBJS.name='Quotas' AND COLS.name='HideQuota')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[Quotas] ADD [HideQuota] [bit] NULL
|
||||
END
|
||||
GO
|
||||
|
||||
UPDATE [dbo].[Quotas] SET [HideQuota] = 1 WHERE [QuotaName] = N'OS.DomainPointers'
|
||||
GO
|
||||
|
||||
|
||||
/****** Object: Table [dbo].[ExchangeAccounts] Extend Exchange Accounts with UserPrincipalName ******/
|
||||
IF NOT EXISTS(select 1 from sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.object_id=COLS.object_id and OBJS.type='U' AND OBJS.name='ExchangeAccounts' AND COLS.name='UserPrincipalName')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[ExchangeAccounts] ADD
|
||||
[UserPrincipalName] [nvarchar] (300) COLLATE Latin1_General_CI_AS NULL
|
||||
END
|
||||
GO
|
||||
|
||||
IF NOT EXISTS(SELECT * FROM [dbo].[ExchangeAccounts] WHERE UserPrincipalName IS NOT NULL)
|
||||
BEGIN
|
||||
UPDATE [dbo].[ExchangeAccounts] SET [UserPrincipalName] = PrimaryEmailAddress
|
||||
END
|
||||
GO
|
||||
|
||||
|
||||
/****** Object: Table [dbo].[ExchangeAccounts] Extend Exchange Accounts with SubscriberNumber ******/
|
||||
IF NOT EXISTS(select 1 from sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.object_id=COLS.object_id and OBJS.type='U' AND OBJS.name='Users' AND COLS.name='SubscriberNumber')
|
||||
|
@ -1457,7 +1481,8 @@ INSERT INTO ExchangeAccounts
|
|||
SamAccountName,
|
||||
AccountPassword,
|
||||
MailboxPlanId,
|
||||
SubscriberNumber
|
||||
SubscriberNumber,
|
||||
UserPrincipalName
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
|
@ -1471,7 +1496,8 @@ VALUES
|
|||
@SamAccountName,
|
||||
@AccountPassword,
|
||||
@MailboxPlanId,
|
||||
@SubscriberNumber
|
||||
@SubscriberNumber,
|
||||
@PrimaryEmailAddress
|
||||
)
|
||||
|
||||
SET @AccountID = SCOPE_IDENTITY()
|
||||
|
@ -1802,7 +1828,9 @@ AS
|
|||
SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts AS ea
|
||||
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
|
||||
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
|
||||
WHERE pt.ParentPackageID = @PackageID AND ea.MailboxPlanId IS NOT NULL)
|
||||
WHERE pt.ParentPackageID = @PackageID
|
||||
AND ea.AccountType IN (1)
|
||||
AND ea.MailboxPlanId IS NOT NULL)
|
||||
ELSE IF @QuotaID = 77 -- Exchange2007.DiskSpace
|
||||
SET @Result = (SELECT SUM(B.MailboxSizeMB) FROM ExchangeAccounts AS ea
|
||||
INNER JOIN ExchangeMailboxPlans AS B ON ea.MailboxPlanId = B.MailboxPlanId
|
||||
|
@ -2144,7 +2172,8 @@ SELECT
|
|||
E.MailEnabledPublicFolder,
|
||||
E.MailboxPlanId,
|
||||
P.MailboxPlan,
|
||||
E.SubscriberNumber
|
||||
E.SubscriberNumber,
|
||||
E.UserPrincipalName
|
||||
FROM
|
||||
ExchangeAccounts AS E
|
||||
LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
|
||||
|
@ -2229,7 +2258,8 @@ WITH Accounts AS (
|
|||
EA.PrimaryEmailAddress,
|
||||
EA.MailEnabledPublicFolder,
|
||||
EA.MailboxPlanId,
|
||||
EA.SubscriberNumber ' + @joincondition +
|
||||
EA.SubscriberNumber,
|
||||
EA.UserPrincipalName ' + @joincondition +
|
||||
' WHERE ' + @condition + '
|
||||
)
|
||||
|
||||
|
@ -2278,7 +2308,8 @@ SELECT
|
|||
E.AccountPassword,
|
||||
E.MailboxPlanId,
|
||||
P.MailboxPlan,
|
||||
E.SubscriberNumber
|
||||
E.SubscriberNumber,
|
||||
E.UserPrincipalName
|
||||
FROM
|
||||
ExchangeAccounts AS E
|
||||
LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
|
||||
|
@ -2291,6 +2322,37 @@ GO
|
|||
|
||||
|
||||
|
||||
ALTER PROCEDURE [dbo].[GetExchangeAccountByAccountName]
|
||||
(
|
||||
@ItemID int,
|
||||
@AccountName nvarchar(300)
|
||||
)
|
||||
AS
|
||||
SELECT
|
||||
E.AccountID,
|
||||
E.ItemID,
|
||||
E.AccountType,
|
||||
E.AccountName,
|
||||
E.DisplayName,
|
||||
E.PrimaryEmailAddress,
|
||||
E.MailEnabledPublicFolder,
|
||||
E.MailboxManagerActions,
|
||||
E.SamAccountName,
|
||||
E.AccountPassword,
|
||||
E.MailboxPlanId,
|
||||
P.MailboxPlan,
|
||||
E.SubscriberNumber,
|
||||
E.UserPrincipalName
|
||||
FROM
|
||||
ExchangeAccounts AS E
|
||||
LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
|
||||
WHERE
|
||||
E.ItemID = @ItemID AND
|
||||
E.AccountName = @AccountName
|
||||
RETURN
|
||||
GO
|
||||
|
||||
|
||||
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'GetExchangeAccountByMailboxPlanId')
|
||||
|
@ -2317,7 +2379,8 @@ SELECT
|
|||
E.AccountPassword,
|
||||
E.MailboxPlanId,
|
||||
P.MailboxPlan,
|
||||
E.SubscriberNumber
|
||||
E.SubscriberNumber,
|
||||
E.UserPrincipalName
|
||||
FROM
|
||||
ExchangeAccounts AS E
|
||||
LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
|
||||
|
@ -2344,7 +2407,8 @@ SELECT
|
|||
E.AccountPassword,
|
||||
E.MailboxPlanId,
|
||||
P.MailboxPlan,
|
||||
E.SubscriberNumber
|
||||
E.SubscriberNumber,
|
||||
E.UserPrincipalName
|
||||
FROM
|
||||
ExchangeAccounts AS E
|
||||
LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
|
||||
|
@ -2367,7 +2431,8 @@ SELECT
|
|||
E.AccountPassword,
|
||||
E.MailboxPlanId,
|
||||
P.MailboxPlan,
|
||||
E.SubscriberNumber
|
||||
E.SubscriberNumber,
|
||||
E.UserPrincipalName
|
||||
FROM
|
||||
ExchangeAccounts AS E
|
||||
LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
|
||||
|
@ -2407,7 +2472,8 @@ SELECT
|
|||
E.AccountPassword,
|
||||
E.MailboxPlanId,
|
||||
P.MailboxPlan,
|
||||
E.SubscriberNumber
|
||||
E.SubscriberNumber,
|
||||
E.UserPrincipalName
|
||||
FROM
|
||||
ExchangeAccounts AS E
|
||||
LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
|
||||
|
@ -2434,7 +2500,8 @@ SELECT
|
|||
E.AccountPassword,
|
||||
E.MailboxPlanId,
|
||||
P.MailboxPlan,
|
||||
E.SubscriberNumber
|
||||
E.SubscriberNumber,
|
||||
E.UserPrincipalName
|
||||
FROM
|
||||
ExchangeAccounts AS E
|
||||
LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
|
||||
|
@ -2457,7 +2524,8 @@ SELECT
|
|||
E.AccountPassword,
|
||||
E.MailboxPlanId,
|
||||
P.MailboxPlan,
|
||||
E.SubscriberNumber
|
||||
E.SubscriberNumber,
|
||||
E.UserPrincipalName
|
||||
FROM
|
||||
ExchangeAccounts AS E
|
||||
LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
|
||||
|
@ -2904,7 +2972,8 @@ SELECT
|
|||
E.AccountPassword,
|
||||
E.MailboxPlanId,
|
||||
P.MailboxPlan,
|
||||
E.SubscriberNumber
|
||||
E.SubscriberNumber,
|
||||
E.UserPrincipalName
|
||||
FROM
|
||||
ExchangeAccounts AS E
|
||||
LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
|
||||
|
@ -2934,7 +3003,8 @@ SELECT
|
|||
DisplayName,
|
||||
PrimaryEmailAddress,
|
||||
MailEnabledPublicFolder,
|
||||
SubscriberNumber
|
||||
SubscriberNumber,
|
||||
UserPrincipalName
|
||||
FROM
|
||||
ExchangeAccounts
|
||||
WHERE
|
||||
|
@ -2996,7 +3066,8 @@ SELECT
|
|||
MailboxManagerActions,
|
||||
SamAccountName,
|
||||
AccountPassword,
|
||||
SubscriberNumber
|
||||
SubscriberNumber,
|
||||
UserPrincipalName
|
||||
FROM ExchangeAccounts
|
||||
WHERE AccountID = @AccountID
|
||||
|
||||
|
@ -3065,7 +3136,8 @@ SELECT
|
|||
EA.DisplayName,
|
||||
EA.PrimaryEmailAddress,
|
||||
EA.MailEnabledPublicFolder,
|
||||
EA.SubscriberNumber
|
||||
EA.SubscriberNumber,
|
||||
EA.UserPrincipalName
|
||||
FROM ExchangeAccounts AS EA
|
||||
WHERE ' + @condition
|
||||
|
||||
|
@ -3138,7 +3210,8 @@ SELECT
|
|||
EA.AccountName,
|
||||
EA.DisplayName,
|
||||
EA.PrimaryEmailAddress,
|
||||
EA.SubscriberNumber
|
||||
EA.SubscriberNumber,
|
||||
EA.UserPrincipalName
|
||||
FROM ExchangeAccounts AS EA
|
||||
WHERE ' + @condition
|
||||
|
||||
|
@ -3198,7 +3271,7 @@ AS
|
|||
ea.ItemID,
|
||||
ea.AccountName,
|
||||
ea.DisplayName,
|
||||
ea.PrimaryEmailAddress,
|
||||
ea.UserPrincipalName,
|
||||
ea.SamAccountName,
|
||||
ou.LyncUserPlanId,
|
||||
lp.LyncUserPlanName
|
||||
|
@ -3236,7 +3309,7 @@ AS
|
|||
ea.ItemID,
|
||||
ea.AccountName,
|
||||
ea.DisplayName,
|
||||
ea.PrimaryEmailAddress,
|
||||
ea.UserPrincipalName,
|
||||
ea.SamAccountName,
|
||||
ou.LyncUserPlanId,
|
||||
lp.LyncUserPlanName
|
||||
|
@ -3665,6 +3738,13 @@ RETURN
|
|||
GO
|
||||
|
||||
|
||||
IF NOT EXISTS(select 1 from sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.object_id=COLS.object_id and OBJS.type='U' AND OBJS.name='LyncUsers' AND COLS.name='SipAddress')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[LyncUsers] ADD
|
||||
[SipAddress] [nvarchar] (300) COLLATE Latin1_General_CI_AS NULL
|
||||
END
|
||||
GO
|
||||
|
||||
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'GetLyncUsers')
|
||||
|
@ -3686,7 +3766,8 @@ CREATE TABLE #TempLyncUsers
|
|||
[ItemID] [int] NOT NULL,
|
||||
[AccountName] [nvarchar](300) NOT NULL,
|
||||
[DisplayName] [nvarchar](300) NOT NULL,
|
||||
[PrimaryEmailAddress] [nvarchar](300) NULL,
|
||||
[UserPrincipalName] [nvarchar](300) NULL,
|
||||
[SipAddress] [nvarchar](300) NULL,
|
||||
[SamAccountName] [nvarchar](100) NULL,
|
||||
[LyncUserPlanId] [int] NOT NULL,
|
||||
[LyncUserPlanName] [nvarchar] (300) NOT NULL,
|
||||
|
@ -3701,11 +3782,17 @@ BEGIN
|
|||
SET @condition = ''ORDER BY ea.DisplayName''
|
||||
END
|
||||
|
||||
IF (@SortColumn = ''PrimaryEmailAddress'')
|
||||
IF (@SortColumn = ''UserPrincipalName'')
|
||||
BEGIN
|
||||
SET @condition = ''ORDER BY ea.PrimaryEmailAddress''
|
||||
SET @condition = ''ORDER BY ea.UserPrincipalName''
|
||||
END
|
||||
|
||||
IF (@SortColumn = ''SipAddress'')
|
||||
BEGIN
|
||||
SET @condition = ''ORDER BY ou.SipAddress''
|
||||
END
|
||||
|
||||
|
||||
IF (@SortColumn = ''LyncUserPlanName'')
|
||||
BEGIN
|
||||
SET @condition = ''ORDER BY lp.LyncUserPlanName''
|
||||
|
@ -3721,7 +3808,8 @@ set @sql = ''
|
|||
ea.ItemID,
|
||||
ea.AccountName,
|
||||
ea.DisplayName,
|
||||
ea.PrimaryEmailAddress,
|
||||
ea.UserPrincipalName,
|
||||
ou.SipAddress,
|
||||
ea.SamAccountName,
|
||||
ou.LyncUserPlanId,
|
||||
lp.LyncUserPlanName
|
||||
|
@ -3757,11 +3845,17 @@ BEGIN
|
|||
SELECT * FROM #TempLyncUsers
|
||||
WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY DisplayName DESC
|
||||
END
|
||||
IF (@SortColumn = ''PrimaryEmailAddress'')
|
||||
IF (@SortColumn = ''UserPrincipalName'')
|
||||
BEGIN
|
||||
SELECT * FROM #TempLyncUsers
|
||||
WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY PrimaryEmailAddress DESC
|
||||
WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY UserPrincipalName DESC
|
||||
END
|
||||
IF (@SortColumn = ''SipAddress'')
|
||||
BEGIN
|
||||
SELECT * FROM #TempLyncUsers
|
||||
WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY SipAddress DESC
|
||||
END
|
||||
|
||||
IF (@SortColumn = ''LyncUserPlanName'')
|
||||
BEGIN
|
||||
SELECT * FROM #TempLyncUsers
|
||||
|
@ -3771,7 +3865,7 @@ BEGIN
|
|||
ELSE
|
||||
BEGIN
|
||||
SELECT * FROM #TempLyncUsers
|
||||
WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY PrimaryEmailAddress DESC
|
||||
WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY UserPrincipalName DESC
|
||||
END
|
||||
|
||||
|
||||
|
@ -3784,6 +3878,134 @@ GO
|
|||
|
||||
|
||||
|
||||
ALTER PROCEDURE [dbo].[GetLyncUsers]
|
||||
(
|
||||
@ItemID int,
|
||||
@SortColumn nvarchar(40),
|
||||
@SortDirection nvarchar(20),
|
||||
@StartRow int,
|
||||
@Count int
|
||||
)
|
||||
AS
|
||||
|
||||
CREATE TABLE #TempLyncUsers
|
||||
(
|
||||
[ID] [int] IDENTITY(1,1) NOT NULL,
|
||||
[AccountID] [int],
|
||||
[ItemID] [int] NOT NULL,
|
||||
[AccountName] [nvarchar](300) NOT NULL,
|
||||
[DisplayName] [nvarchar](300) NOT NULL,
|
||||
[UserPrincipalName] [nvarchar](300) NULL,
|
||||
[SipAddress] [nvarchar](300) NULL,
|
||||
[SamAccountName] [nvarchar](100) NULL,
|
||||
[LyncUserPlanId] [int] NOT NULL,
|
||||
[LyncUserPlanName] [nvarchar] (300) NOT NULL,
|
||||
)
|
||||
|
||||
|
||||
DECLARE @condition nvarchar(700)
|
||||
SET @condition = ''
|
||||
|
||||
IF (@SortColumn = 'DisplayName')
|
||||
BEGIN
|
||||
SET @condition = 'ORDER BY ea.DisplayName'
|
||||
END
|
||||
|
||||
IF (@SortColumn = 'UserPrincipalName')
|
||||
BEGIN
|
||||
SET @condition = 'ORDER BY ea.UserPrincipalName'
|
||||
END
|
||||
|
||||
IF (@SortColumn = 'SipAddress')
|
||||
BEGIN
|
||||
SET @condition = 'ORDER BY ou.SipAddress'
|
||||
END
|
||||
|
||||
|
||||
IF (@SortColumn = 'LyncUserPlanName')
|
||||
BEGIN
|
||||
SET @condition = 'ORDER BY lp.LyncUserPlanName'
|
||||
END
|
||||
|
||||
DECLARE @sql nvarchar(3500)
|
||||
|
||||
set @sql = ''
|
||||
INSERT INTO
|
||||
#TempLyncUsers
|
||||
SELECT
|
||||
ea.AccountID,
|
||||
ea.ItemID,
|
||||
ea.AccountName,
|
||||
ea.DisplayName,
|
||||
ea.UserPrincipalName,
|
||||
ou.SipAddress,
|
||||
ea.SamAccountName,
|
||||
ou.LyncUserPlanId,
|
||||
lp.LyncUserPlanName
|
||||
FROM
|
||||
ExchangeAccounts ea
|
||||
INNER JOIN
|
||||
LyncUsers ou
|
||||
INNER JOIN
|
||||
LyncUserPlans lp
|
||||
ON
|
||||
ou.LyncUserPlanId = lp.LyncUserPlanId
|
||||
ON
|
||||
ea.AccountID = ou.AccountID
|
||||
WHERE
|
||||
ea.ItemID = @ItemID + @condition
|
||||
|
||||
exec sp_executesql @sql, N'@ItemID int',@ItemID
|
||||
|
||||
DECLARE @RetCount int
|
||||
SELECT @RetCount = COUNT(ID) FROM #TempLyncUsers
|
||||
|
||||
IF (@SortDirection = 'ASC')
|
||||
BEGIN
|
||||
SELECT * FROM #TempLyncUsers
|
||||
WHERE ID > @StartRow AND ID <= (@StartRow + @Count)
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
IF @SortColumn <> '' AND @SortColumn IS NOT NULL
|
||||
BEGIN
|
||||
IF (@SortColumn = 'DisplayName')
|
||||
BEGIN
|
||||
SELECT * FROM #TempLyncUsers
|
||||
WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY DisplayName DESC
|
||||
END
|
||||
IF (@SortColumn = 'UserPrincipalName')
|
||||
BEGIN
|
||||
SELECT * FROM #TempLyncUsers
|
||||
WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY UserPrincipalName DESC
|
||||
END
|
||||
|
||||
IF (@SortColumn = 'SipAddress')
|
||||
BEGIN
|
||||
SELECT * FROM #TempLyncUsers
|
||||
WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY SipAddress DESC
|
||||
END
|
||||
|
||||
IF (@SortColumn = 'LyncUserPlanName')
|
||||
BEGIN
|
||||
SELECT * FROM #TempLyncUsers
|
||||
WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY LyncUserPlanName DESC
|
||||
END
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
SELECT * FROM #TempLyncUsers
|
||||
WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY UserPrincipalName DESC
|
||||
END
|
||||
|
||||
|
||||
END
|
||||
|
||||
DROP TABLE #TempLyncUsers
|
||||
GO
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -3925,6 +4147,7 @@ SELECT
|
|||
dbo.GetPackageAllocatedQuota(@PackageID, Q.QuotaID) AS ParentQuotaValue
|
||||
FROM Quotas AS Q
|
||||
LEFT OUTER JOIN HostingPlanQuotas AS HPQ ON Q.QuotaID = HPQ.QuotaID AND HPQ.PlanID = @PlanID
|
||||
WHERE Q.HideQuota IS NULL OR Q.HideQuota = 0
|
||||
ORDER BY Q.QuotaOrder
|
||||
RETURN
|
||||
GO
|
||||
|
@ -6419,9 +6642,293 @@ 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
|
||||
|
||||
|
||||
|
||||
ALTER PROCEDURE [dbo].[GetItemIdByOrganizationId]
|
||||
@OrganizationId nvarchar(128)
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT
|
||||
ItemID
|
||||
FROM
|
||||
dbo.ExchangeOrganizations
|
||||
WHERE
|
||||
OrganizationId = @OrganizationId
|
||||
END
|
||||
GO
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ALTER PROCEDURE [dbo].[SearchServiceItemsPaged]
|
||||
(
|
||||
@ActorID int,
|
||||
@UserID int,
|
||||
@ItemTypeID int,
|
||||
@FilterValue nvarchar(50) = '',
|
||||
@SortColumn nvarchar(50),
|
||||
@StartRow int,
|
||||
@MaximumRows int
|
||||
)
|
||||
AS
|
||||
|
||||
|
||||
-- check rights
|
||||
IF dbo.CheckActorUserRights(@ActorID, @UserID) = 0
|
||||
RAISERROR('You are not allowed to access this account', 16, 1)
|
||||
|
||||
-- build query and run it to the temporary table
|
||||
DECLARE @sql nvarchar(2000)
|
||||
|
||||
IF @ItemTypeID <> 13
|
||||
BEGIN
|
||||
SET @sql = '
|
||||
DECLARE @EndRow int
|
||||
SET @EndRow = @StartRow + @MaximumRows
|
||||
DECLARE @Items TABLE
|
||||
(
|
||||
ItemPosition int IDENTITY(1,1),
|
||||
ItemID int
|
||||
)
|
||||
INSERT INTO @Items (ItemID)
|
||||
SELECT
|
||||
SI.ItemID
|
||||
FROM ServiceItems AS SI
|
||||
INNER JOIN Packages AS P ON P.PackageID = SI.PackageID
|
||||
INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID
|
||||
WHERE
|
||||
dbo.CheckUserParent(@UserID, P.UserID) = 1
|
||||
AND SI.ItemTypeID = @ItemTypeID
|
||||
'
|
||||
|
||||
IF @FilterValue <> ''
|
||||
SET @sql = @sql + ' AND SI.ItemName LIKE @FilterValue '
|
||||
|
||||
IF @SortColumn = '' OR @SortColumn IS NULL
|
||||
SET @SortColumn = 'ItemName'
|
||||
|
||||
SET @sql = @sql + ' ORDER BY ' + @SortColumn + ' '
|
||||
|
||||
SET @sql = @sql + ' SELECT COUNT(ItemID) FROM @Items;
|
||||
SELECT
|
||||
|
||||
SI.ItemID,
|
||||
SI.ItemName,
|
||||
|
||||
P.PackageID,
|
||||
P.PackageName,
|
||||
P.StatusID,
|
||||
P.PurchaseDate,
|
||||
|
||||
-- user
|
||||
P.UserID,
|
||||
U.Username,
|
||||
U.FirstName,
|
||||
U.LastName,
|
||||
U.FullName,
|
||||
U.RoleID,
|
||||
U.Email
|
||||
FROM @Items AS I
|
||||
INNER JOIN ServiceItems AS SI ON I.ItemID = SI.ItemID
|
||||
INNER JOIN Packages AS P ON SI.PackageID = P.PackageID
|
||||
INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID
|
||||
WHERE I.ItemPosition BETWEEN @StartRow AND @EndRow'
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
|
||||
SET @SortColumn = REPLACE(@SortColumn, 'ItemName', 'DomainName')
|
||||
|
||||
SET @sql = '
|
||||
DECLARE @EndRow int
|
||||
SET @EndRow = @StartRow + @MaximumRows
|
||||
DECLARE @Items TABLE
|
||||
(
|
||||
ItemPosition int IDENTITY(1,1),
|
||||
ItemID int
|
||||
)
|
||||
INSERT INTO @Items (ItemID)
|
||||
SELECT
|
||||
D.DomainID
|
||||
FROM Domains AS D
|
||||
INNER JOIN Packages AS P ON P.PackageID = D.PackageID
|
||||
INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID
|
||||
WHERE
|
||||
dbo.CheckUserParent(@UserID, P.UserID) = 1
|
||||
'
|
||||
|
||||
IF @FilterValue <> ''
|
||||
SET @sql = @sql + ' AND D.DomainName LIKE @FilterValue '
|
||||
|
||||
IF @SortColumn = '' OR @SortColumn IS NULL
|
||||
SET @SortColumn = 'DomainName'
|
||||
|
||||
SET @sql = @sql + ' ORDER BY ' + @SortColumn + ' '
|
||||
|
||||
SET @sql = @sql + ' SELECT COUNT(ItemID) FROM @Items;
|
||||
SELECT
|
||||
|
||||
D.DomainID AS ItemID,
|
||||
D.DomainName AS ItemName,
|
||||
|
||||
P.PackageID,
|
||||
P.PackageName,
|
||||
P.StatusID,
|
||||
P.PurchaseDate,
|
||||
|
||||
-- user
|
||||
P.UserID,
|
||||
U.Username,
|
||||
U.FirstName,
|
||||
U.LastName,
|
||||
U.FullName,
|
||||
U.RoleID,
|
||||
U.Email
|
||||
FROM @Items AS I
|
||||
INNER JOIN Domains AS D ON I.ItemID = D.DomainID
|
||||
INNER JOIN Packages AS P ON D.PackageID = P.PackageID
|
||||
INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID
|
||||
WHERE I.ItemPosition BETWEEN @StartRow AND @EndRow AND D.IsDomainPointer=0'
|
||||
END
|
||||
|
||||
exec sp_executesql @sql, N'@StartRow int, @MaximumRows int, @UserID int, @FilterValue nvarchar(50), @ItemTypeID int, @ActorID int',
|
||||
@StartRow, @MaximumRows, @UserID, @FilterValue, @ItemTypeID, @ActorID
|
||||
|
||||
RETURN
|
||||
GO
|
||||
|
||||
|
||||
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'LyncUserExists')
|
||||
BEGIN
|
||||
EXEC sp_executesql N'
|
||||
CREATE PROCEDURE [dbo].[LyncUserExists]
|
||||
(
|
||||
@AccountID int,
|
||||
@SipAddress nvarchar(300),
|
||||
@Exists bit OUTPUT
|
||||
)
|
||||
AS
|
||||
|
||||
SET @Exists = 0
|
||||
IF EXISTS(SELECT * FROM [dbo].[ExchangeAccountEmailAddresses] WHERE [EmailAddress] = @SipAddress AND [AccountID] <> @AccountID)
|
||||
BEGIN
|
||||
SET @Exists = 1
|
||||
END
|
||||
ELSE IF EXISTS(SELECT * FROM [dbo].[ExchangeAccounts] WHERE [PrimaryEmailAddress] = @SipAddress AND [AccountID] <> @AccountID)
|
||||
BEGIN
|
||||
SET @Exists = 1
|
||||
END
|
||||
ELSE IF EXISTS(SELECT * FROM [dbo].[ExchangeAccounts] WHERE [UserPrincipalName] = @SipAddress AND [AccountID] <> @AccountID)
|
||||
BEGIN
|
||||
SET @Exists = 1
|
||||
END
|
||||
ELSE IF EXISTS(SELECT * FROM [dbo].[ExchangeAccounts] WHERE [AccountName] = @SipAddress AND [AccountID] <> @AccountID)
|
||||
BEGIN
|
||||
SET @Exists = 1
|
||||
END
|
||||
ELSE IF EXISTS(SELECT * FROM [dbo].[LyncUsers] WHERE [SipAddress] = @SipAddress)
|
||||
BEGIN
|
||||
SET @Exists = 1
|
||||
END
|
||||
|
||||
|
||||
RETURN'
|
||||
END
|
||||
GO
|
||||
|
||||
|
||||
|
||||
|
||||
ALTER PROCEDURE [dbo].[LyncUserExists]
|
||||
(
|
||||
@AccountID int,
|
||||
@SipAddress nvarchar(300),
|
||||
@Exists bit OUTPUT
|
||||
)
|
||||
AS
|
||||
|
||||
SET @Exists = 0
|
||||
IF EXISTS(SELECT * FROM [dbo].[ExchangeAccountEmailAddresses] WHERE [EmailAddress] = @SipAddress AND [AccountID] <> @AccountID)
|
||||
BEGIN
|
||||
SET @Exists = 1
|
||||
END
|
||||
ELSE IF EXISTS(SELECT * FROM [dbo].[ExchangeAccounts] WHERE [PrimaryEmailAddress] = @SipAddress AND [AccountID] <> @AccountID)
|
||||
BEGIN
|
||||
SET @Exists = 1
|
||||
END
|
||||
ELSE IF EXISTS(SELECT * FROM [dbo].[ExchangeAccounts] WHERE [UserPrincipalName] = @SipAddress AND [AccountID] <> @AccountID)
|
||||
BEGIN
|
||||
SET @Exists = 1
|
||||
END
|
||||
ELSE IF EXISTS(SELECT * FROM [dbo].[ExchangeAccounts] WHERE [AccountName] = @SipAddress AND [AccountID] <> @AccountID)
|
||||
BEGIN
|
||||
SET @Exists = 1
|
||||
END
|
||||
ELSE IF EXISTS(SELECT * FROM [dbo].[LyncUsers] WHERE [SipAddress] = @SipAddress)
|
||||
BEGIN
|
||||
SET @Exists = 1
|
||||
END
|
||||
|
||||
|
||||
RETURN
|
||||
GO
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ALTER PROCEDURE [dbo].[AddLyncUser]
|
||||
@AccountID int,
|
||||
@LyncUserPlanID int,
|
||||
@SipAddress nvarchar(300)
|
||||
AS
|
||||
INSERT INTO
|
||||
dbo.LyncUsers
|
||||
(AccountID,
|
||||
LyncUserPlanID,
|
||||
CreatedDate,
|
||||
ModifiedDate,
|
||||
SipAddress)
|
||||
VALUES
|
||||
(
|
||||
@AccountID,
|
||||
@LyncUserPlanID,
|
||||
getdate(),
|
||||
getdate(),
|
||||
@SipAddress
|
||||
)
|
||||
GO
|
||||
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'UpdateLyncUser')
|
||||
BEGIN
|
||||
EXEC sp_executesql N'CREATE PROCEDURE [dbo].[UpdateLyncUser]
|
||||
(
|
||||
@AccountID int,
|
||||
@SipAddress nvarchar(300)
|
||||
)
|
||||
AS
|
||||
|
||||
UPDATE LyncUsers SET
|
||||
SipAddress = @SipAddress
|
||||
WHERE
|
||||
AccountID = @AccountID AND AccountType IN (1,7)
|
||||
|
||||
RETURN'
|
||||
END
|
||||
GO
|
||||
|
||||
|
||||
-- Version 2.1 section
|
||||
|
@ -6434,4 +6941,3 @@ BEGIN
|
|||
UPDATE [dbo].[Providers] SET [DisableAutoDiscovery] = NULL WHERE [DisplayName] = 'Hosted Microsoft Exchange Server 2013'
|
||||
END
|
||||
GO
|
||||
|
||||
|
|
|
@ -100,6 +100,7 @@ namespace WebsitePanel.Import.Enterprise
|
|||
Global.TempDomain = serviceSettings["TempDomain"];
|
||||
ServerInfo serverInfo = ServerController.GetServerById(serviceInfo.ServerId);
|
||||
Global.ADRootDomain = serverInfo.ADRootDomain;
|
||||
Global.NetBiosDomain = ActiveDirectoryUtils.GetNETBIOSDomainName(Global.ADRootDomain);
|
||||
}
|
||||
|
||||
private void OnBrowseOU(object sender, EventArgs e)
|
||||
|
|
|
@ -58,6 +58,13 @@ namespace WebsitePanel.Import.Enterprise
|
|||
set { aDRootDomain = value; }
|
||||
}
|
||||
|
||||
private static string netBiosDomain;
|
||||
public static string NetBiosDomain
|
||||
{
|
||||
get { return netBiosDomain; }
|
||||
set { netBiosDomain = value; }
|
||||
}
|
||||
|
||||
public static PackageInfo Space;
|
||||
public static string TempDomain;
|
||||
|
||||
|
|
|
@ -757,15 +757,19 @@ namespace WebsitePanel.Import.Enterprise
|
|||
if (EmailAddressExists(email))
|
||||
return BusinessErrorCodes.ERROR_EXCHANGE_EMAIL_EXISTS;
|
||||
|
||||
|
||||
|
||||
if (AccountExists(accountName))
|
||||
throw new Exception(string.Format("Account {0} already exists", accountName));
|
||||
|
||||
string displayName = (string)entry.Properties["displayName"].Value;
|
||||
|
||||
string samName = (string)entry.Properties["sAMAccountName"].Value;
|
||||
// this should really NEVER happen - an AD account without sAMAccountName?!
|
||||
if (string.IsNullOrEmpty(samName))
|
||||
throw new Exception("SAMAccountName is not specified");
|
||||
// add Netbios-Domainname before samAccountName - format in the database
|
||||
samName = Global.NetBiosDomain + "\\" + samName;
|
||||
|
||||
int userId = AddOrganizationUser(itemId, accountName, displayName, email, string.Empty);
|
||||
int userId = AddOrganizationUser(itemId, accountName, displayName, email, samName, string.Empty);
|
||||
AddAccountEmailAddress(userId, email);
|
||||
|
||||
//account type
|
||||
|
@ -796,7 +800,7 @@ namespace WebsitePanel.Import.Enterprise
|
|||
return userId;
|
||||
}
|
||||
|
||||
UpdateExchangeAccount(userId, accountName, accountType, displayName, email, false, string.Empty, string.Empty, string.Empty);
|
||||
UpdateExchangeAccount(userId, accountName, accountType, displayName, email, false, string.Empty, samName, string.Empty);
|
||||
|
||||
string defaultEmail = (string)entry.Properties["extensionAttribute3"].Value;
|
||||
|
||||
|
@ -847,7 +851,7 @@ namespace WebsitePanel.Import.Enterprise
|
|||
if (email != null && email.ToLower().StartsWith("smtp:"))
|
||||
email = email.Substring(5);
|
||||
|
||||
|
||||
// no sAMAccountName for contacts - so String.Empty is OK
|
||||
int accountId = AddAccount(itemId, ExchangeAccountType.Contact, accountName, displayName, email, false, 0, string.Empty, null);
|
||||
|
||||
Log.WriteEnd("Contact imported");
|
||||
|
@ -886,7 +890,14 @@ namespace WebsitePanel.Import.Enterprise
|
|||
if (EmailAddressExists(email))
|
||||
return BusinessErrorCodes.ERROR_EXCHANGE_EMAIL_EXISTS;
|
||||
|
||||
int accountId = AddAccount(itemId, ExchangeAccountType.DistributionList, accountName, displayName, email, false, 0, string.Empty, null);
|
||||
string samName = (string)entry.Properties["sAMAccountName"].Value;
|
||||
// this should really NEVER happen - an AD group without sAMAccountName?!
|
||||
if (string.IsNullOrEmpty(samName))
|
||||
throw new Exception("SAMAccountName is not specified");
|
||||
// add Netbios-Domainname before samAccountName - format in the database
|
||||
samName = Global.NetBiosDomain + "\\" + samName;
|
||||
|
||||
int accountId = AddAccount(itemId, ExchangeAccountType.DistributionList, accountName, displayName, email, false, 0, samName, null);
|
||||
AddAccountEmailAddress(accountId, email);
|
||||
|
||||
string defaultEmail = (string)entry.Properties["extensionAttribute3"].Value;
|
||||
|
@ -938,10 +949,10 @@ namespace WebsitePanel.Import.Enterprise
|
|||
mailboxManagerActions.ToString(), samAccountName, CryptoUtils.Encrypt(accountPassword),0, string.Empty);
|
||||
}
|
||||
|
||||
private static int AddOrganizationUser(int itemId, string accountName, string displayName, string email, string accountPassword)
|
||||
private static int AddOrganizationUser(int itemId, string accountName, string displayName, string email, string samAccountName, string accountPassword)
|
||||
{
|
||||
return DataProvider.AddExchangeAccount(itemId, (int)ExchangeAccountType.User, accountName, displayName, email, false, string.Empty,
|
||||
string.Empty, CryptoUtils.Encrypt(accountPassword),0 , string.Empty);
|
||||
samAccountName, CryptoUtils.Encrypt(accountPassword), 0 , string.Empty);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 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.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
'------------------------------------------------------------------------------
|
||||
' <auto-generated>
|
||||
' 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.
|
||||
|
|
|
@ -115,6 +115,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
public const int ERROR_WEB_SITE_SHARED_IP_ADDRESS_NOT_SPECIFIED = -608;
|
||||
public const int ERROR_WEB_SHARED_SSL_QUOTA_LIMIT = -609;
|
||||
public const int ERROR_GLOBALDNS_FOR_DEDICATEDIP = -610;
|
||||
public const int ERROR_PUBLICSHAREDIP_FOR_SHAREDIP = -611;
|
||||
#endregion
|
||||
|
||||
#region Mail
|
||||
|
@ -323,6 +324,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
public const int ERROR_USERS_RESOURCE_QUOTA_LIMIT = -2707;
|
||||
public const int CURRENT_USER_IS_CRM_USER = -2708;
|
||||
public const int CURRENT_USER_IS_OCS_USER = -2709;
|
||||
public const int CURRENT_USER_IS_LYNC_USER = -2710;
|
||||
|
||||
#endregion
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.6387
|
||||
// Runtime Version:2.0.50727.6400
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
|
@ -53,7 +53,6 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
|
||||
|
||||
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||
|
@ -85,6 +84,8 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
|
||||
private System.Threading.SendOrPostCallback GetLyncUserGeneralSettingsOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback SetLyncUserGeneralSettingsOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback SetUserLyncPlanOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback GetFederationDomainsOperationCompleted;
|
||||
|
@ -134,6 +135,9 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
/// <remarks/>
|
||||
public event GetLyncUserGeneralSettingsCompletedEventHandler GetLyncUserGeneralSettingsCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event SetLyncUserGeneralSettingsCompletedEventHandler SetLyncUserGeneralSettingsCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event SetUserLyncPlanCompletedEventHandler SetUserLyncPlanCompleted;
|
||||
|
||||
|
@ -680,6 +684,56 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SetLyncUserGeneralSettings", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public LyncUserResult SetLyncUserGeneralSettings(int itemId, int accountId, string sipAddress, string lineUri) {
|
||||
object[] results = this.Invoke("SetLyncUserGeneralSettings", new object[] {
|
||||
itemId,
|
||||
accountId,
|
||||
sipAddress,
|
||||
lineUri});
|
||||
return ((LyncUserResult)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public System.IAsyncResult BeginSetLyncUserGeneralSettings(int itemId, int accountId, string sipAddress, string lineUri, System.AsyncCallback callback, object asyncState) {
|
||||
return this.BeginInvoke("SetLyncUserGeneralSettings", new object[] {
|
||||
itemId,
|
||||
accountId,
|
||||
sipAddress,
|
||||
lineUri}, callback, asyncState);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public LyncUserResult EndSetLyncUserGeneralSettings(System.IAsyncResult asyncResult) {
|
||||
object[] results = this.EndInvoke(asyncResult);
|
||||
return ((LyncUserResult)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void SetLyncUserGeneralSettingsAsync(int itemId, int accountId, string sipAddress, string lineUri) {
|
||||
this.SetLyncUserGeneralSettingsAsync(itemId, accountId, sipAddress, lineUri, null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void SetLyncUserGeneralSettingsAsync(int itemId, int accountId, string sipAddress, string lineUri, object userState) {
|
||||
if ((this.SetLyncUserGeneralSettingsOperationCompleted == null)) {
|
||||
this.SetLyncUserGeneralSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetLyncUserGeneralSettingsOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("SetLyncUserGeneralSettings", new object[] {
|
||||
itemId,
|
||||
accountId,
|
||||
sipAddress,
|
||||
lineUri}, this.SetLyncUserGeneralSettingsOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnSetLyncUserGeneralSettingsOperationCompleted(object arg) {
|
||||
if ((this.SetLyncUserGeneralSettingsCompleted != null)) {
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.SetLyncUserGeneralSettingsCompleted(this, new SetLyncUserGeneralSettingsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SetUserLyncPlan", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public LyncUserResult SetUserLyncPlan(int itemId, int accountId, int lyncUserPlanId) {
|
||||
|
@ -1177,6 +1231,32 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
public delegate void SetLyncUserGeneralSettingsCompletedEventHandler(object sender, SetLyncUserGeneralSettingsCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||
public partial class SetLyncUserGeneralSettingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||
|
||||
private object[] results;
|
||||
|
||||
internal SetLyncUserGeneralSettingsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||
base(exception, cancelled, userState) {
|
||||
this.results = results;
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public LyncUserResult Result {
|
||||
get {
|
||||
this.RaiseExceptionIfNecessary();
|
||||
return ((LyncUserResult)(this.results[0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
public delegate void SetUserLyncPlanCompletedEventHandler(object sender, SetUserLyncPlanCompletedEventArgs e);
|
||||
|
|
|
@ -3257,7 +3257,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
|
||||
#region Lync
|
||||
|
||||
public static void AddLyncUser(int accountId, int lyncUserPlanId)
|
||||
public static void AddLyncUser(int accountId, int lyncUserPlanId, string sipAddress)
|
||||
{
|
||||
SqlHelper.ExecuteNonQuery(ConnectionString,
|
||||
CommandType.StoredProcedure,
|
||||
|
@ -3265,10 +3265,24 @@ namespace WebsitePanel.EnterpriseServer
|
|||
new[]
|
||||
{
|
||||
new SqlParameter("@AccountID", accountId),
|
||||
new SqlParameter("@LyncUserPlanID", lyncUserPlanId)
|
||||
new SqlParameter("@LyncUserPlanID", lyncUserPlanId),
|
||||
new SqlParameter("@SipAddress", sipAddress)
|
||||
});
|
||||
}
|
||||
|
||||
public static void UpdateLyncUser(int accountId, string sipAddress)
|
||||
{
|
||||
SqlHelper.ExecuteNonQuery(ConnectionString,
|
||||
CommandType.StoredProcedure,
|
||||
"UpdateLyncUser",
|
||||
new[]
|
||||
{
|
||||
new SqlParameter("@AccountID", accountId),
|
||||
new SqlParameter("@SipAddress", sipAddress)
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public static bool CheckLyncUserExists(int accountId)
|
||||
{
|
||||
int res = (int)SqlHelper.ExecuteScalar(ConnectionString, CommandType.StoredProcedure, "CheckLyncUserExists",
|
||||
|
@ -3276,6 +3290,25 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return res > 0;
|
||||
}
|
||||
|
||||
public static bool LyncUserExists(int accountId, string sipAddress)
|
||||
{
|
||||
SqlParameter outParam = new SqlParameter("@Exists", SqlDbType.Bit);
|
||||
outParam.Direction = ParameterDirection.Output;
|
||||
|
||||
SqlHelper.ExecuteNonQuery(
|
||||
ConnectionString,
|
||||
CommandType.StoredProcedure,
|
||||
"LyncUserExists",
|
||||
new SqlParameter("@AccountID", accountId),
|
||||
new SqlParameter("@SipAddress", sipAddress),
|
||||
outParam
|
||||
);
|
||||
|
||||
return Convert.ToBoolean(outParam.Value);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static IDataReader GetLyncUsers(int itemId, string sortColumn, string sortDirection, int startRow, int count)
|
||||
{
|
||||
SqlParameter[] sqlParams = new SqlParameter[]
|
||||
|
|
|
@ -2119,6 +2119,11 @@ namespace WebsitePanel.EnterpriseServer
|
|||
ocs.SetUserPrimaryUri(instanceId, emailAddress);
|
||||
}
|
||||
|
||||
if (DataProvider.CheckLyncUserExists(account.AccountId))
|
||||
{
|
||||
LyncController.SetLyncUserGeneralSettings(itemId, accountId, emailAddress, null);
|
||||
}
|
||||
|
||||
// save account
|
||||
UpdateAccount(account);
|
||||
|
||||
|
|
|
@ -228,7 +228,7 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution
|
|||
|
||||
LyncUserPlan plan = GetLyncUserPlan(itemId, lyncUserPlanId);
|
||||
|
||||
if (!lync.CreateUser(org.OrganizationId, user.PrimaryEmailAddress, plan))
|
||||
if (!lync.CreateUser(org.OrganizationId, user.UserPrincipalName, plan))
|
||||
{
|
||||
TaskManager.CompleteResultTask(res, LyncErrorCodes.CANNOT_ADD_LYNC_USER);
|
||||
return res;
|
||||
|
@ -250,7 +250,7 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution
|
|||
|
||||
try
|
||||
{
|
||||
DataProvider.AddLyncUser(accountId, lyncUserPlanId);
|
||||
DataProvider.AddLyncUser(accountId, lyncUserPlanId, user.UserPrincipalName);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
@ -318,7 +318,7 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution
|
|||
usr = OrganizationController.GetAccount(itemId, accountId);
|
||||
|
||||
if (usr != null)
|
||||
user = lync.GetLyncUserGeneralSettings(org.OrganizationId, usr.PrimaryEmailAddress);
|
||||
user = lync.GetLyncUserGeneralSettings(org.OrganizationId, usr.UserPrincipalName);
|
||||
|
||||
if (user != null)
|
||||
{
|
||||
|
@ -341,6 +341,77 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution
|
|||
|
||||
}
|
||||
|
||||
public static LyncUserResult SetLyncUserGeneralSettings(int itemId, int accountId, string sipAddress, string lineUri)
|
||||
{
|
||||
LyncUserResult res = TaskManager.StartResultTask<LyncUserResult>("LYNC", "SET_LYNC_USER_GENERAL_SETTINGS");
|
||||
|
||||
LyncUser user = null;
|
||||
|
||||
try
|
||||
{
|
||||
Organization org = (Organization)PackageController.GetPackageItem(itemId);
|
||||
if (org == null)
|
||||
{
|
||||
throw new ApplicationException(
|
||||
string.Format("Organization is null. ItemId={0}", itemId));
|
||||
}
|
||||
|
||||
int lyncServiceId = GetLyncServiceID(org.PackageId);
|
||||
LyncServer lync = GetLyncServer(lyncServiceId, org.ServiceId);
|
||||
|
||||
OrganizationUser usr;
|
||||
usr = OrganizationController.GetAccount(itemId, accountId);
|
||||
|
||||
if (usr != null)
|
||||
user = lync.GetLyncUserGeneralSettings(org.OrganizationId, usr.UserPrincipalName);
|
||||
|
||||
if (user != null)
|
||||
{
|
||||
LyncUserPlan plan = ObjectUtils.FillObjectFromDataReader<LyncUserPlan>(DataProvider.GetLyncUserPlanByAccountId(accountId));
|
||||
|
||||
if (plan != null)
|
||||
{
|
||||
user.LyncUserPlanId = plan.LyncUserPlanId;
|
||||
user.LyncUserPlanName = plan.LyncUserPlanName;
|
||||
}
|
||||
|
||||
|
||||
if (!string.IsNullOrEmpty(sipAddress))
|
||||
{
|
||||
if (sipAddress != usr.UserPrincipalName)
|
||||
{
|
||||
if (DataProvider.LyncUserExists(accountId, sipAddress))
|
||||
{
|
||||
TaskManager.CompleteResultTask(res, LyncErrorCodes.ADDRESS_ALREADY_USED);
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
user.SipAddress = sipAddress;
|
||||
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(lineUri)) user.LineUri = lineUri;
|
||||
|
||||
lync.SetLyncUserGeneralSettings(org.OrganizationId, usr.UserPrincipalName, user);
|
||||
|
||||
DataProvider.UpdateLyncUser(accountId, sipAddress);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
TaskManager.CompleteResultTask(res, LyncErrorCodes.FAILED_SET_SETTINGS, ex);
|
||||
return res;
|
||||
}
|
||||
|
||||
res.IsSuccess = true;
|
||||
TaskManager.CompleteResultTask();
|
||||
return res;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static int DeleteOrganization(int itemId)
|
||||
{
|
||||
// check account
|
||||
|
@ -403,7 +474,7 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution
|
|||
OrganizationUser user;
|
||||
user = OrganizationController.GetAccount(itemId, accountId);
|
||||
|
||||
if (!lync.SetLyncUserPlan(org.OrganizationId, user.PrimaryEmailAddress, plan))
|
||||
if (!lync.SetLyncUserPlan(org.OrganizationId, user.UserPrincipalName, plan))
|
||||
{
|
||||
TaskManager.CompleteResultTask(res, LyncErrorCodes.CANNOT_ADD_LYNC_USER);
|
||||
return res;
|
||||
|
@ -431,7 +502,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<LyncUsersPagedResult>("LYNC", "GET_LYNC_USERS");
|
||||
|
||||
|
@ -513,7 +589,7 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution
|
|||
user = OrganizationController.GetAccount(itemId, accountId);
|
||||
|
||||
if (user != null)
|
||||
lync.DeleteUser(user.PrimaryEmailAddress);
|
||||
lync.DeleteUser(user.UserPrincipalName);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
@ -1125,6 +1125,14 @@ namespace WebsitePanel.EnterpriseServer
|
|||
ExchangeServerController.AddAuthoritativeDomain(itemId, domain.DomainId);
|
||||
}
|
||||
|
||||
OrganizationStatistics orgStatsExchange = ExchangeServerController.GetOrganizationStatistics(itemId);
|
||||
|
||||
if (orgStatsExchange.AllocatedMailboxes == 0)
|
||||
{
|
||||
ExchangeAcceptedDomainType newDomainType = ExchangeAcceptedDomainType.InternalRelay;
|
||||
ChangeOrganizationDomainType(org.ServiceId, domain.DomainId, newDomainType);
|
||||
}
|
||||
|
||||
if (org.IsOCSOrganization)
|
||||
{
|
||||
OCSController.AddDomain(domain.DomainName, itemId);
|
||||
|
@ -1500,8 +1508,15 @@ namespace WebsitePanel.EnterpriseServer
|
|||
|
||||
if (DataProvider.CheckOCSUserExists(accountId))
|
||||
{
|
||||
return BusinessErrorCodes.CURRENT_USER_IS_OCS_USER; ;
|
||||
return BusinessErrorCodes.CURRENT_USER_IS_OCS_USER;
|
||||
}
|
||||
|
||||
if (DataProvider.CheckLyncUserExists(accountId))
|
||||
{
|
||||
return BusinessErrorCodes.CURRENT_USER_IS_LYNC_USER;
|
||||
}
|
||||
|
||||
|
||||
// load organization
|
||||
Organization org = GetOrganization(itemId);
|
||||
if (org == null)
|
||||
|
|
|
@ -125,6 +125,23 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution
|
|||
item.TotalCRMUsers = crmOrganizationStatistics.Count;
|
||||
}
|
||||
|
||||
item.TotalLyncUsers = 0;
|
||||
item.TotalLyncEVUsers = 0;
|
||||
|
||||
if (report.LyncReport != null)
|
||||
{
|
||||
List<LyncUserStatistics> 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);
|
||||
}
|
||||
|
||||
|
@ -298,6 +315,18 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution
|
|||
}
|
||||
}
|
||||
|
||||
if (report.LyncReport != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
PopulateLyncReportItems(org, report, topReseller);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
TaskManager.WriteError(ex);
|
||||
}
|
||||
}
|
||||
|
||||
if (report.OrganizationReport != null)
|
||||
{
|
||||
try
|
||||
|
@ -309,6 +338,8 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution
|
|||
TaskManager.WriteError(ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private static int GetExchangeServiceID(int packageId)
|
||||
|
@ -316,6 +347,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,6 +457,12 @@ 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 +477,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.SipAddress;
|
||||
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;
|
||||
stats.DisplayName = lyncUser.DisplayName;
|
||||
}
|
||||
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<Organization> organizations;
|
||||
|
@ -490,7 +599,7 @@ 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<UserInfo> users;
|
||||
try
|
||||
|
@ -514,6 +623,7 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution
|
|||
GetUsersData(report, user.UserId, generateExchangeReport, generateSharePointReport,
|
||||
generateCRMReport,
|
||||
generateOrganizationReport,
|
||||
generateLyncReport,
|
||||
string.IsNullOrEmpty(topReseller) ? user.Username : topReseller);
|
||||
}
|
||||
}
|
||||
|
@ -524,7 +634,7 @@ 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 +644,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)
|
||||
{
|
||||
|
|
|
@ -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<Attachment> attacments = new List<Attachment>();
|
||||
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);
|
||||
|
||||
|
|
|
@ -1847,8 +1847,8 @@ namespace WebsitePanel.EnterpriseServer
|
|||
else if (isDomainPointer)
|
||||
{
|
||||
// domain pointer
|
||||
if (PackageController.GetPackageQuota(packageId, Quotas.OS_DOMAINPOINTERS).QuotaExhausted)
|
||||
return BusinessErrorCodes.ERROR_DOMAIN_QUOTA_LIMIT;
|
||||
//if (PackageController.GetPackageQuota(packageId, Quotas.OS_DOMAINPOINTERS).QuotaExhausted)
|
||||
//return BusinessErrorCodes.ERROR_DOMAIN_QUOTA_LIMIT;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2495,10 +2495,20 @@ namespace WebsitePanel.EnterpriseServer
|
|||
instantAlias = GetDomainItem(instantAliasId);
|
||||
}
|
||||
|
||||
string parentZone = domain.ZoneName;
|
||||
if (string.IsNullOrEmpty(parentZone))
|
||||
{
|
||||
DomainInfo parentDomain = GetDomain(domain.DomainId);
|
||||
parentZone = parentDomain.DomainName;
|
||||
}
|
||||
|
||||
|
||||
if (domain.WebSiteId > 0)
|
||||
{
|
||||
WebServerController.AddWebSitePointer(domain.WebSiteId,
|
||||
(domain.DomainName.Replace("." + domain.ZoneName, "") == domain.ZoneName) ? "" : domain.DomainName.Replace("." + domain.ZoneName, ""),
|
||||
((domain.DomainName.Replace("." + parentZone, "") == parentZone) |
|
||||
(domain.DomainName == parentZone))
|
||||
? "" : domain.DomainName.Replace("." + parentZone, ""),
|
||||
instantAlias.DomainId);
|
||||
}
|
||||
|
||||
|
@ -2507,12 +2517,14 @@ namespace WebsitePanel.EnterpriseServer
|
|||
List<DomainInfo> domains = GetDomainsByDomainItemId(domain.DomainId);
|
||||
foreach (DomainInfo d in domains)
|
||||
{
|
||||
|
||||
if (d.WebSiteId > 0)
|
||||
{
|
||||
WebServerController.AddWebSitePointer(d.WebSiteId,
|
||||
(d.DomainName.Replace("." + domain.ZoneName, "") == domain.ZoneName) ? "" : d.DomainName.Replace("." + domain.ZoneName, ""),
|
||||
((d.DomainName.Replace("." + parentZone, "") == parentZone) |
|
||||
(d.DomainName == parentZone))
|
||||
? "" : d.DomainName.Replace("." + parentZone, ""),
|
||||
instantAlias.DomainId);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
@ -171,15 +172,20 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return AddWebSite(packageId, hostName, domainId, ipAddressId, false, true);
|
||||
}
|
||||
|
||||
private static Regex regIP = new Regex(
|
||||
@"(?<First>2[0-4]\d|25[0-5]|[01]?\d\d?)\.(?<Second>2[0-4]\d|25"
|
||||
+ @"[0-5]|[01]?\d\d?)\.(?<Third>2[0-4]\d|25[0-5]|[01]?\d\d?)\.(?"
|
||||
+ @"<Fourth>2[0-4]\d|25[0-5]|[01]?\d\d?)",
|
||||
RegexOptions.IgnoreCase
|
||||
| RegexOptions.CultureInvariant
|
||||
| RegexOptions.IgnorePatternWhitespace
|
||||
| RegexOptions.Compiled
|
||||
);
|
||||
|
||||
private static bool IsValidIPAdddress(string addr)
|
||||
{
|
||||
System.Net.IPAddress ip;
|
||||
if (System.Net.IPAddress.TryParse(addr, out ip))
|
||||
{
|
||||
return ((ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6) |
|
||||
(ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork));
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static int AddWebSite(int packageId, string hostName, int domainId, int packageAddressId,
|
||||
bool addInstantAlias, bool ignoreGlobalDNSRecords)
|
||||
|
@ -269,12 +275,21 @@ namespace WebsitePanel.EnterpriseServer
|
|||
|
||||
if (dedicatedIp)
|
||||
{
|
||||
foreach (GlobalDnsRecord d in dnsRecords)
|
||||
foreach (GlobalDnsRecord d in dnsRecords)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(d.ExternalIP))
|
||||
{
|
||||
if (regIP.IsMatch(d.ExternalIP)) return BusinessErrorCodes.ERROR_GLOBALDNS_FOR_DEDICATEDIP;
|
||||
}
|
||||
if (!string.IsNullOrEmpty(d.ExternalIP))
|
||||
{
|
||||
if (!IsValidIPAdddress(d.ExternalIP)) return BusinessErrorCodes.ERROR_GLOBALDNS_FOR_DEDICATEDIP;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (domain.ZoneItemId > 0)
|
||||
{
|
||||
StringDictionary settings = ServerController.GetServiceSettings(serviceId);
|
||||
if (string.IsNullOrEmpty(settings["PublicSharedIP"]))
|
||||
return BusinessErrorCodes.ERROR_PUBLICSHAREDIP_FOR_SHAREDIP;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -680,7 +695,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
{
|
||||
if (!string.IsNullOrEmpty(d.ExternalIP))
|
||||
{
|
||||
if (regIP.IsMatch(d.ExternalIP)) return BusinessErrorCodes.ERROR_GLOBALDNS_FOR_DEDICATEDIP;
|
||||
if (!IsValidIPAdddress(d.ExternalIP)) return BusinessErrorCodes.ERROR_GLOBALDNS_FOR_DEDICATEDIP;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -694,7 +709,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
|
||||
// remove all web site pointers
|
||||
DomainInfo domain = ServerController.GetDomain(siteItem.Name);
|
||||
DomainInfo ZoneInfo = ServerController.GetDomain(domain.ZoneName);
|
||||
DomainInfo ZoneInfo = ServerController.GetDomain(domain.DomainItemId);
|
||||
|
||||
if (ZoneInfo == null)
|
||||
throw new Exception("Parent zone not found");
|
||||
|
@ -762,16 +777,36 @@ namespace WebsitePanel.EnterpriseServer
|
|||
ServerController.AddItemIPAddress(siteItemId, ipAddressId);
|
||||
|
||||
|
||||
string parentZone = domain.ZoneName;
|
||||
if (string.IsNullOrEmpty(parentZone))
|
||||
{
|
||||
DomainInfo parentDomain = ServerController.GetDomain(domain.DomainItemId);
|
||||
parentZone = parentDomain.DomainName;
|
||||
}
|
||||
|
||||
|
||||
AddWebSitePointer(siteItemId,
|
||||
(domain.DomainName.Replace("." + domain.ZoneName, "") == domain.ZoneName) ? "": domain.DomainName.Replace("." + domain.ZoneName,"")
|
||||
((domain.DomainName.Replace("." + parentZone, "") == parentZone) |
|
||||
(domain.DomainName == parentZone))
|
||||
? "" : domain.DomainName.Replace("." + parentZone, "")
|
||||
, ZoneInfo.DomainId, true, true, true);
|
||||
|
||||
foreach (DomainInfo pointer in pointers)
|
||||
{
|
||||
ZoneInfo = ServerController.GetDomain(pointer.ZoneName);
|
||||
string pointerParentZone = pointer.ZoneName;
|
||||
if (string.IsNullOrEmpty(pointerParentZone))
|
||||
{
|
||||
DomainInfo parentDomain = ServerController.GetDomain(pointer.DomainItemId);
|
||||
pointerParentZone = parentDomain.DomainName;
|
||||
}
|
||||
|
||||
|
||||
ZoneInfo = ServerController.GetDomain(pointerParentZone);
|
||||
|
||||
AddWebSitePointer(siteItemId,
|
||||
(pointer.DomainName.Replace("." + pointer.ZoneName, "") == pointer.ZoneName) ? "" : pointer.DomainName.Replace("." + pointer.ZoneName, "")
|
||||
((pointer.DomainName.Replace("." + pointerParentZone, "") == pointerParentZone) |
|
||||
(pointer.DomainName == pointerParentZone))
|
||||
? "" : pointer.DomainName.Replace("." + pointerParentZone, "")
|
||||
, ZoneInfo.DomainId, true, true, true);
|
||||
}
|
||||
|
||||
|
@ -838,6 +873,8 @@ namespace WebsitePanel.EnterpriseServer
|
|||
if (siteItem == null)
|
||||
return BusinessErrorCodes.ERROR_WEB_SITE_PACKAGE_ITEM_NOT_FOUND;
|
||||
|
||||
|
||||
|
||||
// place log record
|
||||
TaskManager.StartTask("WEB_SITE", "SWITCH_TO_SHARED_IP", siteItem.Name);
|
||||
TaskManager.ItemId = siteItemId;
|
||||
|
@ -847,11 +884,20 @@ namespace WebsitePanel.EnterpriseServer
|
|||
IPAddressInfo ip;
|
||||
|
||||
DomainInfo domain = ServerController.GetDomain(siteItem.Name);
|
||||
DomainInfo ZoneInfo = ServerController.GetDomain(domain.ZoneName);
|
||||
DomainInfo ZoneInfo = ServerController.GetDomain(domain.DomainItemId);
|
||||
|
||||
if (ZoneInfo == null)
|
||||
throw new Exception("Parent zone not found");
|
||||
|
||||
|
||||
if (ZoneInfo.ZoneItemId > 0)
|
||||
{
|
||||
StringDictionary settings = ServerController.GetServiceSettings(siteItem.ServiceId);
|
||||
if (string.IsNullOrEmpty(settings["PublicSharedIP"]))
|
||||
return BusinessErrorCodes.ERROR_PUBLICSHAREDIP_FOR_SHAREDIP;
|
||||
|
||||
}
|
||||
|
||||
//cleanup certificates
|
||||
List<SSLCertificate> certificates = GetCertificatesForSite(siteItemId);
|
||||
foreach (SSLCertificate c in certificates)
|
||||
|
@ -930,16 +976,35 @@ namespace WebsitePanel.EnterpriseServer
|
|||
siteItem.SiteIPAddressId = 0;
|
||||
PackageController.UpdatePackageItem(siteItem);
|
||||
|
||||
string parentZone = domain.ZoneName;
|
||||
if (string.IsNullOrEmpty(parentZone))
|
||||
{
|
||||
DomainInfo parentDomain = ServerController.GetDomain(domain.DomainItemId);
|
||||
parentZone = parentDomain.DomainName;
|
||||
}
|
||||
|
||||
AddWebSitePointer(siteItemId,
|
||||
(domain.DomainName.Replace("." + domain.ZoneName, "") == domain.ZoneName) ? "" : domain.DomainName.Replace("." + domain.ZoneName, "")
|
||||
((domain.DomainName.Replace("." + parentZone, "") == parentZone) |
|
||||
(domain.DomainName == parentZone))
|
||||
? "" : domain.DomainName.Replace("." + parentZone, "")
|
||||
, ZoneInfo.DomainId, true, true, true);
|
||||
|
||||
foreach (DomainInfo pointer in pointers)
|
||||
{
|
||||
ZoneInfo = ServerController.GetDomain(pointer.ZoneName);
|
||||
string pointerParentZone = pointer.ZoneName;
|
||||
if (string.IsNullOrEmpty(pointerParentZone))
|
||||
{
|
||||
DomainInfo parentDomain = ServerController.GetDomain(pointer.DomainItemId);
|
||||
pointerParentZone = parentDomain.DomainName;
|
||||
}
|
||||
|
||||
|
||||
ZoneInfo = ServerController.GetDomain(pointerParentZone);
|
||||
|
||||
AddWebSitePointer(siteItemId,
|
||||
(pointer.DomainName.Replace("." + pointer.ZoneName, "") == pointer.ZoneName) ? "" : pointer.DomainName.Replace("." + pointer.ZoneName, "")
|
||||
((pointer.DomainName.Replace("." + pointerParentZone, "") == pointerParentZone) |
|
||||
(pointer.DomainName == pointerParentZone))
|
||||
? "" : pointer.DomainName.Replace("." + pointerParentZone, "")
|
||||
, ZoneInfo.DomainId, true, true, true);
|
||||
}
|
||||
|
||||
|
@ -1213,6 +1278,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());
|
||||
}
|
||||
|
@ -2478,7 +2554,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;
|
||||
}
|
||||
|
@ -3246,7 +3322,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;
|
||||
}
|
||||
|
@ -3716,6 +3792,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 +3803,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);
|
||||
}
|
||||
}
|
||||
|
@ -3760,19 +3836,21 @@ Please ensure the space has been allocated {0} IP address as a dedicated one and
|
|||
private static int FindDomainForHeader(string header, List<DomainInfo> 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;
|
||||
|
|
|
@ -434,7 +434,7 @@
|
|||
<VisualStudio>
|
||||
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
|
||||
<WebProjectProperties>
|
||||
<UseIIS>True</UseIIS>
|
||||
<UseIIS>False</UseIIS>
|
||||
<AutoAssignPort>False</AutoAssignPort>
|
||||
<DevelopmentServerPort>9002</DevelopmentServerPort>
|
||||
<DevelopmentServerVPath>/</DevelopmentServerVPath>
|
||||
|
|
|
@ -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]
|
||||
|
@ -119,6 +119,13 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return LyncController.GetLyncUserGeneralSettings(itemId, accountId);
|
||||
}
|
||||
|
||||
[WebMethod]
|
||||
public LyncUserResult SetLyncUserGeneralSettings(int itemId, int accountId, string sipAddress, string lineUri)
|
||||
{
|
||||
return LyncController.SetLyncUserGeneralSettings(itemId, accountId, sipAddress, lineUri);
|
||||
}
|
||||
|
||||
|
||||
[WebMethod]
|
||||
public LyncUserResult SetUserLyncPlan(int itemId, int accountId, int lyncUserPlanId)
|
||||
{
|
||||
|
|
|
@ -113,7 +113,8 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
DirectoryEntry parent = entry.Parent;
|
||||
if (parent != null)
|
||||
{
|
||||
parent.Children.Remove(entry);
|
||||
//parent.Children.Remove(entry);
|
||||
entry.DeleteTree();
|
||||
parent.CommitChanges();
|
||||
}
|
||||
}
|
||||
|
@ -159,6 +160,14 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
collection.Value = value;
|
||||
}
|
||||
|
||||
public static void SetADObjectPropertyValue(DirectoryEntry oDE, string name, string[] values)
|
||||
{
|
||||
PropertyValueCollection collection = oDE.Properties[name];
|
||||
collection.Value = values;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static void SetADObjectPropertyValue(DirectoryEntry oDE, string name, Guid value)
|
||||
{
|
||||
PropertyValueCollection collection = oDE.Properties[name];
|
||||
|
@ -177,6 +186,19 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
return entry.Properties.Contains(name) ? entry.Properties[name][0] : null;
|
||||
}
|
||||
|
||||
public static string[] GetADObjectPropertyMultiValue(DirectoryEntry entry, string name)
|
||||
{
|
||||
if (!entry.Properties.Contains(name))
|
||||
return null;
|
||||
|
||||
List<string> returnList = new List<string>();
|
||||
for (int i = 0; i < entry.Properties[name].Count; i++)
|
||||
returnList.Add(entry.Properties[name][i].ToString());
|
||||
|
||||
return returnList.ToArray();
|
||||
}
|
||||
|
||||
|
||||
public static string GetADObjectStringProperty(DirectoryEntry entry, string name)
|
||||
{
|
||||
object ret = GetADObjectProperty(entry, name);
|
||||
|
|
|
@ -34,6 +34,6 @@
|
|||
public SharePointStatisticsReport SharePointReport { get; set; }
|
||||
public CRMStatisticsReport CRMReport { get; set; }
|
||||
public OrganizationStatisticsReport OrganizationReport { get; set; }
|
||||
|
||||
public LyncStatisticsReport LyncReport { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,6 +49,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
int mailboxPlanId;
|
||||
string mailboxPlan;
|
||||
string publicFolderPermission;
|
||||
string userPrincipalName;
|
||||
|
||||
public int AccountId
|
||||
{
|
||||
|
@ -142,5 +143,11 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
}
|
||||
|
||||
|
||||
public string UserPrincipalName
|
||||
{
|
||||
get { return this.userPrincipalName; }
|
||||
set { this.userPrincipalName = value; }
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
|
||||
bool CreateUser(string organizationId, string userUpn, LyncUserPlan plan);
|
||||
LyncUser GetLyncUserGeneralSettings(string organizationId, string userUpn);
|
||||
bool SetLyncUserGeneralSettings(string organizationId, string userUpn, LyncUser lyncUser);
|
||||
bool SetLyncUserPlan(string organizationId, string userUpn, LyncUserPlan plan);
|
||||
bool DeleteUser(string userUpn);
|
||||
|
||||
|
|
|
@ -70,5 +70,8 @@
|
|||
|
||||
public const string CANNOT_REMOVE_LYNC_FEDERATIONDOMAIN = "CANNOT_REMOVE_LYNC_FEDERATIONDOMAIN";
|
||||
|
||||
public const string FAILED_SET_SETTINGS = "FAILED_SET_SETTINGS";
|
||||
|
||||
public const string ADDRESS_ALREADY_USED = "ADDRESS_ALREADY_USED";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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; }
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,77 @@
|
|||
// 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<LyncUserStatistics>
|
||||
{
|
||||
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.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,SipAddress,PhoneNumber,Conferencing,EnterpriseVoice,Federation,InstantMessaging,MobileAccess");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -34,8 +34,8 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
{
|
||||
public class LyncUser
|
||||
{
|
||||
public string PrimaryUri { get; set; }
|
||||
public string PrimaryEmailAddress { get; set; }
|
||||
public string SipAddress { get; set; }
|
||||
public string UserPrincipalName { get; set; }
|
||||
public string DisplayName { get; set; }
|
||||
public string LineUri { get; set; }
|
||||
public int AccountID { get; set; }
|
||||
|
|
|
@ -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; }
|
||||
}
|
||||
}
|
|
@ -56,7 +56,9 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
sb.AppendFormat("{0},", ToCsvString(item.TotalPublicFoldersSize / 1024.0 / 1024.0));
|
||||
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.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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -66,5 +66,18 @@
|
|||
set;
|
||||
}
|
||||
|
||||
public int TotalLyncUsers
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public int TotalLyncEVUsers
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -64,6 +64,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
private string country;
|
||||
private string notes;
|
||||
private string domainUserName;
|
||||
private string userPrincipalName;
|
||||
|
||||
private bool disabled;
|
||||
private bool locked;
|
||||
|
@ -305,6 +306,11 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
set { subscriberNumber = value; }
|
||||
}
|
||||
|
||||
public string UserPrincipalName
|
||||
{
|
||||
get { return userPrincipalName; }
|
||||
set { userPrincipalName = value; }
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -88,6 +88,9 @@
|
|||
<Compile Include="HostedSolution\LyncConstants.cs" />
|
||||
<Compile Include="HostedSolution\LyncErrorCodes.cs" />
|
||||
<Compile Include="HostedSolution\LyncFederationDomain.cs" />
|
||||
<Compile Include="HostedSolution\LyncOrganizationStatistics.cs" />
|
||||
<Compile Include="HostedSolution\LyncUserStatistics.cs" />
|
||||
<Compile Include="HostedSolution\LyncStatisticsReport.cs" />
|
||||
<Compile Include="HostedSolution\LyncUser.cs" />
|
||||
<Compile Include="HostedSolution\LyncUserPlan.cs" />
|
||||
<Compile Include="HostedSolution\LyncUserPlanType.cs" />
|
||||
|
|
|
@ -2591,8 +2591,8 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
Command cmd = new Command("Set-Mailbox");
|
||||
cmd.Parameters.Add("Identity", accountName);
|
||||
cmd.Parameters.Add("PrimarySmtpAddress", primaryEmail);
|
||||
cmd.Parameters.Add("UserPrincipalName", primaryEmail);
|
||||
cmd.Parameters.Add("WindowsEmailAddress", primaryEmail);
|
||||
//cmd.Parameters.Add("UserPrincipalName", primaryEmail);
|
||||
//cmd.Parameters.Add("WindowsEmailAddress", primaryEmail);
|
||||
|
||||
ExecuteShellCommand(runSpace, cmd);
|
||||
}
|
||||
|
|
|
@ -607,15 +607,42 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
ExchangeLog.LogStart("GetDatabase");
|
||||
ExchangeLog.LogInfo("DAG: " + dagName);
|
||||
|
||||
//Get Dag Servers
|
||||
// this part of code handles mailboxnames like in the old 2007 provider
|
||||
// check if DAG is in reality DAG\mailboxdatabase
|
||||
string dagNameDAG = string.Empty;
|
||||
string dagNameMBX = string.Empty;
|
||||
bool isFixedDatabase = false;
|
||||
if (dagName.Contains("\\"))
|
||||
{
|
||||
// split the two parts and extract DAG-Name and mailboxdatabase-name
|
||||
string[] parts = dagName.Split(new char[] { '\\' }, 2, StringSplitOptions.None);
|
||||
dagNameDAG = parts[0];
|
||||
dagNameMBX = parts[1];
|
||||
// check that we realy have a database name
|
||||
if (!String.IsNullOrEmpty(dagNameMBX))
|
||||
{
|
||||
isFixedDatabase = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// there is no mailboxdatabase-name use the loadbalancing-code
|
||||
dagNameDAG = dagName;
|
||||
isFixedDatabase = false;
|
||||
}
|
||||
|
||||
//Get Dag Servers - with the name of the database availability group
|
||||
Collection<PSObject> dags = null;
|
||||
Command cmd = new Command("Get-DatabaseAvailabilityGroup");
|
||||
cmd.Parameters.Add("Identity", dagName);
|
||||
cmd.Parameters.Add("Identity", dagNameDAG);
|
||||
dags = ExecuteShellCommand(runSpace, cmd);
|
||||
|
||||
if (htBbalancer == null)
|
||||
htBbalancer = new Hashtable();
|
||||
|
||||
// use fully qualified dagName for loadbalancer. Thus if there are two services and one of them
|
||||
// contains only the DAG, the "fixed" database could also be used in loadbalancing. If you do not want this,
|
||||
// set either IsExcludedFromProvisioning or IsSuspendedFromProvisioning - it is not evaluated for fixed databases
|
||||
if (htBbalancer[dagName] == null)
|
||||
htBbalancer.Add(dagName, 0);
|
||||
|
||||
|
@ -628,35 +655,56 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
{
|
||||
System.Collections.Generic.List<string> lstDatabase = new System.Collections.Generic.List<string>();
|
||||
|
||||
foreach (object objServer in servers)
|
||||
if (!isFixedDatabase) // "old" loadbalancing code
|
||||
{
|
||||
foreach (object objServer in servers)
|
||||
{
|
||||
Collection<PSObject> databases = null;
|
||||
cmd = new Command("Get-MailboxDatabase");
|
||||
cmd.Parameters.Add("Server", ObjToString(objServer));
|
||||
databases = ExecuteShellCommand(runSpace, cmd);
|
||||
|
||||
foreach (PSObject objDatabase in databases)
|
||||
{
|
||||
if (((bool)GetPSObjectProperty(objDatabase, "IsExcludedFromProvisioning") == false) &&
|
||||
((bool)GetPSObjectProperty(objDatabase, "IsSuspendedFromProvisioning") == false))
|
||||
{
|
||||
string db = ObjToString(GetPSObjectProperty(objDatabase, "Identity"));
|
||||
|
||||
bool bAdd = true;
|
||||
foreach (string s in lstDatabase)
|
||||
{
|
||||
if (s.ToLower() == db.ToLower())
|
||||
{
|
||||
bAdd = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (bAdd)
|
||||
{
|
||||
lstDatabase.Add(db);
|
||||
ExchangeLog.LogInfo("AddDatabase: " + db);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else // new fixed database code
|
||||
{
|
||||
Collection<PSObject> databases = null;
|
||||
cmd = new Command("Get-MailboxDatabase");
|
||||
cmd.Parameters.Add("Server", ObjToString(objServer));
|
||||
cmd.Parameters.Add("Identity", dagNameMBX);
|
||||
databases = ExecuteShellCommand(runSpace, cmd);
|
||||
|
||||
// do not check "IsExcludedFromProvisioning" or "IsSuspended", just check if it is a member of the DAG
|
||||
foreach (PSObject objDatabase in databases)
|
||||
{
|
||||
if (((bool)GetPSObjectProperty(objDatabase, "IsExcludedFromProvisioning") == false) &&
|
||||
((bool)GetPSObjectProperty(objDatabase, "IsSuspendedFromProvisioning") == false))
|
||||
string dagSetting = ObjToString(GetPSObjectProperty(objDatabase, "MasterServerOrAvailabilityGroup"));
|
||||
if (dagNameDAG.Equals(dagSetting, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
string db = ObjToString(GetPSObjectProperty(objDatabase, "Identity"));
|
||||
|
||||
bool bAdd = true;
|
||||
foreach (string s in lstDatabase)
|
||||
{
|
||||
if (s.ToLower() == db.ToLower())
|
||||
{
|
||||
bAdd = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (bAdd)
|
||||
{
|
||||
lstDatabase.Add(db);
|
||||
ExchangeLog.LogInfo("AddDatabase: " + db);
|
||||
}
|
||||
lstDatabase.Add(dagNameMBX);
|
||||
ExchangeLog.LogInfo("AddFixedDatabase: " + dagNameMBX);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -127,6 +127,12 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
return GetLyncUserGeneralSettingsInternal(organizationId, userUpn);
|
||||
}
|
||||
|
||||
public bool SetLyncUserGeneralSettings(string organizationId, string userUpn, LyncUser lyncUser)
|
||||
{
|
||||
return SetLyncUserGeneralSettingsInternal(organizationId, userUpn, lyncUser);
|
||||
}
|
||||
|
||||
|
||||
public bool SetLyncUserPlan(string organizationId, string userUpn, LyncUserPlan plan)
|
||||
{
|
||||
return SetLyncUserPlanInternal(organizationId, userUpn, plan, null);
|
||||
|
@ -288,11 +294,14 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
Guid tenantId = (Guid)GetPSObjectProperty(result[0], "TenantId");
|
||||
|
||||
// create sip domain
|
||||
DeleteSipDomain(runSpace, sipDomain);
|
||||
|
||||
//clear the msRTCSIP-Domains, TenantID, ObjectID
|
||||
string path = AddADPrefix(GetOrganizationPath(organizationId));
|
||||
DirectoryEntry ou = ActiveDirectoryUtils.GetADObject(path);
|
||||
string[] sipDs = (string[])ActiveDirectoryUtils.GetADObjectPropertyMultiValue(ou, "msRTCSIP-Domains");
|
||||
|
||||
foreach (string sipD in sipDs)
|
||||
DeleteSipDomain(runSpace, sipD);
|
||||
|
||||
//clear the msRTCSIP-Domains, TenantID, ObjectID
|
||||
ActiveDirectoryUtils.ClearADObjectPropertyValue(ou, "msRTCSIP-Domains");
|
||||
ActiveDirectoryUtils.ClearADObjectPropertyValue(ou, "msRTCSIP-TenantId");
|
||||
ActiveDirectoryUtils.ClearADObjectPropertyValue(ou, "msRTCSIP-ObjectId");
|
||||
|
@ -383,6 +392,51 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
{
|
||||
tenantId = (Guid)GetPSObjectProperty(result[0], "TenantId");
|
||||
|
||||
string[] tmp = userUpn.Split('@');
|
||||
if (tmp.Length < 2) return false;
|
||||
|
||||
// Get SipDomains and verify existence
|
||||
bool bSipDomainExists = false;
|
||||
cmd = new Command("Get-CsSipDomain");
|
||||
Collection<PSObject> sipDomains = ExecuteShellCommand(runSpace, cmd, false);
|
||||
|
||||
foreach (PSObject domain in sipDomains)
|
||||
{
|
||||
string d = (string)GetPSObjectProperty(domain, "Name");
|
||||
if (d.ToLower() == tmp[1].ToLower())
|
||||
{
|
||||
bSipDomainExists = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
string path = string.Empty;
|
||||
|
||||
if (!bSipDomainExists)
|
||||
{
|
||||
// Create Sip Domain
|
||||
cmd = new Command("New-CsSipDomain");
|
||||
cmd.Parameters.Add("Identity", tmp[1].ToLower());
|
||||
ExecuteShellCommand(runSpace, cmd, false);
|
||||
|
||||
transaction.RegisterNewSipDomain(tmp[1].ToLower());
|
||||
|
||||
|
||||
path = AddADPrefix(GetOrganizationPath(organizationId));
|
||||
DirectoryEntry ou = ActiveDirectoryUtils.GetADObject(path);
|
||||
string[] sipDs = (string[])ActiveDirectoryUtils.GetADObjectPropertyMultiValue(ou, "msRTCSIP-Domains");
|
||||
List<string> listSipDs = new List<string>();
|
||||
listSipDs.AddRange(sipDs);
|
||||
listSipDs.Add(tmp[1]);
|
||||
|
||||
ActiveDirectoryUtils.SetADObjectPropertyValue(ou, "msRTCSIP-Domains", listSipDs.ToArray());
|
||||
ou.CommitChanges();
|
||||
|
||||
//Create simpleurls
|
||||
CreateSimpleUrl(runSpace, tmp[1].ToLower(), tenantId);
|
||||
transaction.RegisterNewSimpleUrl(tmp[1].ToLower(), tenantId.ToString());
|
||||
}
|
||||
|
||||
//enable for lync
|
||||
cmd = new Command("Enable-CsUser");
|
||||
cmd.Parameters.Add("Identity", userUpn);
|
||||
|
@ -397,13 +451,11 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
cmd.Parameters.Add("Identity", userUpn);
|
||||
result = ExecuteShellCommand(runSpace, cmd);
|
||||
|
||||
|
||||
string path = AddADPrefix(GetResultObjectDN(result));
|
||||
path = AddADPrefix(GetResultObjectDN(result));
|
||||
DirectoryEntry user = ActiveDirectoryUtils.GetADObject(path);
|
||||
ActiveDirectoryUtils.SetADObjectPropertyValue(user, "msRTCSIP-GroupingID", tenantId);
|
||||
ActiveDirectoryUtils.SetADObjectPropertyValue(user, "msRTCSIP-TenantId", tenantId);
|
||||
|
||||
string[] tmp = userUpn.Split('@');
|
||||
if (tmp.Length > 0)
|
||||
{
|
||||
string Url = SimpleUrlRoot + tmp[1];
|
||||
|
@ -462,8 +514,10 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
PSObject user = result[0];
|
||||
|
||||
lyncUser.DisplayName = (string)GetPSObjectProperty(user, "DisplayName");
|
||||
lyncUser.PrimaryUri = (string)GetPSObjectProperty(user, "SipAddress");
|
||||
lyncUser.SipAddress = (string)GetPSObjectProperty(user, "SipAddress");
|
||||
lyncUser.LineUri = (string)GetPSObjectProperty(user, "LineURI");
|
||||
|
||||
lyncUser.SipAddress = lyncUser.SipAddress.ToLower().Replace("sip:", "");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
@ -478,6 +532,114 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
return lyncUser;
|
||||
}
|
||||
|
||||
private bool SetLyncUserGeneralSettingsInternal(string organizationId, string userUpn, LyncUser lyncUser)
|
||||
{
|
||||
HostedSolutionLog.LogStart("SetLyncUserGeneralSettingsInternal");
|
||||
HostedSolutionLog.DebugInfo("organizationId: {0}", organizationId);
|
||||
HostedSolutionLog.DebugInfo("userUpn: {0}", userUpn);
|
||||
|
||||
bool ret = true;
|
||||
Runspace runSpace = null;
|
||||
Guid tenantId = Guid.Empty;
|
||||
LyncTransaction transaction = StartTransaction();
|
||||
|
||||
try
|
||||
{
|
||||
runSpace = OpenRunspace();
|
||||
Command cmd = new Command("Get-CsTenant");
|
||||
cmd.Parameters.Add("Identity", GetOrganizationPath(organizationId));
|
||||
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd, false);
|
||||
if ((result != null) && (result.Count > 0))
|
||||
{
|
||||
tenantId = (Guid)GetPSObjectProperty(result[0], "TenantId");
|
||||
|
||||
string[] tmp = userUpn.Split('@');
|
||||
if (tmp.Length < 2) return false;
|
||||
|
||||
// Get SipDomains and verify existence
|
||||
bool bSipDomainExists = false;
|
||||
cmd = new Command("Get-CsSipDomain");
|
||||
Collection<PSObject> sipDomains = ExecuteShellCommand(runSpace, cmd, false);
|
||||
|
||||
foreach (PSObject domain in sipDomains)
|
||||
{
|
||||
string d = (string)GetPSObjectProperty(domain, "Name");
|
||||
if (d.ToLower() == tmp[1].ToLower())
|
||||
{
|
||||
bSipDomainExists = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
string path = string.Empty;
|
||||
|
||||
if (!bSipDomainExists)
|
||||
{
|
||||
// Create Sip Domain
|
||||
cmd = new Command("New-CsSipDomain");
|
||||
cmd.Parameters.Add("Identity", tmp[1].ToLower());
|
||||
ExecuteShellCommand(runSpace, cmd, false);
|
||||
|
||||
transaction.RegisterNewSipDomain(tmp[1].ToLower());
|
||||
|
||||
|
||||
path = AddADPrefix(GetOrganizationPath(organizationId));
|
||||
DirectoryEntry ou = ActiveDirectoryUtils.GetADObject(path);
|
||||
string[] sipDs = (string[])ActiveDirectoryUtils.GetADObjectPropertyMultiValue(ou, "msRTCSIP-Domains");
|
||||
List<string> listSipDs = new List<string>();
|
||||
listSipDs.AddRange(sipDs);
|
||||
listSipDs.Add(tmp[1]);
|
||||
|
||||
ActiveDirectoryUtils.SetADObjectPropertyValue(ou, "msRTCSIP-Domains", listSipDs.ToArray());
|
||||
ou.CommitChanges();
|
||||
|
||||
//Create simpleurls
|
||||
CreateSimpleUrl(runSpace, tmp[1].ToLower(), tenantId);
|
||||
transaction.RegisterNewSimpleUrl(tmp[1].ToLower(), tenantId.ToString());
|
||||
|
||||
path = AddADPrefix(GetResultObjectDN(result));
|
||||
DirectoryEntry user = ActiveDirectoryUtils.GetADObject(path);
|
||||
|
||||
if (tmp.Length > 0)
|
||||
{
|
||||
string Url = SimpleUrlRoot + tmp[1];
|
||||
ActiveDirectoryUtils.SetADObjectPropertyValue(user, "msRTCSIP-BaseSimpleUrl", Url.ToLower());
|
||||
}
|
||||
user.CommitChanges();
|
||||
}
|
||||
}
|
||||
|
||||
cmd = new Command("Set-CsUser");
|
||||
cmd.Parameters.Add("Identity", userUpn);
|
||||
if (!string.IsNullOrEmpty(lyncUser.SipAddress)) cmd.Parameters.Add("SipAddress", "SIP:"+lyncUser.SipAddress);
|
||||
if (!string.IsNullOrEmpty(lyncUser.SipAddress)) cmd.Parameters.Add("LineUri", lyncUser.LineUri);
|
||||
|
||||
ExecuteShellCommand(runSpace, cmd, false);
|
||||
|
||||
//initiate addressbook generation
|
||||
cmd = new Command("Update-CsAddressBook");
|
||||
ExecuteShellCommand(runSpace, cmd, false);
|
||||
|
||||
//initiate user database replication
|
||||
cmd = new Command("Update-CsUserDatabase");
|
||||
ExecuteShellCommand(runSpace, cmd, false);
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ret = false;
|
||||
HostedSolutionLog.LogError("SetLyncUserGeneralSettingsInternal", ex);
|
||||
RollbackTransaction(transaction);
|
||||
}
|
||||
finally
|
||||
{
|
||||
CloseRunspace(runSpace);
|
||||
}
|
||||
HostedSolutionLog.LogEnd("SetLyncUserGeneralSettingsInternal");
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private bool SetLyncUserPlanInternal(string organizationId, string userUpn, LyncUserPlan plan, Runspace runSpace)
|
||||
{
|
||||
|
|
|
@ -529,6 +529,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
retUser.DomainUserName = GetDomainName(ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.SAMAccountName));
|
||||
retUser.DistinguishedName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.DistinguishedName);
|
||||
retUser.Locked = (bool)entry.InvokeGet(ADAttributes.AccountLocked);
|
||||
retUser.UserPrincipalName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.UserPrincipalName);
|
||||
|
||||
HostedSolutionLog.LogEnd("GetUserGeneralSettingsInternal");
|
||||
return retUser;
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -124,6 +124,24 @@ namespace WebsitePanel.Server
|
|||
}
|
||||
}
|
||||
|
||||
[WebMethod, SoapHeader("settings")]
|
||||
public bool SetLyncUserGeneralSettings(string organizationId, string userUpn, LyncUser lyncUser)
|
||||
{
|
||||
try
|
||||
{
|
||||
Log.WriteStart("{0}.SetLyncUserGeneralSettings", ProviderSettings.ProviderName);
|
||||
bool ret = Lync.SetLyncUserGeneralSettings(organizationId, userUpn, lyncUser);
|
||||
Log.WriteEnd("{0}.SetLyncUserGeneralSettings", ProviderSettings.ProviderName);
|
||||
return ret;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.WriteError(String.Format("Error: {0}.SetLyncUserGeneralSettings", ProviderSettings.ProviderName), ex);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[WebMethod, SoapHeader("settings")]
|
||||
public bool SetLyncUserPlan(string organizationId, string userUpn, LyncUserPlan plan)
|
||||
{
|
||||
|
|
|
@ -481,7 +481,9 @@
|
|||
<Control key="public_folder_mailflow" src="WebsitePanel/ExchangeServer/ExchangePublicFolderMailFlowSettings.ascx" title="ExchangePublicFolderMailFlowSettings" type="View" />
|
||||
<Control key="public_folder_mailenable" src="WebsitePanel/ExchangeServer/ExchangePublicFolderMailEnable.ascx" title="ExchangePublicFolderMailEnable" type="View" />
|
||||
<Control key="domains" src="WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx" title="ExchangeDomainNames" type="View" />
|
||||
<Control key="add_domain" src="WebsitePanel/ExchangeServer/ExchangeAddDomainName.ascx" title="ExchangeAddDomainName" type="View" />
|
||||
<Control key="org_domains" src="WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx" title="OrganizationDomainNames" type="View" />
|
||||
<Control key="org_add_domain" src="WebsitePanel/ExchangeServer/OrganizationAddDomainName.ascx" title="OrganizationAddDomainName" type="View" />
|
||||
<Control key="add_domain" src="WebsitePanel/ExchangeServer/ExchangeAddDomainName.ascx" title="ExchangeAddDomainName" type="View" />
|
||||
<Control key="domain_records" src="WebsitePanel/ExchangeServer/ExchangeDomainRecords.ascx" title="ExchangeDomainRecords" type="View" />
|
||||
<Control key="storage_usage" src="WebsitePanel/ExchangeServer/ExchangeStorageUsage.ascx" title="ExchangeStorageUsage" type="View" />
|
||||
<Control key="storage_usage_details" src="WebsitePanel/ExchangeServer/ExchangeStorageUsageBreakdown.ascx" title="ExchangeStorageUsageBreakdown" type="View" />
|
||||
|
|
|
@ -1059,6 +1059,9 @@
|
|||
<data name="Error.610" xml:space="preserve">
|
||||
<value>Invalid Global DNS entries in platform server configuration for dedicated IP address usage. Contact you platform administrator</value>
|
||||
</data>
|
||||
<data name="Error.611" xml:space="preserve">
|
||||
<value>Invalid public shared ip address in platform server configuration for shared IP address usage. Contact you platform administrator</value>
|
||||
</data>
|
||||
<data name="Error.700" xml:space="preserve">
|
||||
<value>Specified mail domain already exists on the service</value>
|
||||
</data>
|
||||
|
@ -3173,6 +3176,9 @@
|
|||
<data name="Warning.2709" xml:space="preserve">
|
||||
<value>Cannot delete user account as it is used in OCS.</value>
|
||||
</data>
|
||||
<data name="Warning.2710" xml:space="preserve">
|
||||
<value>Cannot delete user account as it is used in Lync.</value>
|
||||
</data>
|
||||
<data name="Quota.DNS.PrimaryZones" xml:space="preserve">
|
||||
<value>B2B Primary Zones Allowed</value>
|
||||
</data>
|
||||
|
|
|
@ -106,7 +106,7 @@ namespace WebsitePanel.Portal
|
|||
WebSitesList.DataBind();
|
||||
}
|
||||
|
||||
if ((type == DomainType.DomainPointer || (type == DomainType.Domain && cntx.Quotas[Quotas.OS_DOMAINPOINTERS].QuotaAllocatedValue == 0)) && !IsPostBack)
|
||||
if ((type == DomainType.DomainPointer || (type == DomainType.Domain && !cntx.Quotas[Quotas.OS_DOMAINPOINTERS].QuotaExhausted)) && !IsPostBack)
|
||||
{
|
||||
// bind mail domains
|
||||
MailDomainsList.DataSource = ES.Services.MailServers.GetMailDomains(PanelSecurity.PackageId, false);
|
||||
|
@ -135,7 +135,7 @@ namespace WebsitePanel.Portal
|
|||
WebSitesList.Enabled = PointWebSite.Checked;
|
||||
|
||||
// point mail domain
|
||||
PointMailDomainPanel.Visible = (type == DomainType.DomainPointer || (type == DomainType.Domain && cntx.Quotas[Quotas.OS_DOMAINPOINTERS].QuotaAllocatedValue == 0))
|
||||
PointMailDomainPanel.Visible = (type == DomainType.DomainPointer || (type == DomainType.Domain && !cntx.Quotas[Quotas.OS_DOMAINPOINTERS].QuotaExhausted))
|
||||
&& cntx.Groups.ContainsKey(ResourceGroups.Mail) && MailDomainsList.Items.Count > 0;
|
||||
MailDomainsList.Enabled = PointMailDomain.Checked;
|
||||
|
||||
|
@ -212,7 +212,7 @@ namespace WebsitePanel.Portal
|
|||
pointWebSiteId = Utils.ParseInt(WebSitesList.SelectedValue, 0);
|
||||
}
|
||||
|
||||
if (type == DomainType.DomainPointer || (type == DomainType.Domain && cntx.Quotas[Quotas.OS_DOMAINPOINTERS].QuotaAllocatedValue == 0))
|
||||
if (type == DomainType.DomainPointer || (type == DomainType.Domain && !cntx.Quotas[Quotas.OS_DOMAINPOINTERS].QuotaExhausted))
|
||||
{
|
||||
if (PointMailDomain.Checked && MailDomainsList.Items.Count > 0)
|
||||
pointMailDomainId = Utils.ParseInt(MailDomainsList.SelectedValue, 0);
|
||||
|
|
|
@ -62,6 +62,13 @@ namespace WebsitePanel.Portal
|
|||
set { ViewState["HideMailDomains"] = value; }
|
||||
}
|
||||
|
||||
public bool HideMailDomainPointers
|
||||
{
|
||||
get { return (ViewState["HideMailDomainPointers"] != null) ? (bool)ViewState["HideMailDomainPointers"] : false; }
|
||||
set { ViewState["HideMailDomainPointers"] = value; }
|
||||
}
|
||||
|
||||
|
||||
public bool HideDomainPointers
|
||||
{
|
||||
get { return (ViewState["HideDomainPointers"] != null) ? (bool)ViewState["HideDomainPointers"] : false; }
|
||||
|
@ -111,6 +118,7 @@ namespace WebsitePanel.Portal
|
|||
|
||||
WebSite[] sites = null;
|
||||
Hashtable htSites = new Hashtable();
|
||||
Hashtable htMailDomainPointers = new Hashtable();
|
||||
if (HideWebSites)
|
||||
{
|
||||
sites = ES.Services.WebServers.GetWebSites(PackageId, false);
|
||||
|
@ -127,6 +135,25 @@ namespace WebsitePanel.Portal
|
|||
}
|
||||
}
|
||||
|
||||
if (HideMailDomainPointers)
|
||||
{
|
||||
Providers.Mail.MailDomain[] mailDomains = ES.Services.MailServers.GetMailDomains(PackageId, false);
|
||||
|
||||
foreach (Providers.Mail.MailDomain mailDomain in mailDomains)
|
||||
{
|
||||
DomainInfo[] pointers = ES.Services.MailServers.GetMailDomainPointers(mailDomain.Id);
|
||||
if (pointers != null)
|
||||
{
|
||||
foreach (DomainInfo p in pointers)
|
||||
{
|
||||
if (htMailDomainPointers[p.DomainName.ToLower()] == null) htMailDomainPointers.Add(p.DomainName.ToLower(), 1);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ddlDomains.Items.Clear();
|
||||
|
||||
// add "select" item
|
||||
|
@ -148,7 +175,15 @@ namespace WebsitePanel.Portal
|
|||
}
|
||||
}
|
||||
}
|
||||
else if (HideInstantAlias && domain.IsInstantAlias)
|
||||
|
||||
|
||||
if (HideMailDomainPointers)
|
||||
{
|
||||
if (htMailDomainPointers[domain.DomainName.ToLower()] != null) continue;
|
||||
}
|
||||
|
||||
|
||||
if (HideInstantAlias && domain.IsInstantAlias)
|
||||
continue;
|
||||
else if (HideMailDomains && domain.MailDomainId > 0)
|
||||
continue;
|
||||
|
|
|
@ -174,4 +174,10 @@
|
|||
<data name="Text.PageName" xml:space="preserve">
|
||||
<value>Mailboxes</value>
|
||||
</data>
|
||||
<data name="ddlSearchColumnUserPrincipalName.Text" xml:space="preserve">
|
||||
<value>Login</value>
|
||||
</data>
|
||||
<data name="gvUsersLogin.Header" xml:space="preserve">
|
||||
<value>Login</value>
|
||||
</data>
|
||||
</root>
|
|
@ -0,0 +1,138 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="btnCancel" xml:space="preserve">
|
||||
<value>Cancel</value>
|
||||
</data>
|
||||
<data name="FormComments.Text" xml:space="preserve">
|
||||
<value>Select a domain name, e.g. "mydomain.com" or "sub.mydomain.com"</value>
|
||||
</data>
|
||||
<data name="locTitle.Text" xml:space="preserve">
|
||||
<value>Add Domain Name</value>
|
||||
</data>
|
||||
<data name="Text.PageName" xml:space="preserve">
|
||||
<value>Domain Names</value>
|
||||
</data>
|
||||
<data name="valRequireCorrectDomain.ErrorMessage" xml:space="preserve">
|
||||
<value>Please enter correct domain name, e.g. "mydomain.com" or "sub.mydomain.com"</value>
|
||||
</data>
|
||||
<data name="valRequireCorrectDomain.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
</root>
|
|
@ -0,0 +1,167 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="btnAddDomain.Text" xml:space="preserve">
|
||||
<value>Add New Domain</value>
|
||||
</data>
|
||||
<data name="btnSetDefaultDomain.Text" xml:space="preserve">
|
||||
<value>Set Default Domain</value>
|
||||
</data>
|
||||
<data name="cmdDelete.OnClientClick" xml:space="preserve">
|
||||
<value>if(!confirm('Are you sure you want to delete selected domain?')) return false; else ShowProgressDialog('Deleting Domain...');</value>
|
||||
</data>
|
||||
<data name="cmdDelete.Text" xml:space="preserve">
|
||||
<value>Delete</value>
|
||||
</data>
|
||||
<data name="cmdDelete.ToolTip" xml:space="preserve">
|
||||
<value>Delete Domain Name</value>
|
||||
</data>
|
||||
<data name="gvDomains.Empty" xml:space="preserve">
|
||||
<value>No domains have been added yet. To add a new domain click "Add New Domain" button.</value>
|
||||
</data>
|
||||
<data name="gvDomainsDefault.Header" xml:space="preserve">
|
||||
<value>Default Domain</value>
|
||||
</data>
|
||||
<data name="gvDomainsName.Header" xml:space="preserve">
|
||||
<value>Domain Name</value>
|
||||
</data>
|
||||
<data name="HSFormComments.Text" xml:space="preserve">
|
||||
<value><p>Each organization can have several domain names. These domain names are used as part of the primary e-mail address (UPN) of the new accounts. Exchange-enabled organizations use domain name when creating e-mail addresses for mailboxes, and distribution lists. Domain name is also used when creating new site collection in SharePoint.</p>
|
||||
<p>Default domain name is selected by default when creating a new e-mail address. You can always change default domain name and it will not affect existing accounts.</p>
|
||||
<p>For each domain name a corresponding DNS Zone is created. You can edit DNS zone records by clicking domain name link. If you are unsure about the structure of DNS zone, please do not modify zone records.</p></value>
|
||||
</data>
|
||||
<data name="locQuota.Text" xml:space="preserve">
|
||||
<value>Total Domain Names Used:</value>
|
||||
</data>
|
||||
<data name="locTitle.Text" xml:space="preserve">
|
||||
<value>Domain Names</value>
|
||||
</data>
|
||||
<data name="Text.PageName" xml:space="preserve">
|
||||
<value>Domain Names</value>
|
||||
</data>
|
||||
<data name="gvDomainsType.Header" xml:space="preserve">
|
||||
<value>Domain Type</value>
|
||||
</data>
|
||||
<data name="gvDomainsTypeChange.Header" xml:space="preserve">
|
||||
<value>Change Type</value>
|
||||
</data>
|
||||
<data name="btnChangeDomain.Text" xml:space="preserve">
|
||||
<value>Change</value>
|
||||
</data>
|
||||
</root>
|
|
@ -236,4 +236,7 @@
|
|||
<data name="valRequireDisplayName.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="lblUserPrincipalName" xml:space="preserve">
|
||||
<value>Login Name:</value>
|
||||
</data>
|
||||
</root>
|
|
@ -180,4 +180,10 @@
|
|||
<data name="locTenantQuota.Text" xml:space="preserve">
|
||||
<value>Total Users Created for this Tenant:</value>
|
||||
</data>
|
||||
<data name="ddlSearchColumnUserPrincipalName.Text" xml:space="preserve">
|
||||
<value>Login</value>
|
||||
</data>
|
||||
<data name="gvUsersLogin.Header" xml:space="preserve">
|
||||
<value>Login</value>
|
||||
</data>
|
||||
</root>
|
|
@ -147,6 +147,14 @@
|
|||
</tr>
|
||||
</table>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:CheckBox ID="chkSendInstructions" runat="server" meta:resourcekey="chkSendInstructions" Text="Send Setup Instructions" Checked="true" />
|
||||
</td>
|
||||
<td><wsp:EmailControl id="sendInstructionEmail" runat="server" RequiredEnabled="true" ValidationGroup="CreateMailbox"></wsp:EmailControl></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<div class="FormFooterClean">
|
||||
|
|
|
@ -65,13 +65,24 @@ namespace WebsitePanel.Portal.ExchangeServer
|
|||
return;
|
||||
}
|
||||
|
||||
PackageInfo package = ES.Services.Packages.GetPackage(PanelSecurity.PackageId);
|
||||
if (package != null)
|
||||
string instructions = ES.Services.ExchangeServer.GetMailboxSetupInstructions(PanelRequest.ItemID, PanelRequest.AccountID, false, false, false);
|
||||
if (!string.IsNullOrEmpty(instructions))
|
||||
{
|
||||
//UserInfo user = ES.Services.Users.GetUserById(package.UserId);
|
||||
//if (user != null)
|
||||
//sendInstructionEmail.Text = user.Email;
|
||||
chkSendInstructions.Checked = chkSendInstructions.Visible = sendInstructionEmail.Visible = true;
|
||||
PackageInfo package = ES.Services.Packages.GetPackage(PanelSecurity.PackageId);
|
||||
if (package != null)
|
||||
{
|
||||
UserInfo user = ES.Services.Users.GetUserById(package.UserId);
|
||||
if (user != null)
|
||||
sendInstructionEmail.Text = user.Email;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
chkSendInstructions.Checked = chkSendInstructions.Visible = sendInstructionEmail.Visible = false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
WebsitePanel.Providers.HostedSolution.ExchangeMailboxPlan[] plans = ES.Services.ExchangeServer.GetExchangeMailboxPlans(PanelRequest.ItemID);
|
||||
|
||||
|
@ -124,8 +135,8 @@ namespace WebsitePanel.Portal.ExchangeServer
|
|||
name,
|
||||
domain,
|
||||
password.Password,
|
||||
false,
|
||||
"",
|
||||
chkSendInstructions.Checked,
|
||||
sendInstructionEmail.Text,
|
||||
Convert.ToInt32(mailboxPlanSelector.MailboxPlanId),
|
||||
subscriberNumber);
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
|
@ -327,6 +355,24 @@ namespace WebsitePanel.Portal.ExchangeServer {
|
|||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.MailboxPlanSelector mailboxPlanSelector;
|
||||
|
||||
/// <summary>
|
||||
/// chkSendInstructions control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.CheckBox chkSendInstructions;
|
||||
|
||||
/// <summary>
|
||||
/// sendInstructionEmail control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.UserControls.EmailControl sendInstructionEmail;
|
||||
|
||||
/// <summary>
|
||||
/// btnCreate control.
|
||||
/// </summary>
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
<asp:ListItem Value="PrimaryEmailAddress" meta:resourcekey="ddlSearchColumnEmail">Email</asp:ListItem>
|
||||
<asp:ListItem Value="AccountName" meta:resourcekey="ddlSearchColumnAccountName">AccountName</asp:ListItem>
|
||||
<asp:ListItem Value="SubscriberNumber" meta:resourcekey="ddlSearchColumnSubscriberNumber">Account Number</asp:ListItem>
|
||||
<asp:ListItem Value="UserPrincipalName" meta:resourcekey="ddlSearchColumnUserPrincipalName">Login</asp:ListItem>
|
||||
</asp:DropDownList><asp:TextBox ID="txtSearchValue" runat="server" CssClass="NormalTextBox" Width="100"></asp:TextBox><asp:ImageButton ID="cmdSearch" Runat="server" meta:resourcekey="cmdSearch" SkinID="SearchButton"
|
||||
CausesValidation="false"/>
|
||||
</asp:Panel>
|
||||
|
@ -67,6 +68,15 @@
|
|||
</asp:hyperlink>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
<asp:TemplateField HeaderText="gvUsersLogin" SortExpression="UserPrincipalName">
|
||||
<ItemStyle></ItemStyle>
|
||||
<ItemTemplate>
|
||||
<asp:hyperlink id="lnk1" runat="server"
|
||||
NavigateUrl='<%# GetOrganizationUserEditUrl(Eval("AccountId").ToString()) %>'>
|
||||
<%# Eval("UserPrincipalName") %>
|
||||
</asp:hyperlink>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
<asp:BoundField HeaderText="gvMailboxesEmail" DataField="PrimaryEmailAddress" SortExpression="PrimaryEmailAddress" ItemStyle-Width="25%" />
|
||||
<asp:BoundField HeaderText="gvSubscriberNumber" DataField="SubscriberNumber" ItemStyle-Width="10%" />
|
||||
<asp:BoundField HeaderText="gvMailboxesMailboxPlan" DataField="MailboxPlan" SortExpression="MailboxPlan" ItemStyle-Width="50%" />
|
||||
|
|
|
@ -47,7 +47,7 @@ namespace WebsitePanel.Portal.ExchangeServer
|
|||
{
|
||||
if (cntx.Quotas[Quotas.EXCHANGE2007_ISCONSUMER].QuotaAllocatedValue != 1)
|
||||
{
|
||||
gvMailboxes.Columns[2].Visible = false;
|
||||
gvMailboxes.Columns[3].Visible = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -141,5 +141,13 @@ namespace WebsitePanel.Portal.ExchangeServer
|
|||
|
||||
}
|
||||
|
||||
|
||||
public string GetOrganizationUserEditUrl(string accountId)
|
||||
{
|
||||
return EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "edit_user",
|
||||
"AccountID=" + accountId,
|
||||
"ItemID=" + PanelRequest.ItemID,
|
||||
"Context=User");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OrganizationAddDomainName.ascx.cs" Inherits="WebsitePanel.Portal.ExchangeServer.OrganizationAddDomainName" %>
|
||||
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||
<%@ Register Src="UserControls/Menu.ascx" TagName="Menu" TagPrefix="wsp" %>
|
||||
<%@ Register Src="UserControls/Breadcrumb.ascx" TagName="Breadcrumb" TagPrefix="wsp" %>
|
||||
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||
|
||||
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||
|
||||
<div id="ExchangeContainer">
|
||||
<div class="Module">
|
||||
<div class="Header">
|
||||
<wsp:Breadcrumb id="breadcrumb" runat="server" PageName="Text.PageName" />
|
||||
</div>
|
||||
<div class="Left">
|
||||
<wsp:Menu id="menu" runat="server" SelectedItem="domains" />
|
||||
</div>
|
||||
<div class="Content">
|
||||
<div class="Center">
|
||||
<div class="Title">
|
||||
<asp:Image ID="Image1" SkinID="ExchangeDomainNameAdd48" runat="server" />
|
||||
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Add Domain"></asp:Localize>
|
||||
</div>
|
||||
<div class="FormBody">
|
||||
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||
<table>
|
||||
<tr>
|
||||
<td class="FormLabel150"><asp:Localize ID="locDomainName" runat="server" meta:resourcekey="locDomainName" Text="Domain Name:"></asp:Localize></td>
|
||||
<td>
|
||||
<asp:DropDownList id="ddlDomains" runat="server" CssClass="NormalTextBox" DataTextField="DomainName" DataValueField="DomainID" style="vertical-align:middle;"></asp:DropDownList>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
<div class="FormFooterClean">
|
||||
<asp:Button id="btnAdd" runat="server" Text="Add Domain" CssClass="Button1" meta:resourcekey="btnAdd" ValidationGroup="CreateDomain" OnClick="btnAdd_Click" OnClientClick="ShowProgressDialog('Creating Domain...');"></asp:Button>
|
||||
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="CreateDomain" />
|
||||
<asp:Button id="btnCancel" runat="server" Text="Cancel" CssClass="Button1" meta:resourcekey="btnCancel" OnClick="btnCancel_Click"></asp:Button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,121 @@
|
|||
// 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.Data;
|
||||
using System.Text;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using WebsitePanel.EnterpriseServer;
|
||||
using WebsitePanel.Providers.HostedSolution;
|
||||
|
||||
namespace WebsitePanel.Portal.ExchangeServer
|
||||
{
|
||||
public partial class OrganizationAddDomainName : WebsitePanelModuleBase
|
||||
{
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
DomainInfo[] domains = ES.Services.Servers.GetMyDomains(PanelSecurity.PackageId);
|
||||
|
||||
Organization[] orgs = ES.Services.Organizations.GetOrganizations(PanelSecurity.PackageId, false);
|
||||
|
||||
List<OrganizationDomainName> list = new List<OrganizationDomainName>();
|
||||
|
||||
foreach (Organization o in orgs)
|
||||
{
|
||||
OrganizationDomainName[] tmpList = ES.Services.Organizations.GetOrganizationDomains(o.Id);
|
||||
|
||||
foreach (OrganizationDomainName name in tmpList) list.Add(name);
|
||||
}
|
||||
|
||||
foreach (DomainInfo d in domains)
|
||||
{
|
||||
if (!d.IsDomainPointer)
|
||||
{
|
||||
bool bAdd = true;
|
||||
foreach (OrganizationDomainName acceptedDomain in list)
|
||||
{
|
||||
if (d.DomainName.ToLower() == acceptedDomain.DomainName.ToLower())
|
||||
{
|
||||
bAdd = false;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
if (bAdd) ddlDomains.Items.Add(d.DomainName.ToLower());
|
||||
}
|
||||
}
|
||||
|
||||
if (ddlDomains.Items.Count == 0)
|
||||
{
|
||||
ddlDomains.Visible= btnAdd.Enabled = false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
protected void btnAdd_Click(object sender, EventArgs e)
|
||||
{
|
||||
AddDomain();
|
||||
}
|
||||
|
||||
protected void btnCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "org_domains", "SpaceID=" + PanelSecurity.PackageId));
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void AddDomain()
|
||||
{
|
||||
if (!Page.IsValid)
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
int result = ES.Services.Organizations.AddOrganizationDomain(PanelRequest.ItemID,
|
||||
ddlDomains.SelectedValue.Trim());
|
||||
|
||||
if (result < 0)
|
||||
{
|
||||
messageBox.ShowResultMessage(result);
|
||||
return;
|
||||
}
|
||||
|
||||
Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "org_domains",
|
||||
"SpaceID=" + PanelSecurity.PackageId));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
messageBox.ShowErrorMessage("EXCHANGE_ADD_DOMAIN", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,142 @@
|
|||
// 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.
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace WebsitePanel.Portal.ExchangeServer {
|
||||
|
||||
|
||||
public partial class OrganizationAddDomainName {
|
||||
|
||||
/// <summary>
|
||||
/// asyncTasks control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
|
||||
|
||||
/// <summary>
|
||||
/// breadcrumb control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Breadcrumb breadcrumb;
|
||||
|
||||
/// <summary>
|
||||
/// menu control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Menu menu;
|
||||
|
||||
/// <summary>
|
||||
/// Image1 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Image Image1;
|
||||
|
||||
/// <summary>
|
||||
/// locTitle control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locTitle;
|
||||
|
||||
/// <summary>
|
||||
/// messageBox control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox;
|
||||
|
||||
/// <summary>
|
||||
/// locDomainName control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locDomainName;
|
||||
|
||||
/// <summary>
|
||||
/// ddlDomains control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.DropDownList ddlDomains;
|
||||
|
||||
/// <summary>
|
||||
/// btnAdd control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Button btnAdd;
|
||||
|
||||
/// <summary>
|
||||
/// ValidationSummary1 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.ValidationSummary ValidationSummary1;
|
||||
|
||||
/// <summary>
|
||||
/// btnCancel control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Button btnCancel;
|
||||
}
|
||||
}
|
|
@ -92,6 +92,15 @@
|
|||
|
||||
</table>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:CheckBox ID="chkSendInstructions" runat="server" meta:resourcekey="chkSendInstructions" Text="Send Setup Instructions" Checked="true" />
|
||||
</td>
|
||||
<td><wsp:EmailControl id="sendInstructionEmail" runat="server" RequiredEnabled="true" ValidationGroup="CreateMailbox"></wsp:EmailControl></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="FormFooterClean">
|
||||
<asp:Button id="btnCreate" runat="server" Text="Create Mailbox"
|
||||
CssClass="Button1" meta:resourcekey="btnCreate" ValidationGroup="CreateMailbox"
|
||||
|
|
|
@ -58,12 +58,21 @@ namespace WebsitePanel.Portal.HostedSolution
|
|||
messageBox.ShowMessage(passwordPolicy, "CREATE_ORGANIZATION_USER", "HostedOrganization");
|
||||
}
|
||||
|
||||
PackageInfo package = ES.Services.Packages.GetPackage(PanelSecurity.PackageId);
|
||||
if (package != null)
|
||||
string instructions = ES.Services.Organizations.GetOrganizationUserSummuryLetter(PanelRequest.ItemID, PanelRequest.AccountID, false, false, false);
|
||||
if (!string.IsNullOrEmpty(instructions))
|
||||
{
|
||||
//UserInfo user = ES.Services.Users.GetUserById(package.UserId);
|
||||
//if (user != null)
|
||||
//sendInstructionEmail.Text = user.Email;
|
||||
chkSendInstructions.Checked = chkSendInstructions.Visible = sendInstructionEmail.Visible = true;
|
||||
PackageInfo package = ES.Services.Packages.GetPackage(PanelSecurity.PackageId);
|
||||
if (package != null)
|
||||
{
|
||||
UserInfo user = ES.Services.Users.GetUserById(package.UserId);
|
||||
if (user != null)
|
||||
sendInstructionEmail.Text = user.Email;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
chkSendInstructions.Checked = chkSendInstructions.Visible = sendInstructionEmail.Visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -96,8 +105,8 @@ namespace WebsitePanel.Portal.HostedSolution
|
|||
email.DomainName.ToLower(),
|
||||
password.Password,
|
||||
txtSubscriberNumber.Text.Trim(),
|
||||
false,
|
||||
"");
|
||||
chkSendInstructions.Checked,
|
||||
sendInstructionEmail.Text);
|
||||
|
||||
if (accountId < 0)
|
||||
{
|
||||
|
|
|
@ -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.
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
|
@ -219,6 +247,24 @@ namespace WebsitePanel.Portal.HostedSolution {
|
|||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.PasswordControl password;
|
||||
|
||||
/// <summary>
|
||||
/// chkSendInstructions control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.CheckBox chkSendInstructions;
|
||||
|
||||
/// <summary>
|
||||
/// sendInstructionEmail control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.UserControls.EmailControl sendInstructionEmail;
|
||||
|
||||
/// <summary>
|
||||
/// btnCreate control.
|
||||
/// </summary>
|
||||
|
|
|
@ -0,0 +1,76 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OrganizationDomainNames.ascx.cs" Inherits="WebsitePanel.Portal.ExchangeServer.OrganizationDomainNames" %>
|
||||
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||
<%@ Register Src="UserControls/Menu.ascx" TagName="Menu" TagPrefix="wsp" %>
|
||||
<%@ Register Src="UserControls/Breadcrumb.ascx" TagName="Breadcrumb" TagPrefix="wsp" %>
|
||||
<%@ Register Src="../UserControls/QuotaViewer.ascx" TagName="QuotaViewer" TagPrefix="wsp" %>
|
||||
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||
|
||||
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||
|
||||
<div id="ExchangeContainer">
|
||||
<div class="Module">
|
||||
<div class="Header">
|
||||
<wsp:Breadcrumb id="breadcrumb" runat="server" PageName="Text.PageName" />
|
||||
</div>
|
||||
<div class="Left">
|
||||
<wsp:Menu id="menu" runat="server" SelectedItem="domains" />
|
||||
</div>
|
||||
<div class="Content">
|
||||
<div class="Center">
|
||||
<div class="Title">
|
||||
<asp:Image ID="Image1" SkinID="ExchangeDomainName48" runat="server" />
|
||||
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Domain Names"></asp:Localize>
|
||||
</div>
|
||||
<div class="FormBody">
|
||||
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||
|
||||
<div class="FormButtonsBarClean">
|
||||
<asp:Button ID="btnAddDomain" runat="server" meta:resourcekey="btnAddDomain"
|
||||
Text="Add New Domain" CssClass="Button1" OnClick="btnAddDomain_Click" />
|
||||
</div>
|
||||
|
||||
<asp:GridView ID="gvDomains" runat="server" AutoGenerateColumns="False"
|
||||
Width="100%" EmptyDataText="gvDomains" CssSelectorClass="NormalGridView" OnRowCommand="gvDomains_RowCommand">
|
||||
<Columns>
|
||||
<asp:TemplateField HeaderText="gvDomainsName">
|
||||
<ItemStyle Width="50%"></ItemStyle>
|
||||
<ItemTemplate>
|
||||
<asp:hyperlink id="lnkEditZone" runat="server" EnableViewState="false"
|
||||
NavigateUrl='<%# GetDomainRecordsEditUrl(Eval("DomainID").ToString()) %>' Enabled='<%# !(bool)Eval("IsHost") %>'>
|
||||
<%# Eval("DomainName") %>
|
||||
</asp:hyperlink>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
<asp:TemplateField HeaderText="gvDomainsDefault">
|
||||
<ItemTemplate>
|
||||
<div style="text-align:center">
|
||||
<input type="radio" name="DefaultDomain" value='<%# Eval("DomainId") %>' <%# IsChecked((bool)Eval("IsDefault")) %> />
|
||||
</div>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
<asp:TemplateField>
|
||||
<ItemTemplate>
|
||||
<asp:ImageButton ID="imgDelDomain" runat="server" Text="Delete" SkinID="ExchangeDelete"
|
||||
CommandName="DeleteItem" CommandArgument='<%# Eval("DomainId") %>' Visible='<%# !((bool)Eval("IsHost") || (bool)Eval("IsDefault")) %>'
|
||||
meta:resourcekey="cmdDelete" OnClientClick="return confirm('Are you sure you want to delete selected domain?')"></asp:ImageButton>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
</Columns>
|
||||
</asp:GridView>
|
||||
<br />
|
||||
<div style="text-align: center">
|
||||
<asp:Button ID="btnSetDefaultDomain" runat="server" meta:resourcekey="btnSetDefaultDomain"
|
||||
Text="Set Default Domain" CssClass="Button1" OnClick="btnSetDefaultDomain_Click" />
|
||||
</div>
|
||||
|
||||
<br />
|
||||
<asp:Localize ID="locQuota" runat="server" meta:resourcekey="locQuota" Text="Total Domains Used:"></asp:Localize>
|
||||
|
||||
<wsp:QuotaViewer ID="domainsQuota" runat="server" QuotaTypeId="2" />
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,148 @@
|
|||
// 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.Web.UI.WebControls;
|
||||
using WebsitePanel.EnterpriseServer;
|
||||
using WebsitePanel.Providers.HostedSolution;
|
||||
|
||||
namespace WebsitePanel.Portal.ExchangeServer
|
||||
{
|
||||
public partial class OrganizationDomainNames : WebsitePanelModuleBase
|
||||
{
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (!IsPostBack)
|
||||
{
|
||||
BindStats();
|
||||
|
||||
// bind domain names
|
||||
BindDomainNames();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void BindStats()
|
||||
{
|
||||
// set quotas
|
||||
OrganizationStatistics stats = ES.Services.Organizations.GetOrganizationStatisticsByOrganization(PanelRequest.ItemID);
|
||||
OrganizationStatistics tenantStats = ES.Services.Organizations.GetOrganizationStatistics(PanelRequest.ItemID);
|
||||
domainsQuota.QuotaUsedValue = stats.CreatedDomains;
|
||||
domainsQuota.QuotaValue = stats.AllocatedDomains;
|
||||
if (stats.AllocatedDomains != -1) domainsQuota.QuotaAvailable = tenantStats.AllocatedDomains - tenantStats.CreatedDomains;
|
||||
}
|
||||
|
||||
public string GetDomainRecordsEditUrl(string domainId)
|
||||
{
|
||||
return EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "domain_records",
|
||||
"DomainID=" + domainId,
|
||||
"ItemID=" + PanelRequest.ItemID);
|
||||
}
|
||||
|
||||
private void BindDomainNames()
|
||||
{
|
||||
OrganizationDomainName[] list = ES.Services.Organizations.GetOrganizationDomains(PanelRequest.ItemID);
|
||||
|
||||
gvDomains.DataSource = list;
|
||||
gvDomains.DataBind();
|
||||
|
||||
//check if organization has only one default domain
|
||||
if (gvDomains.Rows.Count == 1)
|
||||
{
|
||||
btnSetDefaultDomain.Enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
public string IsChecked(bool val)
|
||||
{
|
||||
return val ? "checked" : "";
|
||||
}
|
||||
|
||||
protected void btnAddDomain_Click(object sender, EventArgs e)
|
||||
{
|
||||
btnSetDefaultDomain.Enabled = true;
|
||||
Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "org_add_domain",
|
||||
"SpaceID=" + PanelSecurity.PackageId));
|
||||
}
|
||||
|
||||
protected void gvDomains_RowCommand(object sender, GridViewCommandEventArgs e)
|
||||
{
|
||||
if (e.CommandName == "DeleteItem")
|
||||
{
|
||||
// delete domain
|
||||
int domainId = Utils.ParseInt(e.CommandArgument.ToString(), 0);
|
||||
|
||||
try
|
||||
{
|
||||
int result = ES.Services.Organizations.DeleteOrganizationDomain(PanelRequest.ItemID, domainId);
|
||||
if (result < 0)
|
||||
{
|
||||
messageBox.ShowResultMessage(result);
|
||||
return;
|
||||
}
|
||||
|
||||
// rebind domains
|
||||
BindDomainNames();
|
||||
|
||||
BindStats();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowErrorMessage("EXCHANGE_DELETE_DOMAIN", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void btnSetDefaultDomain_Click(object sender, EventArgs e)
|
||||
{
|
||||
// get domain
|
||||
int domainId = Utils.ParseInt(Request.Form["DefaultDomain"], 0);
|
||||
|
||||
try
|
||||
{
|
||||
int result = ES.Services.Organizations.SetOrganizationDefaultDomain(PanelRequest.ItemID, domainId);
|
||||
if (result < 0)
|
||||
{
|
||||
messageBox.ShowResultMessage(result);
|
||||
if (BusinessErrorCodes.ERROR_USER_ACCOUNT_DEMO == result)
|
||||
BindDomainNames();
|
||||
return;
|
||||
}
|
||||
|
||||
// rebind domains
|
||||
BindDomainNames();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowErrorMessage("EXCHANGE_SET_DEFAULT_DOMAIN", ex);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,142 @@
|
|||
// 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.
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace WebsitePanel.Portal.ExchangeServer {
|
||||
|
||||
|
||||
public partial class OrganizationDomainNames {
|
||||
|
||||
/// <summary>
|
||||
/// asyncTasks control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
|
||||
|
||||
/// <summary>
|
||||
/// breadcrumb control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Breadcrumb breadcrumb;
|
||||
|
||||
/// <summary>
|
||||
/// menu control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Menu menu;
|
||||
|
||||
/// <summary>
|
||||
/// Image1 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Image Image1;
|
||||
|
||||
/// <summary>
|
||||
/// locTitle control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locTitle;
|
||||
|
||||
/// <summary>
|
||||
/// messageBox control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox;
|
||||
|
||||
/// <summary>
|
||||
/// btnAddDomain control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Button btnAddDomain;
|
||||
|
||||
/// <summary>
|
||||
/// gvDomains control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.GridView gvDomains;
|
||||
|
||||
/// <summary>
|
||||
/// btnSetDefaultDomain control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Button btnSetDefaultDomain;
|
||||
|
||||
/// <summary>
|
||||
/// locQuota control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locQuota;
|
||||
|
||||
/// <summary>
|
||||
/// domainsQuota control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.QuotaViewer domainsQuota;
|
||||
}
|
||||
}
|
|
@ -41,6 +41,11 @@
|
|||
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="FormLabel150"> <asp:Localize ID="locUserPrincipalName" runat="server" meta:resourcekey="locUserPrincipalName" Text="Login Name:"></asp:Localize></td>
|
||||
<td><asp:Label runat="server" ID="lblUserPrincipalName" /></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="FormLabel150"><asp:Localize ID="locDisplayName" runat="server" meta:resourcekey="locDisplayName" Text="Display Name: *"></asp:Localize></td>
|
||||
<td>
|
||||
|
@ -95,6 +100,7 @@
|
|||
<td class="FormLabel150" valign="top"><asp:Localize ID="locExternalEmailAddress" runat="server" meta:resourcekey="locExternalEmailAddress" ></asp:Localize></td>
|
||||
<td><asp:TextBox runat="server" ID="txtExternalEmailAddress" CssClass="TextBox200"/></td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<wsp:CollapsiblePanel id="secCompanyInfo" runat="server"
|
||||
|
|
|
@ -108,6 +108,7 @@ namespace WebsitePanel.Portal.HostedSolution
|
|||
lblUserDomainName.Text = user.DomainUserName;
|
||||
|
||||
txtSubscriberNumber.Text = user.SubscriberNumber;
|
||||
lblUserPrincipalName.Text = user.UserPrincipalName;
|
||||
|
||||
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
|
||||
if (cntx.Quotas.ContainsKey(Quotas.EXCHANGE2007_ISCONSUMER))
|
||||
|
|
|
@ -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.
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
|
@ -93,6 +121,24 @@ namespace WebsitePanel.Portal.HostedSolution {
|
|||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox;
|
||||
|
||||
/// <summary>
|
||||
/// locUserPrincipalName control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locUserPrincipalName;
|
||||
|
||||
/// <summary>
|
||||
/// lblUserPrincipalName control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Label lblUserPrincipalName;
|
||||
|
||||
/// <summary>
|
||||
/// locDisplayName control.
|
||||
/// </summary>
|
||||
|
@ -668,14 +714,5 @@ namespace WebsitePanel.Portal.HostedSolution {
|
|||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.ValidationSummary ValidationSummary1;
|
||||
|
||||
/// <summary>
|
||||
/// FormComments control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize FormComments;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -47,6 +47,7 @@
|
|||
<asp:ListItem Value="PrimaryEmailAddress" meta:resourcekey="ddlSearchColumnEmail">Email</asp:ListItem>
|
||||
<asp:ListItem Value="AccountName" meta:resourcekey="ddlSearchColumnAccountName">AccountName</asp:ListItem>
|
||||
<asp:ListItem Value="SubscriberNumber" meta:resourcekey="ddlSearchColumnSubscriberNumber">Account Number</asp:ListItem>
|
||||
<asp:ListItem Value="UserPrincipalName" meta:resourcekey="ddlSearchColumnUserPrincipalName">Login</asp:ListItem>
|
||||
</asp:DropDownList><asp:TextBox ID="txtSearchValue" runat="server" CssClass="NormalTextBox" Width="100"></asp:TextBox><asp:ImageButton ID="cmdSearch" Runat="server" meta:resourcekey="cmdSearch" SkinID="SearchButton"
|
||||
CausesValidation="false"/>
|
||||
</asp:Panel>
|
||||
|
@ -74,14 +75,15 @@
|
|||
</asp:hyperlink>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
<asp:BoundField HeaderText="gvUsersEmail" DataField="PrimaryEmailAddress" SortExpression="PrimaryEmailAddress" ItemStyle-Width="50%" />
|
||||
<asp:BoundField HeaderText="gvUsersLogin" DataField="UserPrincipalName" SortExpression="UserPrincipalName" ItemStyle-Width="25%" />
|
||||
<asp:BoundField HeaderText="gvUsersEmail" DataField="PrimaryEmailAddress" SortExpression="PrimaryEmailAddress" ItemStyle-Width="25%" />
|
||||
<asp:BoundField HeaderText="gvSubscriberNumber" DataField="SubscriberNumber" ItemStyle-Width="25%" />
|
||||
<asp:TemplateField ItemStyle-Wrap="False">
|
||||
<ItemTemplate>
|
||||
<asp:Image ID="Image2" runat="server" Width="16px" Height="16px" ToolTip="Mail" ImageUrl='<%# GetMailImage((int)Eval("AccountType")) %>' />
|
||||
<asp:Image ID="Image3" runat="server" Width="16px" Height="16px" ToolTip="OCS" ImageUrl='<%# GetOCSImage((bool)Eval("IsOCSUser"),(bool)Eval("IsLyncUser")) %>' />
|
||||
<asp:Image ID="Image4" runat="server" Width="16px" Height="16px" ToolTip="BlackBerry" ImageUrl='<%# GetBlackBerryImage((bool)Eval("IsBlackBerryUser")) %>' />
|
||||
<asp:Image ID="Image5" runat="server" Width="16px" Height="16px" ToolTip="CRM" ImageUrl='<%# GetCRMImage((Guid)Eval("CrmUserId")) %>' />
|
||||
<asp:ImageButton ID="Image2" runat="server" Width="16px" Height="16px" ToolTip="Mail" ImageUrl='<%# GetMailImage((int)Eval("AccountType")) %>' CommandName="OpenMailProperties" CommandArgument='<%# Eval("AccountId") %>' Enabled=<%# EnableMailImageButton((int)Eval("AccountType")) %>/>
|
||||
<asp:ImageButton ID="Image3" runat="server" Width="16px" Height="16px" ToolTip="UC" ImageUrl='<%# GetOCSImage((bool)Eval("IsOCSUser"),(bool)Eval("IsLyncUser")) %>' CommandName="OpenUCProperties" CommandArgument='<%# GetOCSArgument((int)Eval("AccountId"),(bool)Eval("IsOCSUser"),(bool)Eval("IsLyncUser")) %>' Enabled=<%# EnableOCSImageButton((bool)Eval("IsOCSUser"),(bool)Eval("IsLyncUser")) %>/>
|
||||
<asp:ImageButton ID="Image4" runat="server" Width="16px" Height="16px" ToolTip="BlackBerry" ImageUrl='<%# GetBlackBerryImage((bool)Eval("IsBlackBerryUser")) %>' CommandName="OpenBlackBerryProperties" CommandArgument='<%# Eval("AccountId") %>' Enabled=<%# EnableBlackBerryImageButton((bool)Eval("IsBlackBerryUser")) %>/>
|
||||
<asp:Image ID="Image5" runat="server" Width="16px" Height="16px" ToolTip="CRM" ImageUrl='<%# GetCRMImage((Guid)Eval("CrmUserId")) %>' />
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
<asp:TemplateField>
|
||||
|
|
|
@ -48,7 +48,7 @@ namespace WebsitePanel.Portal.HostedSolution
|
|||
{
|
||||
if (cntx.Quotas[Quotas.EXCHANGE2007_ISCONSUMER].QuotaAllocatedValue != 1)
|
||||
{
|
||||
gvUsers.Columns[3].Visible = false;
|
||||
gvUsers.Columns[4].Visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -115,6 +115,52 @@ namespace WebsitePanel.Portal.HostedSolution
|
|||
messageBox.ShowErrorMessage("ORGANIZATIONS_DELETE_USERS", ex);
|
||||
}
|
||||
}
|
||||
|
||||
if (e.CommandName == "OpenMailProperties")
|
||||
{
|
||||
int accountId = Utils.ParseInt(e.CommandArgument.ToString(), 0);
|
||||
|
||||
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "mailbox_settings",
|
||||
"AccountID=" + accountId,
|
||||
"ItemID=" + PanelRequest.ItemID));
|
||||
}
|
||||
|
||||
if (e.CommandName == "OpenBlackBerryProperties")
|
||||
{
|
||||
int accountId = Utils.ParseInt(e.CommandArgument.ToString(), 0);
|
||||
|
||||
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "edit_blackberry_user",
|
||||
"AccountID=" + accountId,
|
||||
"ItemID=" + PanelRequest.ItemID));
|
||||
}
|
||||
|
||||
if (e.CommandName == "OpenCRMProperties")
|
||||
{
|
||||
int accountId = Utils.ParseInt(e.CommandArgument.ToString(), 0);
|
||||
|
||||
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "mailbox_settings",
|
||||
"AccountID=" + accountId,
|
||||
"ItemID=" + PanelRequest.ItemID));
|
||||
}
|
||||
|
||||
if (e.CommandName == "OpenUCProperties")
|
||||
{
|
||||
string[] Tmp = e.CommandArgument.ToString().Split('|');
|
||||
|
||||
int accountId = Utils.ParseInt(Tmp[0], 0);
|
||||
if (Tmp[1] == "True")
|
||||
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "edit_ocs_user",
|
||||
"AccountID=" + accountId,
|
||||
"ItemID=" + PanelRequest.ItemID));
|
||||
else
|
||||
if (Tmp[2] == "True")
|
||||
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "edit_lync_user",
|
||||
"AccountID=" + accountId,
|
||||
"ItemID=" + PanelRequest.ItemID));
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -210,5 +256,50 @@ namespace WebsitePanel.Portal.HostedSolution
|
|||
BindStats();
|
||||
}
|
||||
|
||||
|
||||
public bool EnableMailImageButton(int accountTypeId)
|
||||
{
|
||||
bool imgName = true;
|
||||
|
||||
ExchangeAccountType accountType = (ExchangeAccountType)accountTypeId;
|
||||
|
||||
if (accountType == ExchangeAccountType.User)
|
||||
imgName = false;
|
||||
|
||||
return imgName;
|
||||
}
|
||||
|
||||
public bool EnableOCSImageButton(bool IsOCSUser, bool IsLyncUser)
|
||||
{
|
||||
bool imgName = false;
|
||||
|
||||
if (IsLyncUser)
|
||||
imgName = true;
|
||||
else
|
||||
if ((IsOCSUser))
|
||||
imgName = true;
|
||||
|
||||
return imgName;
|
||||
}
|
||||
|
||||
public bool EnableBlackBerryImageButton(bool IsBlackBerryUser)
|
||||
{
|
||||
bool imgName = false;
|
||||
|
||||
if (IsBlackBerryUser)
|
||||
imgName = true;
|
||||
|
||||
return imgName;
|
||||
}
|
||||
|
||||
|
||||
public string GetOCSArgument(int accountID, bool IsOCS, bool IsLync)
|
||||
{
|
||||
return accountID.ToString() + "|" + IsOCS.ToString() + "|" + IsLync.ToString();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -127,6 +127,9 @@
|
|||
<value>Distribution Lists</value>
|
||||
</data>
|
||||
<data name="Text.DomainNames" xml:space="preserve">
|
||||
<value>Domains</value>
|
||||
</data>
|
||||
<data name="Text.ExchangeDomainNames" xml:space="preserve">
|
||||
<value>Accepted Domains</value>
|
||||
</data>
|
||||
<data name="Text.CRMOrganization" xml:space="preserve">
|
||||
|
|
|
@ -138,10 +138,11 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
|
|||
exchangeGroup.MenuItems.Add(CreateMenuItem("MailboxPlans", "mailboxplans"));
|
||||
|
||||
if (!hideItems)
|
||||
if (Utils.CheckQouta(Quotas.ORGANIZATION_DOMAINS, cntx))
|
||||
exchangeGroup.MenuItems.Add(CreateMenuItem("DomainNames", "domains"));
|
||||
if (Utils.CheckQouta(Quotas.EXCHANGE2007_MAILBOXES, cntx))
|
||||
exchangeGroup.MenuItems.Add(CreateMenuItem("ExchangeDomainNames", "domains"));
|
||||
|
||||
if (!hideItems)
|
||||
if (Utils.CheckQouta(Quotas.EXCHANGE2007_MAILBOXES, cntx))
|
||||
exchangeGroup.MenuItems.Add(CreateMenuItem("StorageUsage", "storage_usage"));
|
||||
|
||||
if (exchangeGroup.MenuItems.Count > 0)
|
||||
|
@ -164,8 +165,12 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
|
|||
if (!hideItems)
|
||||
{
|
||||
MenuGroup organizationGroup = new MenuGroup(GetLocalizedString("Text.OrganizationGroup"), imagePath + "company24.png");
|
||||
//if (CheckQouta(Quotas.ORGANIZATION_DOMAINS, cntx))
|
||||
// organizationGroup.MenuItems.Add(CreateMenuItem("DomainNames", "domains"));
|
||||
|
||||
if (Utils.CheckQouta(Quotas.EXCHANGE2007_MAILBOXES, cntx) == false)
|
||||
{
|
||||
if (Utils.CheckQouta(Quotas.ORGANIZATION_DOMAINS, cntx))
|
||||
organizationGroup.MenuItems.Add(CreateMenuItem("DomainNames", "org_domains"));
|
||||
}
|
||||
if (Utils.CheckQouta(Quotas.ORGANIZATION_USERS, cntx))
|
||||
organizationGroup.MenuItems.Add(CreateMenuItem("Users", "users"));
|
||||
|
||||
|
|
|
@ -50,7 +50,10 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
|
|||
{
|
||||
List<Tab> tabsList = new List<Tab>();
|
||||
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;
|
||||
|
|
|
@ -135,4 +135,7 @@
|
|||
<data name="locPlanName.Text" xml:space="preserve">
|
||||
<value>Plan Name :</value>
|
||||
</data>
|
||||
<data name="locSipAddress.Text" xml:space="preserve">
|
||||
<value>SIP Address:</value>
|
||||
</data>
|
||||
</root>
|
|
@ -126,8 +126,8 @@
|
|||
<data name="ddlSearchColumnDisplayName.Text" xml:space="preserve">
|
||||
<value>Display name</value>
|
||||
</data>
|
||||
<data name="ddlSearchColumnEmail.Text" xml:space="preserve">
|
||||
<value>Sign-in name</value>
|
||||
<data name="ddlSearchColumnUserPrincipalName.Text" xml:space="preserve">
|
||||
<value>Login</value>
|
||||
</data>
|
||||
<data name="FormComments.Text" xml:space="preserve">
|
||||
<value><p>Microsoft Lync Server delivers unified communications to the users, including software-powered VoIP, Web and audio/video conferencing, and enterprise instant messaging.</p>
|
||||
|
@ -138,7 +138,7 @@
|
|||
<value>Display name</value>
|
||||
</data>
|
||||
<data name="gvUsersEmail.HeaderText" xml:space="preserve">
|
||||
<value>Sign-in name</value>
|
||||
<value>SIP Address</value>
|
||||
</data>
|
||||
<data name="locTitle.Text" xml:space="preserve">
|
||||
<value>Lync Users</value>
|
||||
|
@ -152,4 +152,7 @@
|
|||
<data name="gvUsers.Empty" xml:space="preserve">
|
||||
<value>No users have been Lync enabled. To enable a user for Lync click "Create Lync User" button.</value>
|
||||
</data>
|
||||
<data name="gvUsersLogin.Header" xml:space="preserve">
|
||||
<value>Login</value>
|
||||
</data>
|
||||
</root>
|
|
@ -28,7 +28,7 @@
|
|||
<tr>
|
||||
<td class="FormLabel150"><asp:Localize ID="Localize1" runat="server" meta:resourcekey="locDisplayName" Text="Display Name: *"></asp:Localize></td>
|
||||
<td>
|
||||
<wsp:UserSelector ID="userSelector" runat="server" IncludeMailboxesOnly="true" IncludeMailboxes="true" ExcludeOCSUsers="true" ExcludeLyncUsers="true"/>
|
||||
<wsp:UserSelector ID="userSelector" runat="server" IncludeMailboxesOnly="false" IncludeMailboxes="true" ExcludeOCSUsers="true" ExcludeLyncUsers="true"/>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
|
@ -148,14 +147,5 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Button btnCreate;
|
||||
|
||||
/// <summary>
|
||||
/// FormComments control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize FormComments;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
<%@ Register Src="../UserControls/QuotaViewer.ascx" TagName="QuotaViewer" TagPrefix="wsp" %>
|
||||
<%@ Register src="../ExchangeServer/UserControls/MailboxSelector.ascx" tagname="MailboxSelector" tagprefix="uc1" %>
|
||||
<%@ Register Src="UserControls/LyncUserPlanSelector.ascx" TagName="LyncUserPlanSelector" TagPrefix="wsp" %>
|
||||
<%@ Register Src="UserControls/LyncUserSettings.ascx" TagName="LyncUserSettings" TagPrefix="wsp" %>
|
||||
|
||||
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server" />
|
||||
<div id="ExchangeContainer">
|
||||
|
@ -38,6 +39,15 @@
|
|||
<wsp:LyncUserPlanSelector ID="planSelector" runat="server" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize ID="locSipAddress" runat="server" meta:resourcekey="locSipAddress" Text="SIP Address: *"></asp:Localize>
|
||||
</td>
|
||||
<td>
|
||||
<wsp:LyncUserSettings ID="lyncUserSettings" runat="server" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<div class="FormFooterClean">
|
||||
|
|
|
@ -52,6 +52,8 @@ namespace WebsitePanel.Portal.Lync
|
|||
litDisplayName.Text = lyncUser.DisplayName;
|
||||
|
||||
planSelector.planId = lyncUser.LyncUserPlanId.ToString();
|
||||
lyncUserSettings.sipAddress = lyncUser.SipAddress;
|
||||
|
||||
}
|
||||
|
||||
protected void btnSave_Click(object sender, EventArgs e)
|
||||
|
@ -61,11 +63,18 @@ namespace WebsitePanel.Portal.Lync
|
|||
try
|
||||
{
|
||||
LyncUserResult res = ES.Services.Lync.SetUserLyncPlan(PanelRequest.ItemID, PanelRequest.AccountID, Convert.ToInt32(planSelector.planId));
|
||||
if (res.IsSuccess && res.ErrorCodes.Count == 0)
|
||||
{
|
||||
res = ES.Services.Lync.SetLyncUserGeneralSettings(PanelRequest.ItemID, PanelRequest.AccountID, lyncUserSettings.sipAddress, string.Empty);
|
||||
}
|
||||
|
||||
if (res.IsSuccess && res.ErrorCodes.Count == 0)
|
||||
{
|
||||
messageBox.ShowSuccessMessage("UPDATE_LYNC_USER");
|
||||
return;
|
||||
}
|
||||
else
|
||||
messageBox.ShowMessage(res, "UPDATE_LYNC_USER", "LYNC");
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright (c) 2012, Outercurve Foundation.
|
||||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without modification,
|
||||
|
@ -26,7 +26,6 @@
|
|||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
|
@ -122,6 +121,24 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.Lync.UserControls.LyncUserPlanSelector planSelector;
|
||||
|
||||
/// <summary>
|
||||
/// locSipAddress control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locSipAddress;
|
||||
|
||||
/// <summary>
|
||||
/// lyncUserSettings control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.Lync.UserControls.LyncUserSettings lyncUserSettings;
|
||||
|
||||
/// <summary>
|
||||
/// btnSave control.
|
||||
/// </summary>
|
||||
|
@ -130,14 +147,5 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Button btnSave;
|
||||
|
||||
/// <summary>
|
||||
/// FormComments control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize FormComments;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
|
||||
<asp:DropDownList ID="ddlSearchColumn" runat="server" CssClass="NormalTextBox">
|
||||
<asp:ListItem Value="DisplayName" meta:resourcekey="ddlSearchColumnDisplayName">DisplayName</asp:ListItem>
|
||||
<asp:ListItem Value="PrimaryEmailAddress" meta:resourcekey="ddlSearchColumnEmail">Email</asp:ListItem>
|
||||
<asp:ListItem Value="UserPrincipalName" meta:resourcekey="ddlSearchColumnUserPrincipalName">Email</asp:ListItem>
|
||||
</asp:DropDownList>
|
||||
<asp:TextBox ID="txtSearchValue" runat="server" CssClass="NormalTextBox" Width="100"></asp:TextBox><asp:ImageButton
|
||||
ID="cmdSearch" runat="server" meta:resourcekey="cmdSearch" SkinID="SearchButton"
|
||||
|
@ -64,10 +64,17 @@
|
|||
</asp:HyperLink>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
<asp:BoundField HeaderText="gvUsersEmail" meta:resourcekey="gvUsersEmail" DataField="PrimaryEmailAddress"
|
||||
SortExpression="PrimaryEmailAddress" ItemStyle-Width="25%" />
|
||||
<asp:BoundField HeaderText="gvLyncUserPlan" meta:resourcekey="gvLyncUserPlan" DataField="LyncUserPlanName"
|
||||
SortExpression="LyncUserPlanName" ItemStyle-Width="50%" />
|
||||
<asp:TemplateField HeaderText="gvUsersLogin" SortExpression="UserPrincipalName">
|
||||
<ItemStyle ></ItemStyle>
|
||||
<ItemTemplate>
|
||||
<asp:hyperlink id="lnk1" runat="server"
|
||||
NavigateUrl='<%# GetOrganizationUserEditUrl(Eval("AccountId").ToString()) %>'>
|
||||
<%# Eval("UserPrincipalName") %>
|
||||
</asp:hyperlink>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
<asp:BoundField HeaderText="gvUsersEmail" meta:resourcekey="gvUsersEmail" DataField="SipAddress" SortExpression="PrimaryUri" ItemStyle-Width="25%" />
|
||||
<asp:BoundField HeaderText="gvLyncUserPlan" meta:resourcekey="gvLyncUserPlan" DataField="LyncUserPlanName" SortExpression="LyncUserPlanName" ItemStyle-Width="25%" />
|
||||
<asp:TemplateField>
|
||||
<ItemTemplate>
|
||||
<asp:ImageButton ID="cmdDelete" runat="server" SkinID="ExchangeDelete"
|
||||
|
|
|
@ -111,5 +111,14 @@ namespace WebsitePanel.Portal.Lync
|
|||
}
|
||||
|
||||
|
||||
|
||||
public string GetOrganizationUserEditUrl(string accountId)
|
||||
{
|
||||
return EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "edit_user",
|
||||
"AccountID=" + accountId,
|
||||
"ItemID=" + PanelRequest.ItemID,
|
||||
"Context=User");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -1,4 +1,32 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// Copyright (c) 2011, 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.
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
|
@ -155,14 +183,5 @@ namespace WebsitePanel.Portal.Lync {
|
|||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.QuotaViewer usersQuota;
|
||||
|
||||
/// <summary>
|
||||
/// FormComments control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize FormComments;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="LyncUserSettings.ascx.cs" Inherits="WebsitePanel.Portal.Lync.UserControls.LyncUserSettings" %>
|
||||
<asp:DropDownList ID="ddlSipAddresses" runat="server" CssClass="NormalTextBox"></asp:DropDownList>
|
|
@ -0,0 +1,102 @@
|
|||
// Copyright (c) 2011, 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.Web.UI.WebControls;
|
||||
using EntServer = WebsitePanel.EnterpriseServer;
|
||||
|
||||
namespace WebsitePanel.Portal.Lync.UserControls
|
||||
{
|
||||
public partial class LyncUserSettings : WebsitePanelControlBase
|
||||
{
|
||||
|
||||
private string sipAddressToSelect;
|
||||
|
||||
public string sipAddress
|
||||
{
|
||||
|
||||
get { return ddlSipAddresses.SelectedItem.Value; }
|
||||
set
|
||||
{
|
||||
sipAddressToSelect = value;
|
||||
foreach (ListItem li in ddlSipAddresses.Items)
|
||||
{
|
||||
if (li.Value == value)
|
||||
{
|
||||
ddlSipAddresses.ClearSelection();
|
||||
li.Selected = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int plansCount
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.ddlSipAddresses.Items.Count;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (!IsPostBack)
|
||||
{
|
||||
BindAddresses();
|
||||
}
|
||||
}
|
||||
|
||||
private void BindAddresses()
|
||||
{
|
||||
|
||||
EntServer.ExchangeEmailAddress[] emails = ES.Services.ExchangeServer.GetMailboxEmailAddresses(PanelRequest.ItemID, PanelRequest.AccountID);
|
||||
|
||||
foreach (EntServer.ExchangeEmailAddress email in emails)
|
||||
{
|
||||
ListItem li = new ListItem();
|
||||
li.Text = email.EmailAddress;
|
||||
li.Value = email.EmailAddress;
|
||||
li.Selected = email.IsPrimary;
|
||||
ddlSipAddresses.Items.Add(li);
|
||||
}
|
||||
|
||||
foreach (ListItem li in ddlSipAddresses.Items)
|
||||
{
|
||||
if (li.Value == sipAddressToSelect)
|
||||
{
|
||||
ddlSipAddresses.ClearSelection();
|
||||
li.Selected = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
// Copyright (c) 2011, 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.
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace WebsitePanel.Portal.Lync.UserControls {
|
||||
|
||||
|
||||
public partial class LyncUserSettings {
|
||||
|
||||
/// <summary>
|
||||
/// ddlSipAddresses control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.DropDownList ddlSipAddresses;
|
||||
}
|
||||
}
|
|
@ -6,7 +6,7 @@
|
|||
<td class="SubHead" width="200" nowrap><asp:Label ID="lblDomainName" runat="server" meta:resourcekey="lblDomainName" Text="Domain name:"></asp:Label></td>
|
||||
<td width="100%">
|
||||
<uc1:DomainsSelectDomainControl ID="domainsSelectDomainControl" runat="server"
|
||||
HideMailDomains="true" HideDomainsSubDomains="false" HideInstantAlias="false"/>
|
||||
HideMailDomains="true" HideDomainsSubDomains="false" HideInstantAlias="false" HideDomainPointers="true"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<td id="EditEmailPanel" runat="server">
|
||||
<uc2:UsernameControl ID="txtName" runat="server" width="120px" />
|
||||
@
|
||||
<dnc:SelectDomain id="domainsSelectDomainControl" runat="server" HideDomainPointers="true" HideInstantAlias="false"></dnc:SelectDomain>
|
||||
<dnc:SelectDomain id="domainsSelectDomainControl" runat="server" HideDomainPointers="true" HideInstantAlias="false" HideMailDomainPointers="true"></dnc:SelectDomain>
|
||||
</td>
|
||||
<td id="DisplayEmailPanel" runat="server">
|
||||
<asp:Label ID="litName" Runat="server" Visible="False" CssClass="Huge"></asp:Label>
|
||||
|
|
|
@ -45,6 +45,7 @@ namespace WebsitePanel.Portal.ProviderControls
|
|||
public const int EXCHANGE2010SP2_PROVIDER_ID = 90;
|
||||
public const int EXCHANGE2013_PROVIDER_ID = 91;
|
||||
|
||||
|
||||
public string HubTransports
|
||||
{
|
||||
get
|
||||
|
@ -112,7 +113,6 @@ namespace WebsitePanel.Portal.ProviderControls
|
|||
locMailboxDatabase.Visible = false;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
storageGroup.Visible = true;
|
||||
txtStorageGroup.Text = settings["StorageGroup"];
|
||||
|
|
|
@ -112,10 +112,10 @@
|
|||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="cbCRM.Text" xml:space="preserve">
|
||||
<value>CRM Report</value>
|
||||
|
@ -123,6 +123,9 @@
|
|||
<data name="cbExchange.Text" xml:space="preserve">
|
||||
<value>Exchange Report</value>
|
||||
</data>
|
||||
<data name="cbLync.Text" xml:space="preserve">
|
||||
<value>Lync Report</value>
|
||||
</data>
|
||||
<data name="cbOrganization.Text" xml:space="preserve">
|
||||
<value>Organization Report</value>
|
||||
</data>
|
||||
|
|
|
@ -19,6 +19,11 @@
|
|||
<asp:CheckBox runat="server" ID="cbSharePoint" meta:resourcekey="cbSharePoint" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<asp:CheckBox runat="server" ID="cbLync" meta:resourcekey="cbLync" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<asp:CheckBox runat="server" ID="cbCRM" meta:resourcekey="cbCRM" />
|
||||
|
|
|
@ -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};
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,7 +1,34 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// 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.
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 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.
|
||||
|
@ -49,6 +76,15 @@ namespace WebsitePanel.Portal.ScheduleTaskControls {
|
|||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.CheckBox cbSharePoint;
|
||||
|
||||
/// <summary>
|
||||
/// cbLync control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.CheckBox cbLync;
|
||||
|
||||
/// <summary>
|
||||
/// cbCRM control.
|
||||
/// </summary>
|
||||
|
|
|
@ -219,7 +219,7 @@ namespace WebsitePanel.Portal
|
|||
}
|
||||
|
||||
|
||||
result = ES.Services.ExchangeServer.DeleteExchangeMailboxPlan(orgs[0].Id, planId);
|
||||
result = ES.Services.Lync.DeleteLyncUserPlan(orgs[0].Id, planId);
|
||||
if (result < 0)
|
||||
{
|
||||
messageBox.ShowResultMessage(result);
|
||||
|
|
|
@ -99,7 +99,7 @@
|
|||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="SubHead">
|
||||
<td class="Normal" width="100%">
|
||||
<asp:Label ID="lblHostName" runat="server" meta:resourcekey="lblHostName" Text="Host name:"></asp:Label>
|
||||
<asp:TextBox ID="txtHostName" runat="server" CssClass="TextBox100" MaxLength="64" ></asp:TextBox>
|
||||
</td>
|
||||
|
|
|
@ -86,6 +86,7 @@ namespace WebsitePanel.Portal
|
|||
bool webEnabled = false;
|
||||
bool ftpEnabled = false;
|
||||
bool mailEnabled = false;
|
||||
bool integratedOUEnabled = false;
|
||||
|
||||
// load hosting context
|
||||
if (planId > 0)
|
||||
|
@ -111,6 +112,11 @@ namespace WebsitePanel.Portal
|
|||
|
||||
ftpEnabled = cntx.Groups.ContainsKey(ResourceGroups.Ftp);
|
||||
mailEnabled = cntx.Groups.ContainsKey(ResourceGroups.Mail);
|
||||
|
||||
if (Utils.CheckQouta(Quotas.ORGANIZATION_DOMAINS, cntx))
|
||||
{
|
||||
integratedOUEnabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -129,7 +135,7 @@ namespace WebsitePanel.Portal
|
|||
|
||||
ftpAccountName.Visible = (rbFtpAccountName.SelectedIndex == 1);
|
||||
|
||||
chkIntegratedOUProvisioning.Visible = chkCreateResources.Visible;
|
||||
chkIntegratedOUProvisioning.Checked = chkIntegratedOUProvisioning.Visible = (chkCreateResources.Visible && integratedOUEnabled);
|
||||
}
|
||||
|
||||
private void CreateHostingSpace()
|
||||
|
|
|
@ -202,6 +202,20 @@
|
|||
<Compile Include="Code\ReportingServices\IResourceStorage.cs" />
|
||||
<Compile Include="Code\ReportingServices\ReportingServicesUtils.cs" />
|
||||
<Compile Include="Code\UserControls\Tab.cs" />
|
||||
<Compile Include="ExchangeServer\OrganizationAddDomainName.ascx.cs">
|
||||
<DependentUpon>OrganizationAddDomainName.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ExchangeServer\OrganizationAddDomainName.ascx.designer.cs">
|
||||
<DependentUpon>OrganizationAddDomainName.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ExchangeServer\OrganizationDomainNames.ascx.cs">
|
||||
<DependentUpon>OrganizationDomainNames.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ExchangeServer\OrganizationDomainNames.ascx.designer.cs">
|
||||
<DependentUpon>OrganizationDomainNames.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ExchangeServer\ExchangeAddMailboxPlan.ascx.cs">
|
||||
<DependentUpon>ExchangeAddMailboxPlan.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
|
@ -283,6 +297,13 @@
|
|||
<Compile Include="Lync\LyncUsers.ascx.designer.cs">
|
||||
<DependentUpon>LyncUsers.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Lync\UserControls\LyncUserSettings.ascx.cs">
|
||||
<DependentUpon>LyncUserSettings.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Lync\UserControls\LyncUserSettings.ascx.designer.cs">
|
||||
<DependentUpon>LyncUserSettings.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Lync\UserControls\LyncUserPlanSelector.ascx.cs">
|
||||
<DependentUpon>LyncUserPlanSelector.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
|
@ -3790,7 +3811,10 @@
|
|||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="ExchangeServer\OrganizationAddDomainName.ascx" />
|
||||
<Content Include="ExchangeServer\OrganizationDomainNames.ascx" />
|
||||
<Content Include="ExchangeServer\ExchangeAddMailboxPlan.ascx" />
|
||||
<Content Include="Lync\UserControls\LyncUserSettings.ascx" />
|
||||
<Content Include="ServersEditWebPlatformInstaller.ascx" />
|
||||
<Content Include="ExchangeServer\ExchangeMailboxPlans.ascx" />
|
||||
<Content Include="ExchangeServer\UserControls\AccountsListWithPermissions.ascx" />
|
||||
|
@ -4945,6 +4969,12 @@
|
|||
<Content Include="ExchangeServer\UserControls\App_LocalResources\UserTabs.ascx.resx" />
|
||||
<Content Include="App_LocalResources\SettingsExchangeMailboxPlansPolicy.ascx.resx" />
|
||||
<Content Include="App_LocalResources\SettingsLyncUserPlansPolicy.ascx.resx" />
|
||||
<Content Include="ExchangeServer\App_LocalResources\OrganizationDomainNames.ascx.resx">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<Content Include="ExchangeServer\App_LocalResources\OrganizationAddDomainName.ascx.resx">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<EmbeddedResource Include="UserControls\App_LocalResources\EditDomainsList.ascx.resx">
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
|
|
|
@ -65,8 +65,8 @@ REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\PackagesProxy.cs
|
|||
REM %WSDL% %SERVER_URL%/esScheduler.asmx /out:.\WebsitePanel.EnterpriseServer.Client\SchedulerProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient
|
||||
REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\SchedulerProxy.cs
|
||||
|
||||
%WSDL% %SERVER_URL%/esServers.asmx /out:.\WebsitePanel.EnterpriseServer.Client\ServersProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient
|
||||
%WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\ServersProxy.cs
|
||||
REM %WSDL% %SERVER_URL%/esServers.asmx /out:.\WebsitePanel.EnterpriseServer.Client\ServersProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient
|
||||
REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\ServersProxy.cs
|
||||
|
||||
REM %WSDL% %SERVER_URL%/esSharePointServers.asmx /out:.\WebsitePanel.EnterpriseServer.Client\SharePointServersProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient
|
||||
REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\SharePointServersProxy.cs
|
||||
|
@ -92,8 +92,8 @@ REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\WebServersProxy.cs
|
|||
REM %WSDL% %SERVER_URL%/esVirtualizationServerForPrivateCloud.asmx /out:.\WebsitePanel.EnterpriseServer.Client\VirtualizationServerProxyForPrivateCloud.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient
|
||||
REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\VirtualizationServerProxyForPrivateCloud.cs
|
||||
|
||||
REM %WSDL% %SERVER_URL%/esLync.asmx /out:.\WebsitePanel.EnterpriseServer.Client\LyncProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient
|
||||
REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\LyncProxy.cs
|
||||
%WSDL% %SERVER_URL%/esLync.asmx /out:.\WebsitePanel.EnterpriseServer.Client\LyncProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient
|
||||
%WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\LyncProxy.cs
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -50,13 +50,13 @@ REM %WSE_CLEAN% .\WebsitePanel.Server.Client\VirtualizationServerProxy.cs
|
|||
REM %WSDL% %SERVER_URL%/VirtualizationServerForPrivateCloud.asmx /out:.\WebsitePanel.Server.Client\VirtualizationServerForPrivateCloudProxy.cs /namespace:WebsitePanel.Providers.VirtualizationForPC /type:webClient /fields
|
||||
REM %WSE_CLEAN% .\WebsitePanel.Server.Client\VirtualizationServerForPrivateCloudProxy.cs
|
||||
|
||||
%WSDL% %SERVER_URL%/WebServer.asmx /out:.\WebsitePanel.Server.Client\WebServerProxy.cs /namespace:WebsitePanel.Providers.Web /type:webClient /fields
|
||||
%WSE_CLEAN% .\WebsitePanel.Server.Client\WebServerProxy.cs
|
||||
REM %WSDL% %SERVER_URL%/WebServer.asmx /out:.\WebsitePanel.Server.Client\WebServerProxy.cs /namespace:WebsitePanel.Providers.Web /type:webClient /fields
|
||||
REM %WSE_CLEAN% .\WebsitePanel.Server.Client\WebServerProxy.cs
|
||||
|
||||
REM %WSDL% %SERVER_URL%/WindowsServer.asmx /out:.\WebsitePanel.Server.Client\WindowsServerProxy.cs /namespace:WebsitePanel.Server /type:webClient /fields
|
||||
REM %WSE_CLEAN% .\WebsitePanel.Server.Client\WindowsServerProxy.cs
|
||||
|
||||
REM %WSDL% %SERVER_URL%/LyncServer.asmx /out:.\WebsitePanel.Server.Client\LyncServerProxy.cs /namespace:WebsitePanel.Providers.Lync /type:webClient /fields
|
||||
REM %WSE_CLEAN% .\WebsitePanel.Server.Client\LyncServerProxy.cs
|
||||
%WSDL% %SERVER_URL%/LyncServer.asmx /out:.\WebsitePanel.Server.Client\LyncServerProxy.cs /namespace:WebsitePanel.Providers.Lync /type:webClient /fields
|
||||
%WSE_CLEAN% .\WebsitePanel.Server.Client\LyncServerProxy.cs
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue