Beispiel #1
0
        public virtual async Task <IActionResult> UpdateObjectInstance(
            [FromBody][NotNull] TInstanceTransportModelType model,
            [FromRoute(Name = "id")] int objectId,
            [FromServices][NotNull] TInstanceRepositoryType instanceObjectRepository,
            [FromServices][NotNull] ITypeConverterProvider <TInstanceTransportModelType, TInstanceEntryModelType> networkToTableConverter)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }
            if (instanceObjectRepository == null)
            {
                throw new ArgumentNullException(nameof(instanceObjectRepository));
            }
            if (networkToTableConverter == null)
            {
                throw new ArgumentNullException(nameof(networkToTableConverter));
            }

            //It's TRUE that they should be sending a valid GUID.
            //But it doesn't matter, it's not this action's responsibility to deal with it.
            //if(model.Guid.EntryId != creatureId)
            //	return BadRequest();

            TInstanceEntryModelType entryModel = await instanceObjectRepository.RetrieveAsync(objectId);

            //The idea here is we CONVERT the incoming data model to the table model type
            //and then we tell the table model type it needs to update.
            entryModel.Update(networkToTableConverter.Convert(model));

            //Then we save it.
            await instanceObjectRepository.UpdateAsync(objectId, entryModel);

            return(Ok());
        }
Beispiel #2
0
        public async Task <IActionResult> GetObjectTemplate([FromRoute(Name = "id")] int objectTemplateId,
                                                            [FromServices][NotNull] TInstanceRepositoryType objectTemplateRepository,
                                                            [FromServices][NotNull] ITypeConverterProvider <TTemplateEntryType, TTemplateTransferType> tableToNetworkModelConverter)
        {
            if (objectTemplateRepository == null)
            {
                throw new ArgumentNullException(nameof(objectTemplateRepository));
            }
            if (tableToNetworkModelConverter == null)
            {
                throw new ArgumentNullException(nameof(tableToNetworkModelConverter));
            }

            //If unknown templateId, then just indicate such.
            if (!await objectTemplateRepository.ContainsAsync(objectTemplateId))
            {
                return(BuildFailedResponseModel(SceneContentQueryResponseCode.TemplateUnknown));
            }

            //Load the model, convert and send back.
            TTemplateEntryType entryModel = await objectTemplateRepository.RetrieveAsync(objectTemplateId);

            TTemplateTransferType templateModel = tableToNetworkModelConverter.Convert(entryModel);

            return(BuildSuccessfulResponseModel(templateModel));
        }
Beispiel #3
0
        public async Task <IActionResult> GetObjectInstance([FromRoute(Name = "id")] int objectId,
                                                            [FromServices] TInstanceRepositoryType instanceObjectRepository,
                                                            [FromServices] ITypeConverterProvider <TInstanceEntryModelType, TInstanceTransportModelType> tableToNetworkModelConverter)
        {
            //If unknown templateId, then just indicate such.
            if (!await instanceObjectRepository.ContainsAsync(objectId))
            {
                return(BuildFailedResponseModel(SceneContentQueryResponseCode.TemplateUnknown));
            }

            //Load the model, convert and send back.
            TInstanceEntryModelType entryModel = await instanceObjectRepository.RetrieveAsync(objectId);

            TInstanceTransportModelType instanceModel = tableToNetworkModelConverter.Convert(entryModel);

            return(BuildSuccessfulResponseModel(instanceModel));
        }
Beispiel #4
0
        public override async Task <IActionResult> UpdateObjectInstance([FromBody][NotNull] TInstanceTransportModelType model,
                                                                        [FromRoute(Name = "id")] int objectId,
                                                                        [FromServices][NotNull] TInstanceRepositoryType instanceObjectRepository,
                                                                        [FromServices][NotNull] ITypeConverterProvider <TInstanceTransportModelType, TInstanceEntryModelType> networkToTableConverter)
        {
            //So, this one is abit different since there is no created instance.
            //The client needs to create it, we don't assign a default behavior.
            //So it's possible it DOESN'T exist.
            if (await instanceObjectRepository.ContainsAsync(objectId))
            {
                return(await base.UpdateObjectInstance(model, objectId, instanceObjectRepository, networkToTableConverter));
            }
            else
            {
                //it doesn't exist, we need to try to create it.
                TInstanceEntryModelType entryModel = networkToTableConverter.Convert(model);

                await instanceObjectRepository.TryCreateAsync(entryModel);
            }

            return(Ok());
        }