import { inject, injectable } from "inversify"; import { IJsonApiResource } from "../../interfaces"; import Mapper from "../../mapper"; import * as TYPES from "../../types"; import { IPoi, poiType, IPoiAttributes, } from "../poi"; import Availability, { IAvailabilityResource, IAvailability, availabilityType, } from "./"; import { imageAssociationType, imageType, IImage, IImageAttributes, } from "../image"; import { IPlaceResource } from "../place"; import hotelProvider from "../../utils/hotelProvider"; import imgix from "../../utils/imgix"; @injectable() class AvailabilityMapper extends Mapper { @inject(TYPES.Availability) model: IAvailability; toModel(resource: IAvailabilityResource, included: IJsonApiResource[] = []): IAvailability { let providerId; const model = new Availability(); const attrs = resource.attributes; model.id = resource.id; model.available = attrs.available; model.offerings = [...attrs.offerings.map((o) => ({ maxOccupancy: o.max_occupancy, cost: o.cost, description: o.description, }))]; model.provider = attrs.provider; model.type = resource.type; return model; } toResource(model: IAvailability): IAvailabilityResource { const resource = { id: model.id, type: availabilityType, attributes:{ id: model.id, available: model.available, offerings: [...model.offerings.map((o) => ({ max_occupancy: o.maxOccupancy, cost: o.cost, description: o.description, }))], provider: model.provider, }, }; return resource; } } export default AvailabilityMapper;