aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels
diff options
context:
space:
mode:
authorMirta <mirta@twine-s.com>2020-12-30 16:39:52 +0200
committerMirta <mirta@twine-s.com>2020-12-30 16:39:52 +0200
commit00a491d93733d4625ad329b2ba8237f445364b3f (patch)
tree4b24c6fa78d7648f4bb7cefafa464bb0b063fec4 /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels
parent124ad4150f80c6846fdee41dbbda9848c105f6e5 (diff)
downloadTango-00a491d9.tar.gz
Tango-00a491d9.zip
merge
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/MainViewVM.cs220
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/SiteDetailsViewVM.cs175
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;
- }
- }
- }
-}