Example #1
0
        public IActionResult AddObjectInstance(string clientID, string definitionID)
        {
            IActionResult result;

            Guid definitionIDGuid, clientIDGuid;

            if (StringUtils.GuidTryDecode(definitionID, out definitionIDGuid) && StringUtils.GuidTryDecode(clientID, out clientIDGuid))
            {
                Model.Client           client         = BusinessLogicFactory.Clients.GetClient(clientIDGuid);
                int                    organisationID = User.GetOrganisationID();
                Model.ObjectDefinition definition     = BusinessLogicFactory.ObjectDefinitions.GetObjectDefinition(organisationID, definitionIDGuid);
                if (definition != null)
                {
                    // TODO: add error handling around deserialisation.
                    // TODO: could lwm2mObject.instanceID be an optional parameter, allowing a web client to specify?
                    Model.Object lwm2mObject = new ServiceModels.ObjectInstance(definition, Request).Resource;
                    BusinessLogicFactory.Clients.SaveObject(client, lwm2mObject, Model.TObjectState.Add);

                    ServiceModels.ResourceCreated response = new ServiceModels.ResourceCreated();
                    response.ID = lwm2mObject.InstanceID;
                    string rootUrl = Request.GetRootUrl();
                    response.AddSelfLink(string.Concat(rootUrl, "/clients/", clientID, "/objecttypes/", definitionID, "/instances/", response.ID), true, true);
                    result = Request.GetObjectResult(response, System.Net.HttpStatusCode.Created);
                }
                else
                {
                    result = new BadRequestResult();
                }
            }
            else
            {
                result = new BadRequestResult();
            }
            return(result);
        }
        public IActionResult AddObjectInstance(string clientID, string definitionID)
        {
            IActionResult result;

            Guid definitionIDGuid, clientIDGuid;
            if (StringUtils.GuidTryDecode(definitionID, out definitionIDGuid) && StringUtils.GuidTryDecode(clientID, out clientIDGuid))
            {
                Model.Client client = BusinessLogicFactory.Clients.GetClient(clientIDGuid);
                int organisationID = User.GetOrganisationID();
                Model.ObjectDefinition definition = BusinessLogicFactory.ObjectDefinitions.GetObjectDefinition(organisationID, definitionIDGuid);
                if (definition != null)
                {
                    // TODO: add error handling around deserialisation.
                    // TODO: could lwm2mObject.instanceID be an optional parameter, allowing a web client to specify?
                    Model.Object lwm2mObject = new ServiceModels.ObjectInstance(definition, Request).Resource;
                    BusinessLogicFactory.Clients.SaveObject(client, lwm2mObject, Model.TObjectState.Add);

                    ServiceModels.ResourceCreated response = new ServiceModels.ResourceCreated();
                    response.ID = lwm2mObject.InstanceID;
                    string rootUrl = Request.GetRootUrl();
                    response.AddSelfLink(string.Concat(rootUrl, "/clients/", clientID, "/objecttypes/", definitionID, "/instances/", response.ID), true, true);
                    result = Request.GetObjectResult(response, System.Net.HttpStatusCode.Created);
                }
                else
                {
                    result = new BadRequestResult();
                }
            }
            else
            {
                result = new BadRequestResult();
            }
            return result;
        }
        public IActionResult AddSubscription(string clientID, string definitionID, string instanceID, [FromBody] ServiceModels.Subscription subscription)
        {
            IActionResult result;

            if (subscription != null)
            {
                Model.Subscription item = subscription.ToModel(Request, clientID, definitionID, instanceID);
                item.OrganisationID = User.GetOrganisationID();
                item.SubscriptionID = Guid.NewGuid();

                if (!ExistingSubscriptionMatches(item))
                {
                    BusinessLogicFactory.Subscriptions.SaveSubscription(item, Model.TObjectState.Add);

                    ServiceModels.ResourceCreated response = new ServiceModels.ResourceCreated();
                    response.ID = StringUtils.GuidEncode(item.SubscriptionID);
                    string rootUrl = Request.GetRootUrl();
                    response.AddSelfLink(string.Concat(rootUrl, "/subscriptions/", response.ID), false, false);
                    result = Request.GetObjectResult(response, System.Net.HttpStatusCode.Created);
                }
                else
                {
                    result = new StatusCodeResult((int)System.Net.HttpStatusCode.Conflict);
                }
            }
            else
            {
                result = new BadRequestResult();
            }
            return(result);
        }
        public IActionResult AddSubscription(string clientID, string definitionID, string instanceID, [FromBody] ServiceModels.Subscription subscription)
        {
            IActionResult result;
            if (subscription != null)
            {
                Model.Subscription item = subscription.ToModel(Request, clientID, definitionID, instanceID);
                item.OrganisationID = User.GetOrganisationID();
                item.SubscriptionID = Guid.NewGuid();

                if (!ExistingSubscriptionMatches(item))
                {
                    BusinessLogicFactory.Subscriptions.SaveSubscription(item, Model.TObjectState.Add);

                    ServiceModels.ResourceCreated response = new ServiceModels.ResourceCreated();
                    response.ID = StringUtils.GuidEncode(item.SubscriptionID);
                    string rootUrl = Request.GetRootUrl();
                    response.AddSelfLink(string.Concat(rootUrl, "/subscriptions/", response.ID), false, false);
                    result = Request.GetObjectResult(response, System.Net.HttpStatusCode.Created);
                }
                else
                {
                    result = new StatusCodeResult((int)System.Net.HttpStatusCode.Conflict);
                }
            }
            else
            {
                result = new BadRequestResult();
            }
            return result;
        }