Exemple #1
0
        void WriteVariable(parameters paras, out results rets)
        {
            rets = new results();
            result       rst    = new result();
            ThreadUpdate tusend = new ThreadUpdate();

            if (paras.Count != 1)
            {
                rets.response = rspCode.negitive;
                rets.resDesc  = "More than 1 variable to read.";
                saveLogfile(rets.resDesc);
            }
            else
            {
                CDDLBase ddb = new CDDLBase();
                if (hartDev.getItembyName((string)paras[0].value, ref ddb))
                {
                    if (ddb.GetType() == typeof(CDDLVar))
                    {
                        CDDLVar             vartowrite = (CDDLVar)ddb;
                        hCcommandDescriptor pCmdDesc   = vartowrite.getWrCmdList().ElementAt(0);
                        CDDLCmd             pCmd       = hartDev.Cmds.getCmdByNumber(pCmdDesc.cmdNumber);
                        if (hartDev.pCmdDispatch.SendCmd(pCmd, pCmdDesc.transNumb, null, logSw) == Common.SUCCESS)
                        {
                            saveLogfile("Command {0}, transaction {1} sent.", pCmdDesc.cmdNumber, pCmdDesc.transNumb);
                            returncode creply = hartDev.parentform.ReData(null);
                            hartDev.parentform.setThread(tusend);
                            tusend.ucTranNumSent = (byte)pCmdDesc.transNumb;
                            tusend.ucCmdSent     = (byte)pCmdDesc.cmdNumber;
                            hartDev.parentform.procRcvData(creply, pCmdDesc.transNumb, pCmd.getCmdNumber(), pCmd.getOperation());
                            rets.response = (hartDev.parentform.getCmdRes() as results).response;//getCmdRes

                            //rst.name = (string)paras[0].value;
                            //rst.rtype = resultDataType.floatpoint;
                            //rst.value = vartowrite.GetDispString();

                            rets.Add(rst);
                        }
                        else
                        {
                            rets.response = rspCode.negitive;
                            rets.resDesc  = String.Format("The Command {0}, transaction {1} cannot be sent.", pCmdDesc.cmdNumber, pCmdDesc.transNumb);
                            saveLogfile(rets.resDesc);
                        }
                    }
                    else
                    {
                        rets.response = rspCode.negitive;
                        rets.resDesc  = "The item is not a variable.";
                        saveLogfile(rets.resDesc);
                    }
                }
                else
                {
                    rets.response = rspCode.negitive;
                    rets.resDesc  = "The variable name is not valid.";
                    saveLogfile(rets.resDesc);
                }
            }
        }
Exemple #2
0
        void DiagnoseDev(parameters paras, out results rets)
        {
            rets = new results();
            result       rst    = new result();
            ThreadUpdate tusend = new ThreadUpdate();

            if (paras.Count != 1)
            {
                rets.response = rspCode.negitive;
                rets.resDesc  = "More than 1 variable to read.";
            }
            else
            {
                CFRAME_PARSE_NODE cFrameParse = new CFRAME_PARSE_NODE();

                if (DPDev.diagDevice(0, ref cFrameParse))
                {
                    //if (hartDev.pCmdDispatch.SendCmd(pCmd, pCmdDesc.transNumb) == Common.SUCCESS)
                    {
                        /*
                         * rets.response = (hartDev.parentform.getCmdRes() as results).response;//getCmdRes
                         * rst.name = (string)paras[0].value;
                         * //rst.rtype = resultDataType.floatpoint;
                         * rst.value = vartoread.GetDispString();
                         * rets.Add(rst);
                         */
                        string slaveState = DPDev.parseSlaveStateByDiag(cFrameParse.aucData, cFrameParse.ucDataLen);
                        rst       = new result();
                        rst.name  = "SlaveState";
                        rst.value = slaveState;
                        rets.Add(rst);

                        string DiagnoseInfo = "";
                        DPDev.parseDiagnosticsInfo(cFrameParse.aucData, cFrameParse.ucDataLen, ref DiagnoseInfo);
                        rst       = new result();
                        rst.name  = "DiagnoseInfo";
                        rst.value = DiagnoseInfo;
                        rets.Add(rst);
                    }
                    //else
                    {
                        rets.response = rspCode.positive;
                        //rets.resDesc = String.Format("The Command {0}, transaction {1} cannot be sent.", pCmdDesc.cmdNumber, pCmdDesc.transNumb);
                    }
                }
                else
                {
                    rets.response = rspCode.negitive;
                    rets.resDesc  = "The Diagnose is failed.";
                }
            }
        }
 public IActionResult UpdateThread([FromBody] ThreadUpdate input)
 {
     _threadService.UpdateThread(input);
     return(Ok());
 }
        public void UpdateThread(ThreadUpdate input)
        {
            // check user and permissions
            Session.EnsureAuthenticated();

            var threadModel   = _threadRepository.Find(input.Id);
            var latestContent = _threadContentRepository.GetAll()
                                .Where(x => x.ThreadId == input.Id)
                                .OrderByDescending(x => x.CreatedAt)
                                .FirstOrDefault();
            var tags = _threadRepository.GetAll().Where(x => x.Id == input.Id)
                       .SelectMany(x => x.Tags).ToList();

            // contents
            if (latestContent.Content != input.Contents)
            {
                _threadContentRepository.Insert(new Entities.ThreadContent
                {
                    Id              = Guid.NewGuid(),
                    ThreadId        = input.Id,
                    CreatedAt       = DateTime.UtcNow,
                    CreatedByUserId = Session.AuthenticatedUserId.Value,
                    Content         = input.Contents,
                });
            }

            // tags
            if (input.Tags != null && input.Tags.Length > 0)
            {
                // remove removed tags
                tags.RemoveAll(x => input.Tags.Select(y => y.Id).Contains(x.TagId) == false);

                // add new existing tags
                var newExistingTags = input.Tags.Where(x => x.Id.HasValue && tags.Select(y => y.TagId).Contains(x.Id.Value) == false);
                tags.AddRange(newExistingTags.Select(x => new Entities.ThreadTag
                {
                    Id    = Guid.NewGuid(),
                    TagId = x.Id.Value,
                }));

                // add new not-existing tags
                var newNotExistingTags        = input.Tags.Where(x => x.Id.HasValue == false);
                var newNotExistingTagEntities = newNotExistingTags
                                                .Select(x => new Entities.Tag
                {
                    Id              = Guid.NewGuid(),
                    CreatedAt       = DateTime.UtcNow,
                    CreatedByUserId = Session.AuthenticatedUserId.Value,
                    Name            = x.Name
                })
                                                .ToArray();
                _tagRepository.BatchInsert(newNotExistingTagEntities);
                tags.AddRange(newNotExistingTagEntities.Select(x => new Entities.ThreadTag
                {
                    Id    = Guid.NewGuid(),
                    TagId = x.Id,
                }));
            }
            else
            {
                tags.RemoveAll(x => true);
            }

            threadModel.Title           = input.Title;
            threadModel.UpdatedAt       = DateTime.UtcNow;
            threadModel.UpdatedByUserId = Session.AuthenticatedUserId.Value;
            threadModel.Tags            = tags;
            _threadRepository.Update(threadModel);
        }