Exemple #1
0
        private void OnReceiveHandler(SocketData data)
        {
            switch (data.Action)
            {
            case "requireSyncData":
            {
                LogFactory.Create().Info("requireSyncData");
                ControlCenter.Instance.SyncDeviceDataWithServer();
                break;
            }

            case "test":
            {
                LogFactory.Create().Info("test->" + data);
                break;
            }

            case "requireInit":
            {
                LogFactory.Create().Info("requireInit");
                _deviceInfo = new DeviceInfo()
                {
                    clientId    = Common.Utility.Common.GetMacAddress(),
                    description = Common.Utility.Common.GetLocalIpex(),
                    payload     = CurrentContext.SysCache?.SystemRealTimeStatus
                };
                Send(_deviceInfo, "first_conn");
                break;
            }

            case "command":
            {
                LogFactory.Create().Info("command->" + data.Data);
                var cmd = data.Data.ToString();

                OnControlHandler(cmd, "");
                break;
            }

            case "qr":
            {
                OnControlHandler("qr", data.Data);
                break;
            }

            //#TODO 远程编辑
            case "saveSchedule":
            {
                if (CurrentContext.Status == SysStatusEnum.Completed ||
                    CurrentContext.Status == SysStatusEnum.Unknown ||
                    CurrentContext.Status == SysStatusEnum.Ready ||
                    CurrentContext.Status == SysStatusEnum.Discarded)
                {
                    SystemIntegration systemIntegration;
                    try
                    {
                        systemIntegration = CultivationService.GetCultivations(JsonConvert.SerializeObject(data.Data));
                    }
                    catch (Exception e)
                    {
                        LogFactory.Create().Warnning(e.Message);
                        Send(new { code = e.Message }, "saveScheduleBack");
                        return;
                    }

                    var validErr = "";
                    var isValid  = systemIntegration.Check(out validErr);       //PumpValidation.CheckCultivation(cultivation.Pumps.ToList(), out validErr);

                    if (isValid)
                    {
                        ControlCenter.Instance.Dispose();
                        DeviceService.InitData();

                        Send(new { code = "success" }, "saveScheduleBack");
                        OnSaveScheduleHandler(systemIntegration);
                    }
                    else
                    {
                        Send(new { code = validErr }, "saveScheduleBack");
                    }
                }
                else
                {
                    Send(new { code = $"Current Status is {CurrentContext.Status}, can not set schedule" },
                         "saveScheduleBack");
                }

                break;
            }

            default:
                break;
            }
        }