using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using Tango.BL.Entities;
using Tango.Core;
using System.Data.Entity;
using Tango.Core.Threading;
namespace Tango.BL
{
public partial class ObservablesStaticCollections : ExtendedObject
{
private ObservablesContext db;
private bool _initialized;
public bool IsInitialized
{
get { return _initialized; }
private set { _initialized = value; }
}
private static ObservablesStaticCollections _instance;
///
/// Gets the singleton instance.
///
public static ObservablesStaticCollections Instance
{
get
{
if (_instance == null)
{
_instance = new ObservablesStaticCollections();
}
return _instance;
}
}
private ObservablesStaticCollections()
{
}
public ObservablesStaticCollections(ObservablesContext context)
{
db = context;
}
public ObservablesContext Context
{
get { return db; }
}
public void InitializeLite(Action progressLog = null)
{
if (!_initialized)
{
progressLog?.Invoke("Loading static collections...");
db = ObservablesContext.CreateDefault();
WindingMethods = db.WindingMethods.ToObservableCollection();
progressLog?.Invoke("Loading color spaces...");
ColorSpaces = db.ColorSpaces.ToObservableCollection();
progressLog?.Invoke("Loading spools...");
SpoolTypes = db.SpoolTypes.ToObservableCollection();
progressLog?.Invoke("Loading events...");
EventTypes = db.EventTypes.ToObservableCollection();
progressLog?.Invoke("Loading blowers...");
HardwareBlowerTypes = db.HardwareBlowerTypes.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
//HardwareBlowers = db.HardwareBlowers.ToObservableCollection();
progressLog?.Invoke("Loading break sensors...");
HardwareBreakSensorTypes = db.HardwareBreakSensorTypes.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
//HardwareBreakSensors = db.HardwareBreakSensors.ToObservableCollection();
progressLog?.Invoke("Loading dancers...");
HardwareDancerTypes = db.HardwareDancerTypes.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
//HardwareDancers = db.HardwareDancers.ToObservableCollection();
progressLog?.Invoke("Loading motors...");
HardwareMotorTypes = db.HardwareMotorTypes.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
//HardwareMotors = db.HardwareMotors.ToObservableCollection();
progressLog?.Invoke("Loading pid controls...");
HardwarePidControlTypes = db.HardwarePidControlTypes.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
//HardwarePidControls = db.HardwarePidControls.ToObservableCollection();
progressLog?.Invoke("Loading speed sensors...");
HardwareSpeedSensorTypes = db.HardwareSpeedSensorTypes.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
//HardwareSpeedSensors = db.HardwareSpeedSensors.ToObservableCollection();
progressLog?.Invoke("Loading winders...");
HardwareWinderTypes = db.HardwareWinderTypes.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
//HardwareWinders = db.HardwareWinders.ToObservableCollection();
progressLog?.Invoke("Loading tech controllers...");
TechControllers = db.TechControllers.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
progressLog?.Invoke("Loading tech dispensers...");
TechDispensers = db.TechDispensers.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
progressLog?.Invoke("Loading tech io's...");
TechIos = db.TechIos.ToObservableCollection();
progressLog?.Invoke("Loading tech monitors...");
TechMonitors = db.TechMonitors.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
progressLog?.Invoke("Loading tech valves...");
TechValves = db.TechValves.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
progressLog?.Invoke("Loading tech heaters...");
TechHeaters = db.TechHeaters.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
//progressLog?.Invoke("Loading machines...");
Machines = db.Machines.Include(x => x.Organization).ToObservableCollection();
//progressLog?.Invoke("Loading users...");
//Users = db.Users.Where(x => !x.Deleted).Include(x => x.Contact).ToObservableCollection();
//progressLog?.Invoke("Loading machine versions...");
MachineVersions = db.MachineVersions.ToObservableCollection();
//Load later...
//Task.Factory.StartNew(() =>
//{
// //LiquidTypes = db.LiquidTypes.ToObservableCollection();
// //DispenserTypes = db.DispenserTypes.ToObservableCollection();
// //MidTankTypes = db.MidTankTypes.ToObservableCollection();
// //CartridgeTypes = db.CartridgeTypes.ToObservableCollection();
// //IdsPackFormulas = db.IdsPackFormulas.ToObservableCollection();
// //Rmls = db.Rmls.ToObservableCollection();
// //LiquidTypesRmls = db.LiquidTypesRmls.ToObservableCollection();
// //foreach (var machine in Machines)
// //{
// // ObservablesContextAdapter adapter = new ObservablesContextAdapter(db);
// // adapter.GetConfiguration(x => x.Guid == machine.ConfigurationGuid);
// //}
//});
_initialized = true;
}
}
///
/// Initializes this instance.
///
public void Initialize(Action progressLog = null)
{
if (!_initialized)
{
progressLog?.Invoke("Loading static collections...");
db = ObservablesContext.CreateDefault();
WindingMethods = db.WindingMethods.ToObservableCollection();
progressLog?.Invoke("Loading color spaces...");
ColorSpaces = db.ColorSpaces.ToObservableCollection();
progressLog?.Invoke("Loading spools...");
SpoolTypes = db.SpoolTypes.ToObservableCollection();
progressLog?.Invoke("Loading events...");
EventTypes = db.EventTypes.ToObservableCollection();
progressLog?.Invoke("Loading blowers...");
HardwareBlowerTypes = db.HardwareBlowerTypes.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
//HardwareBlowers = db.HardwareBlowers.ToObservableCollection();
progressLog?.Invoke("Loading break sensors...");
HardwareBreakSensorTypes = db.HardwareBreakSensorTypes.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
//HardwareBreakSensors = db.HardwareBreakSensors.ToObservableCollection();
progressLog?.Invoke("Loading dancers...");
HardwareDancerTypes = db.HardwareDancerTypes.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
//HardwareDancers = db.HardwareDancers.ToObservableCollection();
progressLog?.Invoke("Loading motors...");
HardwareMotorTypes = db.HardwareMotorTypes.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
//HardwareMotors = db.HardwareMotors.ToObservableCollection();
progressLog?.Invoke("Loading pid controls...");
HardwarePidControlTypes = db.HardwarePidControlTypes.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
//HardwarePidControls = db.HardwarePidControls.ToObservableCollection();
progressLog?.Invoke("Loading speed sensors...");
HardwareSpeedSensorTypes = db.HardwareSpeedSensorTypes.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
//HardwareSpeedSensors = db.HardwareSpeedSensors.ToObservableCollection();
progressLog?.Invoke("Loading winders...");
HardwareWinderTypes = db.HardwareWinderTypes.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
//HardwareWinders = db.HardwareWinders.ToObservableCollection();
progressLog?.Invoke("Loading tech controllers...");
TechControllers = db.TechControllers.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
progressLog?.Invoke("Loading tech dispensers...");
TechDispensers = db.TechDispensers.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
progressLog?.Invoke("Loading tech io's...");
TechIos = db.TechIos.ToObservableCollection();
progressLog?.Invoke("Loading tech monitors...");
TechMonitors = db.TechMonitors.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
progressLog?.Invoke("Loading tech valves...");
TechValves = db.TechValves.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
progressLog?.Invoke("Loading tech heaters...");
TechHeaters = db.TechHeaters.ToList().OrderByAlphaNumeric(x => x.Description).ToObservableCollection();
progressLog?.Invoke("Loading machines...");
Machines = db.Machines.Include(x => x.Organization).ToObservableCollection();
progressLog?.Invoke("Loading users...");
Users = db.Users.Where(x => !x.Deleted).Include(x => x.Contact).ToObservableCollection();
progressLog?.Invoke("Loading machine versions...");
MachineVersions = db.MachineVersions.ToObservableCollection();
//Load later...
Task.Factory.StartNew(() =>
{
LiquidTypes = db.LiquidTypes.ToObservableCollection();
DispenserTypes = db.DispenserTypes.ToObservableCollection();
MidTankTypes = db.MidTankTypes.ToObservableCollection();
CartridgeTypes = db.CartridgeTypes.ToObservableCollection();
IdsPackFormulas = db.IdsPackFormulas.ToObservableCollection();
Rmls = db.Rmls.ToObservableCollection();
LiquidTypesRmls = db.LiquidTypesRmls.ToObservableCollection();
foreach (var machine in Machines)
{
ObservablesContextAdapter adapter = new ObservablesContextAdapter(db);
adapter.GetConfiguration(x => x.Guid == machine.ConfigurationGuid);
}
});
_initialized = true;
}
//InitCollectionSources();
}
///
/// Creates a collection view from the specified observable collection.
///
///
/// The collection.
///
private ICollectionView CreateCollectionView(ObservableCollection collection)
{
var view = CollectionViewSource.GetDefaultView(collection);
return view;
}
}
}