using System;
using NLog;
namespace NzbDrone.Core.Entities.Notification
{
public class ProgressNotification : IDisposable
{
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
public ProgressNotification(string title)
{
Title = title;
CurrentStatus = String.Empty;
Id = Guid.NewGuid();
ProgressMax = 100;
ProgressValue = 0;
}
///
/// Gets or sets the unique id.
///
/// The Id.
public Guid Id { get; private set; }
///
/// Gets or sets the title for this notification.
///
/// The title.
public String Title { get; set; }
///
/// Gets or sets the current status of this task. this field could be use to show the currently processing item in a long running task.
///
/// The current status.
public String CurrentStatus { get; set; }
///
/// Gets or sets the completion status in percent.
///
/// The percent complete.
public int PercentComplete
{
get
{
return Convert.ToInt32(Convert.ToDouble(ProgressValue) / Convert.ToDouble(ProgressMax) * 100);
}
}
///
/// Gets or sets the total number of items that need to be completed
///
/// The progress max.
public int ProgressMax { get; set; }
///
/// Gets or sets the number of items successfully completed.
///
/// The progress value.
public int ProgressValue { get; set; }
///
/// Gets or sets the status.
///
/// The status.
public NotificationStatus Status { get; set; }
public void Dispose()
{
if (Status == NotificationStatus.InProgress)
{
Logger.Error("Progress notification '{0}' was unexpectedly abandoned. ID:{1} Status:{2} CurrentStatus:{3} PercentComplete:{4}", Title, Id, Status, CurrentStatus, PercentComplete);
Status = NotificationStatus.Failed;
}
}
}
}