using EFCache;
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;
using Tango.BL;
using Tango.BL.Builders;
using Tango.BL.Catalogs;
using Tango.BL.Entities;
using Tango.Core;
using Tango.Core.Commands;
using Tango.DragAndDrop;
using Tango.FirmwareUpdateLib;
using Tango.FirmwareUpdateLib.WPF;
using Tango.Logging;
using Tango.SharedUI;
using Tango.Web;
using System.Data;
using System.Data.SqlClient;
using System.Security.Permissions;
using TableDependency.SqlClient.Base;
using TableDependency.SqlClient;
using TableDependency.SqlClient.Base.EventArgs;
using TableDependency.SqlClient.Base.Abstracts;
using Tango.Core.Components;
using System.Text.RegularExpressions;
namespace Tango.UITests
{
///
/// Interaction logic for MainWindow.xaml
///
public partial class MainWindow : Window
{
//private ITableDependency _dep;
//private DataSource _dataSource;
public MainWindow()
{
//_dataSource = new DataSource()
//{
// Address = "twine.database.windows.net",
// Catalog = "Tango_DEV",
// Type = DataSourceType.SQLServer,
// UserName = "Roy",
// Password = "Aa123456",
// IntegratedSecurity = false,
//};
//InitializeComponent();
//EntityFrameworkCache.Initialize(new MyMemoryCache() { Expiration = TimeSpan.FromMinutes(1) });
//this.Closing += MainWindow_Closing;
//CmdCommand command = new CmdCommand("wmic", "pagefile list /format:list");
//var result = command.Run().Result;
//Regex regEx = new Regex("Name=(.+)");
//var pageFiles = regEx.Matches(result.StandardOutput).OfType().Select(x => x.Groups.OfType().LastOrDefault()).ToList().Select(x => x.Value.Replace("\n", "").Replace("\r", "")).ToList();
//var matches = matches.OfType().Select(x => x.Groups.OfType().Last().Value.Replace("\n","").Replace("\r","")).ToList();
}
//private void MainWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
//{
// //if (_dep != null)
// //{
// // _dep.Stop();
// // _dep.Dispose();
// //}
//}
//private void btnStart_Click(object sender, RoutedEventArgs e)
//{
// Stopwatch watch = Stopwatch.StartNew();
// using (ObservablesContext db = ObservablesContext.CreateDefault(_dataSource))
// {
// var users = db.Users.ToList();
// var jobs = new JobsCollectionBuilder(db).SetAll().WithSegments().WithBrushStops().Build();
// var first_job = jobs.First();
// if (first_job.Name == "Changed Name 2")
// {
// Debug.WriteLine("Changed and cached !!!");
// }
// else
// {
// Debug.WriteLine("Not working.");
// }
// }
// Debug.WriteLine($"Time to complete: {watch.Elapsed.TotalSeconds} seconds");
//}
//private void btnChange_Click(object sender, RoutedEventArgs e)
//{
// using (ObservablesContext db = ObservablesContext.CreateDefault(_dataSource))
// {
// var jobs = new JobsCollectionBuilder(db).SetAll().WithSegments().WithBrushStops().Build();
// var first_job = jobs.First();
// first_job.Name = "Changed Name 2";
// db.SaveChanges();
// }
//}
//private void btnListen_Click(object sender, RoutedEventArgs e)
//{
// String str = _dataSource.ToConnection().ConnectionString;
// var dep = new SqlTableDependency(str, "USERS", "dbo");
// dep.TraceLevel = TraceLevel.Verbose;
// dep.TraceListener = new TextWriterTraceListener(Console.Out);
// dep.OnChanged += Changed;
// dep.Start();
// _dep = dep;
//}
//private void Changed(object sender, RecordChangedEventArgs e)
//{
// var changedEntity = e.Entity;
// Console.WriteLine("DML operation: " + e.ChangeType);
// Console.WriteLine(changedEntity.ToJsonString());
//}
}
}