fixed WebPortal & update sql

This commit is contained in:
vfedosevich 2013-05-23 11:19:07 +03:00
parent e7d5bf0c7e
commit 8577c73c4c
5 changed files with 410 additions and 10 deletions

View file

@ -858,4 +858,405 @@ INNER JOIN ScheduleTasks AS ST ON S.TaskID = ST.TaskID
INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID
WHERE (U.UserID = @ActorID OR U.OwnerID = @ActorID)
AND (ISNULL(S.LastRun, DATEADD(YEAR, -1, GETDATE())) > ISNULL(S.LastFinish, DATEADD(YEAR, -1, GETDATE())))
GO
CREATE TABLE BackgroundTasks
(
ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
TaskID NVARCHAR(255),
ScheduleID INT NOT NULL,
PackageID INT NOT NULL,
UserID INT NOT NULL,
EffectiveUserID INT NOT NULL,
TaskName NVARCHAR(255),
ItemID INT,
ItemName NVARCHAR(255),
StartDate DATETIME NOT NULL,
FinishDate DATETIME,
IndicatorCurrent INT NOT NULL,
IndicatorMaximum INT NOT NULL,
MaximumExecutionTime INT NOT NULL,
Source NVARCHAR(MAX),
Severity INT NOT NULL,
Completed BIT,
NotifyOnComplete BIT,
Status INT NOT NULL,
FOREIGN KEY (ScheduleID) REFERENCES Schedule (ScheduleID),
FOREIGN KEY (PackageID) REFERENCES Packages (PackageID)
)
GO
CREATE TABLE BackgroundTaskParameters
(
ParameterID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
TaskID INT NOT NULL,
Name NVARCHAR(255),
SerializerValue NTEXT,
FOREIGN KEY (TaskID) REFERENCES BackgroundTasks (ID)
)
GO
CREATE TABLE BackgroundTaskLogs
(
LogID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
TaskID INT NOT NULL,
Date DATETIME,
ExceptionStackTrace NTEXT,
InnerTaskStart INT,
Severity INT,
Text NTEXT,
TextIdent INT,
XmlParameters NTEXT,
FOREIGN KEY (TaskID) REFERENCES BackgroundTasks (ID)
)
GO
CREATE TABLE BackgroundTaskStack
(
TaskStackID INT NOT NULL PRIMARY KEY,
TaskID INT NOT NULL,
Value NVARCHAR(MAX),
FOREIGN KEY (TaskID) REFERENCES BackgroundTasks (ID)
)
GO
CREATE PROCEDURE [dbo].[AddBackgroundTask]
(
@BackgroundTaskID INT OUTPUT,
@TaskID NVARCHAR(255),
@ScheduleID INT,
@PackageID INT,
@UserID INT,
@EffectiveUserID INT,
@TaskName NVARCHAR(255),
@ItemID INT,
@ItemName NVARCHAR(255),
@StartDate DATETIME,
@IndicatorCurrent INT,
@IndicatorMaximum INT,
@MaximumExecutionTime INT,
@Source NVARCHAR(MAX),
@Severity INT,
@Completed BIT,
@NotifyOnComplete BIT,
@Status INT
)
AS
INSERT INTO BackgroundTasks
(
TaskID,
ScheduleID,
PackageID,
UserID,
EffectiveUserID,
TaskName,
ItemID,
ItemName,
StartDate,
IndicatorCurrent,
IndicatorMaximum,
MaximumExecutionTime,
Source,
Severity,
Completed,
NotifyOnComplete,
Status
)
VALUES
(
@TaskID,
@ScheduleID,
@PackageID,
@UserID,
@EffectiveUserID,
@TaskName,
@ItemID,
@ItemName,
@StartDate,
@IndicatorCurrent,
@IndicatorMaximum,
@MaximumExecutionTime,
@Source,
@Severity,
@Completed,
@NotifyOnComplete,
@Status
)
SET @BackgroundTaskID = SCOPE_IDENTITY()
RETURN
GO
CREATE PROCEDURE [dbo].[GetBackgroundTask]
(
@ActorID INT,
@TaskID NVARCHAR(255)
)
AS
SELECT TOP 1
T.ID,
T.TaskID,
T.ScheduleID,
T.PackageID,
T.UserID,
T.EffectiveUserID,
T.TaskName,
T.ItemID,
T.ItemName,
T.StartDate,
T.FinishDate,
T.IndicatorCurrent,
T.IndicatorMaximum,
T.MaximumExecutionTime,
T.Source,
T.Severity,
T.Completed,
T.NotifyOnComplete,
T.Status
FROM BackgroundTasks AS T
INNER JOIN BackgroundTaskStack AS TS
ON TS.TaskId = T.ID
WHERE T.TaskID = @TaskID AND T.UserID = @ActorID
GO
CREATE PROCEDURE [dbo].[GetBackgroundTasks]
(
@ActorID INT
)
AS
SELECT
T.ID,
T.TaskID,
T.ScheduleId,
T.PackageId,
T.UserId,
T.EffectiveUserId,
T.TaskName,
T.ItemId,
T.ItemName,
T.StartDate,
T.FinishDate,
T.IndicatorCurrent,
T.IndicatorMaximum,
T.MaximumExecutionTime,
T.Source,
T.Severity,
T.Completed,
T.NotifyOnComplete,
T.Status
FROM BackgroundTasks AS T
INNER JOIN BackgroundTaskStack AS TS
ON TS.TaskId = T.ID
WHERE T.UserID = @ActorID
GO
CREATE PROCEDURE [dbo].[GetBackgroundTopTask]
(
@ActorID INT
)
AS
SELECT TOP 1
T.ID,
T.TaskID,
T.ScheduleId,
T.PackageId,
T.UserId,
T.EffectiveUserId,
T.TaskName,
T.ItemId,
T.ItemName,
T.StartDate,
T.FinishDate,
T.IndicatorCurrent,
T.IndicatorMaximum,
T.MaximumExecutionTime,
T.Source,
T.Severity,
T.Completed,
T.NotifyOnComplete,
T.Status
FROM BackgroundTasks AS T
INNER JOIN BackgroundTaskStack AS TS
ON TS.TaskId = T.ID
WHERE T.UserID = @ActorID
ORDER BY T.StartDate DESC
GO
CREATE PROCEDURE [dbo].[AddBackgroundTaskLog]
(
@TaskID INT,
@Date DATETIME,
@ExceptionStackTrace NTEXT,
@InnerTaskStart INT,
@Severity INT,
@Text NTEXT,
@TextIdent INT,
@XmlParameters NTEXT
)
AS
INSERT INTO BackgroundTaskLogs
(
TaskID,
Date,
ExceptionStackTrace,
InnerTaskStart,
Severity,
Text,
TextIdent,
XmlParameters
)
VALUES
(
@TaskID,
@Date,
@ExceptionStackTrace,
@InnerTaskStart,
@Severity,
@Text,
@TextIdent,
@XmlParameters
)
GO
CREATE PROCEDURE [dbo].[GetBackgroundTaskLogs]
(
@TaskID INT,
@StartLogTime DATETIME
)
AS
SELECT
L.LogID,
L.TaskID,
L.Date,
L.ExceptionStackTrace,
L.InnerTaskStart,
L.Severity,
L.Text,
L.XmlParameters
FROM BackgroundTaskLogs AS L
WHERE L.TaskID = @TaskID AND L.Date >= @StartLogTime
ORDER BY L.Date
GO
CREATE PROCEDURE [dbo].[UpdateBackgroundTask]
(
@TaskID INT,
@ScheduleID INT,
@PackageID INT,
@UserID INT,
@EffectiveUserID INT,
@TaskName NVARCHAR(255),
@ItemID INT,
@ItemName NVARCHAR(255),
@FinishDate DATETIME,
@IndicatorCurrent INT,
@IndicatorMaximum INT,
@MaximumExecutionTime INT,
@Source NVARCHAR(MAX),
@Severity INT,
@Completed BIT,
@NotifyOnComplete BIT,
@Status INT
)
AS
UPDATE BackgroundTask
SET
ScheduleID = @ScheduleID,
PackageID = @PackageID,
UserID = @UserID,
EffectiveUserID = @EffectiveUserID,
TaskName = @TaskName,
ItemID = @ItemID,
ItemName = @ItemName,
FinishDate = @FinishDate,
IndicatorCurrent = @IndicatorCurrent,
IndicatorMaximum = @IndicatorMaximum,
MaximumExecutionTime = @MaximumExecutionTime,
Source = @Source,
Severity = @Severity,
Completed = @Completed,
NotifyOnComplete = @NotifyOnComplete,
Status = @Status
WHERE ID = @TaskID
GO
CREATE PROCEDURE [dbo].[GetBackgroundTaskParams]
(
@TaskID INT
)
AS
SELECT
P.ParameterID,
P.TaskID,
P.Name,
P.SerializerValue
FROM BackgroundTaskParameters AS P
WHERE P.TaskID = @TaskID
GO
CREATE PROCEDURE [dbo].[AddBackgroundTaskParam]
(
@TaskID INT,
@Name NVARCHAR(255),
@Value NTEXT
)
AS
INSERT INTO BackgroundTaskParameters
(
TaskID,
Name,
SerializerValue
)
VALUES
(
@TaskID,
@Name,
@Value
)
GO
CREATE PROCEDURE [dbo].[DeleteBackgroundTaskParams]
(
@TaskID INT
)
AS
DELETE FROM BackgroundTaskParameters
WHERE TaskID = @TaskID
GO
CREATE PROCEDURE [dbo].[AddBackgroundTaskStack]
(
@TaskID INT
)
AS
INSERT INTO BackgroundTaskStack
(
TaskID
)
VALUES
(
@TaskID
)
GO
CREATE PROCEDURE [dbo].[DeleteBackgroundTaskStack]
(
@TaskID INT
)
AS
DELETE FROM BackgroundTaskStack
WHERE TaskID = @TaskID
GO

View file

@ -1921,7 +1921,7 @@ namespace WebsitePanel.EnterpriseServer
{
SqlHelper.ExecuteNonQuery(ConnectionString, CommandType.StoredProcedure,
ObjectQualifier + "UpdateBackgroundTask",
new SqlParameter("@taskId", scheduleId),
new SqlParameter("@taskId", taskId),
new SqlParameter("@scheduleId", scheduleId),
new SqlParameter("@packageId", packageId),
new SqlParameter("@taskName", taskName),

View file

@ -63,7 +63,7 @@ namespace WebsitePanel.Portal
litTitle.Text = String.Format("{0} "{1}"",
GetAuditLogTaskName(task.Source, task.TaskName),
task.ItemName);
litStep.Text = LocalizeActivityText(task.LastLogRecord.Text);
litStep.Text = LocalizeActivityText(task.Logs.Count > 0 ? task.Logs[0].Text : String.Empty);
litStartTime.Text = task.StartDate.ToString();
// progress
@ -77,11 +77,10 @@ namespace WebsitePanel.Portal
// execution log
StringBuilder log = new StringBuilder();
task.LastLogRecords.Reverse();
if (task.LastLogRecords.Count > 0)
ViewState["lastLogDate"] = task.LastLogRecords[0].Date.AddTicks(1);
if (task.Logs.Count > 0)
ViewState["lastLogDate"] = task.Logs[0].Date.AddTicks(1);
foreach (BackgroundTaskLogRecord logRecord in task.LastLogRecords)
foreach (BackgroundTaskLogRecord logRecord in task.Logs)
{
log.Append("[").Append(GetDurationText(task.StartDate, logRecord.Date)).Append("] ");
log.Append(GetLogLineIdent(logRecord.TextIdent));

View file

@ -176,7 +176,7 @@ namespace WebsitePanel.Portal.VPS.UserControls
litElapsed.Text = new TimeSpan(d.Hours, d.Minutes, d.Seconds).ToString();
// bind records
repRecords.DataSource = task.LastLogRecords;
repRecords.DataSource = task.Logs;
repRecords.DataBind();
}
@ -213,7 +213,7 @@ namespace WebsitePanel.Portal.VPS.UserControls
// gauge
gauge.Visible = false;
if (e.Item.ItemIndex == task.LastLogRecords.Count - 1)
if (e.Item.ItemIndex == task.Logs.Count - 1)
{
gauge.Visible = true;
gauge.Total = task.IndicatorMaximum;

View file

@ -183,7 +183,7 @@ namespace WebsitePanel.Portal.VPSForPC.UserControls
litElapsed.Text = new TimeSpan(d.Hours, d.Minutes, d.Seconds).ToString();
// bind records
repRecords.DataSource = task.LastLogRecords;
repRecords.DataSource = task.Logs;
repRecords.DataBind();
}
@ -228,7 +228,7 @@ namespace WebsitePanel.Portal.VPSForPC.UserControls
// gauge
gauge.Visible = false;
if (e.Item.ItemIndex == task.LastLogRecords.Count - 1)
if (e.Item.ItemIndex == task.Logs.Count - 1)
{
gauge.Visible = true;
gauge.Total = task.IndicatorMaximum;