diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2024-05-18 20:05:10 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2024-05-18 20:05:10 +0300 |
| commit | d91db45c47a1d2d1d050fdafe8f4eb44951a883f (patch) | |
| tree | 1437e1f0f7ea91dae53e59f7f605a3e603ea3926 /Software/Visual_Studio/FSE/Tango.FSE.BL | |
| parent | fd061c7cb7f243d562913d496223830bcf83b7a9 (diff) | |
| download | Tango-d91db45c47a1d2d1d050fdafe8f4eb44951a883f.tar.gz Tango-d91db45c47a1d2d1d050fdafe8f4eb44951a883f.zip | |
FSE/RSM MachineService Provides full capability.
Diffstat (limited to 'Software/Visual_Studio/FSE/Tango.FSE.BL')
10 files changed, 408 insertions, 7 deletions
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.BL/DataResolver.cs b/Software/Visual_Studio/FSE/Tango.FSE.BL/DataResolver.cs index 984a2e8ea..9504ae0af 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.BL/DataResolver.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.BL/DataResolver.cs @@ -21,6 +21,7 @@ namespace Tango.FSE.BL private static object diskLock = new object(); private static IConnectivityProvider _connectivity; private Func<DataResolverContext, T> _onlineAction; + private Func<DataResolverContext, T> _webAction; private Func<DataResolverContext, T> _diskCacheAction; private Func<DataResolverContext, T> _memoryCacheAction; private Action<Exception> _onError; @@ -73,7 +74,21 @@ namespace Tango.FSE.BL fallingBackText = $" Falling back to {nodes[nodes.IndexOf(node) + 1]}..."; } - if (node == DataResolverNode.Online) + if (node == DataResolverNode.Web) + { + try + { + if (_enableLogs) LogManager.Log($"Trying {_callingName} via web..."); + result = ExecuteWebAction(context); + break; + } + catch (Exception ex) + { + if (_enableLogs) LogManager.Log($"{_callingName} via web failed with exception: {ex.FlattenMessage()}{fallingBackText}", LogCategory.Warning); + context.LastError = ex; + } + } + else if (node == DataResolverNode.Online) { try { @@ -159,6 +174,16 @@ namespace Tango.FSE.BL return _onlineAction.Invoke(context); } + private T ExecuteWebAction(DataResolverContext context) + { + if (!_connectivity.CheckOnline()) + { + throw new InternetConnectionException(); + } + + return _webAction.Invoke(context); + } + #region Context /// <summary> @@ -235,6 +260,17 @@ namespace Tango.FSE.BL } /// <summary> + /// Specify the method for the web client node. + /// </summary> + /// <param name="func">The method.</param> + /// <returns></returns> + public Builder Web(Func<DataResolverContext, T> func) + { + _resolver._webAction = func; + return this; + } + + /// <summary> /// Specify the method for the disk cache node. /// </summary> /// <param name="func">The method.</param> diff --git a/Software/Visual_Studio/FSE/Tango.FSE.BL/DataResolverNode.cs b/Software/Visual_Studio/FSE/Tango.FSE.BL/DataResolverNode.cs index 4c5643e2b..d95e3a745 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.BL/DataResolverNode.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.BL/DataResolverNode.cs @@ -12,6 +12,7 @@ namespace Tango.FSE.BL public enum DataResolverNode { Online, + Web, DiskCache, InMemoryCache } diff --git a/Software/Visual_Studio/FSE/Tango.FSE.BL/EntityRepositoryBase.cs b/Software/Visual_Studio/FSE/Tango.FSE.BL/EntityRepositoryBase.cs index 3bc183d11..06bd67c08 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.BL/EntityRepositoryBase.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.BL/EntityRepositoryBase.cs @@ -8,6 +8,8 @@ using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using Tango.BL; +using Tango.BL.Entities; +using Tango.FSE.Web.Messages; namespace Tango.FSE.BL { @@ -40,6 +42,94 @@ namespace Tango.FSE.BL .Select(x => ConvertToEntity(x)) .ToList(); }) + .Web((context) => + { + List<TEntity> entities = new List<TEntity>(); + + if (typeof(TEntity) == typeof(TechMonitor)) + { + entities = WebClient.GetTechComponents(new GetTechComponentsRequest() { Monitors = true }).GetAwaiter().GetResult() + .Monitors.Select(x => x.ToObservable()) + .Cast<TEntity>().ToList(); + } + else if (typeof(TEntity) == typeof(TechIo)) + { + entities = WebClient.GetTechComponents(new GetTechComponentsRequest() { IOs = true }).GetAwaiter().GetResult() + .IOs.Select(x => x.ToObservable()) + .Cast<TEntity>().ToList(); + } + else if (typeof(TEntity) == typeof(TechDispenser)) + { + entities = WebClient.GetTechComponents(new GetTechComponentsRequest() { Dispensers = true }).GetAwaiter().GetResult() + .Dispensers.Select(x => x.ToObservable()) + .Cast<TEntity>().ToList(); + } + else if (typeof(TEntity) == typeof(TechController)) + { + entities = WebClient.GetTechComponents(new GetTechComponentsRequest() { Controllers = true }).GetAwaiter().GetResult() + .Controllers.Select(x => x.ToObservable()) + .Cast<TEntity>().ToList(); + } + else if (typeof(TEntity) == typeof(TechHeater)) + { + entities = WebClient.GetTechComponents(new GetTechComponentsRequest() { Heaters = true }).GetAwaiter().GetResult() + .Heaters.Select(x => x.ToObservable()) + .Cast<TEntity>().ToList(); + } + else if (typeof(TEntity) == typeof(TechValve)) + { + entities = WebClient.GetTechComponents(new GetTechComponentsRequest() { Valves = true }).GetAwaiter().GetResult() + .Valves.Select(x => x.ToObservable()) + .Cast<TEntity>().ToList(); + } + else if (typeof(TEntity) == typeof(HardwareMotorType)) + { + entities = WebClient.GetTechComponents(new GetTechComponentsRequest() { Motors = true }).GetAwaiter().GetResult() + .Motors.Select(x => x.ToObservable()) + .Cast<TEntity>().ToList(); + } + else if (typeof(TEntity) == typeof(HardwareBlowerType)) + { + entities = WebClient.GetTechComponents(new GetTechComponentsRequest() { Blowers = true }).GetAwaiter().GetResult() + .Blowers.Select(x => x.ToObservable()) + .Cast<TEntity>().ToList(); + } + + List<TCachedEntity> cachedEntities = new List<TCachedEntity>(); + + try + { + foreach (var entity in entities) + { + var cachedEntity = ConvertToCached(entity); + cachedEntities.Add(cachedEntity); + _memoryCache.Put(entity.Guid, cachedEntity); + } + } + catch (Exception ex) + { + LogManager.Log(ex, $"Error occurred while trying to cache entities of type '{typeof(TEntity).Name}' to memory."); + } + + try + { + using (var cache = DiskCache.CreateContext()) + { + var collection = cache.Database.GetCollection<TCachedEntity>(); + + foreach (var cachedEntity in cachedEntities) + { + collection.Upsert(cachedEntity); + } + } + } + catch (Exception ex) + { + LogManager.Log(ex, $"Error occurred while trying to cache entities of type '{typeof(TEntity).Name}' to disk."); + } + + return entities; + }) .Online((context) => { using (ObservablesContext db = ObservablesContext.CreateDefault()) diff --git a/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/MachineEventsService.cs b/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/MachineEventsService.cs index 4b2609a94..2c74ad8de 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/MachineEventsService.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/MachineEventsService.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using Tango.BL; using Tango.BL.Entities; using Tango.FSE.BL.CacheEntities; +using Tango.FSE.Web.Messages; namespace Tango.FSE.BL.Services { @@ -22,7 +23,7 @@ namespace Tango.FSE.BL.Services public Task<List<EventType>> GetAllEventTypes() { return DataResolver<List<EventType>>.Builder.New() - .ConfigureCascade(DataResolverNode.InMemoryCache, DataResolverNode.Online, DataResolverNode.DiskCache) + .ConfigureCascade(DataResolverNode.InMemoryCache, DataResolverNode.Web, DataResolverNode.Online, DataResolverNode.DiskCache) .InMemoryCache((context) => { var eventTypes = _eventTypesCache @@ -37,6 +38,44 @@ namespace Tango.FSE.BL.Services return eventTypes; }) + .Web((context) => + { + var eventTypes = WebClient.GetEventTypes(new GetEventTypesRequest()).GetAwaiter().GetResult().EventTypes.Select(x => x.ToObservable()).ToList(); + + List<CachedEventType> cachedEventTypes = new List<CachedEventType>(); + + try + { + foreach (var eventType in eventTypes) + { + var cachedEventType = CachedEventType.FromObservable<CachedEventType>(eventType); + _eventTypesCache.Put(cachedEventType.Guid, cachedEventType); + } + } + catch (Exception ex) + { + LogManager.Log(ex, "Error caching event types on memory."); + } + + try + { + using (var cache = DiskCache.CreateContext()) + { + var collection = cache.Database.GetCollection<CachedEventType>(EVENT_TYPES_COLLECTION); + + foreach (var cachedEventType in cachedEventTypes) + { + collection.Upsert(cachedEventType); + } + } + } + catch (Exception ex) + { + LogManager.Log(ex, "Error caching event types to disk."); + } + + return eventTypes; + }) .Online((context) => { using (ObservablesContext db = ObservablesContext.CreateDefault()) diff --git a/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/MachinesService.cs b/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/MachinesService.cs index db1965397..5ad99f692 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/MachinesService.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/MachinesService.cs @@ -15,6 +15,7 @@ using Z.EntityFramework.Plus; using Z.EntityFramework.Extensions; using Tango.BL.Enumerations; using Tango.Settings; +using Tango.FSE.Web.Messages; namespace Tango.FSE.BL.Services { @@ -54,11 +55,49 @@ namespace Tango.FSE.BL.Services bool allowAll = CurrentUser.HasPermission(Permissions.FSE_ConnectAnyMachine); return DataResolver<Machine>.Builder.New() - .ConfigureCascade(DataResolverNode.InMemoryCache, DataResolverNode.Online, DataResolverNode.DiskCache) + .ConfigureCascade(DataResolverNode.InMemoryCache, DataResolverNode.Web, DataResolverNode.Online, DataResolverNode.DiskCache) .InMemoryCache((context) => { return _machinesCache.Get(serialNumber).ToObservable(); }) + .Web((context) => + { + var response = WebClient.GetMachine(new GetMachineRequest() + { + AllowAllMachines = allowAll, + OrganizationGuid = CurrentUser.OrganizationGuid, + SerialNumber = serialNumber + }).GetAwaiter().GetResult(); + + if (response.Machine != null) + { + var machine = response.Machine.ToObservable(); + + LogManager.Log("Machine retrieved successfully. Caching machine..."); + + var cachedMachine = CachedMachine.FromObservable<CachedMachine>(machine); + + //Store in memory cache. + _machinesCache.Put(serialNumber, cachedMachine); + + //Store disk cache. + try + { + using (var cache = DiskCache.CreateContext()) + { + cache.Database.GetCollection<CachedMachine>(MACHINES_COLLECTION).Upsert(cachedMachine); + } + } + catch (Exception ex) + { + LogManager.Log(ex, "Error caching machine on disk."); + } + + return machine; + } + + throw new ArgumentOutOfRangeException($"Could not locate machine with serial number '{serialNumber}' using the remote server."); + }) .Online((context) => { using (ObservablesContext db = ObservablesContext.CreateDefault()) @@ -132,11 +171,52 @@ namespace Tango.FSE.BL.Services return DataResolver<Machine>.Builder.New() .EnableLogs(enableLogs) - .ConfigureCascade(DataResolverNode.InMemoryCache, DataResolverNode.Online, DataResolverNode.DiskCache) + .ConfigureCascade(DataResolverNode.InMemoryCache, DataResolverNode.Web, DataResolverNode.Online, DataResolverNode.DiskCache) .InMemoryCache((context) => { return _machinesCacheFull.Get(serialNumber).ToObservable(); }) + .Web((context) => + { + var response = WebClient.GetMachine(new GetMachineRequest() + { + AllowAllMachines = allowAll, + OrganizationGuid = CurrentUser.OrganizationGuid, + SerialNumber = serialNumber, + GetExtendedInfo = true + }).GetAwaiter().GetResult(); + + if (response.Machine != null) + { + var machine = response.Machine.ToObservable(); + + if (enableLogs) LogManager.Log("Machine retrieved successfully. Caching machine on disk and in memory..."); + + var cachedMachine = CachedMachine.FromObservable<CachedMachine>(machine); + + //Store in memory cache. + _machinesCacheFull.Put(serialNumber, cachedMachine); + + //Store disk cache. + try + { + using (var cache = DiskCache.CreateContext()) + { + cache.Database.GetCollection<CachedMachine>(FULL_MACHINES_COLLECTION).Upsert(cachedMachine); + } + } + catch (Exception ex) + { + LogManager.Log(ex, $"Error caching machine '{serialNumber}' on disk."); + } + + return machine; + } + else + { + throw new ArgumentOutOfRangeException($"Could not locate machine with serial number '{serialNumber}' on the remote database."); + } + }) .Online((context) => { using (ObservablesContext db = ObservablesContext.CreateDefault()) diff --git a/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/PublishedProcedureProjectsService.cs b/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/PublishedProcedureProjectsService.cs index 9416fd0e4..c34b2eb86 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/PublishedProcedureProjectsService.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/PublishedProcedureProjectsService.cs @@ -8,6 +8,7 @@ using Tango.BL; using Tango.BL.Entities; using Tango.BL.Enumerations; using Tango.FSE.BL.CacheEntities; +using Tango.FSE.Web.Messages; using Z.EntityFramework.Plus; namespace Tango.FSE.BL.Services @@ -26,7 +27,7 @@ namespace Tango.FSE.BL.Services public Task<List<PublishedProcedureProject>> GetPublishedProcedureProjects(bool visibleOnly = true) { return DataResolver<List<PublishedProcedureProject>>.Builder.New() - .ConfigureCascade(DataResolverNode.InMemoryCache, DataResolverNode.Online, DataResolverNode.DiskCache) + .ConfigureCascade(DataResolverNode.InMemoryCache, DataResolverNode.Web, DataResolverNode.Online, DataResolverNode.DiskCache) .InMemoryCache((context) => { var projects = _projectsCache.ToList().Where(x => x.IsVisible || !visibleOnly).Select(x => x.ToObservable()).ToList(); @@ -43,6 +44,40 @@ namespace Tango.FSE.BL.Services return projects.OrderBy(x => x.SortingIndex).ToList(); }) + .Web((context) => + { + var response = WebClient.GetProcedures(new GetProceduresRequest() { GetOnlyVisible = visibleOnly }).GetAwaiter().GetResult(); + + var projects = response.Projects.Select(x => x.ToObservable()).ToList(); + + if (!CurrentUser.HasPermission(Permissions.FSE_ViewInternalPublishedProcedures)) + { + projects.RemoveAll(x => x.ProjectVisibility == PublishedProcedureProjectVisibilities.Internal); + } + + try + { + using (var cache = DiskCache.CreateContext()) + { + var collection = cache.Database.GetCollection<CachedPublishedProcedureProject>(PUBLISHED_Procedure_PROJECTS_COLLECTION); + + foreach (var project in projects) + { + var cachedProject = CachedPublishedProcedureProject.FromObservable<CachedPublishedProcedureProject>(project); + _projectsCache.Put(cachedProject.Guid, cachedProject); + + collection.Upsert(cachedProject); + } + } + } + catch (Exception ex) + { + LogManager.Log(ex, "Error caching published procedure projects."); + } + + + return projects.OrderBy(x => x.SortingIndex).ToList(); + }) .Online((context) => { using (ObservablesContext db = ObservablesContext.CreateDefault()) diff --git a/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/TangoVersionsService.cs b/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/TangoVersionsService.cs index 32c7b5b04..40783a989 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/TangoVersionsService.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/TangoVersionsService.cs @@ -9,6 +9,7 @@ using Tango.BL; using Tango.BL.DTO; using Tango.BL.Entities; using Tango.FSE.BL.CacheEntities; +using Tango.FSE.Web.Messages; namespace Tango.FSE.BL.Services { @@ -29,7 +30,7 @@ namespace Tango.FSE.BL.Services public Task<List<TangoVersion>> GetAllTangoVersions() { return DataResolver<List<TangoVersion>>.Builder.New() - .ConfigureCascade(DataResolverNode.InMemoryCache, DataResolverNode.Online, DataResolverNode.DiskCache) + .ConfigureCascade(DataResolverNode.InMemoryCache, DataResolverNode.Web, DataResolverNode.Online, DataResolverNode.DiskCache) .InMemoryCache((context) => { var tangoVersions = _tangoVersionsCache @@ -46,6 +47,39 @@ namespace Tango.FSE.BL.Services return tangoVersions; }) + .Web((context) => + { + var tangoVersions = WebClient.GetTangoVersions(new GetTangoVersionsRequest()).GetAwaiter().GetResult() + .Versions + .Select(x => x.ToObservable()) + .ToList(); + + using (var cache = DiskCache.CreateContext()) + { + var collection = cache.Database.GetCollection<CachedTangoVersion>(TANGO_VERSIONS_COLLECTION); + + foreach (var tangoVersion in tangoVersions) + { + try + { + var tangoVersionDTO = TangoVersionDTO.FromObservable(tangoVersion); + CachedTangoVersion cachedTangoVersion = new CachedTangoVersion(); + cachedTangoVersion.EnvironmentID = Authentication.CurrentEnvironment.ID; + cachedTangoVersion.TangoVersion = tangoVersionDTO; + + _tangoVersionsCache.Put(tangoVersion.Version, Authentication.CurrentEnvironment.ID, cachedTangoVersion); + + collection.Upsert(cachedTangoVersion); + } + catch (Exception ex) + { + LogManager.Log(ex, $"Error caching Tango version '{tangoVersion.Version}' on disk."); + } + } + } + + return tangoVersions; + }) .Online((context) => { using (ObservablesContext db = ObservablesContext.CreateDefault()) diff --git a/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/TechComponentsService.cs b/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/TechComponentsService.cs index 418c03409..5277b5539 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/TechComponentsService.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/TechComponentsService.cs @@ -28,6 +28,7 @@ namespace Tango.FSE.BL.Services x => x.ToObservable(), x => TechMonitorDTO.FromObservable(x), DataResolverNode.InMemoryCache, + DataResolverNode.Web, DataResolverNode.Online, DataResolverNode.DiskCache); @@ -35,6 +36,7 @@ namespace Tango.FSE.BL.Services x => x.ToObservable(), x => TechIoDTO.FromObservable(x), DataResolverNode.InMemoryCache, + DataResolverNode.Web, DataResolverNode.Online, DataResolverNode.DiskCache); @@ -42,6 +44,7 @@ namespace Tango.FSE.BL.Services x => x.ToObservable(), x => TechDispenserDTO.FromObservable(x), DataResolverNode.InMemoryCache, + DataResolverNode.Web, DataResolverNode.Online, DataResolverNode.DiskCache); @@ -49,6 +52,7 @@ namespace Tango.FSE.BL.Services x => x.ToObservable(), x => TechControllerDTO.FromObservable(x), DataResolverNode.InMemoryCache, + DataResolverNode.Web, DataResolverNode.Online, DataResolverNode.DiskCache); @@ -56,6 +60,7 @@ namespace Tango.FSE.BL.Services x => x.ToObservable(), x => TechHeaterDTO.FromObservable(x), DataResolverNode.InMemoryCache, + DataResolverNode.Web, DataResolverNode.Online, DataResolverNode.DiskCache); @@ -63,6 +68,7 @@ namespace Tango.FSE.BL.Services x => x.ToObservable(), x => TechValveDTO.FromObservable(x), DataResolverNode.InMemoryCache, + DataResolverNode.Web, DataResolverNode.Online, DataResolverNode.DiskCache); @@ -70,6 +76,7 @@ namespace Tango.FSE.BL.Services x => x.ToObservable(), x => HardwareMotorTypeDTO.FromObservable(x), DataResolverNode.InMemoryCache, + DataResolverNode.Web, DataResolverNode.Online, DataResolverNode.DiskCache); @@ -77,6 +84,7 @@ namespace Tango.FSE.BL.Services x => x.ToObservable(), x => HardwareBlowerTypeDTO.FromObservable(x), DataResolverNode.InMemoryCache, + DataResolverNode.Web, DataResolverNode.Online, DataResolverNode.DiskCache); } diff --git a/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/UsersService.cs b/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/UsersService.cs index 93a8c1548..36c249084 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/UsersService.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/UsersService.cs @@ -10,6 +10,7 @@ using Tango.BL.Builders; using Tango.BL.DTO; using Tango.BL.Entities; using Tango.FSE.BL.CacheEntities; +using Tango.FSE.Web.Messages; namespace Tango.FSE.BL.Services { @@ -30,7 +31,30 @@ namespace Tango.FSE.BL.Services public Task<User> GetUserFull(String email) { return DataResolver<User>.Builder.New() - .ConfigureCascade(DataResolverNode.Online, DataResolverNode.DiskCache) + .ConfigureCascade(DataResolverNode.Web, DataResolverNode.Online, DataResolverNode.DiskCache) + .Web((context) => + { + var response = WebClient.GetUser(new GetUserRequest() { Email = email }).GetAwaiter().GetResult(); + + var user = response.User.ToObservable(); + + LogManager.Log($"User '{email}' successfully retrieved. Caching user on disk..."); + + try + { + using (var cache = DiskCache.CreateContext()) + { + var cachedUser = CachedUser.FromObservable<CachedUser>(user); + cache.Database.GetCollection<CachedUser>(FULL_USERS_COLLECTION).Upsert(cachedUser); + } + } + catch (Exception ex) + { + LogManager.Log(ex, "Error caching user on disk."); + } + + return user; + }) .Online((context) => { diff --git a/Software/Visual_Studio/FSE/Tango.FSE.BL/Web/FSEWebClientBase.cs b/Software/Visual_Studio/FSE/Tango.FSE.BL/Web/FSEWebClientBase.cs index 3cb9bc170..12a2b543b 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.BL/Web/FSEWebClientBase.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.BL/Web/FSEWebClientBase.cs @@ -50,6 +50,60 @@ namespace Tango.FSE.BL.Web } /// <summary> + /// Executes the GetUser action and returns Tango.FSE.Web.Messages.GetUserResponse. + /// </summary> + /// <returns></returns> + public Task<Tango.FSE.Web.Messages.GetUserResponse> GetUser(Tango.FSE.Web.Messages.GetUserRequest request) + { + return Post<Tango.FSE.Web.Messages.GetUserRequest, Tango.FSE.Web.Messages.GetUserResponse>("GetUser", request); + } + + /// <summary> + /// Executes the GetMachine action and returns Tango.FSE.Web.Messages.GetMachineResponse. + /// </summary> + /// <returns></returns> + public Task<Tango.FSE.Web.Messages.GetMachineResponse> GetMachine(Tango.FSE.Web.Messages.GetMachineRequest request) + { + return Post<Tango.FSE.Web.Messages.GetMachineRequest, Tango.FSE.Web.Messages.GetMachineResponse>("GetMachine", request); + } + + /// <summary> + /// Executes the GetEventTypes action and returns Tango.FSE.Web.Messages.GetEventTypesResponse. + /// </summary> + /// <returns></returns> + public Task<Tango.FSE.Web.Messages.GetEventTypesResponse> GetEventTypes(Tango.FSE.Web.Messages.GetEventTypesRequest request) + { + return Post<Tango.FSE.Web.Messages.GetEventTypesRequest, Tango.FSE.Web.Messages.GetEventTypesResponse>("GetEventTypes", request); + } + + /// <summary> + /// Executes the GetProcedures action and returns Tango.FSE.Web.Messages.GetProceduresResponse. + /// </summary> + /// <returns></returns> + public Task<Tango.FSE.Web.Messages.GetProceduresResponse> GetProcedures(Tango.FSE.Web.Messages.GetProceduresRequest request) + { + return Post<Tango.FSE.Web.Messages.GetProceduresRequest, Tango.FSE.Web.Messages.GetProceduresResponse>("GetProcedures", request); + } + + /// <summary> + /// Executes the GetTangoVersions action and returns Tango.FSE.Web.Messages.GetTangoVersionsResponse. + /// </summary> + /// <returns></returns> + public Task<Tango.FSE.Web.Messages.GetTangoVersionsResponse> GetTangoVersions(Tango.FSE.Web.Messages.GetTangoVersionsRequest request) + { + return Post<Tango.FSE.Web.Messages.GetTangoVersionsRequest, Tango.FSE.Web.Messages.GetTangoVersionsResponse>("GetTangoVersions", request); + } + + /// <summary> + /// Executes the GetTechComponents action and returns Tango.FSE.Web.Messages.GetTechComponentsResponse. + /// </summary> + /// <returns></returns> + public Task<Tango.FSE.Web.Messages.GetTechComponentsResponse> GetTechComponents(Tango.FSE.Web.Messages.GetTechComponentsRequest request) + { + return Post<Tango.FSE.Web.Messages.GetTechComponentsRequest, Tango.FSE.Web.Messages.GetTechComponentsResponse>("GetTechComponents", request); + } + + /// <summary> /// Executes the GetBugReportInfo action and returns Tango.FSE.Web.Messages.BugReportingInfoResponse. /// </summary> /// <returns></returns> |
