aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2019-12-21 19:14:00 +0200
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2019-12-21 19:14:00 +0200
commit582c05b00aa1d0fd9086b4a245dcc987eee9fc39 (patch)
tree7b26e3b9b182a921ff9f69db63bc5f6972c205de /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites
parent76cdf188e28544cd5056c30f35d77590d9a79cae (diff)
downloadTango-582c05b00aa1d0fd9086b4a245dcc987eee9fc39.tar.gz
Tango-582c05b00aa1d0fd9086b4a245dcc987eee9fc39.zip
Working some more on ActionLogs across MS.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/MainViewVM.cs13
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/SiteDetailsViewVM.cs42
2 files changed, 47 insertions, 8 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
index 486c8b46f..bcbcb6d16 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/MainViewVM.cs
@@ -5,10 +5,12 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.BL;
+using Tango.BL.ActionLogs;
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;
@@ -19,6 +21,8 @@ namespace Tango.MachineStudio.Sites.ViewModels
{
private ObservablesContext _db;
private INotificationProvider _notification;
+ private IAuthenticationProvider _authentication;
+ private IActionLogManager _actionLogManager;
private ActionTimer _filter_timer;
private List<SiteModel> _sites;
@@ -57,9 +61,11 @@ namespace Tango.MachineStudio.Sites.ViewModels
public RelayCommand BackToSitesCommand { get; set; }
- public MainViewVM(INotificationProvider notificationProvider)
+ 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);
@@ -82,6 +88,7 @@ namespace Tango.MachineStudio.Sites.ViewModels
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();
});
@@ -110,7 +117,7 @@ namespace Tango.MachineStudio.Sites.ViewModels
IsFree = false;
SiteDetailsViewVM = new SiteDetailsViewVM();
SiteDetailsViewVM.Saved += SiteDetailsViewVM_Saved;
- await SiteDetailsViewVM.Init(SelectedSite?.Guid, _notification, true, name);
+ await SiteDetailsViewVM.Init(SelectedSite?.Guid, _notification, _authentication, _actionLogManager, true, name);
View.NavigateTo(SitesNavigationView.SiteDetailsView);
}
}
@@ -134,7 +141,7 @@ namespace Tango.MachineStudio.Sites.ViewModels
IsFree = false;
SiteDetailsViewVM = new SiteDetailsViewVM();
SiteDetailsViewVM.Saved += SiteDetailsViewVM_Saved;
- await SiteDetailsViewVM.Init(SelectedSite.Guid, _notification, false);
+ await SiteDetailsViewVM.Init(SelectedSite.Guid, _notification, _authentication, _actionLogManager, false);
View.NavigateTo(SitesNavigationView.SiteDetailsView);
}
}
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
index 0e4dcbb47..73d4c49cb 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/SiteDetailsViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/SiteDetailsViewVM.cs
@@ -10,6 +10,9 @@ 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;
namespace Tango.MachineStudio.Sites.ViewModels
{
@@ -17,6 +20,10 @@ namespace Tango.MachineStudio.Sites.ViewModels
{
private ObservablesContext _db;
private INotificationProvider _notification;
+ private IAuthenticationProvider _authentication;
+ private IActionLogManager _actionLogManager;
+ private bool _isNew;
+ private SiteDTO _siteBeforeSave;
public event EventHandler Saved;
@@ -69,9 +76,11 @@ namespace Tango.MachineStudio.Sites.ViewModels
SaveCommand = new RelayCommand(Save, () => IsFree);
}
- public async Task Init(String siteGuid, INotificationProvider notification, bool isNew, string newSiteName = null)
+ 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();
@@ -82,9 +91,12 @@ namespace Tango.MachineStudio.Sites.ViewModels
Site.Name = newSiteName;
Site.Description = "My site description";
_db.Sites.Add(Site);
+
+ _isNew = true;
}
else
{
+ _isNew = false;
Site = await _db.Sites.SingleOrDefaultAsync(x => x.Guid == siteGuid);
}
@@ -100,6 +112,8 @@ namespace Tango.MachineStudio.Sites.ViewModels
Catalogs = new SelectedObjectCollection<ColorCatalog>(catalogs.ToObservableCollection(), catalogs.Where(catalog => site_catalogs.Exists(siteCatalog => siteCatalog.CatalogGuid == catalog.Guid)).ToObservableCollection());
SelectedOrganization = Organizations.SingleOrDefault(x => x.Guid == Site.OrganizationGuid);
+
+ _siteBeforeSave = SiteDTO.FromObservable(Site, site_rmls, site_catalogs, SelectedOrganization.Name);
}
private async void Save()
@@ -121,20 +135,38 @@ namespace Tango.MachineStudio.Sites.ViewModels
var site_rmls = await _db.SitesRmls.Where(x => x.SiteGuid == Site.Guid).ToListAsync();
var site_catalogs = await _db.SitesCatalogs.Where(x => x.SiteGuid == Site.Guid).ToListAsync();
- _db.SitesRmls.RemoveRange(site_rmls);
- _db.SitesCatalogs.RemoveRange(site_catalogs);
+ //_db.SitesRmls.RemoveRange(site_rmls);
+ //_db.SitesCatalogs.RemoveRange(site_catalogs);
+
+ //Remove site rmls.
+ site_rmls.ToList().Where(x => !Rmls.SynchedSource.ToList().Exists(y => y.Guid == x.RmlGuid)).ToList().ForEach(x => _db.SitesRmls.Remove(x));
+ site_catalogs.ToList().Where(x => !Catalogs.SynchedSource.ToList().Exists(y => y.Guid == x.CatalogGuid)).ToList().ForEach(x => _db.SitesCatalogs.Remove(x));
- foreach (var selectedRml in Rmls.SynchedSource)
+ foreach (var selectedRml in Rmls.SynchedSource.Where(x => !site_rmls.Exists(y => y.RmlGuid == x.Guid)))
{
_db.SitesRmls.Add(new SitesRml() { SiteGuid = Site.Guid, RmlGuid = selectedRml.Guid });
}
- foreach (var selectedCatalog in Catalogs.SynchedSource)
+ foreach (var selectedCatalog in Catalogs.SynchedSource.Where(x => !site_catalogs.Exists(y => y.CatalogGuid == x.Guid)))
{
_db.SitesCatalogs.Add(new SitesCatalog() { SiteGuid = Site.Guid, CatalogGuid = selectedCatalog.Guid });
}
await _db.SaveChangesAsync();
+
+ var final_site_rmls = _db.SitesRmls.ToList();
+ var final_site_catalogs = _db.SitesCatalogs.ToList();
+
+ if (_isNew)
+ {
+ _actionLogManager.InsertLog(BL.Enumerations.ActionLogType.SiteCreated, _authentication.CurrentUser, Site.Name, Site, "Site created using Machine Studio.");
+ }
+ else
+ {
+ SiteDTO siteAfter = SiteDTO.FromObservable(Site, final_site_rmls, final_site_catalogs, SelectedOrganization.Name);
+ _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());