diff options
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels')
2 files changed, 0 insertions, 395 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/MainViewVM.cs deleted file mode 100644 index 5db5e004d..000000000 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/MainViewVM.cs +++ /dev/null @@ -1,220 +0,0 @@ - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.BL; -using Tango.BL.ActionLogs; -using Tango.BL.Builders; -using Tango.BL.Entities; -using Tango.Core.Commands; -using Tango.Core.Threading; -using Tango.MachineStudio.Common; -using Tango.MachineStudio.Common.Authentication; -using Tango.MachineStudio.Common.Notifications; -using Tango.MachineStudio.Sites.Contracts; -using Tango.MachineStudio.Sites.Models; - -namespace Tango.MachineStudio.Sites.ViewModels -{ - public class MainViewVM : StudioViewModel<IMainView> - { - private ObservablesContext _db; - private INotificationProvider _notification; - private IAuthenticationProvider _authentication; - private IActionLogManager _actionLogManager; - private ActionTimer _filter_timer; - - private List<SiteModel> _sites; - public List<SiteModel> Sites - { - get { return _sites; } - set { _sites = value; RaisePropertyChangedAuto(); } - } - - private SiteModel _selectedSite; - public SiteModel SelectedSite - { - get { return _selectedSite; } - set { _selectedSite = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); } - } - - private String _filter; - public String Filter - { - get { return _filter; } - set { _filter = value; RaisePropertyChangedAuto(); OnFilterChanged(); } - } - - private SiteDetailsViewVM _siteDetailsViewVM; - public SiteDetailsViewVM SiteDetailsViewVM - { - get { return _siteDetailsViewVM; } - set { _siteDetailsViewVM = value; RaisePropertyChangedAuto(); } - } - - public RelayCommand AddSiteCommand { get; set; } - - public RelayCommand RemoveSiteCommand { get; set; } - - public RelayCommand ManageSiteCommand { get; set; } - - public RelayCommand BackToSitesCommand { get; set; } - - public MainViewVM(INotificationProvider notificationProvider, IAuthenticationProvider authentication, IActionLogManager actionLogManager) - { - _notification = notificationProvider; - _authentication = authentication; - _actionLogManager = actionLogManager; - _filter_timer = new ActionTimer(TimeSpan.FromMilliseconds(500)); - - ManageSiteCommand = new RelayCommand(() => LoadSelectedSite(), () => SelectedSite != null); - BackToSitesCommand = new RelayCommand(() => { View.NavigateTo(SitesNavigationView.SitesView); }); - AddSiteCommand = new RelayCommand(AddNewSite); - RemoveSiteCommand = new RelayCommand(RemoveSelectedSite, () => SelectedSite != null); - } - - private async void RemoveSelectedSite() - { - if (!_notification.ShowQuestion("Are you sure you wish to remove the selected site?")) return; - - try - { - using (_notification.PushTaskItem("Removing site...")) - { - IsFree = false; - await Task.Factory.StartNew(() => - { - var site = _db.Sites.SingleOrDefault(x => x.Guid == SelectedSite.Guid); - site.Delete(_db); - _db.SaveChanges(); - _actionLogManager.InsertLog(BL.Enumerations.ActionLogType.SiteDeleted, _authentication.CurrentUser, site.Name, site, "Site deleted using Machine Studio."); - Sites.Remove(SelectedSite); - LoadSites(); - }); - } - } - catch (Exception ex) - { - LogManager.Log(ex, "Error removing site."); - _notification.ShowError($"Error removing site.\n{ex.FlattenMessage()}"); - } - finally - { - IsFree = true; - } - } - - private async void AddNewSite() - { - try - { - String name = _notification.ShowTextInput("Enter site name", "name"); - if (String.IsNullOrWhiteSpace(name)) return; - - using (_notification.PushTaskItem("Creating site...")) - { - IsFree = false; - SiteDetailsViewVM = new SiteDetailsViewVM(); - SiteDetailsViewVM.Saved += SiteDetailsViewVM_Saved; - await SiteDetailsViewVM.Init(SelectedSite?.Guid, _notification, _authentication, _actionLogManager, true, name); - View.NavigateTo(SitesNavigationView.SiteDetailsView); - } - } - catch (Exception ex) - { - LogManager.Log(ex, "Error creating site."); - _notification.ShowError($"Error creating site.\n{ex.FlattenMessage()}"); - } - finally - { - IsFree = true; - } - } - - private async void LoadSelectedSite() - { - try - { - using (_notification.PushTaskItem("Loading site details...")) - { - IsFree = false; - SiteDetailsViewVM = new SiteDetailsViewVM(); - SiteDetailsViewVM.Saved += SiteDetailsViewVM_Saved; - await SiteDetailsViewVM.Init(SelectedSite.Guid, _notification, _authentication, _actionLogManager, false); - View.NavigateTo(SitesNavigationView.SiteDetailsView); - } - } - catch (Exception ex) - { - LogManager.Log(ex, "Error loading site details."); - _notification.ShowError($"Error loading site details.\n{ex.FlattenMessage()}"); - } - finally - { - IsFree = true; - } - } - - private void SiteDetailsViewVM_Saved(object sender, EventArgs e) - { - OnFilterChanged(); - View.NavigateTo(SitesNavigationView.SitesView); - } - - private void OnFilterChanged() - { - if (Filter != null) - { - _filter_timer.ResetReplace(() => - { - try - { - LoadSites(); - } - catch (Exception ex) - { - LogManager.Log(ex, "Error loading sites list."); - } - }); - } - } - - private void LoadSites() - { - using (_notification.PushTaskItem("Loading sites...")) - { - Sites = (from site in _db.Sites - join organization in _db.Organizations on site.OrganizationGuid equals organization.Guid - join sites_rmls in _db.SitesRmls on site.Guid equals sites_rmls.SiteGuid into rmls - join sites_catalogs in _db.SitesCatalogs on site.Guid equals sites_catalogs.SiteGuid into catalogs - join sites_machines in _db.Machines on site.Guid equals sites_machines.SiteGuid into machines - where Filter == null || Filter == "" || site.Name.ToLower().StartsWith(Filter.ToLower()) || organization.Name.ToLower().StartsWith(Filter.ToLower()) - select new - { - Site = site, - OrganizationName = organization.Name, - ThreadCount = rmls.Count(x => x.SiteGuid == site.Guid), - CatalogCount = catalogs.Count(x => x.SiteGuid == site.Guid), - MachineCount = machines.Count(x => x.SiteGuid == site.Guid) - }).Distinct().ToList().DistinctBy(x => x.Site.Guid).Select(x => new SiteModel() - { - Guid = x.Site.Guid, - ID = x.Site.ID, - Name = x.Site.Name, - Description = x.Site.Description, - ThreadCount = x.ThreadCount, - CatalogCount = x.CatalogCount, - MachineCount = x.MachineCount, - Organization = x.OrganizationName, - }).ToList(); - } - } - - public override void OnApplicationReady() - { - _db = ObservablesContext.CreateDefault(); - } - } -} diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/SiteDetailsViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/SiteDetailsViewVM.cs deleted file mode 100644 index cacda1e8d..000000000 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/SiteDetailsViewVM.cs +++ /dev/null @@ -1,175 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.BL; -using Tango.BL.Entities; -using Tango.Core.Commands; -using Tango.SharedUI; -using Tango.SharedUI.Components; -using System.Data.Entity; -using Tango.MachineStudio.Common.Notifications; -using Tango.MachineStudio.Common.Authentication; -using Tango.BL.ActionLogs; -using Tango.BL.DTO; -using Tango.BL.Builders; - -namespace Tango.MachineStudio.Sites.ViewModels -{ - public class SiteDetailsViewVM : ViewModel - { - private ObservablesContext _db; - private INotificationProvider _notification; - private IAuthenticationProvider _authentication; - private IActionLogManager _actionLogManager; - private bool _isNew; - private SiteDTO _siteBeforeSave; - - public event EventHandler Saved; - - private Site _site; - public Site Site - { - get { return _site; } - set { _site = value; RaisePropertyChangedAuto(); } - } - - private List<Organization> _organizations; - public List<Organization> Organizations - { - get { return _organizations; } - set { _organizations = value; RaisePropertyChangedAuto(); } - } - - private SelectedObjectCollection<Rml> _rmls; - public SelectedObjectCollection<Rml> Rmls - { - get { return _rmls; } - set { _rmls = value; RaisePropertyChangedAuto(); } - } - - private SelectedObjectCollection<ColorCatalog> _catalogs; - public SelectedObjectCollection<ColorCatalog> Catalogs - { - get { return _catalogs; } - set { _catalogs = value; RaisePropertyChangedAuto(); } - } - - private List<Machine> _machines; - public List<Machine> Machines - { - get { return _machines; } - set { _machines = value; RaisePropertyChangedAuto(); } - } - - public RelayCommand SaveCommand { get; set; } - - public SiteDetailsViewVM() - { - SaveCommand = new RelayCommand(Save, () => IsFree); - } - - public async Task Init(String siteGuid, INotificationProvider notification, IAuthenticationProvider authentication, IActionLogManager actionLogManager, bool isNew, string newSiteName = null) - { - _notification = notification; - _authentication = authentication; - _actionLogManager = actionLogManager; - - _db = ObservablesContext.CreateDefault(); - Organizations = await _db.Organizations.ToListAsync(); - - if (isNew) - { - Site = new Site(); - Site.Name = newSiteName; - Site.Description = "My site description"; - _db.Sites.Add(Site); - - _isNew = true; - } - else - { - _isNew = false; - Site = await new SiteBuilder(_db).Set(siteGuid) - .WithSiteCatalogs() - .WithCatalogs() - .WithSiteRmls() - .WithRmls() - .WithOrganization() - .BuildAsync(); - } - - Machines = await _db.Machines.Where(x => x.SiteGuid == Site.Guid).Include(x => x.Organization).ToListAsync(); - - var rmls = await _db.Rmls.OrderBy(x => x.Name).ToListAsync(); - var catalogs = await _db.ColorCatalogs.OrderBy(x => x.Name).ToListAsync(); - - Rmls = new SelectedObjectCollection<Rml>(rmls.ToObservableCollection(), Site.SitesRmls.Select(x => x.Rml).ToObservableCollection()); - Catalogs = new SelectedObjectCollection<ColorCatalog>(catalogs.ToObservableCollection(), Site.SitesCatalogs.Select(x => x.ColorCatalog).ToObservableCollection()); - - _siteBeforeSave = SiteDTO.FromObservable(Site); - } - - private async void Save() - { - try - { - if (!Site.Validate(_db)) - { - _notification.ShowError(String.Join("\n", Site.ValidationErrors)); - return; - } - - IsFree = false; - - using (_notification.PushTaskItem("Saving site details...")) - { - //Check if site organization has changed and there are no machines that belongs to this site but different organization. - if (_db.Machines.Any(x => x.SiteGuid == Site.Guid && x.OrganizationGuid != Site.OrganizationGuid)) - { - throw new InvalidOperationException($"One or more machines belongs to this site but not to '{Site.Organization.Name}' organization."); - } - - //Remove site rmls. - Site.SitesRmls.ToList().Where(x => !Rmls.SynchedSource.ToList().Exists(y => y.Guid == x.RmlGuid)).ToList().ForEach(x => _db.SitesRmls.Remove(x)); - Site.SitesCatalogs.ToList().Where(x => !Catalogs.SynchedSource.ToList().Exists(y => y.Guid == x.ColorCatalogGuid)).ToList().ForEach(x => _db.SitesCatalogs.Remove(x)); - - foreach (var selectedRml in Rmls.SynchedSource.Where(x => !Site.SitesRmls.ToList().Exists(y => y.RmlGuid == x.Guid))) - { - _db.SitesRmls.Add(new SitesRml() { SiteGuid = Site.Guid, RmlGuid = selectedRml.Guid }); - } - - foreach (var selectedCatalog in Catalogs.SynchedSource.Where(x => !Site.SitesCatalogs.ToList().Exists(y => y.ColorCatalogGuid == x.Guid))) - { - _db.SitesCatalogs.Add(new SitesCatalog() { SiteGuid = Site.Guid, ColorCatalogGuid = selectedCatalog.Guid }); - } - - await _db.SaveChangesAsync(); - - if (_isNew) - { - _actionLogManager.InsertLog(BL.Enumerations.ActionLogType.SiteCreated, _authentication.CurrentUser, Site.Name, Site, "Site created using Machine Studio."); - } - else - { - SiteDTO siteAfter = SiteDTO.FromObservable(Site); - _actionLogManager.InsertLog(BL.Enumerations.ActionLogType.SiteSaved, _authentication.CurrentUser, _siteBeforeSave.Name, _siteBeforeSave, siteAfter, "Site saved using Machine Studio."); - _siteBeforeSave = siteAfter; - } - } - _db.Dispose(); - Saved?.Invoke(this, new EventArgs()); - } - catch (Exception ex) - { - LogManager.Log(ex, "Error saving site details."); - _notification.ShowError($"Error saving site details.\n{ex.FlattenMessage()}"); - } - finally - { - IsFree = true; - } - } - } -} |
