diff options
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/SiteDetailsViewVM.cs')
| -rw-r--r-- | Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/SiteDetailsViewVM.cs | 175 |
1 files changed, 0 insertions, 175 deletions
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; - } - } - } -} |
