Exemplo n.º 1
0
        public StatusMessage ExecuteService(ExecutableServicesTypes serviceType, IPAddress address)
        {
            DataActionResult <string> pathResult = GetFilePath(serviceType);

            if (pathResult.Status.Failure())
            {
                return(pathResult.Status);
            }
            var psi = new ProcessStartInfo(
                pathResult.Result,
                address.ToString()
                )
            {
                UseShellExecute = true,
            };

            try
            {
                Process.Start(psi);
            }
            catch (Exception)
            {
                return(StatusMessage.ExecutableServiceStartError);
            }

            return(StatusMessage.Ok);
        }
Exemplo n.º 2
0
        public async Task <DataActionResult <string> > GetCwsBoundingString(
            int nodeId,
            int cwsId
            )
        {
            StatusMessage nodeIdValidationStatus = await ValidateNodeId(nodeId);

            if (nodeIdValidationStatus.Failure())
            {
                return(DataActionResult <string> .Failed(nodeIdValidationStatus));
            }

            StatusMessage cwsIdValidationStatus =
                (await GetCwsParamNumber(cwsId)).Status;

            if (cwsIdValidationStatus.Failure())
            {
                return(DataActionResult <string> .Failed(cwsIdValidationStatus));
            }

            StatusMessage cwsBindingExistsStatus =
                await FailIfCWSBinding_DOES_NOT_Exist(nodeId, cwsId);

            if (cwsBindingExistsStatus.Failure())
            {
                return(DataActionResult <string> .Failed(cwsBindingExistsStatus));
            }

            return(await Repo.GetCwsBoundingString(nodeId, cwsId));
        }
Exemplo n.º 3
0
        DataActionResult <string> GetFilePath(ExecutableServicesTypes key)
        {
            string path;

            lock (_servicesData)
            {
                path = _servicesData[key].FilePathCache;
                if (path == null || !File.Exists(path))
                {
                    DataActionResult <FilePathData[]> pathsSearchResult =
                        SearchBinDirectoryForFilePaths();
                    if (pathsSearchResult.Status.Failure())
                    {
                        return(DataActionResult <string> .Failed(
                                   pathsSearchResult.Status
                                   ));
                    }
                    DataActionResult <string> newServicePathResult =
                        FindServicePath(
                            _servicesData[key].StrSearchKey,
                            pathsSearchResult.Result
                            );
                    if (newServicePathResult.Status.Failure())
                    {
                        return(DataActionResult <string> .Failed(
                                   newServicePathResult.Status
                                   ));
                    }
                    _servicesData[key].FilePathCache = newServicePathResult.Result;
                    path = newServicePathResult.Result;
                }
            }

            return(DataActionResult <string> .Successful(path));
        }
Exemplo n.º 4
0
        public async Task <DataActionResult <NtwkNode> > CreateNodeWithParent(
            NtwkNode node,
            int parentId
            )
        {
            StatusMessage nodeIdValidationStatus = await ValidateNodeId(parentId);

            if (nodeIdValidationStatus.Failure())
            {
                return(DataActionResult <NtwkNode> .Failed(nodeIdValidationStatus));
            }

            StatusMessage nodeValidationStatus = _validator.Validate(node);

            if (nodeValidationStatus.Failure())
            {
                return(DataActionResult <NtwkNode> .Failed(nodeValidationStatus));
            }

            StatusMessage nameExistsStatus = await FailIfNodeNameExists(node.Name);

            if (nameExistsStatus.Failure())
            {
                return(DataActionResult <NtwkNode> .Failed(nameExistsStatus));
            }

            return(FailOrConvert(
                       await Repo.CreateNodeWithParent(_viewToEfConverter.Convert(node), parentId),
                       n => _efToViewConverter.Convert(n)
                       ));
        }
Exemplo n.º 5
0
        public async Task <DataActionResult <IEnumerable <PingTestData> > > TestConnectionListAsync(
            IEnumerable <IPAddress> ips
            )
        {
            IEnumerable <IPAddress> ipAddresses = ips as IPAddress[] ?? ips.ToArray();
            int len     = ipAddresses.Count();
            var results = new DataActionResult <PingTestData> [len];
            int index   = 0;
            DataActionResult <PingTestData> firstFailed = null;

            foreach (var ip in ipAddresses)
            {
                results[index] = await TestConnectionAsync(ip);

                if (results[index].Status.Failure())
                {
                    firstFailed = results[index];
                    break;
                }

                index++;
            }

            return(firstFailed != null
                ? DataActionResult <IEnumerable <PingTestData> >
                   .Failed(firstFailed.Status)
                : DataActionResult <IEnumerable <PingTestData> >
                   .Successful(results.Select(r => r.Result)));
        }
Exemplo n.º 6
0
        public override DataActionResult <DataContainer> GetTemplate(DataActionRequest request)
        {
            DataContainer result = new DataContainer();

            //Dim bo As New DTVorgangsuebersichtVKStatus(Mandant)

            //'UUIDs müssen erzeugt werden
            result.KeyValue     = String.Empty;
            result.VersionStamp = String.Empty;
            result.UuidValue    = Guid.NewGuid().ToString();
            result.Fill("DTGuid", result.UuidValue);
            result.Fill("DTExceldatei", "Excel Datei");
            result.Fill("DTArtikelvorlage", "Artikel");
            result.Fill("DTLieferant", "Lieferant");
            result.Fill("DTCountExcelRows", "2");
            RowSet dtoChildExceldaten = new RowSet();
            Row    dtoChild           = new Row();

            dtoChild.UuidValue    = Guid.NewGuid().ToString();
            dtoChild.VersionStamp = string.Empty;

            dtoChild.Fill("ID", 1);
            dtoChild.Fill("Text", "Text");
            dtoChildExceldaten.Add(dtoChild);

            result.SetChild(dtoChildExceldaten, "Importdaten");

            return(DataActionResult.Succeeded(result));
        }
Exemplo n.º 7
0
        static DataActionResult <FilePathData[]> SearchBinDirectoryForFilePaths()
        {
            FilePathData[] files;
            try
            {
                files = Directory.GetFiles(Directory.GetCurrentDirectory() + @"/bin")
                        .Select(f => new FilePathData()
                {
                    FullPath = f,
                    Filename = Path.GetFileName(f)
                })
                        .ToArray();
            }
            catch (UnauthorizedAccessException)
            {
                return(DataActionResult <FilePathData[]> .Failed(
                           StatusMessage.NotEnoughOsRightsToSearchForExecServices
                           ));
            }
            catch (DirectoryNotFoundException)
            {
                return(DataActionResult <FilePathData[]> .Failed(
                           StatusMessage.CouldNotFindBinDirectoryWhileSearchingForExecutableServices
                           ));
            }
            catch (IOException)
            {
                return(DataActionResult <FilePathData[]> .Failed(
                           StatusMessage.UnknownIoErrorWhileTryingToFindExecutableServices
                           ));
            }

            return(DataActionResult <FilePathData[]> .Successful(files));
        }
 StatusMessage FailIfNameExists(DataActionResult <bool> nameExistsResult)
 {
     return(nameExistsResult.Status.Failure()
         ? StatusMessage.ErrorWhileCheckingNameExistanceInDatabase
         : nameExistsResult.Result
             ? StatusMessage.NameAlreadyClaimed
             : StatusMessage.Ok);
 }
 protected DataActionResult <TModelOut> FailOrConvert <TModelIn, TModelOut>(
     DataActionResult <TModelIn> input,
     Func <TModelIn, TModelOut> convert
     )
 {
     return(input.Status.Failure()
         ? DataActionResult <TModelOut> .Failed(input.Status)
         : DataActionResult <TModelOut> .Successful(convert(input.Result)));
 }
 protected ActionResult ObserveDataOperationResult <T>(
     DataActionResult <T> dataResult
     )
 {
     if (dataResult.Status.Failure())
     {
         return(BadRequest(_errAssembler.AssembleReport(dataResult.Status)));
     }
     return(Ok(dataResult.Result));
 }
 StatusMessage DsAreOk(
     DataActionResult <bool> validatorResult,
     StatusMessage invalidIDsMessage
     )
 {
     return(validatorResult.Status.Failure()
         ? StatusMessage.ErrorWhileCheckingIdInDatabase
         : validatorResult.Result == false
             ? invalidIDsMessage
             : StatusMessage.Ok);
 }
        protected async Task <DataActionResult <int> > GetCwsParamNumber(int cwsId)
        {
            DataActionResult <int> paramNumResult =
                await Repo.GetCwsParamNumber(cwsId);

            return(paramNumResult.Status.Failure()
                ? DataActionResult <int> .Failed(StatusMessage.ErrorWhileCheckingCwsParamNumberInDatabase)
                : paramNumResult.Result == -1
                    ? DataActionResult <int> .Failed(StatusMessage.InvalidWebServiceId)
                    : paramNumResult);
        }
        protected async Task <StatusMessage> FailIfCWSBinding_DOES_NOT_Exist(int cwsId, int nodeId)
        {
            DataActionResult <bool> bindingExists =
                await Repo.CheckIfCwsBindingExists(nodeId, cwsId);

            return(bindingExists.Status.Failure()
                ? StatusMessage.ErrorWhileGetingExistanceOfWsBindingFromDatabase
                : bindingExists.Result == false
                    ? StatusMessage.BindingBetweenSpecifiedServiceAndNodeDoesNotExist
                    : StatusMessage.Ok);
        }
        public async Task <DataActionResult <TagFilterData> > GetProfileMonitorTagFilterData(int profileId)
        {
            StatusMessage profileIdValidationStatus = await ValidateProfileId(profileId);

            if (profileIdValidationStatus.Failure())
            {
                return(DataActionResult <TagFilterData> .Failed(profileIdValidationStatus));
            }

            return(await Repo.GetProfileMonitorTagFilterData(profileId));
        }
Exemplo n.º 15
0
        public async Task <DataActionResult <IEnumerable <IPAddress> > > GetNodesIPs(
            IEnumerable <int> nodesIDs
            )
        {
            var results = await Task.WhenAll(nodesIDs.Select(GetNodeIp));

            var firstFailure = results.FirstOrDefault(r => r.Status.Failure());

            return(firstFailure != null
                ? DataActionResult <IEnumerable <IPAddress> > .Failed(firstFailure.Status)
                : DataActionResult <IEnumerable <IPAddress> > .Successful(results.Select(r => r.Result)));
        }
Exemplo n.º 16
0
        public async Task <DataActionResult <IEnumerable <int> > > GetTaggedNodesIDs(
            int tagId
            )
        {
            StatusMessage tagIdValidationStatus = await ValidateTagId(tagId);

            if (tagIdValidationStatus.Failure())
            {
                return(DataActionResult <IEnumerable <int> > .Failed(tagIdValidationStatus));
            }

            return(await Repo.GetTaggedNodesIDs(tagId));
        }
        async Task <ActionResult> ObserveDataOperationStatusWithIp(
            int nodeId,
            Func <IPAddress, StatusMessage> operation
            )
        {
            DataActionResult <IPAddress> nodeIpResult = await _data.GetNodeIp(nodeId);

            return(nodeIpResult.Status.Failure()
                ? BadRequest(nodeIpResult.Status)
                : ObserveDataOperationStatus(
                       operation(nodeIpResult.Result)
                       ));
        }
        async Task <ActionResult> ObserveAsyncDataOperationResultWithIp <T>(
            int nodeId,
            Func <IPAddress, Task <DataActionResult <T> > > operation
            )
        {
            DataActionResult <IPAddress> nodeIpResult = await _data.GetNodeIp(nodeId);

            return(nodeIpResult.Status.Failure()
                ? BadRequest(nodeIpResult.Status)
                : ObserveDataOperationResult(
                       await operation(nodeIpResult.Result)
                       ));
        }
        public async Task <ActionResult> OpenWebService(int nodeId, int cwsId)
        {
            DataActionResult <string> webServiceStringResult =
                await _data.GetCwsBoundingString(nodeId, cwsId);

            if (webServiceStringResult.Status.Failure())
            {
                return(ObserveDataOperationStatus(webServiceStringResult.Status));
            }
            return(ObserveDataOperationStatus(
                       _webServices.Start(webServiceStringResult.Result)
                       ));
        }
        public async Task <DataActionResult <Profile> > RemoveProfile(int profileId)
        {
            StatusMessage profileIdValidationStatus = await ValidateProfileId(profileId);

            if (profileIdValidationStatus.Failure())
            {
                return(DataActionResult <Profile> .Failed(profileIdValidationStatus));
            }

            return(FailOrConvert(
                       await Repo.RemoveProfile(profileId),
                       p => _efToViewConverter.Convert(p)
                       ));
        }
        protected async Task <StatusMessage> FailIfNodeInSubtree(
            int nodeId,
            int subtreeRootNodeId
            )
        {
            DataActionResult <bool> nodeInSubtree =
                await Repo.CheckIfNodeInSubtree(nodeId, subtreeRootNodeId);

            return(nodeInSubtree.Status.Failure()
                ? StatusMessage.ErrorWhileCheckingIfNodeIsPartOfSubtree
                : nodeInSubtree.Result
                    ? StatusMessage.NodeIsPartOfSpecifiedSubtree
                    : StatusMessage.Ok);
        }
Exemplo n.º 22
0
        public async Task <DataActionResult <NtwkNode> > RemoveNode(int nodeId)
        {
            StatusMessage nodeIdValidationStatus = await ValidateNodeId(nodeId);

            if (nodeIdValidationStatus.Failure())
            {
                return(DataActionResult <NtwkNode> .Failed(nodeIdValidationStatus));
            }

            return(FailOrConvert(
                       await Repo.RemoveNode(nodeId),
                       n => _efToViewConverter.Convert(n)
                       ));
        }
        async Task <ActionResult> ObserveAsyncDataOperationResultWithIpList <T>(
            IEnumerable <int> nodesIDs,
            Func <IEnumerable <IPAddress>, Task <DataActionResult <T> > > operation
            )
        {
            DataActionResult <IEnumerable <IPAddress> > nodesIPsResult =
                await _data.GetNodesIPs(nodesIDs);

            return(nodesIPsResult.Status.Failure()
                ? BadRequest(nodesIPsResult.Status)
                : ObserveDataOperationResult(
                       await operation(nodesIPsResult.Result)
                       ));
        }
        public async Task <DataActionResult <NodeTag> > RemoveTag(int tagId)
        {
            StatusMessage tagIdValidationStatus = await ValidateTagId(tagId);

            if (tagIdValidationStatus.Failure())
            {
                return(DataActionResult <NodeTag> .Failed(tagIdValidationStatus));
            }

            return(FailOrConvert(
                       await Repo.RemoveTag(tagId),
                       t => _efToViewConverter.Convert(t)
                       ));
        }
Exemplo n.º 25
0
        public async Task <DataActionResult <IPAddress> > GetNodeIp(int nodeId)
        {
            StatusMessage nodeIdValidationStatus = await ValidateNodeId(nodeId);

            if (nodeIdValidationStatus.Failure())
            {
                return(DataActionResult <IPAddress> .Failed(nodeIdValidationStatus));
            }

            return(FailOrConvert(
                       await Repo.GetNodeIp(nodeId),
                       nIp => new IPAddress(nIp)
                       ));
        }
        public async Task <DataActionResult <CustomWebService> > RemoveCustomWebService(
            int cwsId
            )
        {
            StatusMessage idExistsStatus =
                (await GetCwsParamNumber(cwsId)).Status;

            if (idExistsStatus.Failure())
            {
                return(DataActionResult <CustomWebService> .Failed(idExistsStatus));
            }

            return(FailOrConvert(
                       await Repo.RemoveCustomWebService(cwsId),
                       cws => _efToViewConverter.Convert(cws)
                       ));
        }
Exemplo n.º 27
0
        public async Task <DataActionResult <MonitoringSession> > GetNewSession(
            int profileId
            )
        {
            StatusMessage profIdValidationStatus =
                await ValidateProfileId(profileId);

            if (profIdValidationStatus.Failure())
            {
                return(DataActionResult <MonitoringSession> .Failed(profIdValidationStatus));
            }

            return(FailOrConvert(
                       await Repo.GetNewSession(profileId),
                       session => _efToViewConverter.Convert(session)
                       ));
        }
Exemplo n.º 28
0
        public async Task <DataActionResult <IEnumerable <MonitoringSession> > > GetSessionsForProfile(int profileId)
        {
            StatusMessage profIdValidationStatus =
                await ValidateProfileId(profileId);

            if (profIdValidationStatus.Failure())
            {
                return(DataActionResult <IEnumerable <MonitoringSession> > .Failed(
                           profIdValidationStatus
                           ));
            }

            return(FailOrConvert(
                       await Repo.GetSessionsForProfile(profileId),
                       sessions => sessions.Select(s => _efToViewConverter.Convert(s))
                       ));
        }
Exemplo n.º 29
0
        //includes messages
        public async Task <DataActionResult <IEnumerable <MonitoringPulseResult> > > GetSessionReport(
            int monitoringSessionId)
        {
            StatusMessage sessionIdValidationStatus =
                await ValidateSessionId(monitoringSessionId);

            if (sessionIdValidationStatus.Failure())
            {
                return(DataActionResult <IEnumerable <MonitoringPulseResult> > .Failed(
                           sessionIdValidationStatus
                           ));
            }

            return(FailOrConvert(
                       await Repo.GetSessionReport(monitoringSessionId),
                       pulses => pulses.Select(ConvertPulseResult)
                       ));
        }
Exemplo n.º 30
0
        public async Task <DataActionResult <PingTestData> > TestConnectionAsync(
            IPAddress ip
            )
        {
            List <PingTestData> pingReplies = new List <PingTestData>();

            for (int i = 0; i < _maxRetry; i++)
            {
                DataActionResult <PingTestData> pingResult = await PingAsync(
                    _ping,
                    ip,
                    _timeout,
                    _buffer,
                    _options
                    );

                if (pingResult.Status.Failure())
                {
                    return(DataActionResult <PingTestData> .Failed(pingResult.Status));
                }
                pingReplies.Add(pingResult.Result);
                if (pingResult.Result.Avg < 50 && pingResult.Result.Failed == 0)
                {
                    break;
                }
            }

            PingTestData result = pingReplies.Aggregate((current, next) =>
            {
                current.Num    += next.Num;
                current.Avg    += next.Avg;
                current.Failed += next.Failed;
                return(current);
            });
            int successful = result.Num - result.Failed;

            if (successful != 0)
            {
                result.Avg /= successful;
            }
            return(DataActionResult <PingTestData> .Successful(result));
        }