public async Task <ActionResult <R4Model.Resource> > Put(string resourceName, string resourceId, [FromBody] R4Model.Resource resource) { if (resource == null) { return(BadRequest()); } var command = new UpdateQuery( HttpVerb.PUT, _ControllerFhirVersion, this.Request.GetUrl(), QueryHelpers.ParseQuery(this.Request.QueryString.ToString()), new Dictionary <string, StringValues>(this.Request.Headers), resourceName, resourceId, new Common.FhirTools.FhirResource(_ControllerFhirVersion) { R4 = resource } ); var UpdateCommandHandler = this.IFhirApiQueryHandlerFactory.GetUpdateCommand(); FhirApiResult Result = await UpdateCommandHandler.Handle(command); return(Result.PrepareResponse <R4Model.Resource>(this)); }
public async Task <ActionResult <R4Model.Resource> > Post(string resourceName, [FromBody] R4Model.Resource resource) { if (resource == null) { return(BadRequest()); } if (string.IsNullOrWhiteSpace(resourceName)) { return(BadRequest()); } var Query = new Logic.Query.FhirApi.Create.CreateQuery( HttpVerb.POST, _ControllerFhirVersion, this.Request.GetUrl(), QueryHelpers.ParseQuery(this.Request.QueryString.ToString()), new Dictionary <string, StringValues>(this.Request.Headers), resourceName, new Common.FhirTools.FhirResource(_ControllerFhirVersion) { R4 = resource } ); var CreateQueryHandler = this.IFhirApiQueryHandlerFactory.GetCreateCommand(); FhirApiResult Result = await CreateQueryHandler.Handle(Query); return(Result.PrepareResponse <R4Model.Resource>(this)); }
public async Task <ActionResult <R4Model.Resource> > GetHistoryBase() { var Query = new Logic.Query.FhirApi.HistoryBase.HistoryBaseQuery( HttpVerb.GET, _ControllerFhirVersion, this.Request.GetUrl(), QueryHelpers.ParseQuery(this.Request.QueryString.ToString()), new Dictionary <string, StringValues>(this.Request.Headers) ); var ReadQueryHandler = this.IFhirApiQueryHandlerFactory.GetHistoryBaseCommand(); FhirApiResult Result = await ReadQueryHandler.Handle(Query); return(Result.PrepareResponse <R4Model.Resource>(this)); }
public async Task <ActionResult <Stu3Model.Resource> > Delete(string resourceName, string resourceId) { var Query = new Logic.Query.FhirApi.Delete.DeleteQuery( HttpVerb.DELETE, _ControllerFhirVersion, this.Request.GetUrl(), QueryHelpers.ParseQuery(this.Request.QueryString.ToString()), new Dictionary <string, StringValues>(this.Request.Headers), resourceName, resourceId ); var ReadQueryHandler = this.IFhirApiQueryHandlerFactory.GetDeleteCommand(); FhirApiResult Result = await ReadQueryHandler.Handle(Query); return(Result.PrepareResponse <Stu3Model.Resource>(this)); }
public static ActionResult <T> PrepareResponse <T>(this FhirApiResult Result, ControllerBase Cont) where T : class { if (Cont is null) { throw new ArgumentNullException(nameof(Cont)); } if (Result is null) { throw new ArgumentNullException(nameof(Result)); } Cont.Response.Headers.AddHeaders(Result.Headers); Cont.Response.StatusCode = (int)Result.HttpStatusCode; switch (Result.FhirVersion) { case Common.Enums.FhirVersion.Stu3: { if (Result.FhirResource is object && Result.FhirResource.Stu3 is object) { return(Cont.StatusCode((int)Result.HttpStatusCode, Result.FhirResource.Stu3)); } else { return(Cont.StatusCode((int)Result.HttpStatusCode)); } } case Common.Enums.FhirVersion.R4: { if (Result.FhirResource is object && Result.FhirResource.R4 is object) { return(Cont.StatusCode((int)Result.HttpStatusCode, Result.FhirResource.R4)); } else { return(Cont.StatusCode((int)Result.HttpStatusCode)); } } default: throw new Bug.Common.Exceptions.FhirVersionFatalException(Result.FhirVersion); } }