using Agent.Services;
using log4net;
using System.Windows.Controls;
using System.Windows;
using System.Windows.Media;
namespace Agent.Views
{
///
/// Interaction logic for DashboardPage.xaml
///
public partial class DashboardPage : Page
{
private static readonly ILog log = LogManager.GetLogger(typeof(DashboardPage));
private readonly DriveService _driveService = new DriveService();
private readonly PolicyService _policyService = new PolicyService();
private readonly SolidColorBrush _normalHeaderColor = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#596470"));
private readonly SolidColorBrush _normalBodyColor = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#6C7886"));
private readonly SolidColorBrush _okHeaderColor = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#377614"));
private readonly SolidColorBrush _okBodyColor = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#3f8618"));
private readonly SolidColorBrush _warningHeaderColor = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b6441f"));
private readonly SolidColorBrush _warningBodyColor = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#c54b24"));
public DashboardPage()
{
InitializeComponent();
LoadStatus();
}
public void LoadStatus()
{
LoadDriveStatus();
LoadStorageStatus();
LoadBackupStatus();
LoadMonitoringStatus();
}
///
/// 디스크정보 초기화
///
public void LoadDriveStatus()
{
var totalDrive = _driveService.GetTotalStat();
DriveUsingSpaceTextBox.Text = totalDrive.UsedSize;
DriveFreeSpaceTextBox.Text = totalDrive.FreeSize;
if (null == totalDrive)
{
DriveHeader.Background = _warningHeaderColor;
DriveBody.Background = _warningBodyColor;
return;
}
DriveHeader.Background = _normalHeaderColor;
DriveBody.Background = _normalBodyColor;
}
///
/// 서버 스토리지정보 초기화(DB연결 상태)
///
public void LoadStorageStatus()
{
if (!"OK".Equals(Application.Current.Properties["db_status"]))
{
StorageTextBox.Text = "비정상";
StorageHeader.Background = _warningHeaderColor;
StorageBody.Background = _warningBodyColor;
return;
}
StorageTextBox.Text = "정상";
StorageHeader.Background = _okHeaderColor;
StorageBody.Background = _okBodyColor;
}
///
/// 파일감시정보 초기화(백업스케줄 동작여부)
///
public void LoadMonitoringStatus()
{
if ("OK".Equals(Application.Current.Properties["backup_status"]))
{
MonitorTextBox.Text = "정상";
MonitorHeader.Background = _okHeaderColor;
MonitorBody.Background = _okBodyColor;
return;
}
}
///
/// 백업현황 초기화(연결된 백업파일, 마지막 동기화시간, 백업실패 파일)
///
public void LoadBackupStatus()
{
var backup = _policyService.GetLastMonitoring();
if (null == backup)
{
return;
}
SyncTextBox.Text = $"{backup.End_Date.ToShortDateString()}\r\n{backup.End_Date.ToShortTimeString()}";
SyncHeader.Background = _okHeaderColor;
SyncBody.Background = _okBodyColor;
SuccessTextBox.Text = 0 < backup.Success_Count ? $"{string.Format("{0:#,###}", backup.Success_Count)}개" : "0개";
SuccessHeader.Background = 0 < backup.Success_Count ? _okHeaderColor : _normalHeaderColor;
SuccessBody.Background = 0 < backup.Success_Count ? _okBodyColor : _normalBodyColor;
FailTextBox.Text = 0 < backup.Fail_Count ? $"{string.Format("{0:#,###}", backup.Fail_Count)}개" : "0개";
FailHeader.Background = 0 < backup.Fail_Count ? _warningHeaderColor : _okHeaderColor;
FailBody.Background = 0 < backup.Fail_Count ? _warningBodyColor : _okBodyColor;
}
private void Success_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
if (2 == e.ClickCount)
{
if (Window.GetWindow(this) is MainWindow window)
{
window.ActivePolicyMenu();
}
}
}
private void Fail_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
if (2 == e.ClickCount)
{
if (Window.GetWindow(this) is MainWindow window)
{
window.ActiveReportMenu();
}
}
}
}
}