diff --git a/mappings/on_update.jsonata b/mappings/on_update.jsonata new file mode 100644 index 0000000000000000000000000000000000000000..f737ae9641b70aa39621bd5a99124feafb4b6202 --- /dev/null +++ b/mappings/on_update.jsonata @@ -0,0 +1,60 @@ +{ + "data":$.responses.{ + "context":context, + "message":{ + "orderId":message.order.id, + "provider":{ + "id":message.order.provider.id, + "name":message.order.provider.descriptor.name, + "short_desc":message.order.provider.descriptor.short_desc, + "long_desc":message.order.provider.descriptor.long_desc, + "rating":message.order.provider.rating, + "images":message.order.provider.descriptor.images.{ + "url":url, + "size_type":size_type + }[] + }, + "items":message.order.items.{ + "id":id, + "name":descriptor.name, + "code":descriptor.code, + "short_desc":descriptor.short_desc, + "long_desc":descriptor.long_desc, + "price": price, + "rating": rating, + "rateable": rateable, + "time": time, + "quantity": quantity, + "categories": $map( + $filter(%.provider.categories, function($category) { $boolean($category.id in category_ids)}), + function($category) { + { "id": $category.id, "name": $category.descriptor.name, "code": $category.descriptor.code } + } + )[], + "locations": $map( + $filter(%.provider.locations, function($location) { $boolean($location.id in location_ids)}), + function($location) { + { + "id": $location.id, + "city": $location.city.name, + "state": $location.state.name, + "country": $location.country.name + } + } + )[], + "tags": tags.{ + "code": descriptor.code, + "name": descriptor.name, + "display": display, + "list": list.{ "code": descriptor.code, "name": descriptor.name, "value": value }[] + }[] + }, + "fulfillments": message.order.fulfillments, + "quote": message.order.quote, + "billing": message.order.billing, + "payments": message.order.payments, + "cancellation_terms": message.order.cancellation_terms + } + + }[] +} diff --git a/mappings/update.jsonata b/mappings/update.jsonata new file mode 100644 index 0000000000000000000000000000000000000000..ce26b706c700e4fb6225cf33cfcbb99ed612ab70 --- /dev/null +++ b/mappings/update.jsonata @@ -0,0 +1,11 @@ +$.data.{ + "context":$context(context, $action), + "message":{ + "order":{ + "order_id":orderId, + "fulfillments":updateDetails.fulfillments, + "billing":updateDetails.billing + }, + "update_target":updateDetails.updateTarget + } +}[] diff --git a/src/gcl/gcl.controller.ts b/src/gcl/gcl.controller.ts index 6e66375bfe6d80f0967d4accf81b73627b12f4a8..f1c364cbde9182465e527bf7e6b4fcca1f9afcbe 100644 --- a/src/gcl/gcl.controller.ts +++ b/src/gcl/gcl.controller.ts @@ -48,4 +48,10 @@ export class GCLController { const statusResult = await this.service.cancel(body); return statusResult; } + + @httpPost('update') + public async update(@requestBody() body: any): Promise<any> { + const updateResult = await this.service.update(body); + return updateResult; + } } diff --git a/src/gcl/gcl.service.ts b/src/gcl/gcl.service.ts index 0131812e17dbef0366ebea4701805ae469e11b71..45e263a7948c3945fc66012a8406b88c771c878b 100644 --- a/src/gcl/gcl.service.ts +++ b/src/gcl/gcl.service.ts @@ -1,7 +1,6 @@ import { inject, injectable } from "inversify"; import { TLService } from "../tl/tl.service"; import { PSClientService } from "../psclient/psclient.service"; -import data from '../../data.json'; @injectable() export class GCLService { @@ -67,4 +66,12 @@ export class GCLService { return response; } + + async update(body: any) { + const payload = await this.tlService.transform(body, "update"); + const psResponse = await this.psClientService.postMany(payload); + const response = await this.tlService.transform(psResponse, "on_update"); + + return response; + } }