Example #1
0
        public async Task <PostGatewayDatapointResponse> Handle(PostGatewayDatapointRequest message)
        {
            var gatewayResponse = await GetGateway(message.Id.ToString());

            if (gatewayResponse.StatusCode == HttpStatusCode.NotFound)
            {
                return(new PostGatewayDatapointResponse()
                {
                    ErrorModel = new ErrorModel(ErrorType.NotFound)
                });
            }

            var gatewaySettingsResponse = await GetGatewaySettings(message.Id.ToString());

            if (gatewaySettingsResponse.StatusCode == HttpStatusCode.NotFound)
            {
                return(new PostGatewayDatapointResponse()
                {
                    ErrorModel = new ErrorModel(ErrorType.NotFound)
                });
            }

            var datapoint = gatewaySettingsResponse.Data.FirstOrDefault(x => x.Id == message.DatapointId);

            if (datapoint == null)
            {
                return(new PostGatewayDatapointResponse()
                {
                    ErrorModel = new ErrorModel(ErrorType.NotFound)
                });
            }

            if (datapoint.IsReadOnly)
            {
                return(new PostGatewayDatapointResponse()
                {
                    ErrorModel = new ErrorModel(ErrorType.UnsupportedMethod)
                });
            }

            var kolibriResponse = await SaveValueToKolibri(datapoint, message.Value);

            var response = new PostGatewayDatapointResponse()
            {
                Data = new SuccessInfo()
                {
                    Success = kolibriResponse.StatusCode == HttpStatusCode.OK
                }
            };

            return(response);
        }
Example #2
0
        public async Task <IHttpActionResult> PostDatapoint([FromUri] int id, [FromUri] int datapointId, [FromBody] PostGatewayDatapointBody body)
        {
            var request = new PostGatewayDatapointRequest()
            {
                Id          = id,
                DatapointId = datapointId,
                Value       = body.Value
            };

            var responseModel = await this.postDatapointHandler.Handle(request);

            return(this.CreateHttpActionResult(responseModel));
        }