{"version":3,"names":["APIClientBase","getBaseUrl","_","__","window","cross7Env","baseUrl","async","options","headers","Object","assign","Slug","location","pathname","search","indexOf","Preview","BookingClient","constructor","http","super","this","jsonParseReviver","undefined","getSettings","pageId","categoryIds","signal","url_","Error","replace","encodeURIComponent","forEach","item","options_","method","Accept","transformOptions","then","transformedOptions_","fetch","_response","processGetSettings","response","status","_headers","v","k","text","_responseText","result200","resultData200","JSON","parse","BookingSettingsDto","fromJS","throwException","Promise","resolve","getCategories","includeEmpty","excludeCategoryIds","processGetCategories","Array","isArray","push","BookingCategoryTeaserDto","getBookables","parentId","pageNumber","pageSize","itemIds","excludeItemIds","sortType","sortDirection","categoryFilterMode","processGetBookables","PaginatedListOfBookingBookableTeaserDto","getBookable","bookableId","preview","processGetBookable","BookingBookableDto","submitReservation","command","content_","stringify","body","processSubmitReservation","BookingReservationSubmittedResponseDto","resultdefault","resultDatadefault","ProblemDetails","createReservation","processCreateReservation","CalendarClient","CalendarSettingsDto","CalendarCategoryTeaserDto","getEvents","from","until","toISOString","processGetEvents","PaginatedListOfCalendarEventTeaserDto","getEventsYearPdf","referenceDate","processGetEventsYearPdf","contentDisposition","get","fileNameMatch","exec","fileName","length","decodeURIComponent","blob","data","getEventsMonthPdf","processGetEventsMonthPdf","getEventsListPdf","entireYear","hideCategories","processGetEventsListPdf","getEventsYearHtml","processGetEventsYearHtml","getEventsMonthHtml","processGetEventsMonthHtml","getEventsListHtml","processGetEventsListHtml","getEventsIcs","processGetEventsIcs","getEventIcs","eventId","processGetEventIcs","getEvent","processGetEvent","CalendarEventDto","CommunicationClient","CommunicationSettingsDto","submitRecipient","processSubmitRecipient","deleteRecipient","processDeleteRecipient","createRecipient","processCreateRecipient","DatabaseClient","DatabaseSettingsDto","DatabaseCategoryTeaserDto","getObjects","objectTypeIds","fieldFilters","sortProperty","index","attr","hasOwnProperty","processGetObjects","PaginatedListOfDatabaseObjectTeaserDto","getObject","objectId","processGetObject","DatabaseObjectDto","getObjectTypes","processGetObjectTypes","DatabaseObjectTypeDto","DirectoryClient","getLetters","componentType","processGetLetters","getForms","letter","processGetForms","PaginatedListOfDirectoryFormTeaserDto","getFormCategories","processGetFormCategories","DirectoryFormCategoryTeaserDto","getOrgUnits","processGetOrgUnits","PaginatedListOfDirectoryOrgUnitTeaserDto","getOrgUnitsTree","processGetOrgUnitsTree","DirectoryOrgUnitTreeNodeDto","getOrgUnit","orgUnitId","processGetOrgUnit","DirectoryOrgUnitDto","getPersons","orgUnitIds","processGetPersons","PaginatedListOfDirectoryPersonTeaserDto","getGroupedPersons","processGetGroupedPersons","PaginatedListOfGroupedDirectoryPersonTeaserDto","getPerson","personId","processGetPerson","DirectoryPersonDto","getServices","onlyFromTenant","onlyWithProcesses","processGetServices","PaginatedListOfDirectoryServiceTeaserDto","getXZuFiServices","processGetXZuFiServices","getXZuFiService","serviceId","processGetXZuFiService","getService","processGetService","DirectoryServiceDto","getSituations","processGetSituations","PaginatedListOfDirectorySituationTeaserDto","getSituation","situationId","processGetSituation","DirectorySituationDto","FilesClient","getFile","fileId","size","width","height","x","y","webp","processGetFile","getFileDto","processGetFileDto","FileDto","createFile","file","FormData","append","processCreateFile","result400","resultData400","GalleryClient","GallerySettingsDto","GalleryCategoryTeaserDto","getAlbums","processGetAlbums","PaginatedListOfGalleryAlbumTeaserDto","getAlbum","albumId","processGetAlbum","GalleryAlbumDto","GeocodingClient","forwardGeocoding","address","moduleId","filters","limit","processForwardGeocoding","Address","reverseGeocoding","longitude","latitude","processReverseGeocoding","GeoClient","GeoSettingsDto","GeoCategoryTeaserDto","sortingReference_Longitude","sortingReference_Latitude","sortingReference_Elevation","sortingReference_NavigationUrl","searchArea_NorthEastLongitude","searchArea_NorthEastLatitude","searchArea_SouthWestLongitude","searchArea_SouthWestLatitude","openAt","PaginatedListOfGeoObjectTeaserDto","GeoObjectDto","InteractionClient","getForm","formId","processGetForm","InteractionFormDto","submitForm","processSubmitForm","Node","getSurvey","surveyId","processGetSurvey","InteractionSurveyDto","submitSurvey","processSubmitSurvey","NewsClient","NewsSettingsDto","NewsCategoryTeaserDto","getArticles","processGetArticles","PaginatedListOfNewsArticleTeaserDto","getArticlesRss","processGetArticlesRss","getArticle","articleId","processGetArticle","NewsArticleDto","getArticleDateRange","processGetArticleDateRange","DateRangeDto","PageClient","getCurrentPageId","processGetCurrentPageId","getPage","categoryId","processGetPage","Typo3PageDto","ProblemClient","ProblemSettingsDto","ProblemCategoryTeaserDto","getDefects","processGetDefects","PaginatedListOfProblemDefectTeaserDto","submitDefect","processSubmitDefect","getDefect","defectId","processGetDefect","ProblemDefectDto","createDefect","processCreateDefect","getDefectDetails","token","processGetDefectDetails","PublicProblemDefectDetailsDto","updateDefect","processUpdateDefect","submitComment","processSubmitComment","createComment","processCreateComment","getCommentDetails","commentId","processGetCommentDetails","updateComment","processUpdateComment","PushClient","getWebPushPublicKey","processGetWebPushPublicKey","getPushSubscription","subscriptionId","processGetPushSubscription","PushSubscriptionDto","getPushCategories","processGetPushCategories","GroupedCategoryTeasersDto","getOrCreateEmailPushSubscription","processGetOrCreateEmailPushSubscription","result404","resultData404","getOrCreateWebPushSubscription","processGetOrCreateWebPushSubscription","getOrCreateFirebasePushSubscription","processGetOrCreateFirebasePushSubscription","subscribeToCategories","processSubscribeToCategories","subscribeToCategory","processSubscribeToCategory","unsubscribeFromCategory","processUnsubscribeFromCategory","subscribeToLiveItem","itemId","processSubscribeToLiveItem","unsubscribeFromLiveItem","processUnsubscribeFromLiveItem","SearchClient","getSearchResults","moduleFilters","processGetSearchResults","PaginatedListOfSearchResultDto","getSearchSuggestions","processGetSearchSuggestions","getFilters","processGetFilters","SearchSettingsDto","ShopClient","ShopSettingsDto","ShopCategoryTeaserDto","getProducts","processGetProducts","PaginatedListOfShopProductTeaserDto","getShippingOptions","orderItemIds","processGetShippingOptions","ShippingOption","getPaymentOptions","shippingOptionId","processGetPaymentOptions","PaymentOption","getOrderBreakdown","orderItems","paymentType","processGetOrderBreakdown","OrderBreakdownDto","getProduct","productId","processGetProduct","ShopProductDto","submitOrder","processSubmitOrder","ShopOrderSubmittedResponseDto","createOrder","processCreateOrder","submitReview","processSubmitReview","createReview","processCreateReview","getReviewDetails","reviewId","processGetReviewDetails","PublicShopProductDetailsDto","updateReview","processUpdateReview","WeatherClient","getCurrentWeather","processGetCurrentWeather","CurrentWeatherDto","AppColor","property","init","_data","url","id","name","static","result","toJSON","clone","json","AppLinkType","AppMenuLayout","type","attrs","NodeAttribute","content","marks","Mark","NodeType","level","textAlign","colspan","rowspan","colwidth","start","position","display","cols","images","GalleryImage","fieldId","fieldLabel","src","alt","title","caption","GalleryPosition","GalleryDisplay","href","MarkAttribute","MarkType","target","class","referenceId","ReferenceType","AppFont","detail","instance","extensions","key","formConfirmationHtml","CategoryTeaserDto","_discriminator","slug","teaserPictureUrl","iconUrl","color","subCategories","itemsCount","CommunicationCategoryTeaserDto","items","BookingBookableTeaserDto","totalPages","totalCount","hasPreviousPage","hasNextPage","ItemTeaserDto","link","Link","categoryNames","additionalFields","created","Date","toString","categoryIconUrl","categoryColor","teaserText","hasContent","CategoryNameDto","FieldGroupValuesDto","GeoPlaceTeaserDto","GeoRouteTeaserDto","GeoAreaTeaserDto","NewsArticleTeaserDto","GalleryAlbumTeaserDto","ProblemDefectTeaserDto","CalendarEventTeaserDto","DirectoryFormTeaserDto","DirectoryPersonTeaserDto","DirectoryProcessTeaserDto","DirectoryServiceTeaserDto","DirectoryOrgUnitTeaserDto","DirectorySituationTeaserDto","DatabaseObjectTeaserDto","SearchResultDto","ShopProductTeaserDto","targetId","fieldValues","FieldValueDto","field","FieldDto","value","iconFileUrl","unit","FieldType","GeoObjectTeaserDto","addresses","openingHours","TimeSeriesDto","distance","firstName","lastName","description","room","building","houseNumber","street","zipCode","city","telephone","mobilephone","fax","eMail","web","socials","SocialLink","additionalProperties","AdditionalAddressProperty","SocialLinkType","label","times","validFrom","validUntil","TimeDto","TimeStatusDto","day","time","TimeStatus","PointDto","GeographyDataDto","navigationUrl","LineStringDto","PolygonDto","elevation","points","opacity","weight","dashArray","fill","route","area","pictureCount","DefectStatus","fromDate","fromTime","untilDate","untilTime","formatDate","function","communication","processes","fields","databaseObjectTypeId","SortType","SortDirection","CategoryFilterMode","ItemDto","document","livePush","lastModified","GeoPlaceDto","GeoRouteDto","GeoAreaDto","ProblemCommentDto","ShopReviewDto","subBookables","readingTime","shareLink","pictures","comments","creator","createdByCurrentUser","createdInBackend","persons","subOrgUnits","services","officeHours","orgUnits","salutation","situations","forms","subSituations","configuration","InteractionFormConfiguration","recipientEmailDocument","senderEmailDocument","confirmationPageDocument","pages","recipientEmailAddress","recipientEmailSubject","senderEmailAddressFieldId","senderEmailSubject","InteractionFormPage","InteractionFormField","rows","InteractionFormRow","condition","InteractionFormCondition","columns","InteractionFormColumn","internalName","autocompleteType","required","placeholder","minValue","maxValue","minLength","maxLength","acceptMimeTypes","regEx","likertLabelLeft","likertLabelRight","FormFieldType","AutocompleteType","action","ConditionAction","details","BookingReservationSubmittedResponseType","slugs","SlugDto","count","PublicSubmitCommunicationRecipientCommand","PublicCreateCommunicationRecipientCommand","recipientId","PublicDeleteCommunicationRecipientCommand","showAllSlug","FieldFilterDto","values","DatabaseObjectFilterType","enableDocument","enableAddresses","enableCommunication","enableOpeningHours","DatabaseObjectTypeFieldGroupDto","DatabaseObjectTypeFieldDto","filterOptions","restrictToSuggestedValues","FilterOptionDto","ComponentType","nodes","expanded","depth","GroupedDirectoryPersonTeaserDto","GeoCodingFilter","defaultLocation","defaultZoom","PublicSubmitInteractionFormCommand","formData","InteractionSurveyConfiguration","PublicSubmitInteractionSurveyCommand","surveyData","years","min","max","commentMode","CommentMode","PublicSubmitProblemDefectCommand","PublicCreateProblemDefectCommand","PublicUpdateProblemDefectCommand","PublicSubmitProblemCommentCommand","PublicCreateProblemCommentCommand","PublicUpdateProblemCommentCommand","subscribedCategories","subscribedLiveItems","CategoryAndModuleNameDto","ItemAndModuleNameDto","moduleName","ItemNameDto","categories","GetOrCreateWebPushSubscriptionCommand","keys","endpoint","GetOrCreateFirebasePushSubscriptionCommand","ModuleType","searchSlug","reviewMode","quantityMode","shoppingCartLink","ReviewMode","QuantityMode","rating","grossPrice","grossCost","ShippingOptionType","additionalPaymentCosts","PaymentType","shippingGrossCost","shippingTaxes","paymentGrossCost","paymentTaxes","shippingOptionLabel","totalTaxes","totalGrossCost","PaymentOrderItemDto","amount","individualGrossPrice","individualTaxes","sumGrossPrice","sumTaxes","ShopOrderItemDto","reviews","currentQuantity","ShopOrderSubmittedResponseType","PublicSubmitShopOrderCommand","billingAddress","shippingAddress","PublicCreateShopOrderCommand","orderId","PublicSubmitShopReviewCommand","PublicCreateShopReviewCommand","current","WeatherDto","next","dateTime","temperature","category","imageUrl","SignalRClientMethods","SignalRServerMethods","d","getFullYear","getMonth","getDate","ApiException","message","isApiException","obj"],"sources":["./src/api/APIClient.ts"],"sourcesContent":["//----------------------\n// \n// Generated using the NSwag toolchain v13.18.2.0 (NJsonSchema v10.8.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// \n//----------------------\n\n/* tslint:disable */\n/* eslint-disable */\n// ReSharper disable InconsistentNaming\n\nexport class APIClientBase {\n protected getBaseUrl(_: string, __: string): string {\n return window.cross7Env.baseUrl;\n }\n\n protected async transformOptions(options: RequestInit): Promise {\n options.headers = {\n ...options.headers,\n 'Slug': window.location.pathname\n };\n\n if (window.location.search.indexOf('c7-preview') !== -1) {\n options.headers = {\n ...options.headers,\n 'Preview': 'true'\n };\n }\n\n return options;\n }\n}\n\nexport interface IAppClient {\n\n getConfiguration(pageId: number): Promise;\n\n /**\n * @param token (optional) \n * @deprecated\n */\n sendLoginMail(email: string, pageId: string, token?: string | null | undefined): Promise;\n}\n\nexport class AppClient extends APIClientBase implements IAppClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getConfiguration(pageId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/app/{PageId}/configuration\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetConfiguration(_response);\n });\n }\n\n protected processGetConfiguration(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = AppConfigurationDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param token (optional) \n * @deprecated\n */\n sendLoginMail(email: string, pageId: string, token?: string | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/app/{PageId}/sendloginmail\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(email);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PATCH\",\n signal,\n headers: {\n \"token\": token !== undefined && token !== null ? \"\" + token : \"\",\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSendLoginMail(_response);\n });\n }\n\n protected processSendLoginMail(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n}\n\nexport interface IBookingClient {\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined): Promise;\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined): Promise;\n\n getBookables(pageId: number, parentId?: number | null | undefined, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getBookable(pageId: number, bookableId: number, preview?: boolean | undefined): Promise;\n\n submitReservation(pageId: number, command: PublicSubmitBookingReservationCommand): Promise;\n\n createReservation(pageId: number, command: PublicCreateBookingReservationCommand): Promise;\n}\n\nexport class BookingClient extends APIClientBase implements IBookingClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/booking/{PageId}/settings?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSettings(_response);\n });\n }\n\n protected processGetSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BookingSettingsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/booking/{PageId}/categories?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (includeEmpty === null)\n throw new Error(\"The parameter 'includeEmpty' cannot be null.\");\n else if (includeEmpty !== undefined)\n url_ += \"IncludeEmpty=\" + encodeURIComponent(\"\" + includeEmpty) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCategories(_response);\n });\n }\n\n protected processGetCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(BookingCategoryTeaserDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getBookables(pageId: number, parentId?: number | null | undefined, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/booking/{PageId}/bookables?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (parentId !== undefined && parentId !== null)\n url_ += \"ParentId=\" + encodeURIComponent(\"\" + parentId) + \"&\";\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (sortType === null)\n throw new Error(\"The parameter 'sortType' cannot be null.\");\n else if (sortType !== undefined)\n url_ += \"SortType=\" + encodeURIComponent(\"\" + sortType) + \"&\";\n if (sortDirection === null)\n throw new Error(\"The parameter 'sortDirection' cannot be null.\");\n else if (sortDirection !== undefined)\n url_ += \"SortDirection=\" + encodeURIComponent(\"\" + sortDirection) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetBookables(_response);\n });\n }\n\n protected processGetBookables(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfBookingBookableTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getBookable(pageId: number, bookableId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/booking/{PageId}/bookables/{BookableId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (bookableId === undefined || bookableId === null)\n throw new Error(\"The parameter 'bookableId' must be defined.\");\n url_ = url_.replace(\"{BookableId}\", encodeURIComponent(\"\" + bookableId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetBookable(_response);\n });\n }\n\n protected processGetBookable(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BookingBookableDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n submitReservation(pageId: number, command: PublicSubmitBookingReservationCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/booking/{PageId}/reservations\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubmitReservation(_response);\n });\n }\n\n protected processSubmitReservation(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BookingReservationSubmittedResponseDto.fromJS(resultData200);\n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n createReservation(pageId: number, command: PublicCreateBookingReservationCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/booking/{PageId}/reservations/create\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateReservation(_response);\n });\n }\n\n protected processCreateReservation(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n}\n\nexport interface ICalendarClient {\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined): Promise;\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined): Promise;\n\n getEvents(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, from?: Date | null | undefined, until?: Date | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getEventsYearPdf(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getEventsMonthPdf(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getEventsListPdf(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, entireYear?: boolean | undefined, hideCategories?: boolean | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getEventsYearHtml(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getEventsMonthHtml(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getEventsListHtml(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, entireYear?: boolean | undefined, hideCategories?: boolean | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getEventsIcs(pageId: number, categoryIds?: number[] | null | undefined): Promise;\n\n getEventIcs(pageId: number, eventId: number): Promise;\n\n getEvent(pageId: number, eventId: number, preview?: boolean | undefined): Promise;\n}\n\nexport class CalendarClient extends APIClientBase implements ICalendarClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/settings?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSettings(_response);\n });\n }\n\n protected processGetSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CalendarSettingsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/categories?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (includeEmpty === null)\n throw new Error(\"The parameter 'includeEmpty' cannot be null.\");\n else if (includeEmpty !== undefined)\n url_ += \"IncludeEmpty=\" + encodeURIComponent(\"\" + includeEmpty) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCategories(_response);\n });\n }\n\n protected processGetCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(CalendarCategoryTeaserDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEvents(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, from?: Date | null | undefined, until?: Date | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/events?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (from !== undefined && from !== null)\n url_ += \"From=\" + encodeURIComponent(from ? \"\" + from.toISOString() : \"\") + \"&\";\n if (until !== undefined && until !== null)\n url_ += \"Until=\" + encodeURIComponent(until ? \"\" + until.toISOString() : \"\") + \"&\";\n if (sortType === null)\n throw new Error(\"The parameter 'sortType' cannot be null.\");\n else if (sortType !== undefined)\n url_ += \"SortType=\" + encodeURIComponent(\"\" + sortType) + \"&\";\n if (sortDirection === null)\n throw new Error(\"The parameter 'sortDirection' cannot be null.\");\n else if (sortDirection !== undefined)\n url_ += \"SortDirection=\" + encodeURIComponent(\"\" + sortDirection) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEvents(_response);\n });\n }\n\n protected processGetEvents(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfCalendarEventTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventsYearPdf(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/events/yearpdf?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (referenceDate !== undefined && referenceDate !== null)\n url_ += \"ReferenceDate=\" + encodeURIComponent(referenceDate ? \"\" + referenceDate.toISOString() : \"\") + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventsYearPdf(_response);\n });\n }\n\n protected processGetEventsYearPdf(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventsMonthPdf(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/events/monthpdf?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (referenceDate !== undefined && referenceDate !== null)\n url_ += \"ReferenceDate=\" + encodeURIComponent(referenceDate ? \"\" + referenceDate.toISOString() : \"\") + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventsMonthPdf(_response);\n });\n }\n\n protected processGetEventsMonthPdf(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventsListPdf(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, entireYear?: boolean | undefined, hideCategories?: boolean | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/events/listpdf?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (referenceDate !== undefined && referenceDate !== null)\n url_ += \"ReferenceDate=\" + encodeURIComponent(referenceDate ? \"\" + referenceDate.toISOString() : \"\") + \"&\";\n if (entireYear === null)\n throw new Error(\"The parameter 'entireYear' cannot be null.\");\n else if (entireYear !== undefined)\n url_ += \"EntireYear=\" + encodeURIComponent(\"\" + entireYear) + \"&\";\n if (hideCategories === null)\n throw new Error(\"The parameter 'hideCategories' cannot be null.\");\n else if (hideCategories !== undefined)\n url_ += \"HideCategories=\" + encodeURIComponent(\"\" + hideCategories) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventsListPdf(_response);\n });\n }\n\n protected processGetEventsListPdf(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventsYearHtml(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/events/yearpdf/html?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (referenceDate !== undefined && referenceDate !== null)\n url_ += \"ReferenceDate=\" + encodeURIComponent(referenceDate ? \"\" + referenceDate.toISOString() : \"\") + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventsYearHtml(_response);\n });\n }\n\n protected processGetEventsYearHtml(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventsMonthHtml(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/events/monthpdf/html?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (referenceDate !== undefined && referenceDate !== null)\n url_ += \"ReferenceDate=\" + encodeURIComponent(referenceDate ? \"\" + referenceDate.toISOString() : \"\") + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventsMonthHtml(_response);\n });\n }\n\n protected processGetEventsMonthHtml(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventsListHtml(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, entireYear?: boolean | undefined, hideCategories?: boolean | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/events/listpdf/html?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (referenceDate !== undefined && referenceDate !== null)\n url_ += \"ReferenceDate=\" + encodeURIComponent(referenceDate ? \"\" + referenceDate.toISOString() : \"\") + \"&\";\n if (entireYear === null)\n throw new Error(\"The parameter 'entireYear' cannot be null.\");\n else if (entireYear !== undefined)\n url_ += \"EntireYear=\" + encodeURIComponent(\"\" + entireYear) + \"&\";\n if (hideCategories === null)\n throw new Error(\"The parameter 'hideCategories' cannot be null.\");\n else if (hideCategories !== undefined)\n url_ += \"HideCategories=\" + encodeURIComponent(\"\" + hideCategories) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventsListHtml(_response);\n });\n }\n\n protected processGetEventsListHtml(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventsIcs(pageId: number, categoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/events/ics?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventsIcs(_response);\n });\n }\n\n protected processGetEventsIcs(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventIcs(pageId: number, eventId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/events/{EventId}/ics\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (eventId === undefined || eventId === null)\n throw new Error(\"The parameter 'eventId' must be defined.\");\n url_ = url_.replace(\"{EventId}\", encodeURIComponent(\"\" + eventId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventIcs(_response);\n });\n }\n\n protected processGetEventIcs(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEvent(pageId: number, eventId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/events/{EventId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (eventId === undefined || eventId === null)\n throw new Error(\"The parameter 'eventId' must be defined.\");\n url_ = url_.replace(\"{EventId}\", encodeURIComponent(\"\" + eventId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEvent(_response);\n });\n }\n\n protected processGetEvent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CalendarEventDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface ICommunicationClient {\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined): Promise;\n\n submitRecipient(pageId: number, command: PublicSubmitCommunicationRecipientCommand): Promise;\n\n deleteRecipient(pageId: number, command: PublicDeleteCommunicationRecipientCommand): Promise;\n\n createRecipient(pageId: number, command: PublicCreateCommunicationRecipientCommand): Promise;\n}\n\nexport class CommunicationClient extends APIClientBase implements ICommunicationClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/communication/{PageId}/settings?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSettings(_response);\n });\n }\n\n protected processGetSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CommunicationSettingsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n submitRecipient(pageId: number, command: PublicSubmitCommunicationRecipientCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/communication/{PageId}/recipients\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubmitRecipient(_response);\n });\n }\n\n protected processSubmitRecipient(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n deleteRecipient(pageId: number, command: PublicDeleteCommunicationRecipientCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/communication/{PageId}/recipients\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"DELETE\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDeleteRecipient(_response);\n });\n }\n\n protected processDeleteRecipient(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n createRecipient(pageId: number, command: PublicCreateCommunicationRecipientCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/communication/{PageId}/recipients/create\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PATCH\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateRecipient(_response);\n });\n }\n\n protected processCreateRecipient(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n}\n\nexport interface IDatabaseClient {\n\n getSettings(pageId: number): Promise;\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined): Promise;\n\n getObjects(pageId: number, objectTypeIds?: number[] | null | undefined, fieldFilters?: FieldFilterDto[] | null | undefined, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortProperty?: string | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getObject(pageId: number, objectId: number, preview?: boolean | undefined): Promise;\n\n getObjectTypes(pageId: number, objectTypeIds: number[] | null): Promise;\n}\n\nexport class DatabaseClient extends APIClientBase implements IDatabaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getSettings(pageId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/database/{PageId}/settings\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSettings(_response);\n });\n }\n\n protected processGetSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = DatabaseSettingsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/database/{PageId}/categories?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (includeEmpty === null)\n throw new Error(\"The parameter 'includeEmpty' cannot be null.\");\n else if (includeEmpty !== undefined)\n url_ += \"IncludeEmpty=\" + encodeURIComponent(\"\" + includeEmpty) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCategories(_response);\n });\n }\n\n protected processGetCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(DatabaseCategoryTeaserDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getObjects(pageId: number, objectTypeIds?: number[] | null | undefined, fieldFilters?: FieldFilterDto[] | null | undefined, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortProperty?: string | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/database/{PageId}/objects?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (objectTypeIds !== undefined && objectTypeIds !== null)\n objectTypeIds && objectTypeIds.forEach(item => { url_ += \"ObjectTypeIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (fieldFilters !== undefined && fieldFilters !== null)\n fieldFilters && fieldFilters.forEach((item, index) => {\n for (let attr in item)\n \t\t\tif (item.hasOwnProperty(attr)) {\n \t\t\t\turl_ += \"FieldFilters[\" + index + \"].\" + attr + \"=\" + encodeURIComponent(\"\" + (item as any)[attr]) + \"&\";\n \t\t\t}\n });\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (sortProperty === null)\n throw new Error(\"The parameter 'sortProperty' cannot be null.\");\n else if (sortProperty !== undefined)\n url_ += \"SortProperty=\" + encodeURIComponent(\"\" + sortProperty) + \"&\";\n if (sortDirection === null)\n throw new Error(\"The parameter 'sortDirection' cannot be null.\");\n else if (sortDirection !== undefined)\n url_ += \"SortDirection=\" + encodeURIComponent(\"\" + sortDirection) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetObjects(_response);\n });\n }\n\n protected processGetObjects(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfDatabaseObjectTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getObject(pageId: number, objectId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/database/{PageId}/objects/{ObjectId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (objectId === undefined || objectId === null)\n throw new Error(\"The parameter 'objectId' must be defined.\");\n url_ = url_.replace(\"{ObjectId}\", encodeURIComponent(\"\" + objectId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetObject(_response);\n });\n }\n\n protected processGetObject(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = DatabaseObjectDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getObjectTypes(pageId: number, objectTypeIds: number[] | null, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/database/{PageId}/objecttypes?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (objectTypeIds === undefined)\n throw new Error(\"The parameter 'objectTypeIds' must be defined.\");\n else if(objectTypeIds !== null)\n objectTypeIds && objectTypeIds.forEach(item => { url_ += \"ObjectTypeIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetObjectTypes(_response);\n });\n }\n\n protected processGetObjectTypes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(DatabaseObjectTypeDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IDirectoryClient {\n\n getLetters(pageId: number, componentType: ComponentType, categoryIds?: number[] | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getForms(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getFormCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined): Promise;\n\n getOrgUnits(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getOrgUnitsTree(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getOrgUnit(pageId: number, orgUnitId: number, preview?: boolean | undefined): Promise;\n\n getPersons(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, orgUnitIds?: number[] | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getGroupedPersons(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, orgUnitIds?: number[] | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getPerson(pageId: number, personId: number, preview?: boolean | undefined): Promise;\n\n getServices(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, onlyFromTenant?: boolean | undefined, onlyWithProcesses?: boolean | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getXZuFiServices(pageId: number): Promise;\n\n getXZuFiService(serviceId: number, pageId: string): Promise;\n\n getService(pageId: number, serviceId: number, preview?: boolean | undefined): Promise;\n\n getSituations(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getSituation(pageId: number, situationId: number, preview?: boolean | undefined): Promise;\n}\n\nexport class DirectoryClient extends APIClientBase implements IDirectoryClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getLetters(pageId: number, componentType: ComponentType, categoryIds?: number[] | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/letters?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (componentType === undefined || componentType === null)\n throw new Error(\"The parameter 'componentType' must be defined and cannot be null.\");\n else\n url_ += \"ComponentType=\" + encodeURIComponent(\"\" + componentType) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetLetters(_response);\n });\n }\n\n protected processGetLetters(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(item);\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getForms(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/forms?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (letter !== undefined && letter !== null)\n url_ += \"Letter=\" + encodeURIComponent(\"\" + letter) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetForms(_response);\n });\n }\n\n protected processGetForms(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfDirectoryFormTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getFormCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/formcategories?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (includeEmpty === null)\n throw new Error(\"The parameter 'includeEmpty' cannot be null.\");\n else if (includeEmpty !== undefined)\n url_ += \"IncludeEmpty=\" + encodeURIComponent(\"\" + includeEmpty) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetFormCategories(_response);\n });\n }\n\n protected processGetFormCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(DirectoryFormCategoryTeaserDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getOrgUnits(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/orgunits?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (letter !== undefined && letter !== null)\n url_ += \"Letter=\" + encodeURIComponent(\"\" + letter) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetOrgUnits(_response);\n });\n }\n\n protected processGetOrgUnits(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfDirectoryOrgUnitTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getOrgUnitsTree(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/orgunits/tree?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetOrgUnitsTree(_response);\n });\n }\n\n protected processGetOrgUnitsTree(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(DirectoryOrgUnitTreeNodeDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getOrgUnit(pageId: number, orgUnitId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/orgunits/{OrgUnitId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (orgUnitId === undefined || orgUnitId === null)\n throw new Error(\"The parameter 'orgUnitId' must be defined.\");\n url_ = url_.replace(\"{OrgUnitId}\", encodeURIComponent(\"\" + orgUnitId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetOrgUnit(_response);\n });\n }\n\n protected processGetOrgUnit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = DirectoryOrgUnitDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPersons(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, orgUnitIds?: number[] | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/persons?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (letter !== undefined && letter !== null)\n url_ += \"Letter=\" + encodeURIComponent(\"\" + letter) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (orgUnitIds !== undefined && orgUnitIds !== null)\n orgUnitIds && orgUnitIds.forEach(item => { url_ += \"OrgUnitIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPersons(_response);\n });\n }\n\n protected processGetPersons(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfDirectoryPersonTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getGroupedPersons(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, orgUnitIds?: number[] | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/persons/grouped?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (letter !== undefined && letter !== null)\n url_ += \"Letter=\" + encodeURIComponent(\"\" + letter) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (orgUnitIds !== undefined && orgUnitIds !== null)\n orgUnitIds && orgUnitIds.forEach(item => { url_ += \"OrgUnitIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetGroupedPersons(_response);\n });\n }\n\n protected processGetGroupedPersons(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfGroupedDirectoryPersonTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPerson(pageId: number, personId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/persons/{PersonId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (personId === undefined || personId === null)\n throw new Error(\"The parameter 'personId' must be defined.\");\n url_ = url_.replace(\"{PersonId}\", encodeURIComponent(\"\" + personId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPerson(_response);\n });\n }\n\n protected processGetPerson(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = DirectoryPersonDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getServices(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, onlyFromTenant?: boolean | undefined, onlyWithProcesses?: boolean | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/services?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (letter !== undefined && letter !== null)\n url_ += \"Letter=\" + encodeURIComponent(\"\" + letter) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (onlyFromTenant === null)\n throw new Error(\"The parameter 'onlyFromTenant' cannot be null.\");\n else if (onlyFromTenant !== undefined)\n url_ += \"OnlyFromTenant=\" + encodeURIComponent(\"\" + onlyFromTenant) + \"&\";\n if (onlyWithProcesses === null)\n throw new Error(\"The parameter 'onlyWithProcesses' cannot be null.\");\n else if (onlyWithProcesses !== undefined)\n url_ += \"OnlyWithProcesses=\" + encodeURIComponent(\"\" + onlyWithProcesses) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetServices(_response);\n });\n }\n\n protected processGetServices(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfDirectoryServiceTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getXZuFiServices(pageId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/services/xzufi\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetXZuFiServices(_response);\n });\n }\n\n protected processGetXZuFiServices(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getXZuFiService(serviceId: number, pageId: string, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/services/xzufi/{ServiceId}.xml\";\n if (serviceId === undefined || serviceId === null)\n throw new Error(\"The parameter 'serviceId' must be defined.\");\n url_ = url_.replace(\"{ServiceId}\", encodeURIComponent(\"\" + serviceId));\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetXZuFiService(_response);\n });\n }\n\n protected processGetXZuFiService(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getService(pageId: number, serviceId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/services/{ServiceId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (serviceId === undefined || serviceId === null)\n throw new Error(\"The parameter 'serviceId' must be defined.\");\n url_ = url_.replace(\"{ServiceId}\", encodeURIComponent(\"\" + serviceId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetService(_response);\n });\n }\n\n protected processGetService(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = DirectoryServiceDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSituations(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/situations?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (letter !== undefined && letter !== null)\n url_ += \"Letter=\" + encodeURIComponent(\"\" + letter) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSituations(_response);\n });\n }\n\n protected processGetSituations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfDirectorySituationTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSituation(pageId: number, situationId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/situations/{SituationId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (situationId === undefined || situationId === null)\n throw new Error(\"The parameter 'situationId' must be defined.\");\n url_ = url_.replace(\"{SituationId}\", encodeURIComponent(\"\" + situationId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSituation(_response);\n });\n }\n\n protected processGetSituation(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = DirectorySituationDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IFilesClient {\n\n getFile(fileId: string, size?: number | null | undefined, width?: number | null | undefined, height?: number | null | undefined, x?: number | null | undefined, y?: number | null | undefined, webp?: boolean | null | undefined): Promise;\n\n getFileDto(fileId: string): Promise;\n\n createFile(file?: FileParameter | null | undefined): Promise;\n}\n\nexport class FilesClient extends APIClientBase implements IFilesClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getFile(fileId: string, size?: number | null | undefined, width?: number | null | undefined, height?: number | null | undefined, x?: number | null | undefined, y?: number | null | undefined, webp?: boolean | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/files/{FileId}?\";\n if (fileId === undefined || fileId === null)\n throw new Error(\"The parameter 'fileId' must be defined.\");\n url_ = url_.replace(\"{FileId}\", encodeURIComponent(\"\" + fileId));\n if (size !== undefined && size !== null)\n url_ += \"Size=\" + encodeURIComponent(\"\" + size) + \"&\";\n if (width !== undefined && width !== null)\n url_ += \"Width=\" + encodeURIComponent(\"\" + width) + \"&\";\n if (height !== undefined && height !== null)\n url_ += \"Height=\" + encodeURIComponent(\"\" + height) + \"&\";\n if (x !== undefined && x !== null)\n url_ += \"X=\" + encodeURIComponent(\"\" + x) + \"&\";\n if (y !== undefined && y !== null)\n url_ += \"Y=\" + encodeURIComponent(\"\" + y) + \"&\";\n if (webp !== undefined && webp !== null)\n url_ += \"Webp=\" + encodeURIComponent(\"\" + webp) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetFile(_response);\n });\n }\n\n protected processGetFile(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getFileDto(fileId: string, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/files/{FileId}/dto\";\n if (fileId === undefined || fileId === null)\n throw new Error(\"The parameter 'fileId' must be defined.\");\n url_ = url_.replace(\"{FileId}\", encodeURIComponent(\"\" + fileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetFileDto(_response);\n });\n }\n\n protected processGetFileDto(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = FileDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n createFile(file?: FileParameter | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/files\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = new FormData();\n if (file !== null && file !== undefined)\n content_.append(\"file\", file.data, file.fileName ? file.fileName : \"file\");\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateFile(_response);\n });\n }\n\n protected processCreateFile(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = FileDto.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = ProblemDetails.fromJS(resultData400);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n}\n\nexport interface IGalleryClient {\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined): Promise;\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined): Promise;\n\n getAlbums(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getAlbum(pageId: number, albumId: number, preview?: boolean | undefined): Promise;\n}\n\nexport class GalleryClient extends APIClientBase implements IGalleryClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/gallery/{PageId}/settings?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSettings(_response);\n });\n }\n\n protected processGetSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = GallerySettingsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/gallery/{PageId}/categories?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (includeEmpty === null)\n throw new Error(\"The parameter 'includeEmpty' cannot be null.\");\n else if (includeEmpty !== undefined)\n url_ += \"IncludeEmpty=\" + encodeURIComponent(\"\" + includeEmpty) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCategories(_response);\n });\n }\n\n protected processGetCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(GalleryCategoryTeaserDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAlbums(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/gallery/{PageId}/albums?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (sortType === null)\n throw new Error(\"The parameter 'sortType' cannot be null.\");\n else if (sortType !== undefined)\n url_ += \"SortType=\" + encodeURIComponent(\"\" + sortType) + \"&\";\n if (sortDirection === null)\n throw new Error(\"The parameter 'sortDirection' cannot be null.\");\n else if (sortDirection !== undefined)\n url_ += \"SortDirection=\" + encodeURIComponent(\"\" + sortDirection) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAlbums(_response);\n });\n }\n\n protected processGetAlbums(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfGalleryAlbumTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAlbum(pageId: number, albumId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/gallery/{PageId}/albums/{AlbumId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (albumId === undefined || albumId === null)\n throw new Error(\"The parameter 'albumId' must be defined.\");\n url_ = url_.replace(\"{AlbumId}\", encodeURIComponent(\"\" + albumId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAlbum(_response);\n });\n }\n\n protected processGetAlbum(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = GalleryAlbumDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IGeocodingClient {\n\n forwardGeocoding(address: string | null, moduleId?: number | null | undefined, filters?: GeoCodingFilter[] | null | undefined, limit?: number | undefined): Promise;\n\n reverseGeocoding(longitude: number, latitude: number, limit?: number | undefined): Promise;\n}\n\nexport class GeocodingClient extends APIClientBase implements IGeocodingClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n forwardGeocoding(address: string | null, moduleId?: number | null | undefined, filters?: GeoCodingFilter[] | null | undefined, limit?: number | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/geocoding/forward?\";\n if (address === undefined)\n throw new Error(\"The parameter 'address' must be defined.\");\n else if(address !== null)\n url_ += \"Address=\" + encodeURIComponent(\"\" + address) + \"&\";\n if (moduleId !== undefined && moduleId !== null)\n url_ += \"ModuleId=\" + encodeURIComponent(\"\" + moduleId) + \"&\";\n if (filters !== undefined && filters !== null)\n filters && filters.forEach(item => { url_ += \"Filters=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processForwardGeocoding(_response);\n });\n }\n\n protected processForwardGeocoding(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(Address.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n reverseGeocoding(longitude: number, latitude: number, limit?: number | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/geocoding/reverse?\";\n if (longitude === undefined || longitude === null)\n throw new Error(\"The parameter 'longitude' must be defined and cannot be null.\");\n else\n url_ += \"Longitude=\" + encodeURIComponent(\"\" + longitude) + \"&\";\n if (latitude === undefined || latitude === null)\n throw new Error(\"The parameter 'latitude' must be defined and cannot be null.\");\n else\n url_ += \"Latitude=\" + encodeURIComponent(\"\" + latitude) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processReverseGeocoding(_response);\n });\n }\n\n protected processReverseGeocoding(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(Address.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IGeoClient {\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined): Promise;\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined): Promise;\n\n getObjects(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, sortingReference_Longitude?: number | null | undefined, sortingReference_Latitude?: number | null | undefined, sortingReference_Elevation?: number | null | undefined, sortingReference_NavigationUrl?: string | null | undefined, searchArea_NorthEastLongitude?: number | undefined, searchArea_NorthEastLatitude?: number | undefined, searchArea_SouthWestLongitude?: number | undefined, searchArea_SouthWestLatitude?: number | undefined, openAt?: Date | null | undefined, preview?: boolean | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getObject(pageId: number, objectId: number, preview?: boolean | undefined): Promise;\n}\n\nexport class GeoClient extends APIClientBase implements IGeoClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/geo/{PageId}/settings?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSettings(_response);\n });\n }\n\n protected processGetSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = GeoSettingsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/geo/{PageId}/categories?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (includeEmpty === null)\n throw new Error(\"The parameter 'includeEmpty' cannot be null.\");\n else if (includeEmpty !== undefined)\n url_ += \"IncludeEmpty=\" + encodeURIComponent(\"\" + includeEmpty) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCategories(_response);\n });\n }\n\n protected processGetCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(GeoCategoryTeaserDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getObjects(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, sortingReference_Longitude?: number | null | undefined, sortingReference_Latitude?: number | null | undefined, sortingReference_Elevation?: number | null | undefined, sortingReference_NavigationUrl?: string | null | undefined, searchArea_NorthEastLongitude?: number | undefined, searchArea_NorthEastLatitude?: number | undefined, searchArea_SouthWestLongitude?: number | undefined, searchArea_SouthWestLatitude?: number | undefined, openAt?: Date | null | undefined, preview?: boolean | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/geo/{PageId}/objects?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (sortType === null)\n throw new Error(\"The parameter 'sortType' cannot be null.\");\n else if (sortType !== undefined)\n url_ += \"SortType=\" + encodeURIComponent(\"\" + sortType) + \"&\";\n if (sortDirection === null)\n throw new Error(\"The parameter 'sortDirection' cannot be null.\");\n else if (sortDirection !== undefined)\n url_ += \"SortDirection=\" + encodeURIComponent(\"\" + sortDirection) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (sortingReference_Longitude !== undefined && sortingReference_Longitude !== null)\n url_ += \"SortingReference.Longitude=\" + encodeURIComponent(\"\" + sortingReference_Longitude) + \"&\";\n if (sortingReference_Latitude !== undefined && sortingReference_Latitude !== null)\n url_ += \"SortingReference.Latitude=\" + encodeURIComponent(\"\" + sortingReference_Latitude) + \"&\";\n if (sortingReference_Elevation !== undefined && sortingReference_Elevation !== null)\n url_ += \"SortingReference.Elevation=\" + encodeURIComponent(\"\" + sortingReference_Elevation) + \"&\";\n if (sortingReference_NavigationUrl !== undefined && sortingReference_NavigationUrl !== null)\n url_ += \"SortingReference.NavigationUrl=\" + encodeURIComponent(\"\" + sortingReference_NavigationUrl) + \"&\";\n if (searchArea_NorthEastLongitude === null)\n throw new Error(\"The parameter 'searchArea_NorthEastLongitude' cannot be null.\");\n else if (searchArea_NorthEastLongitude !== undefined)\n url_ += \"SearchArea.NorthEastLongitude=\" + encodeURIComponent(\"\" + searchArea_NorthEastLongitude) + \"&\";\n if (searchArea_NorthEastLatitude === null)\n throw new Error(\"The parameter 'searchArea_NorthEastLatitude' cannot be null.\");\n else if (searchArea_NorthEastLatitude !== undefined)\n url_ += \"SearchArea.NorthEastLatitude=\" + encodeURIComponent(\"\" + searchArea_NorthEastLatitude) + \"&\";\n if (searchArea_SouthWestLongitude === null)\n throw new Error(\"The parameter 'searchArea_SouthWestLongitude' cannot be null.\");\n else if (searchArea_SouthWestLongitude !== undefined)\n url_ += \"SearchArea.SouthWestLongitude=\" + encodeURIComponent(\"\" + searchArea_SouthWestLongitude) + \"&\";\n if (searchArea_SouthWestLatitude === null)\n throw new Error(\"The parameter 'searchArea_SouthWestLatitude' cannot be null.\");\n else if (searchArea_SouthWestLatitude !== undefined)\n url_ += \"SearchArea.SouthWestLatitude=\" + encodeURIComponent(\"\" + searchArea_SouthWestLatitude) + \"&\";\n if (openAt !== undefined && openAt !== null)\n url_ += \"OpenAt=\" + encodeURIComponent(openAt ? \"\" + openAt.toISOString() : \"\") + \"&\";\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetObjects(_response);\n });\n }\n\n protected processGetObjects(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfGeoObjectTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getObject(pageId: number, objectId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/geo/{PageId}/objects/{ObjectId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (objectId === undefined || objectId === null)\n throw new Error(\"The parameter 'objectId' must be defined.\");\n url_ = url_.replace(\"{ObjectId}\", encodeURIComponent(\"\" + objectId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetObject(_response);\n });\n }\n\n protected processGetObject(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = GeoObjectDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IInteractionClient {\n\n getForm(pageId: number, formId: number, preview?: boolean | undefined): Promise;\n\n submitForm(pageId: number, command: PublicSubmitInteractionFormCommand): Promise;\n\n getSurvey(pageId: number, surveyId: number, preview?: boolean | undefined): Promise;\n\n submitSurvey(pageId: number, command: PublicSubmitInteractionSurveyCommand): Promise;\n}\n\nexport class InteractionClient extends APIClientBase implements IInteractionClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getForm(pageId: number, formId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/interaction/{PageId}/forms/{FormId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (formId === undefined || formId === null)\n throw new Error(\"The parameter 'formId' must be defined.\");\n url_ = url_.replace(\"{FormId}\", encodeURIComponent(\"\" + formId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetForm(_response);\n });\n }\n\n protected processGetForm(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = InteractionFormDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n submitForm(pageId: number, command: PublicSubmitInteractionFormCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/interaction/{PageId}/forms\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubmitForm(_response);\n });\n }\n\n protected processSubmitForm(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = Node.fromJS(resultData200);\n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n getSurvey(pageId: number, surveyId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/interaction/{PageId}/surveys/{SurveyId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (surveyId === undefined || surveyId === null)\n throw new Error(\"The parameter 'surveyId' must be defined.\");\n url_ = url_.replace(\"{SurveyId}\", encodeURIComponent(\"\" + surveyId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSurvey(_response);\n });\n }\n\n protected processGetSurvey(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = InteractionSurveyDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n submitSurvey(pageId: number, command: PublicSubmitInteractionSurveyCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/interaction/{PageId}/surveys\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubmitSurvey(_response);\n });\n }\n\n protected processSubmitSurvey(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = Node.fromJS(resultData200);\n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n}\n\nexport interface INewsClient {\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined): Promise;\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined): Promise;\n\n getArticles(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, from?: Date | null | undefined, until?: Date | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getArticlesRss(pageId: number, categoryIds?: number[] | null | undefined): Promise;\n\n getArticle(pageId: number, articleId: number, preview?: boolean | undefined): Promise;\n\n getArticleDateRange(pageId: number, categoryIds?: number[] | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n}\n\nexport class NewsClient extends APIClientBase implements INewsClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/news/{PageId}/settings?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSettings(_response);\n });\n }\n\n protected processGetSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = NewsSettingsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/news/{PageId}/categories?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (includeEmpty === null)\n throw new Error(\"The parameter 'includeEmpty' cannot be null.\");\n else if (includeEmpty !== undefined)\n url_ += \"IncludeEmpty=\" + encodeURIComponent(\"\" + includeEmpty) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCategories(_response);\n });\n }\n\n protected processGetCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(NewsCategoryTeaserDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getArticles(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, from?: Date | null | undefined, until?: Date | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/news/{PageId}/articles?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (sortType === null)\n throw new Error(\"The parameter 'sortType' cannot be null.\");\n else if (sortType !== undefined)\n url_ += \"SortType=\" + encodeURIComponent(\"\" + sortType) + \"&\";\n if (sortDirection === null)\n throw new Error(\"The parameter 'sortDirection' cannot be null.\");\n else if (sortDirection !== undefined)\n url_ += \"SortDirection=\" + encodeURIComponent(\"\" + sortDirection) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (from !== undefined && from !== null)\n url_ += \"From=\" + encodeURIComponent(from ? \"\" + from.toISOString() : \"\") + \"&\";\n if (until !== undefined && until !== null)\n url_ += \"Until=\" + encodeURIComponent(until ? \"\" + until.toISOString() : \"\") + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetArticles(_response);\n });\n }\n\n protected processGetArticles(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfNewsArticleTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getArticlesRss(pageId: number, categoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/news/{PageId}/articles/rss?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetArticlesRss(_response);\n });\n }\n\n protected processGetArticlesRss(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getArticle(pageId: number, articleId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/news/{PageId}/articles/{ArticleId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (articleId === undefined || articleId === null)\n throw new Error(\"The parameter 'articleId' must be defined.\");\n url_ = url_.replace(\"{ArticleId}\", encodeURIComponent(\"\" + articleId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetArticle(_response);\n });\n }\n\n protected processGetArticle(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = NewsArticleDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getArticleDateRange(pageId: number, categoryIds?: number[] | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/news/{PageId}/articles/daterange?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetArticleDateRange(_response);\n });\n }\n\n protected processGetArticleDateRange(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = DateRangeDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IPageClient {\n\n getCurrentPageId(): Promise;\n\n getPage(pageId: number, categoryId: number): Promise;\n}\n\nexport class PageClient extends APIClientBase implements IPageClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getCurrentPageId(signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/page/current\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCurrentPageId(_response);\n });\n }\n\n protected processGetCurrentPageId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPage(pageId: number, categoryId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/page/{PageId}/pages/{CategoryId}\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryId === undefined || categoryId === null)\n throw new Error(\"The parameter 'categoryId' must be defined.\");\n url_ = url_.replace(\"{CategoryId}\", encodeURIComponent(\"\" + categoryId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPage(_response);\n });\n }\n\n protected processGetPage(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = Typo3PageDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IProblemClient {\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined): Promise;\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined): Promise;\n\n getDefects(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n submitDefect(pageId: number, command: PublicSubmitProblemDefectCommand): Promise;\n\n getDefect(pageId: number, defectId: number, preview?: boolean | undefined): Promise;\n\n createDefect(pageId: number, command: PublicCreateProblemDefectCommand): Promise;\n\n getDefectDetails(pageId: number, defectId: number, token: string | null): Promise;\n\n updateDefect(pageId: number, command: PublicUpdateProblemDefectCommand): Promise;\n\n submitComment(pageId: number, command: PublicSubmitProblemCommentCommand): Promise;\n\n createComment(pageId: number, command: PublicCreateProblemCommentCommand): Promise;\n\n getCommentDetails(pageId: number, defectId: number, commentId: number, token: string | null): Promise;\n\n updateComment(pageId: number, command: PublicUpdateProblemCommentCommand): Promise;\n}\n\nexport class ProblemClient extends APIClientBase implements IProblemClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/settings?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSettings(_response);\n });\n }\n\n protected processGetSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProblemSettingsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/categories?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (includeEmpty === null)\n throw new Error(\"The parameter 'includeEmpty' cannot be null.\");\n else if (includeEmpty !== undefined)\n url_ += \"IncludeEmpty=\" + encodeURIComponent(\"\" + includeEmpty) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCategories(_response);\n });\n }\n\n protected processGetCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(ProblemCategoryTeaserDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getDefects(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/defects?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (sortType === null)\n throw new Error(\"The parameter 'sortType' cannot be null.\");\n else if (sortType !== undefined)\n url_ += \"SortType=\" + encodeURIComponent(\"\" + sortType) + \"&\";\n if (sortDirection === null)\n throw new Error(\"The parameter 'sortDirection' cannot be null.\");\n else if (sortDirection !== undefined)\n url_ += \"SortDirection=\" + encodeURIComponent(\"\" + sortDirection) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetDefects(_response);\n });\n }\n\n protected processGetDefects(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfProblemDefectTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n submitDefect(pageId: number, command: PublicSubmitProblemDefectCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/defects\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubmitDefect(_response);\n });\n }\n\n protected processSubmitDefect(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n getDefect(pageId: number, defectId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/defects/{DefectId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (defectId === undefined || defectId === null)\n throw new Error(\"The parameter 'defectId' must be defined.\");\n url_ = url_.replace(\"{DefectId}\", encodeURIComponent(\"\" + defectId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetDefect(_response);\n });\n }\n\n protected processGetDefect(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProblemDefectDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n createDefect(pageId: number, command: PublicCreateProblemDefectCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/defects/create\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PATCH\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateDefect(_response);\n });\n }\n\n protected processCreateDefect(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n getDefectDetails(pageId: number, defectId: number, token: string | null, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/defects/{DefectId}/details?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (defectId === undefined || defectId === null)\n throw new Error(\"The parameter 'defectId' must be defined.\");\n url_ = url_.replace(\"{DefectId}\", encodeURIComponent(\"\" + defectId));\n if (token === undefined)\n throw new Error(\"The parameter 'token' must be defined.\");\n else if(token !== null)\n url_ += \"Token=\" + encodeURIComponent(\"\" + token) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetDefectDetails(_response);\n });\n }\n\n protected processGetDefectDetails(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PublicProblemDefectDetailsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateDefect(pageId: number, command: PublicUpdateProblemDefectCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/defects/update\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PATCH\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateDefect(_response);\n });\n }\n\n protected processUpdateDefect(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n submitComment(pageId: number, command: PublicSubmitProblemCommentCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/comments\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubmitComment(_response);\n });\n }\n\n protected processSubmitComment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n createComment(pageId: number, command: PublicCreateProblemCommentCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/comments/create\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PATCH\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateComment(_response);\n });\n }\n\n protected processCreateComment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n getCommentDetails(pageId: number, defectId: number, commentId: number, token: string | null, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/defects/{DefectId}/comments/{CommentId}/details?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (defectId === undefined || defectId === null)\n throw new Error(\"The parameter 'defectId' must be defined.\");\n url_ = url_.replace(\"{DefectId}\", encodeURIComponent(\"\" + defectId));\n if (commentId === undefined || commentId === null)\n throw new Error(\"The parameter 'commentId' must be defined.\");\n url_ = url_.replace(\"{CommentId}\", encodeURIComponent(\"\" + commentId));\n if (token === undefined)\n throw new Error(\"The parameter 'token' must be defined.\");\n else if(token !== null)\n url_ += \"Token=\" + encodeURIComponent(\"\" + token) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCommentDetails(_response);\n });\n }\n\n protected processGetCommentDetails(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PublicProblemDefectDetailsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateComment(pageId: number, command: PublicUpdateProblemCommentCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/comments/update\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PATCH\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateComment(_response);\n });\n }\n\n protected processUpdateComment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n}\n\nexport interface IPushClient {\n\n getWebPushPublicKey(): Promise;\n\n getPushSubscription(subscriptionId: string | null): Promise;\n\n getPushCategories(pageId: number): Promise;\n\n getOrCreateEmailPushSubscription(command: GetOrCreateEmailPushSubscriptionCommand): Promise;\n\n getOrCreateWebPushSubscription(command: GetOrCreateWebPushSubscriptionCommand): Promise;\n\n getOrCreateFirebasePushSubscription(command: GetOrCreateFirebasePushSubscriptionCommand): Promise;\n\n subscribeToCategories(subscriptionId: string | null, categoryIds?: number[] | null | undefined): Promise;\n\n subscribeToCategory(subscriptionId: string | null, categoryId: number): Promise;\n\n unsubscribeFromCategory(subscriptionId: string | null, categoryId: number): Promise;\n\n subscribeToLiveItem(subscriptionId: string | null, itemId: number): Promise;\n\n unsubscribeFromLiveItem(subscriptionId: string | null, itemId: number): Promise;\n}\n\nexport class PushClient extends APIClientBase implements IPushClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getWebPushPublicKey(signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/push/web/publickey\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetWebPushPublicKey(_response);\n });\n }\n\n protected processGetWebPushPublicKey(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPushSubscription(subscriptionId: string | null, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/push/subscriptions/{SubscriptionId}\";\n if (subscriptionId === undefined || subscriptionId === null)\n throw new Error(\"The parameter 'subscriptionId' must be defined.\");\n url_ = url_.replace(\"{SubscriptionId}\", encodeURIComponent(\"\" + subscriptionId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPushSubscription(_response);\n });\n }\n\n protected processGetPushSubscription(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PushSubscriptionDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPushCategories(pageId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/push/{PageId}/categories\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPushCategories(_response);\n });\n }\n\n protected processGetPushCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(GroupedCategoryTeasersDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getOrCreateEmailPushSubscription(command: GetOrCreateEmailPushSubscriptionCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/push/subscriptions/email\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetOrCreateEmailPushSubscription(_response);\n });\n }\n\n protected processGetOrCreateEmailPushSubscription(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PushSubscriptionDto.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = ProblemDetails.fromJS(resultData404);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n getOrCreateWebPushSubscription(command: GetOrCreateWebPushSubscriptionCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/push/subscriptions/web\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetOrCreateWebPushSubscription(_response);\n });\n }\n\n protected processGetOrCreateWebPushSubscription(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PushSubscriptionDto.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = ProblemDetails.fromJS(resultData404);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n getOrCreateFirebasePushSubscription(command: GetOrCreateFirebasePushSubscriptionCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/push/subscriptions/firebase\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetOrCreateFirebasePushSubscription(_response);\n });\n }\n\n protected processGetOrCreateFirebasePushSubscription(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PushSubscriptionDto.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = ProblemDetails.fromJS(resultData404);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n subscribeToCategories(subscriptionId: string | null, categoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/push/subscriptions/{SubscriptionId}/categories?\";\n if (subscriptionId === undefined || subscriptionId === null)\n throw new Error(\"The parameter 'subscriptionId' must be defined.\");\n url_ = url_.replace(\"{SubscriptionId}\", encodeURIComponent(\"\" + subscriptionId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubscribeToCategories(_response);\n });\n }\n\n protected processSubscribeToCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PushSubscriptionDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n subscribeToCategory(subscriptionId: string | null, categoryId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/push/subscriptions/{SubscriptionId}/categories/{CategoryId}\";\n if (subscriptionId === undefined || subscriptionId === null)\n throw new Error(\"The parameter 'subscriptionId' must be defined.\");\n url_ = url_.replace(\"{SubscriptionId}\", encodeURIComponent(\"\" + subscriptionId));\n if (categoryId === undefined || categoryId === null)\n throw new Error(\"The parameter 'categoryId' must be defined.\");\n url_ = url_.replace(\"{CategoryId}\", encodeURIComponent(\"\" + categoryId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubscribeToCategory(_response);\n });\n }\n\n protected processSubscribeToCategory(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PushSubscriptionDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n unsubscribeFromCategory(subscriptionId: string | null, categoryId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/push/subscriptions/{SubscriptionId}/categories/{CategoryId}\";\n if (subscriptionId === undefined || subscriptionId === null)\n throw new Error(\"The parameter 'subscriptionId' must be defined.\");\n url_ = url_.replace(\"{SubscriptionId}\", encodeURIComponent(\"\" + subscriptionId));\n if (categoryId === undefined || categoryId === null)\n throw new Error(\"The parameter 'categoryId' must be defined.\");\n url_ = url_.replace(\"{CategoryId}\", encodeURIComponent(\"\" + categoryId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUnsubscribeFromCategory(_response);\n });\n }\n\n protected processUnsubscribeFromCategory(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PushSubscriptionDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n subscribeToLiveItem(subscriptionId: string | null, itemId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/push/subscriptions/{SubscriptionId}/items/{ItemId}\";\n if (subscriptionId === undefined || subscriptionId === null)\n throw new Error(\"The parameter 'subscriptionId' must be defined.\");\n url_ = url_.replace(\"{SubscriptionId}\", encodeURIComponent(\"\" + subscriptionId));\n if (itemId === undefined || itemId === null)\n throw new Error(\"The parameter 'itemId' must be defined.\");\n url_ = url_.replace(\"{ItemId}\", encodeURIComponent(\"\" + itemId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubscribeToLiveItem(_response);\n });\n }\n\n protected processSubscribeToLiveItem(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PushSubscriptionDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n unsubscribeFromLiveItem(subscriptionId: string | null, itemId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/push/subscriptions/{SubscriptionId}/items/{ItemId}\";\n if (subscriptionId === undefined || subscriptionId === null)\n throw new Error(\"The parameter 'subscriptionId' must be defined.\");\n url_ = url_.replace(\"{SubscriptionId}\", encodeURIComponent(\"\" + subscriptionId));\n if (itemId === undefined || itemId === null)\n throw new Error(\"The parameter 'itemId' must be defined.\");\n url_ = url_.replace(\"{ItemId}\", encodeURIComponent(\"\" + itemId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUnsubscribeFromLiveItem(_response);\n });\n }\n\n protected processUnsubscribeFromLiveItem(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PushSubscriptionDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface ISearchClient {\n\n getSearchResults(pageId: number, search?: string | null | undefined, pageNumber?: number | undefined, pageSize?: number | undefined, moduleFilters?: ModuleType[] | null | undefined): Promise;\n\n getSearchSuggestions(pageId: number, search: string | null, limit?: number | undefined, moduleFilters?: ModuleType[] | null | undefined): Promise;\n\n getFilters(pageId: number): Promise;\n\n getSettings(pageId: number): Promise;\n}\n\nexport class SearchClient extends APIClientBase implements ISearchClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getSearchResults(pageId: number, search?: string | null | undefined, pageNumber?: number | undefined, pageSize?: number | undefined, moduleFilters?: ModuleType[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/search/{PageId}/search?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (moduleFilters !== undefined && moduleFilters !== null)\n moduleFilters && moduleFilters.forEach(item => { url_ += \"ModuleFilters=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSearchResults(_response);\n });\n }\n\n protected processGetSearchResults(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfSearchResultDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSearchSuggestions(pageId: number, search: string | null, limit?: number | undefined, moduleFilters?: ModuleType[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/search/{PageId}/suggestions?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (search === undefined)\n throw new Error(\"The parameter 'search' must be defined.\");\n else if(search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n if (moduleFilters !== undefined && moduleFilters !== null)\n moduleFilters && moduleFilters.forEach(item => { url_ += \"ModuleFilters=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSearchSuggestions(_response);\n });\n }\n\n protected processGetSearchSuggestions(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(item);\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getFilters(pageId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/search/{PageId}/filters\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetFilters(_response);\n });\n }\n\n protected processGetFilters(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(item);\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSettings(pageId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/search/{PageId}/settings\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSettings(_response);\n });\n }\n\n protected processGetSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SearchSettingsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IShopClient {\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined): Promise;\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined): Promise;\n\n getProducts(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getShippingOptions(pageId: number, orderItemIds: number[] | null): Promise;\n\n getPaymentOptions(pageId: number, orderItemIds: number[] | null, shippingOptionId: string): Promise;\n\n getOrderBreakdown(pageId: number, orderItems: ShopOrderItemDto[] | null, paymentType: PaymentType, shippingOptionId: string): Promise;\n\n getProduct(pageId: number, productId: number, preview?: boolean | undefined): Promise;\n\n submitOrder(pageId: number, command: PublicSubmitShopOrderCommand): Promise;\n\n createOrder(pageId: number, command: PublicCreateShopOrderCommand): Promise;\n\n submitReview(pageId: number, command: PublicSubmitShopReviewCommand): Promise;\n\n createReview(pageId: number, command: PublicCreateShopReviewCommand): Promise;\n\n getReviewDetails(pageId: number, productId: number, reviewId: number, token: string | null): Promise;\n\n updateReview(pageId: number, command: PublicUpdateShopReviewCommand): Promise;\n}\n\nexport class ShopClient extends APIClientBase implements IShopClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/settings?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSettings(_response);\n });\n }\n\n protected processGetSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ShopSettingsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/categories?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (includeEmpty === null)\n throw new Error(\"The parameter 'includeEmpty' cannot be null.\");\n else if (includeEmpty !== undefined)\n url_ += \"IncludeEmpty=\" + encodeURIComponent(\"\" + includeEmpty) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCategories(_response);\n });\n }\n\n protected processGetCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(ShopCategoryTeaserDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getProducts(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/products?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (sortType === null)\n throw new Error(\"The parameter 'sortType' cannot be null.\");\n else if (sortType !== undefined)\n url_ += \"SortType=\" + encodeURIComponent(\"\" + sortType) + \"&\";\n if (sortDirection === null)\n throw new Error(\"The parameter 'sortDirection' cannot be null.\");\n else if (sortDirection !== undefined)\n url_ += \"SortDirection=\" + encodeURIComponent(\"\" + sortDirection) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetProducts(_response);\n });\n }\n\n protected processGetProducts(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfShopProductTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getShippingOptions(pageId: number, orderItemIds: number[] | null, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/shippingoptions?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (orderItemIds === undefined)\n throw new Error(\"The parameter 'orderItemIds' must be defined.\");\n else if(orderItemIds !== null)\n orderItemIds && orderItemIds.forEach(item => { url_ += \"OrderItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetShippingOptions(_response);\n });\n }\n\n protected processGetShippingOptions(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(ShippingOption.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPaymentOptions(pageId: number, orderItemIds: number[] | null, shippingOptionId: string, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/paymentoptions?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (orderItemIds === undefined)\n throw new Error(\"The parameter 'orderItemIds' must be defined.\");\n else if(orderItemIds !== null)\n orderItemIds && orderItemIds.forEach(item => { url_ += \"OrderItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (shippingOptionId === undefined || shippingOptionId === null)\n throw new Error(\"The parameter 'shippingOptionId' must be defined and cannot be null.\");\n else\n url_ += \"ShippingOptionId=\" + encodeURIComponent(\"\" + shippingOptionId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPaymentOptions(_response);\n });\n }\n\n protected processGetPaymentOptions(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(PaymentOption.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getOrderBreakdown(pageId: number, orderItems: ShopOrderItemDto[] | null, paymentType: PaymentType, shippingOptionId: string, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/breakdown?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (orderItems === undefined)\n throw new Error(\"The parameter 'orderItems' must be defined.\");\n else if(orderItems !== null)\n orderItems && orderItems.forEach((item, index) => {\n for (let attr in item)\n \t\t\tif (item.hasOwnProperty(attr)) {\n \t\t\t\turl_ += \"OrderItems[\" + index + \"].\" + attr + \"=\" + encodeURIComponent(\"\" + (item as any)[attr]) + \"&\";\n \t\t\t}\n });\n if (paymentType === undefined || paymentType === null)\n throw new Error(\"The parameter 'paymentType' must be defined and cannot be null.\");\n else\n url_ += \"PaymentType=\" + encodeURIComponent(\"\" + paymentType) + \"&\";\n if (shippingOptionId === undefined || shippingOptionId === null)\n throw new Error(\"The parameter 'shippingOptionId' must be defined and cannot be null.\");\n else\n url_ += \"ShippingOptionId=\" + encodeURIComponent(\"\" + shippingOptionId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetOrderBreakdown(_response);\n });\n }\n\n protected processGetOrderBreakdown(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = OrderBreakdownDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getProduct(pageId: number, productId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/products/{ProductId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (productId === undefined || productId === null)\n throw new Error(\"The parameter 'productId' must be defined.\");\n url_ = url_.replace(\"{ProductId}\", encodeURIComponent(\"\" + productId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetProduct(_response);\n });\n }\n\n protected processGetProduct(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ShopProductDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n submitOrder(pageId: number, command: PublicSubmitShopOrderCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/orders\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubmitOrder(_response);\n });\n }\n\n protected processSubmitOrder(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ShopOrderSubmittedResponseDto.fromJS(resultData200);\n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n createOrder(pageId: number, command: PublicCreateShopOrderCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/orders/create\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateOrder(_response);\n });\n }\n\n protected processCreateOrder(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n submitReview(pageId: number, command: PublicSubmitShopReviewCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/reviews\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubmitReview(_response);\n });\n }\n\n protected processSubmitReview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n createReview(pageId: number, command: PublicCreateShopReviewCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/reviews/create\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PATCH\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateReview(_response);\n });\n }\n\n protected processCreateReview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n getReviewDetails(pageId: number, productId: number, reviewId: number, token: string | null, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/products/{ProductId}/reviews/{ReviewId}/details?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (productId === undefined || productId === null)\n throw new Error(\"The parameter 'productId' must be defined.\");\n url_ = url_.replace(\"{ProductId}\", encodeURIComponent(\"\" + productId));\n if (reviewId === undefined || reviewId === null)\n throw new Error(\"The parameter 'reviewId' must be defined.\");\n url_ = url_.replace(\"{ReviewId}\", encodeURIComponent(\"\" + reviewId));\n if (token === undefined)\n throw new Error(\"The parameter 'token' must be defined.\");\n else if(token !== null)\n url_ += \"Token=\" + encodeURIComponent(\"\" + token) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetReviewDetails(_response);\n });\n }\n\n protected processGetReviewDetails(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PublicShopProductDetailsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateReview(pageId: number, command: PublicUpdateShopReviewCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/reviews/update\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PATCH\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateReview(_response);\n });\n }\n\n protected processUpdateReview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n}\n\nexport interface ISocialClient {\n\n getSocialTags(itemId: number): Promise;\n}\n\nexport class SocialClient extends APIClientBase implements ISocialClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getSocialTags(itemId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/socialtags/{ItemId}\";\n if (itemId === undefined || itemId === null)\n throw new Error(\"The parameter 'itemId' must be defined.\");\n url_ = url_.replace(\"{ItemId}\", encodeURIComponent(\"\" + itemId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSocialTags(_response);\n });\n }\n\n protected processGetSocialTags(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IWeatherClient {\n\n getCurrentWeather(pageId: number): Promise;\n}\n\nexport class WeatherClient extends APIClientBase implements IWeatherClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getCurrentWeather(pageId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/weather/{PageId}/current\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCurrentWeather(_response);\n });\n }\n\n protected processGetCurrentWeather(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CurrentWeatherDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class AppConfigurationDto implements IAppConfigurationDto {\n name!: string;\n startPageId!: number;\n pagesConfiguration!: AppPageDto[];\n toolbarConfiguration!: AppToolbarDto;\n settingsConfiguration!: AppSettingsDto;\n themeConfiguration!: AppThemeDto;\n\n constructor(data?: IAppConfigurationDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.pagesConfiguration = [];\n this.toolbarConfiguration = new AppToolbarDto();\n this.settingsConfiguration = new AppSettingsDto();\n this.themeConfiguration = new AppThemeDto();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.startPageId = _data[\"startPageId\"];\n if (Array.isArray(_data[\"pagesConfiguration\"])) {\n this.pagesConfiguration = [] as any;\n for (let item of _data[\"pagesConfiguration\"])\n this.pagesConfiguration!.push(AppPageDto.fromJS(item));\n }\n this.toolbarConfiguration = _data[\"toolbarConfiguration\"] ? AppToolbarDto.fromJS(_data[\"toolbarConfiguration\"]) : new AppToolbarDto();\n this.settingsConfiguration = _data[\"settingsConfiguration\"] ? AppSettingsDto.fromJS(_data[\"settingsConfiguration\"]) : new AppSettingsDto();\n this.themeConfiguration = _data[\"themeConfiguration\"] ? AppThemeDto.fromJS(_data[\"themeConfiguration\"]) : new AppThemeDto();\n }\n }\n\n static fromJS(data: any): AppConfigurationDto {\n data = typeof data === 'object' ? data : {};\n let result = new AppConfigurationDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"startPageId\"] = this.startPageId;\n if (Array.isArray(this.pagesConfiguration)) {\n data[\"pagesConfiguration\"] = [];\n for (let item of this.pagesConfiguration)\n data[\"pagesConfiguration\"].push(item.toJSON());\n }\n data[\"toolbarConfiguration\"] = this.toolbarConfiguration ? this.toolbarConfiguration.toJSON() : undefined;\n data[\"settingsConfiguration\"] = this.settingsConfiguration ? this.settingsConfiguration.toJSON() : undefined;\n data[\"themeConfiguration\"] = this.themeConfiguration ? this.themeConfiguration.toJSON() : undefined;\n return data;\n }\n\n clone(): AppConfigurationDto {\n const json = this.toJSON();\n let result = new AppConfigurationDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAppConfigurationDto {\n name: string;\n startPageId: number;\n pagesConfiguration: AppPageDto[];\n toolbarConfiguration: AppToolbarDto;\n settingsConfiguration: AppSettingsDto;\n themeConfiguration: AppThemeDto;\n}\n\nexport class AppPageDto implements IAppPageDto {\n id!: number;\n parentId?: number | undefined;\n name?: string | undefined;\n showNameAsTitle!: boolean;\n isStartpage!: boolean;\n backgroundColor!: AppColor;\n toolbarColor!: AppColor;\n showInSideMenu!: boolean;\n isSideMenuExternalLink!: boolean;\n externalLinkUrl?: string | undefined;\n sideMenuSorting?: number | undefined;\n backgroundImage?: FileDto | undefined;\n sideMenuIcon?: FileDto | undefined;\n contents!: AppContentDto[];\n css?: string | undefined;\n cssClasses?: string | undefined;\n\n constructor(data?: IAppPageDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.contents = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.parentId = _data[\"parentId\"];\n this.name = _data[\"name\"];\n this.showNameAsTitle = _data[\"showNameAsTitle\"];\n this.isStartpage = _data[\"isStartpage\"];\n this.backgroundColor = _data[\"backgroundColor\"];\n this.toolbarColor = _data[\"toolbarColor\"];\n this.showInSideMenu = _data[\"showInSideMenu\"];\n this.isSideMenuExternalLink = _data[\"isSideMenuExternalLink\"];\n this.externalLinkUrl = _data[\"externalLinkUrl\"];\n this.sideMenuSorting = _data[\"sideMenuSorting\"];\n this.backgroundImage = _data[\"backgroundImage\"] ? FileDto.fromJS(_data[\"backgroundImage\"]) : undefined;\n this.sideMenuIcon = _data[\"sideMenuIcon\"] ? FileDto.fromJS(_data[\"sideMenuIcon\"]) : undefined;\n if (Array.isArray(_data[\"contents\"])) {\n this.contents = [] as any;\n for (let item of _data[\"contents\"])\n this.contents!.push(AppContentDto.fromJS(item));\n }\n this.css = _data[\"css\"];\n this.cssClasses = _data[\"cssClasses\"];\n }\n }\n\n static fromJS(data: any): AppPageDto {\n data = typeof data === 'object' ? data : {};\n let result = new AppPageDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"parentId\"] = this.parentId;\n data[\"name\"] = this.name;\n data[\"showNameAsTitle\"] = this.showNameAsTitle;\n data[\"isStartpage\"] = this.isStartpage;\n data[\"backgroundColor\"] = this.backgroundColor;\n data[\"toolbarColor\"] = this.toolbarColor;\n data[\"showInSideMenu\"] = this.showInSideMenu;\n data[\"isSideMenuExternalLink\"] = this.isSideMenuExternalLink;\n data[\"externalLinkUrl\"] = this.externalLinkUrl;\n data[\"sideMenuSorting\"] = this.sideMenuSorting;\n data[\"backgroundImage\"] = this.backgroundImage ? this.backgroundImage.toJSON() : undefined;\n data[\"sideMenuIcon\"] = this.sideMenuIcon ? this.sideMenuIcon.toJSON() : undefined;\n if (Array.isArray(this.contents)) {\n data[\"contents\"] = [];\n for (let item of this.contents)\n data[\"contents\"].push(item.toJSON());\n }\n data[\"css\"] = this.css;\n data[\"cssClasses\"] = this.cssClasses;\n return data;\n }\n\n clone(): AppPageDto {\n const json = this.toJSON();\n let result = new AppPageDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAppPageDto {\n id: number;\n parentId?: number | undefined;\n name?: string | undefined;\n showNameAsTitle: boolean;\n isStartpage: boolean;\n backgroundColor: AppColor;\n toolbarColor: AppColor;\n showInSideMenu: boolean;\n isSideMenuExternalLink: boolean;\n externalLinkUrl?: string | undefined;\n sideMenuSorting?: number | undefined;\n backgroundImage?: FileDto | undefined;\n sideMenuIcon?: FileDto | undefined;\n contents: AppContentDto[];\n css?: string | undefined;\n cssClasses?: string | undefined;\n}\n\nexport enum AppColor {\n Primary = 0,\n Secondary = 1,\n Black = 2,\n White = 3,\n Transparent = 4,\n TransparentDark = 5,\n Grey = 6,\n GreyDark = 7,\n GreyLight = 8,\n}\n\nexport class FileDto implements IFileDto {\n url?: string | undefined;\n id!: string;\n name!: string;\n\n constructor(data?: IFileDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.url = _data[\"url\"];\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n }\n }\n\n static fromJS(data: any): FileDto {\n data = typeof data === 'object' ? data : {};\n let result = new FileDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"url\"] = this.url;\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n return data;\n }\n\n clone(): FileDto {\n const json = this.toJSON();\n let result = new FileDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IFileDto {\n url?: string | undefined;\n id: string;\n name: string;\n}\n\nexport abstract class AppContentDto implements IAppContentDto {\n name?: string | undefined;\n cssClasses?: string | undefined;\n showNameAsHeader?: boolean | undefined;\n\n protected _discriminator: string;\n\n constructor(data?: IAppContentDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n this._discriminator = \"AppContentDto\";\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.cssClasses = _data[\"cssClasses\"];\n this.showNameAsHeader = _data[\"showNameAsHeader\"];\n }\n }\n\n static fromJS(data: any): AppContentDto {\n data = typeof data === 'object' ? data : {};\n if (data[\"discriminator\"] === \"AppComponentContentDto\") {\n let result = new AppComponentContentDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"AppMenuContentDto\") {\n let result = new AppMenuContentDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"AppPicturesContentDto\") {\n let result = new AppPicturesContentDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"AppDocumentContentDto\") {\n let result = new AppDocumentContentDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"AppWebViewContentDto\") {\n let result = new AppWebViewContentDto();\n result.init(data);\n return result;\n }\n throw new Error(\"The abstract class 'AppContentDto' cannot be instantiated.\");\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"discriminator\"] = this._discriminator;\n data[\"name\"] = this.name;\n data[\"cssClasses\"] = this.cssClasses;\n data[\"showNameAsHeader\"] = this.showNameAsHeader;\n return data;\n }\n\n clone(): AppContentDto {\n throw new Error(\"The abstract class 'AppContentDto' cannot be instantiated.\");\n }\n}\n\nexport interface IAppContentDto {\n name?: string | undefined;\n cssClasses?: string | undefined;\n showNameAsHeader?: boolean | undefined;\n}\n\nexport class AppComponentContentDto extends AppContentDto implements IAppComponentContentDto {\n componentHtml!: string;\n slideshow!: boolean;\n\n constructor(data?: IAppComponentContentDto) {\n super(data);\n this._discriminator = \"AppComponentContentDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.componentHtml = _data[\"componentHtml\"];\n this.slideshow = _data[\"slideshow\"];\n }\n }\n\n static override fromJS(data: any): AppComponentContentDto {\n data = typeof data === 'object' ? data : {};\n let result = new AppComponentContentDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"componentHtml\"] = this.componentHtml;\n data[\"slideshow\"] = this.slideshow;\n super.toJSON(data);\n return data;\n }\n\n clone(): AppComponentContentDto {\n const json = this.toJSON();\n let result = new AppComponentContentDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAppComponentContentDto extends IAppContentDto {\n componentHtml: string;\n slideshow: boolean;\n}\n\nexport class AppMenuContentDto extends AppContentDto implements IAppMenuContentDto {\n links!: AppLinkDto[];\n backgroundImageUrl?: string | undefined;\n layout!: AppMenuLayout;\n\n constructor(data?: IAppMenuContentDto) {\n super(data);\n if (!data) {\n this.links = [];\n }\n this._discriminator = \"AppMenuContentDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"links\"])) {\n this.links = [] as any;\n for (let item of _data[\"links\"])\n this.links!.push(AppLinkDto.fromJS(item));\n }\n this.backgroundImageUrl = _data[\"backgroundImageUrl\"];\n this.layout = _data[\"layout\"];\n }\n }\n\n static override fromJS(data: any): AppMenuContentDto {\n data = typeof data === 'object' ? data : {};\n let result = new AppMenuContentDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.links)) {\n data[\"links\"] = [];\n for (let item of this.links)\n data[\"links\"].push(item.toJSON());\n }\n data[\"backgroundImageUrl\"] = this.backgroundImageUrl;\n data[\"layout\"] = this.layout;\n super.toJSON(data);\n return data;\n }\n\n clone(): AppMenuContentDto {\n const json = this.toJSON();\n let result = new AppMenuContentDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAppMenuContentDto extends IAppContentDto {\n links: AppLinkDto[];\n backgroundImageUrl?: string | undefined;\n layout: AppMenuLayout;\n}\n\nexport class AppLinkDto implements IAppLinkDto {\n name?: string | undefined;\n icon?: FileDto | undefined;\n picture?: FileDto | undefined;\n isWeather?: boolean | undefined;\n linkType!: AppLinkType;\n targetPageId?: number | undefined;\n targetUrl?: string | undefined;\n\n constructor(data?: IAppLinkDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.icon = _data[\"icon\"] ? FileDto.fromJS(_data[\"icon\"]) : undefined;\n this.picture = _data[\"picture\"] ? FileDto.fromJS(_data[\"picture\"]) : undefined;\n this.isWeather = _data[\"isWeather\"];\n this.linkType = _data[\"linkType\"];\n this.targetPageId = _data[\"targetPageId\"];\n this.targetUrl = _data[\"targetUrl\"];\n }\n }\n\n static fromJS(data: any): AppLinkDto {\n data = typeof data === 'object' ? data : {};\n let result = new AppLinkDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"icon\"] = this.icon ? this.icon.toJSON() : undefined;\n data[\"picture\"] = this.picture ? this.picture.toJSON() : undefined;\n data[\"isWeather\"] = this.isWeather;\n data[\"linkType\"] = this.linkType;\n data[\"targetPageId\"] = this.targetPageId;\n data[\"targetUrl\"] = this.targetUrl;\n return data;\n }\n\n clone(): AppLinkDto {\n const json = this.toJSON();\n let result = new AppLinkDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAppLinkDto {\n name?: string | undefined;\n icon?: FileDto | undefined;\n picture?: FileDto | undefined;\n isWeather?: boolean | undefined;\n linkType: AppLinkType;\n targetPageId?: number | undefined;\n targetUrl?: string | undefined;\n}\n\nexport enum AppLinkType {\n Page = 0,\n Url = 1,\n}\n\nexport enum AppMenuLayout {\n Basic = 0,\n Modern = 1,\n ModernLarge = 2,\n Flags = 3,\n Beans = 4,\n Grid = 5,\n Column = 6,\n}\n\nexport class AppPicturesContentDto extends AppContentDto implements IAppPicturesContentDto {\n pictures!: FileDto[];\n showAsCarousel!: boolean;\n showSearchbar!: boolean;\n flat!: boolean;\n\n constructor(data?: IAppPicturesContentDto) {\n super(data);\n if (!data) {\n this.pictures = [];\n }\n this._discriminator = \"AppPicturesContentDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"pictures\"])) {\n this.pictures = [] as any;\n for (let item of _data[\"pictures\"])\n this.pictures!.push(FileDto.fromJS(item));\n }\n this.showAsCarousel = _data[\"showAsCarousel\"];\n this.showSearchbar = _data[\"showSearchbar\"];\n this.flat = _data[\"flat\"];\n }\n }\n\n static override fromJS(data: any): AppPicturesContentDto {\n data = typeof data === 'object' ? data : {};\n let result = new AppPicturesContentDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.pictures)) {\n data[\"pictures\"] = [];\n for (let item of this.pictures)\n data[\"pictures\"].push(item.toJSON());\n }\n data[\"showAsCarousel\"] = this.showAsCarousel;\n data[\"showSearchbar\"] = this.showSearchbar;\n data[\"flat\"] = this.flat;\n super.toJSON(data);\n return data;\n }\n\n clone(): AppPicturesContentDto {\n const json = this.toJSON();\n let result = new AppPicturesContentDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAppPicturesContentDto extends IAppContentDto {\n pictures: FileDto[];\n showAsCarousel: boolean;\n showSearchbar: boolean;\n flat: boolean;\n}\n\nexport class AppDocumentContentDto extends AppContentDto implements IAppDocumentContentDto {\n document!: Node;\n\n constructor(data?: IAppDocumentContentDto) {\n super(data);\n if (!data) {\n this.document = new Node();\n }\n this._discriminator = \"AppDocumentContentDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.document = _data[\"document\"] ? Node.fromJS(_data[\"document\"]) : new Node();\n }\n }\n\n static override fromJS(data: any): AppDocumentContentDto {\n data = typeof data === 'object' ? data : {};\n let result = new AppDocumentContentDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"document\"] = this.document ? this.document.toJSON() : undefined;\n super.toJSON(data);\n return data;\n }\n\n clone(): AppDocumentContentDto {\n const json = this.toJSON();\n let result = new AppDocumentContentDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAppDocumentContentDto extends IAppContentDto {\n document: Node;\n}\n\nexport class Node implements INode {\n type!: NodeType;\n attrs?: NodeAttribute | undefined;\n content?: Node[] | undefined;\n marks?: Mark[] | undefined;\n text?: string | undefined;\n\n constructor(data?: INode) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.type = _data[\"type\"];\n this.attrs = _data[\"attrs\"] ? NodeAttribute.fromJS(_data[\"attrs\"]) : undefined;\n if (Array.isArray(_data[\"content\"])) {\n this.content = [] as any;\n for (let item of _data[\"content\"])\n this.content!.push(Node.fromJS(item));\n }\n if (Array.isArray(_data[\"marks\"])) {\n this.marks = [] as any;\n for (let item of _data[\"marks\"])\n this.marks!.push(Mark.fromJS(item));\n }\n this.text = _data[\"text\"];\n }\n }\n\n static fromJS(data: any): Node {\n data = typeof data === 'object' ? data : {};\n let result = new Node();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"attrs\"] = this.attrs ? this.attrs.toJSON() : undefined;\n if (Array.isArray(this.content)) {\n data[\"content\"] = [];\n for (let item of this.content)\n data[\"content\"].push(item.toJSON());\n }\n if (Array.isArray(this.marks)) {\n data[\"marks\"] = [];\n for (let item of this.marks)\n data[\"marks\"].push(item.toJSON());\n }\n data[\"text\"] = this.text;\n return data;\n }\n\n clone(): Node {\n const json = this.toJSON();\n let result = new Node();\n result.init(json);\n return result;\n }\n}\n\nexport interface INode {\n type: NodeType;\n attrs?: NodeAttribute | undefined;\n content?: Node[] | undefined;\n marks?: Mark[] | undefined;\n text?: string | undefined;\n}\n\nexport enum NodeType {\n Blockquote = \"blockquote\",\n BulletList = \"bulletList\",\n Doc = \"doc\",\n HardBreak = \"hardBreak\",\n Heading = \"heading\",\n HorizontalRule = \"horizontalRule\",\n ListItem = \"listItem\",\n OrderedList = \"orderedList\",\n Paragraph = \"paragraph\",\n Table = \"table\",\n TableRow = \"tableRow\",\n TableHeader = \"tableHeader\",\n TableCell = \"tableCell\",\n Text = \"text\",\n Gallery = \"gallery\",\n Video = \"video\",\n Audio = \"audio\",\n Interpolation = \"interpolation\",\n Image = \"image\",\n PanelInfo = \"panelInfo\",\n PanelTeaser = \"panelTeaser\",\n Vspace = \"vspace\",\n Accordion = \"accordion\",\n AccordionHeader = \"accordionHeader\",\n AccordionContent = \"accordionContent\",\n Figure = \"figure\",\n}\n\nexport class NodeAttribute implements INodeAttribute {\n level?: number | undefined;\n textAlign?: string | undefined;\n colspan?: number | undefined;\n rowspan?: number | undefined;\n colwidth?: number | undefined;\n start?: number | undefined;\n position?: GalleryPosition | undefined;\n display?: GalleryDisplay | undefined;\n width?: number | undefined;\n cols?: number | undefined;\n images?: GalleryImage[] | undefined;\n fieldId?: string | undefined;\n fieldLabel?: string | undefined;\n fileId?: string | undefined;\n src?: string | undefined;\n alt?: string | undefined;\n title?: string | undefined;\n caption?: string | undefined;\n\n constructor(data?: INodeAttribute) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.level = _data[\"level\"];\n this.textAlign = _data[\"textAlign\"];\n this.colspan = _data[\"colspan\"];\n this.rowspan = _data[\"rowspan\"];\n this.colwidth = _data[\"colwidth\"];\n this.start = _data[\"start\"];\n this.position = _data[\"position\"];\n this.display = _data[\"display\"];\n this.width = _data[\"width\"];\n this.cols = _data[\"cols\"];\n if (Array.isArray(_data[\"images\"])) {\n this.images = [] as any;\n for (let item of _data[\"images\"])\n this.images!.push(GalleryImage.fromJS(item));\n }\n this.fieldId = _data[\"fieldId\"];\n this.fieldLabel = _data[\"fieldLabel\"];\n this.fileId = _data[\"fileId\"];\n this.src = _data[\"src\"];\n this.alt = _data[\"alt\"];\n this.title = _data[\"title\"];\n this.caption = _data[\"caption\"];\n }\n }\n\n static fromJS(data: any): NodeAttribute {\n data = typeof data === 'object' ? data : {};\n let result = new NodeAttribute();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"level\"] = this.level;\n data[\"textAlign\"] = this.textAlign;\n data[\"colspan\"] = this.colspan;\n data[\"rowspan\"] = this.rowspan;\n data[\"colwidth\"] = this.colwidth;\n data[\"start\"] = this.start;\n data[\"position\"] = this.position;\n data[\"display\"] = this.display;\n data[\"width\"] = this.width;\n data[\"cols\"] = this.cols;\n if (Array.isArray(this.images)) {\n data[\"images\"] = [];\n for (let item of this.images)\n data[\"images\"].push(item.toJSON());\n }\n data[\"fieldId\"] = this.fieldId;\n data[\"fieldLabel\"] = this.fieldLabel;\n data[\"fileId\"] = this.fileId;\n data[\"src\"] = this.src;\n data[\"alt\"] = this.alt;\n data[\"title\"] = this.title;\n data[\"caption\"] = this.caption;\n return data;\n }\n\n clone(): NodeAttribute {\n const json = this.toJSON();\n let result = new NodeAttribute();\n result.init(json);\n return result;\n }\n}\n\nexport interface INodeAttribute {\n level?: number | undefined;\n textAlign?: string | undefined;\n colspan?: number | undefined;\n rowspan?: number | undefined;\n colwidth?: number | undefined;\n start?: number | undefined;\n position?: GalleryPosition | undefined;\n display?: GalleryDisplay | undefined;\n width?: number | undefined;\n cols?: number | undefined;\n images?: GalleryImage[] | undefined;\n fieldId?: string | undefined;\n fieldLabel?: string | undefined;\n fileId?: string | undefined;\n src?: string | undefined;\n alt?: string | undefined;\n title?: string | undefined;\n caption?: string | undefined;\n}\n\nexport enum GalleryPosition {\n Left = \"left\",\n Center = \"center\",\n Right = \"right\",\n}\n\nexport enum GalleryDisplay {\n Normal = \"normal\",\n MiniGallery = \"miniGallery\",\n}\n\nexport class GalleryImage implements IGalleryImage {\n src?: string | undefined;\n id?: string | undefined;\n alt?: string | undefined;\n title?: string | undefined;\n caption?: string | undefined;\n href?: string | undefined;\n\n constructor(data?: IGalleryImage) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.src = _data[\"src\"];\n this.id = _data[\"id\"];\n this.alt = _data[\"alt\"];\n this.title = _data[\"title\"];\n this.caption = _data[\"caption\"];\n this.href = _data[\"href\"];\n }\n }\n\n static fromJS(data: any): GalleryImage {\n data = typeof data === 'object' ? data : {};\n let result = new GalleryImage();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"src\"] = this.src;\n data[\"id\"] = this.id;\n data[\"alt\"] = this.alt;\n data[\"title\"] = this.title;\n data[\"caption\"] = this.caption;\n data[\"href\"] = this.href;\n return data;\n }\n\n clone(): GalleryImage {\n const json = this.toJSON();\n let result = new GalleryImage();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGalleryImage {\n src?: string | undefined;\n id?: string | undefined;\n alt?: string | undefined;\n title?: string | undefined;\n caption?: string | undefined;\n href?: string | undefined;\n}\n\nexport class Mark implements IMark {\n type!: MarkType;\n attrs?: MarkAttribute | undefined;\n\n constructor(data?: IMark) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.type = _data[\"type\"];\n this.attrs = _data[\"attrs\"] ? MarkAttribute.fromJS(_data[\"attrs\"]) : undefined;\n }\n }\n\n static fromJS(data: any): Mark {\n data = typeof data === 'object' ? data : {};\n let result = new Mark();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"attrs\"] = this.attrs ? this.attrs.toJSON() : undefined;\n return data;\n }\n\n clone(): Mark {\n const json = this.toJSON();\n let result = new Mark();\n result.init(json);\n return result;\n }\n}\n\nexport interface IMark {\n type: MarkType;\n attrs?: MarkAttribute | undefined;\n}\n\nexport enum MarkType {\n Bold = \"bold\",\n Italic = \"italic\",\n Link = \"link\",\n Strike = \"strike\",\n Subscript = \"subscript\",\n Superscript = \"superscript\",\n Underline = \"underline\",\n Reference = \"reference\",\n}\n\nexport class MarkAttribute implements IMarkAttribute {\n target?: string | undefined;\n title?: string | undefined;\n class?: string | undefined;\n href?: string | undefined;\n fileId?: string | undefined;\n referenceId?: number | undefined;\n type?: ReferenceType | undefined;\n\n constructor(data?: IMarkAttribute) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.target = _data[\"target\"];\n this.title = _data[\"title\"];\n this.class = _data[\"class\"];\n this.href = _data[\"href\"];\n this.fileId = _data[\"fileId\"];\n this.referenceId = _data[\"referenceId\"];\n this.type = _data[\"type\"];\n }\n }\n\n static fromJS(data: any): MarkAttribute {\n data = typeof data === 'object' ? data : {};\n let result = new MarkAttribute();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"target\"] = this.target;\n data[\"title\"] = this.title;\n data[\"class\"] = this.class;\n data[\"href\"] = this.href;\n data[\"fileId\"] = this.fileId;\n data[\"referenceId\"] = this.referenceId;\n data[\"type\"] = this.type;\n return data;\n }\n\n clone(): MarkAttribute {\n const json = this.toJSON();\n let result = new MarkAttribute();\n result.init(json);\n return result;\n }\n}\n\nexport interface IMarkAttribute {\n target?: string | undefined;\n title?: string | undefined;\n class?: string | undefined;\n href?: string | undefined;\n fileId?: string | undefined;\n referenceId?: number | undefined;\n type?: ReferenceType | undefined;\n}\n\nexport enum ReferenceType {\n File = \"file\",\n Page = \"page\",\n News = \"news\",\n Calendar = \"calendar\",\n Geo = \"geo\",\n Database = \"database\",\n Gallery = \"gallery\",\n DirectoryForm = \"directoryForm\",\n DirectoryOrgUnit = \"directoryOrgUnit\",\n DirectoryPerson = \"directoryPerson\",\n DirectoryProcess = \"directoryProcess\",\n DirectoryService = \"directoryService\",\n DirectorySituation = \"directorySituation\",\n InteractionForm = \"interactionForm\",\n Shop = \"shop\",\n}\n\nexport class AppWebViewContentDto extends AppContentDto implements IAppWebViewContentDto {\n url!: string;\n downloadAllowed!: boolean;\n\n constructor(data?: IAppWebViewContentDto) {\n super(data);\n this._discriminator = \"AppWebViewContentDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.url = _data[\"url\"];\n this.downloadAllowed = _data[\"downloadAllowed\"];\n }\n }\n\n static override fromJS(data: any): AppWebViewContentDto {\n data = typeof data === 'object' ? data : {};\n let result = new AppWebViewContentDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"url\"] = this.url;\n data[\"downloadAllowed\"] = this.downloadAllowed;\n super.toJSON(data);\n return data;\n }\n\n clone(): AppWebViewContentDto {\n const json = this.toJSON();\n let result = new AppWebViewContentDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAppWebViewContentDto extends IAppContentDto {\n url: string;\n downloadAllowed: boolean;\n}\n\nexport class AppToolbarDto implements IAppToolbarDto {\n logoImage?: FileDto | undefined;\n backgroundImage?: FileDto | undefined;\n bell!: boolean;\n bellCategories!: number[];\n\n constructor(data?: IAppToolbarDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.bellCategories = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.logoImage = _data[\"logoImage\"] ? FileDto.fromJS(_data[\"logoImage\"]) : undefined;\n this.backgroundImage = _data[\"backgroundImage\"] ? FileDto.fromJS(_data[\"backgroundImage\"]) : undefined;\n this.bell = _data[\"bell\"];\n if (Array.isArray(_data[\"bellCategories\"])) {\n this.bellCategories = [] as any;\n for (let item of _data[\"bellCategories\"])\n this.bellCategories!.push(item);\n }\n }\n }\n\n static fromJS(data: any): AppToolbarDto {\n data = typeof data === 'object' ? data : {};\n let result = new AppToolbarDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"logoImage\"] = this.logoImage ? this.logoImage.toJSON() : undefined;\n data[\"backgroundImage\"] = this.backgroundImage ? this.backgroundImage.toJSON() : undefined;\n data[\"bell\"] = this.bell;\n if (Array.isArray(this.bellCategories)) {\n data[\"bellCategories\"] = [];\n for (let item of this.bellCategories)\n data[\"bellCategories\"].push(item);\n }\n return data;\n }\n\n clone(): AppToolbarDto {\n const json = this.toJSON();\n let result = new AppToolbarDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAppToolbarDto {\n logoImage?: FileDto | undefined;\n backgroundImage?: FileDto | undefined;\n bell: boolean;\n bellCategories: number[];\n}\n\nexport class AppSettingsDto implements IAppSettingsDto {\n impressumDocuments!: AppLinkDto[];\n showWasteReminderSettings!: boolean;\n wasteCategories!: number[];\n districtCategories!: number[];\n\n constructor(data?: IAppSettingsDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.impressumDocuments = [];\n this.wasteCategories = [];\n this.districtCategories = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"impressumDocuments\"])) {\n this.impressumDocuments = [] as any;\n for (let item of _data[\"impressumDocuments\"])\n this.impressumDocuments!.push(AppLinkDto.fromJS(item));\n }\n this.showWasteReminderSettings = _data[\"showWasteReminderSettings\"];\n if (Array.isArray(_data[\"wasteCategories\"])) {\n this.wasteCategories = [] as any;\n for (let item of _data[\"wasteCategories\"])\n this.wasteCategories!.push(item);\n }\n if (Array.isArray(_data[\"districtCategories\"])) {\n this.districtCategories = [] as any;\n for (let item of _data[\"districtCategories\"])\n this.districtCategories!.push(item);\n }\n }\n }\n\n static fromJS(data: any): AppSettingsDto {\n data = typeof data === 'object' ? data : {};\n let result = new AppSettingsDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.impressumDocuments)) {\n data[\"impressumDocuments\"] = [];\n for (let item of this.impressumDocuments)\n data[\"impressumDocuments\"].push(item.toJSON());\n }\n data[\"showWasteReminderSettings\"] = this.showWasteReminderSettings;\n if (Array.isArray(this.wasteCategories)) {\n data[\"wasteCategories\"] = [];\n for (let item of this.wasteCategories)\n data[\"wasteCategories\"].push(item);\n }\n if (Array.isArray(this.districtCategories)) {\n data[\"districtCategories\"] = [];\n for (let item of this.districtCategories)\n data[\"districtCategories\"].push(item);\n }\n return data;\n }\n\n clone(): AppSettingsDto {\n const json = this.toJSON();\n let result = new AppSettingsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAppSettingsDto {\n impressumDocuments: AppLinkDto[];\n showWasteReminderSettings: boolean;\n wasteCategories: number[];\n districtCategories: number[];\n}\n\nexport class AppThemeDto implements IAppThemeDto {\n colorPrimary!: string;\n colorSecondary?: string | undefined;\n fontPrimary!: AppFont;\n fontSecondary?: AppFont | undefined;\n scss?: string | undefined;\n css?: string | undefined;\n cssClasses?: string | undefined;\n cityCoatImage?: FileDto | undefined;\n\n constructor(data?: IAppThemeDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.colorPrimary = _data[\"colorPrimary\"];\n this.colorSecondary = _data[\"colorSecondary\"];\n this.fontPrimary = _data[\"fontPrimary\"];\n this.fontSecondary = _data[\"fontSecondary\"];\n this.scss = _data[\"scss\"];\n this.css = _data[\"css\"];\n this.cssClasses = _data[\"cssClasses\"];\n this.cityCoatImage = _data[\"cityCoatImage\"] ? FileDto.fromJS(_data[\"cityCoatImage\"]) : undefined;\n }\n }\n\n static fromJS(data: any): AppThemeDto {\n data = typeof data === 'object' ? data : {};\n let result = new AppThemeDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"colorPrimary\"] = this.colorPrimary;\n data[\"colorSecondary\"] = this.colorSecondary;\n data[\"fontPrimary\"] = this.fontPrimary;\n data[\"fontSecondary\"] = this.fontSecondary;\n data[\"scss\"] = this.scss;\n data[\"css\"] = this.css;\n data[\"cssClasses\"] = this.cssClasses;\n data[\"cityCoatImage\"] = this.cityCoatImage ? this.cityCoatImage.toJSON() : undefined;\n return data;\n }\n\n clone(): AppThemeDto {\n const json = this.toJSON();\n let result = new AppThemeDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAppThemeDto {\n colorPrimary: string;\n colorSecondary?: string | undefined;\n fontPrimary: AppFont;\n fontSecondary?: AppFont | undefined;\n scss?: string | undefined;\n css?: string | undefined;\n cssClasses?: string | undefined;\n cityCoatImage?: FileDto | undefined;\n}\n\nexport enum AppFont {\n PtSerif = 0,\n Karla = 1,\n WorkSans = 2,\n Barlow = 3,\n Lato = 4,\n Quicksand = 5,\n Montserrat = 6,\n RobotoSlab = 7,\n SourceSansPro = 8,\n ZillaSlab = 9,\n}\n\nexport class ProblemDetails implements IProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n extensions?: { [key: string]: any; };\n\n [key: string]: any;\n\n constructor(data?: IProblemDetails) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n for (var property in _data) {\n if (_data.hasOwnProperty(property))\n this[property] = _data[property];\n }\n this.type = _data[\"type\"];\n this.title = _data[\"title\"];\n this.status = _data[\"status\"];\n this.detail = _data[\"detail\"];\n this.instance = _data[\"instance\"];\n if (_data[\"extensions\"]) {\n this.extensions = {} as any;\n for (let key in _data[\"extensions\"]) {\n if (_data[\"extensions\"].hasOwnProperty(key))\n (this.extensions)![key] = _data[\"extensions\"][key];\n }\n }\n }\n }\n\n static fromJS(data: any): ProblemDetails {\n data = typeof data === 'object' ? data : {};\n let result = new ProblemDetails();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n for (var property in this) {\n if (this.hasOwnProperty(property))\n data[property] = this[property];\n }\n data[\"type\"] = this.type;\n data[\"title\"] = this.title;\n data[\"status\"] = this.status;\n data[\"detail\"] = this.detail;\n data[\"instance\"] = this.instance;\n if (this.extensions) {\n data[\"extensions\"] = {};\n for (let key in this.extensions) {\n if (this.extensions.hasOwnProperty(key))\n (data[\"extensions\"])[key] = (this.extensions)[key];\n }\n }\n return data;\n }\n\n clone(): ProblemDetails {\n const json = this.toJSON();\n let result = new ProblemDetails();\n result.init(json);\n return result;\n }\n}\n\nexport interface IProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n extensions?: { [key: string]: any; };\n\n [key: string]: any;\n}\n\nexport class BookingSettingsDto implements IBookingSettingsDto {\n formConfirmationHtml!: string;\n\n constructor(data?: IBookingSettingsDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.formConfirmationHtml = _data[\"formConfirmationHtml\"];\n }\n }\n\n static fromJS(data: any): BookingSettingsDto {\n data = typeof data === 'object' ? data : {};\n let result = new BookingSettingsDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"formConfirmationHtml\"] = this.formConfirmationHtml;\n return data;\n }\n\n clone(): BookingSettingsDto {\n const json = this.toJSON();\n let result = new BookingSettingsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IBookingSettingsDto {\n formConfirmationHtml: string;\n}\n\nexport class CategoryTeaserDto implements ICategoryTeaserDto {\n id!: number;\n name!: string;\n slug?: string | undefined;\n teaserPictureUrl?: string | undefined;\n iconUrl?: string | undefined;\n color?: string | undefined;\n subCategories?: CategoryTeaserDto[] | undefined;\n itemsCount?: number | undefined;\n\n protected _discriminator: string;\n\n constructor(data?: ICategoryTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n this._discriminator = \"CategoryTeaserDto\";\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.slug = _data[\"slug\"];\n this.teaserPictureUrl = _data[\"teaserPictureUrl\"];\n this.iconUrl = _data[\"iconUrl\"];\n this.color = _data[\"color\"];\n if (Array.isArray(_data[\"subCategories\"])) {\n this.subCategories = [] as any;\n for (let item of _data[\"subCategories\"])\n this.subCategories!.push(CategoryTeaserDto.fromJS(item));\n }\n this.itemsCount = _data[\"itemsCount\"];\n }\n }\n\n static fromJS(data: any): CategoryTeaserDto {\n data = typeof data === 'object' ? data : {};\n if (data[\"discriminator\"] === \"BookingCategoryTeaserDto\") {\n let result = new BookingCategoryTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GeoCategoryTeaserDto\") {\n let result = new GeoCategoryTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"CalendarCategoryTeaserDto\") {\n let result = new CalendarCategoryTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DirectoryFormCategoryTeaserDto\") {\n let result = new DirectoryFormCategoryTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"NewsCategoryTeaserDto\") {\n let result = new NewsCategoryTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GalleryCategoryTeaserDto\") {\n let result = new GalleryCategoryTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"ProblemCategoryTeaserDto\") {\n let result = new ProblemCategoryTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DatabaseCategoryTeaserDto\") {\n let result = new DatabaseCategoryTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"CommunicationCategoryTeaserDto\") {\n let result = new CommunicationCategoryTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"ShopCategoryTeaserDto\") {\n let result = new ShopCategoryTeaserDto();\n result.init(data);\n return result;\n }\n let result = new CategoryTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"discriminator\"] = this._discriminator;\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"slug\"] = this.slug;\n data[\"teaserPictureUrl\"] = this.teaserPictureUrl;\n data[\"iconUrl\"] = this.iconUrl;\n data[\"color\"] = this.color;\n if (Array.isArray(this.subCategories)) {\n data[\"subCategories\"] = [];\n for (let item of this.subCategories)\n data[\"subCategories\"].push(item.toJSON());\n }\n data[\"itemsCount\"] = this.itemsCount;\n return data;\n }\n\n clone(): CategoryTeaserDto {\n const json = this.toJSON();\n let result = new CategoryTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICategoryTeaserDto {\n id: number;\n name: string;\n slug?: string | undefined;\n teaserPictureUrl?: string | undefined;\n iconUrl?: string | undefined;\n color?: string | undefined;\n subCategories?: CategoryTeaserDto[] | undefined;\n itemsCount?: number | undefined;\n}\n\nexport class BookingCategoryTeaserDto extends CategoryTeaserDto implements IBookingCategoryTeaserDto {\n\n constructor(data?: IBookingCategoryTeaserDto) {\n super(data);\n this._discriminator = \"BookingCategoryTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): BookingCategoryTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new BookingCategoryTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): BookingCategoryTeaserDto {\n const json = this.toJSON();\n let result = new BookingCategoryTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IBookingCategoryTeaserDto extends ICategoryTeaserDto {\n}\n\nexport class GeoCategoryTeaserDto extends CategoryTeaserDto implements IGeoCategoryTeaserDto {\n\n constructor(data?: IGeoCategoryTeaserDto) {\n super(data);\n this._discriminator = \"GeoCategoryTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): GeoCategoryTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new GeoCategoryTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): GeoCategoryTeaserDto {\n const json = this.toJSON();\n let result = new GeoCategoryTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGeoCategoryTeaserDto extends ICategoryTeaserDto {\n}\n\nexport class CalendarCategoryTeaserDto extends CategoryTeaserDto implements ICalendarCategoryTeaserDto {\n\n constructor(data?: ICalendarCategoryTeaserDto) {\n super(data);\n this._discriminator = \"CalendarCategoryTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): CalendarCategoryTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new CalendarCategoryTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): CalendarCategoryTeaserDto {\n const json = this.toJSON();\n let result = new CalendarCategoryTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICalendarCategoryTeaserDto extends ICategoryTeaserDto {\n}\n\nexport class DirectoryFormCategoryTeaserDto extends CategoryTeaserDto implements IDirectoryFormCategoryTeaserDto {\n\n constructor(data?: IDirectoryFormCategoryTeaserDto) {\n super(data);\n this._discriminator = \"DirectoryFormCategoryTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): DirectoryFormCategoryTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectoryFormCategoryTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): DirectoryFormCategoryTeaserDto {\n const json = this.toJSON();\n let result = new DirectoryFormCategoryTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectoryFormCategoryTeaserDto extends ICategoryTeaserDto {\n}\n\nexport class NewsCategoryTeaserDto extends CategoryTeaserDto implements INewsCategoryTeaserDto {\n\n constructor(data?: INewsCategoryTeaserDto) {\n super(data);\n this._discriminator = \"NewsCategoryTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): NewsCategoryTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new NewsCategoryTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): NewsCategoryTeaserDto {\n const json = this.toJSON();\n let result = new NewsCategoryTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface INewsCategoryTeaserDto extends ICategoryTeaserDto {\n}\n\nexport class GalleryCategoryTeaserDto extends CategoryTeaserDto implements IGalleryCategoryTeaserDto {\n\n constructor(data?: IGalleryCategoryTeaserDto) {\n super(data);\n this._discriminator = \"GalleryCategoryTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): GalleryCategoryTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new GalleryCategoryTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): GalleryCategoryTeaserDto {\n const json = this.toJSON();\n let result = new GalleryCategoryTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGalleryCategoryTeaserDto extends ICategoryTeaserDto {\n}\n\nexport class ProblemCategoryTeaserDto extends CategoryTeaserDto implements IProblemCategoryTeaserDto {\n\n constructor(data?: IProblemCategoryTeaserDto) {\n super(data);\n this._discriminator = \"ProblemCategoryTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): ProblemCategoryTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new ProblemCategoryTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): ProblemCategoryTeaserDto {\n const json = this.toJSON();\n let result = new ProblemCategoryTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IProblemCategoryTeaserDto extends ICategoryTeaserDto {\n}\n\nexport class DatabaseCategoryTeaserDto extends CategoryTeaserDto implements IDatabaseCategoryTeaserDto {\n\n constructor(data?: IDatabaseCategoryTeaserDto) {\n super(data);\n this._discriminator = \"DatabaseCategoryTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): DatabaseCategoryTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new DatabaseCategoryTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): DatabaseCategoryTeaserDto {\n const json = this.toJSON();\n let result = new DatabaseCategoryTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDatabaseCategoryTeaserDto extends ICategoryTeaserDto {\n}\n\nexport class CommunicationCategoryTeaserDto extends CategoryTeaserDto implements ICommunicationCategoryTeaserDto {\n\n constructor(data?: ICommunicationCategoryTeaserDto) {\n super(data);\n this._discriminator = \"CommunicationCategoryTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): CommunicationCategoryTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new CommunicationCategoryTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): CommunicationCategoryTeaserDto {\n const json = this.toJSON();\n let result = new CommunicationCategoryTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICommunicationCategoryTeaserDto extends ICategoryTeaserDto {\n}\n\nexport class ShopCategoryTeaserDto extends CategoryTeaserDto implements IShopCategoryTeaserDto {\n\n constructor(data?: IShopCategoryTeaserDto) {\n super(data);\n this._discriminator = \"ShopCategoryTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): ShopCategoryTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new ShopCategoryTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): ShopCategoryTeaserDto {\n const json = this.toJSON();\n let result = new ShopCategoryTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IShopCategoryTeaserDto extends ICategoryTeaserDto {\n}\n\nexport class PaginatedListOfBookingBookableTeaserDto implements IPaginatedListOfBookingBookableTeaserDto {\n items!: BookingBookableTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfBookingBookableTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(BookingBookableTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfBookingBookableTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfBookingBookableTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfBookingBookableTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfBookingBookableTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfBookingBookableTeaserDto {\n items: BookingBookableTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class ItemTeaserDto implements IItemTeaserDto {\n link!: Link;\n name!: string;\n created!: Date;\n teaserPictureUrl?: string | undefined;\n categoryIconUrl?: string | undefined;\n categoryColor?: string | undefined;\n teaserText?: string | undefined;\n hasContent!: boolean;\n categoryNames!: CategoryNameDto[];\n additionalFields!: FieldGroupValuesDto[];\n\n protected _discriminator: string;\n\n constructor(data?: IItemTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.link = new Link();\n this.categoryNames = [];\n this.additionalFields = [];\n }\n this._discriminator = \"ItemTeaserDto\";\n }\n\n init(_data?: any) {\n if (_data) {\n this.link = _data[\"link\"] ? Link.fromJS(_data[\"link\"]) : new Link();\n this.name = _data[\"name\"];\n this.created = _data[\"created\"] ? new Date(_data[\"created\"].toString()) : undefined;\n this.teaserPictureUrl = _data[\"teaserPictureUrl\"];\n this.categoryIconUrl = _data[\"categoryIconUrl\"];\n this.categoryColor = _data[\"categoryColor\"];\n this.teaserText = _data[\"teaserText\"];\n this.hasContent = _data[\"hasContent\"];\n if (Array.isArray(_data[\"categoryNames\"])) {\n this.categoryNames = [] as any;\n for (let item of _data[\"categoryNames\"])\n this.categoryNames!.push(CategoryNameDto.fromJS(item));\n }\n if (Array.isArray(_data[\"additionalFields\"])) {\n this.additionalFields = [] as any;\n for (let item of _data[\"additionalFields\"])\n this.additionalFields!.push(FieldGroupValuesDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ItemTeaserDto {\n data = typeof data === 'object' ? data : {};\n if (data[\"discriminator\"] === \"BookingBookableTeaserDto\") {\n let result = new BookingBookableTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GeoObjectTeaserDto\") {\n throw new Error(\"The abstract class 'GeoObjectTeaserDto' cannot be instantiated.\");\n }\n if (data[\"discriminator\"] === \"GeoPlaceTeaserDto\") {\n let result = new GeoPlaceTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GeoRouteTeaserDto\") {\n let result = new GeoRouteTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GeoAreaTeaserDto\") {\n let result = new GeoAreaTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"NewsArticleTeaserDto\") {\n let result = new NewsArticleTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GalleryAlbumTeaserDto\") {\n let result = new GalleryAlbumTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"ProblemDefectTeaserDto\") {\n let result = new ProblemDefectTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"CalendarEventTeaserDto\") {\n let result = new CalendarEventTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DirectoryFormTeaserDto\") {\n let result = new DirectoryFormTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DirectoryPersonTeaserDto\") {\n let result = new DirectoryPersonTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DirectoryProcessTeaserDto\") {\n let result = new DirectoryProcessTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DirectoryServiceTeaserDto\") {\n let result = new DirectoryServiceTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DirectoryOrgUnitTeaserDto\") {\n let result = new DirectoryOrgUnitTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DirectorySituationTeaserDto\") {\n let result = new DirectorySituationTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DatabaseObjectTeaserDto\") {\n let result = new DatabaseObjectTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"SearchResultDto\") {\n let result = new SearchResultDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"ShopProductTeaserDto\") {\n let result = new ShopProductTeaserDto();\n result.init(data);\n return result;\n }\n let result = new ItemTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"discriminator\"] = this._discriminator;\n data[\"link\"] = this.link ? this.link.toJSON() : undefined;\n data[\"name\"] = this.name;\n data[\"created\"] = this.created ? this.created.toISOString() : undefined;\n data[\"teaserPictureUrl\"] = this.teaserPictureUrl;\n data[\"categoryIconUrl\"] = this.categoryIconUrl;\n data[\"categoryColor\"] = this.categoryColor;\n data[\"teaserText\"] = this.teaserText;\n data[\"hasContent\"] = this.hasContent;\n if (Array.isArray(this.categoryNames)) {\n data[\"categoryNames\"] = [];\n for (let item of this.categoryNames)\n data[\"categoryNames\"].push(item.toJSON());\n }\n if (Array.isArray(this.additionalFields)) {\n data[\"additionalFields\"] = [];\n for (let item of this.additionalFields)\n data[\"additionalFields\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): ItemTeaserDto {\n const json = this.toJSON();\n let result = new ItemTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IItemTeaserDto {\n link: Link;\n name: string;\n created: Date;\n teaserPictureUrl?: string | undefined;\n categoryIconUrl?: string | undefined;\n categoryColor?: string | undefined;\n teaserText?: string | undefined;\n hasContent: boolean;\n categoryNames: CategoryNameDto[];\n additionalFields: FieldGroupValuesDto[];\n}\n\nexport class BookingBookableTeaserDto extends ItemTeaserDto implements IBookingBookableTeaserDto {\n\n constructor(data?: IBookingBookableTeaserDto) {\n super(data);\n this._discriminator = \"BookingBookableTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): BookingBookableTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new BookingBookableTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): BookingBookableTeaserDto {\n const json = this.toJSON();\n let result = new BookingBookableTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IBookingBookableTeaserDto extends IItemTeaserDto {\n}\n\nexport class Link implements ILink {\n targetId?: number | undefined;\n slug?: string | undefined;\n\n constructor(data?: ILink) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.targetId = _data[\"targetId\"];\n this.slug = _data[\"slug\"];\n }\n }\n\n static fromJS(data: any): Link {\n data = typeof data === 'object' ? data : {};\n let result = new Link();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"targetId\"] = this.targetId;\n data[\"slug\"] = this.slug;\n return data;\n }\n\n clone(): Link {\n const json = this.toJSON();\n let result = new Link();\n result.init(json);\n return result;\n }\n}\n\nexport interface ILink {\n targetId?: number | undefined;\n slug?: string | undefined;\n}\n\nexport class CategoryNameDto implements ICategoryNameDto {\n id!: number;\n name!: string;\n iconUrl?: string | undefined;\n color?: string | undefined;\n\n constructor(data?: ICategoryNameDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.iconUrl = _data[\"iconUrl\"];\n this.color = _data[\"color\"];\n }\n }\n\n static fromJS(data: any): CategoryNameDto {\n data = typeof data === 'object' ? data : {};\n let result = new CategoryNameDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"iconUrl\"] = this.iconUrl;\n data[\"color\"] = this.color;\n return data;\n }\n\n clone(): CategoryNameDto {\n const json = this.toJSON();\n let result = new CategoryNameDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICategoryNameDto {\n id: number;\n name: string;\n iconUrl?: string | undefined;\n color?: string | undefined;\n}\n\nexport class FieldGroupValuesDto implements IFieldGroupValuesDto {\n name!: string;\n fieldValues!: FieldValueDto[];\n\n constructor(data?: IFieldGroupValuesDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.fieldValues = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n if (Array.isArray(_data[\"fieldValues\"])) {\n this.fieldValues = [] as any;\n for (let item of _data[\"fieldValues\"])\n this.fieldValues!.push(FieldValueDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): FieldGroupValuesDto {\n data = typeof data === 'object' ? data : {};\n let result = new FieldGroupValuesDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n if (Array.isArray(this.fieldValues)) {\n data[\"fieldValues\"] = [];\n for (let item of this.fieldValues)\n data[\"fieldValues\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): FieldGroupValuesDto {\n const json = this.toJSON();\n let result = new FieldGroupValuesDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IFieldGroupValuesDto {\n name: string;\n fieldValues: FieldValueDto[];\n}\n\nexport class FieldValueDto implements IFieldValueDto {\n field!: FieldDto;\n value?: any | undefined;\n\n constructor(data?: IFieldValueDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.field = new FieldDto();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.field = _data[\"field\"] ? FieldDto.fromJS(_data[\"field\"]) : new FieldDto();\n this.value = _data[\"value\"];\n }\n }\n\n static fromJS(data: any): FieldValueDto {\n data = typeof data === 'object' ? data : {};\n let result = new FieldValueDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"field\"] = this.field ? this.field.toJSON() : undefined;\n data[\"value\"] = this.value;\n return data;\n }\n\n clone(): FieldValueDto {\n const json = this.toJSON();\n let result = new FieldValueDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IFieldValueDto {\n field: FieldDto;\n value?: any | undefined;\n}\n\nexport class FieldDto implements IFieldDto {\n id?: string | undefined;\n iconFileUrl?: string | undefined;\n type!: FieldType;\n name!: string;\n unit?: string | undefined;\n\n constructor(data?: IFieldDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.iconFileUrl = _data[\"iconFileUrl\"];\n this.type = _data[\"type\"];\n this.name = _data[\"name\"];\n this.unit = _data[\"unit\"];\n }\n }\n\n static fromJS(data: any): FieldDto {\n data = typeof data === 'object' ? data : {};\n let result = new FieldDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"iconFileUrl\"] = this.iconFileUrl;\n data[\"type\"] = this.type;\n data[\"name\"] = this.name;\n data[\"unit\"] = this.unit;\n return data;\n }\n\n clone(): FieldDto {\n const json = this.toJSON();\n let result = new FieldDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IFieldDto {\n id?: string | undefined;\n iconFileUrl?: string | undefined;\n type: FieldType;\n name: string;\n unit?: string | undefined;\n}\n\nexport enum FieldType {\n String = 0,\n Number = 1,\n Boolean = 2,\n DateTime = 3,\n Link = 4,\n Page = 5,\n News = 6,\n Geo = 7,\n Gallery = 8,\n Calendar = 9,\n Database = 10,\n}\n\nexport abstract class GeoObjectTeaserDto extends ItemTeaserDto implements IGeoObjectTeaserDto {\n addresses!: Address[];\n openingHours?: TimeSeriesDto | undefined;\n distance?: number | undefined;\n\n constructor(data?: IGeoObjectTeaserDto) {\n super(data);\n if (!data) {\n this.addresses = [];\n }\n this._discriminator = \"GeoObjectTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"addresses\"])) {\n this.addresses = [] as any;\n for (let item of _data[\"addresses\"])\n this.addresses!.push(Address.fromJS(item));\n }\n this.openingHours = _data[\"openingHours\"] ? TimeSeriesDto.fromJS(_data[\"openingHours\"]) : undefined;\n this.distance = _data[\"distance\"];\n }\n }\n\n static override fromJS(data: any): GeoObjectTeaserDto {\n data = typeof data === 'object' ? data : {};\n if (data[\"discriminator\"] === \"GeoPlaceTeaserDto\") {\n let result = new GeoPlaceTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GeoRouteTeaserDto\") {\n let result = new GeoRouteTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GeoAreaTeaserDto\") {\n let result = new GeoAreaTeaserDto();\n result.init(data);\n return result;\n }\n throw new Error(\"The abstract class 'GeoObjectTeaserDto' cannot be instantiated.\");\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.addresses)) {\n data[\"addresses\"] = [];\n for (let item of this.addresses)\n data[\"addresses\"].push(item.toJSON());\n }\n data[\"openingHours\"] = this.openingHours ? this.openingHours.toJSON() : undefined;\n data[\"distance\"] = this.distance;\n super.toJSON(data);\n return data;\n }\n\n clone(): GeoObjectTeaserDto {\n throw new Error(\"The abstract class 'GeoObjectTeaserDto' cannot be instantiated.\");\n }\n}\n\nexport interface IGeoObjectTeaserDto extends IItemTeaserDto {\n addresses: Address[];\n openingHours?: TimeSeriesDto | undefined;\n distance?: number | undefined;\n}\n\nexport class Address implements IAddress {\n type?: string | undefined;\n name?: string | undefined;\n firstName?: string | undefined;\n lastName?: string | undefined;\n description?: string | undefined;\n room?: string | undefined;\n building?: string | undefined;\n houseNumber?: string | undefined;\n street?: string | undefined;\n zipCode?: string | undefined;\n city?: string | undefined;\n telephone?: string | undefined;\n mobilephone?: string | undefined;\n fax?: string | undefined;\n eMail?: string | undefined;\n web?: string | undefined;\n socials?: SocialLink[] | undefined;\n longitude?: number | undefined;\n latitude?: number | undefined;\n additionalProperties?: AdditionalAddressProperty[] | undefined;\n\n constructor(data?: IAddress) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.type = _data[\"type\"];\n this.name = _data[\"name\"];\n this.firstName = _data[\"firstName\"];\n this.lastName = _data[\"lastName\"];\n this.description = _data[\"description\"];\n this.room = _data[\"room\"];\n this.building = _data[\"building\"];\n this.houseNumber = _data[\"houseNumber\"];\n this.street = _data[\"street\"];\n this.zipCode = _data[\"zipCode\"];\n this.city = _data[\"city\"];\n this.telephone = _data[\"telephone\"];\n this.mobilephone = _data[\"mobilephone\"];\n this.fax = _data[\"fax\"];\n this.eMail = _data[\"eMail\"];\n this.web = _data[\"web\"];\n if (Array.isArray(_data[\"socials\"])) {\n this.socials = [] as any;\n for (let item of _data[\"socials\"])\n this.socials!.push(SocialLink.fromJS(item));\n }\n this.longitude = _data[\"longitude\"];\n this.latitude = _data[\"latitude\"];\n if (Array.isArray(_data[\"additionalProperties\"])) {\n this.additionalProperties = [] as any;\n for (let item of _data[\"additionalProperties\"])\n this.additionalProperties!.push(AdditionalAddressProperty.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): Address {\n data = typeof data === 'object' ? data : {};\n let result = new Address();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"name\"] = this.name;\n data[\"firstName\"] = this.firstName;\n data[\"lastName\"] = this.lastName;\n data[\"description\"] = this.description;\n data[\"room\"] = this.room;\n data[\"building\"] = this.building;\n data[\"houseNumber\"] = this.houseNumber;\n data[\"street\"] = this.street;\n data[\"zipCode\"] = this.zipCode;\n data[\"city\"] = this.city;\n data[\"telephone\"] = this.telephone;\n data[\"mobilephone\"] = this.mobilephone;\n data[\"fax\"] = this.fax;\n data[\"eMail\"] = this.eMail;\n data[\"web\"] = this.web;\n if (Array.isArray(this.socials)) {\n data[\"socials\"] = [];\n for (let item of this.socials)\n data[\"socials\"].push(item.toJSON());\n }\n data[\"longitude\"] = this.longitude;\n data[\"latitude\"] = this.latitude;\n if (Array.isArray(this.additionalProperties)) {\n data[\"additionalProperties\"] = [];\n for (let item of this.additionalProperties)\n data[\"additionalProperties\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): Address {\n const json = this.toJSON();\n let result = new Address();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAddress {\n type?: string | undefined;\n name?: string | undefined;\n firstName?: string | undefined;\n lastName?: string | undefined;\n description?: string | undefined;\n room?: string | undefined;\n building?: string | undefined;\n houseNumber?: string | undefined;\n street?: string | undefined;\n zipCode?: string | undefined;\n city?: string | undefined;\n telephone?: string | undefined;\n mobilephone?: string | undefined;\n fax?: string | undefined;\n eMail?: string | undefined;\n web?: string | undefined;\n socials?: SocialLink[] | undefined;\n longitude?: number | undefined;\n latitude?: number | undefined;\n additionalProperties?: AdditionalAddressProperty[] | undefined;\n}\n\nexport class SocialLink implements ISocialLink {\n type!: SocialLinkType;\n url!: string;\n\n constructor(data?: ISocialLink) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.type = _data[\"type\"];\n this.url = _data[\"url\"];\n }\n }\n\n static fromJS(data: any): SocialLink {\n data = typeof data === 'object' ? data : {};\n let result = new SocialLink();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"url\"] = this.url;\n return data;\n }\n\n clone(): SocialLink {\n const json = this.toJSON();\n let result = new SocialLink();\n result.init(json);\n return result;\n }\n}\n\nexport interface ISocialLink {\n type: SocialLinkType;\n url: string;\n}\n\nexport enum SocialLinkType {\n Facebook = 1,\n Instagram = 2,\n TikTok = 3,\n Twitter = 4,\n Youtube = 5,\n Pinterest = 6,\n LinkedIn = 7,\n Xing = 8,\n TripAdvisor = 9,\n GoogleBusiness = 10,\n WebShop = 11,\n Tumblr = 12,\n Vimeo = 13,\n Kununu = 14,\n}\n\nexport class AdditionalAddressProperty implements IAdditionalAddressProperty {\n label!: string;\n value!: string;\n\n constructor(data?: IAdditionalAddressProperty) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.label = _data[\"label\"];\n this.value = _data[\"value\"];\n }\n }\n\n static fromJS(data: any): AdditionalAddressProperty {\n data = typeof data === 'object' ? data : {};\n let result = new AdditionalAddressProperty();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"label\"] = this.label;\n data[\"value\"] = this.value;\n return data;\n }\n\n clone(): AdditionalAddressProperty {\n const json = this.toJSON();\n let result = new AdditionalAddressProperty();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAdditionalAddressProperty {\n label: string;\n value: string;\n}\n\nexport class TimeSeriesDto implements ITimeSeriesDto {\n name?: string | undefined;\n validFrom?: string | undefined;\n validUntil?: string | undefined;\n times!: TimeDto[];\n status?: TimeStatusDto | undefined;\n\n constructor(data?: ITimeSeriesDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.times = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.validFrom = _data[\"validFrom\"];\n this.validUntil = _data[\"validUntil\"];\n if (Array.isArray(_data[\"times\"])) {\n this.times = [] as any;\n for (let item of _data[\"times\"])\n this.times!.push(TimeDto.fromJS(item));\n }\n this.status = _data[\"status\"] ? TimeStatusDto.fromJS(_data[\"status\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TimeSeriesDto {\n data = typeof data === 'object' ? data : {};\n let result = new TimeSeriesDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"validFrom\"] = this.validFrom;\n data[\"validUntil\"] = this.validUntil;\n if (Array.isArray(this.times)) {\n data[\"times\"] = [];\n for (let item of this.times)\n data[\"times\"].push(item.toJSON());\n }\n data[\"status\"] = this.status ? this.status.toJSON() : undefined;\n return data;\n }\n\n clone(): TimeSeriesDto {\n const json = this.toJSON();\n let result = new TimeSeriesDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ITimeSeriesDto {\n name?: string | undefined;\n validFrom?: string | undefined;\n validUntil?: string | undefined;\n times: TimeDto[];\n status?: TimeStatusDto | undefined;\n}\n\nexport class TimeDto implements ITimeDto {\n day!: string;\n time!: string;\n\n constructor(data?: ITimeDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.day = _data[\"day\"];\n this.time = _data[\"time\"];\n }\n }\n\n static fromJS(data: any): TimeDto {\n data = typeof data === 'object' ? data : {};\n let result = new TimeDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"day\"] = this.day;\n data[\"time\"] = this.time;\n return data;\n }\n\n clone(): TimeDto {\n const json = this.toJSON();\n let result = new TimeDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ITimeDto {\n day: string;\n time: string;\n}\n\nexport class TimeStatusDto implements ITimeStatusDto {\n status!: TimeStatus;\n time?: string | undefined;\n\n constructor(data?: ITimeStatusDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.status = _data[\"status\"];\n this.time = _data[\"time\"];\n }\n }\n\n static fromJS(data: any): TimeStatusDto {\n data = typeof data === 'object' ? data : {};\n let result = new TimeStatusDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"status\"] = this.status;\n data[\"time\"] = this.time;\n return data;\n }\n\n clone(): TimeStatusDto {\n const json = this.toJSON();\n let result = new TimeStatusDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ITimeStatusDto {\n status: TimeStatus;\n time?: string | undefined;\n}\n\nexport enum TimeStatus {\n Open = 0,\n OpeningSoon = 1,\n ClosingSoon = 2,\n Closed = 3,\n}\n\nexport class GeoPlaceTeaserDto extends GeoObjectTeaserDto implements IGeoPlaceTeaserDto {\n location?: PointDto | undefined;\n\n constructor(data?: IGeoPlaceTeaserDto) {\n super(data);\n this._discriminator = \"GeoPlaceTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.location = _data[\"location\"] ? PointDto.fromJS(_data[\"location\"]) : undefined;\n }\n }\n\n static override fromJS(data: any): GeoPlaceTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new GeoPlaceTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"location\"] = this.location ? this.location.toJSON() : undefined;\n super.toJSON(data);\n return data;\n }\n\n clone(): GeoPlaceTeaserDto {\n const json = this.toJSON();\n let result = new GeoPlaceTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGeoPlaceTeaserDto extends IGeoObjectTeaserDto {\n location?: PointDto | undefined;\n}\n\nexport abstract class GeographyDataDto implements IGeographyDataDto {\n navigationUrl?: string | undefined;\n\n protected _discriminator: string;\n\n constructor(data?: IGeographyDataDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n this._discriminator = \"GeographyDataDto\";\n }\n\n init(_data?: any) {\n if (_data) {\n this.navigationUrl = _data[\"navigationUrl\"];\n }\n }\n\n static fromJS(data: any): GeographyDataDto {\n data = typeof data === 'object' ? data : {};\n if (data[\"discriminator\"] === \"PointDto\") {\n let result = new PointDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"LineStringDto\") {\n let result = new LineStringDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"PolygonDto\") {\n let result = new PolygonDto();\n result.init(data);\n return result;\n }\n throw new Error(\"The abstract class 'GeographyDataDto' cannot be instantiated.\");\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"discriminator\"] = this._discriminator;\n data[\"navigationUrl\"] = this.navigationUrl;\n return data;\n }\n\n clone(): GeographyDataDto {\n throw new Error(\"The abstract class 'GeographyDataDto' cannot be instantiated.\");\n }\n}\n\nexport interface IGeographyDataDto {\n navigationUrl?: string | undefined;\n}\n\nexport class PointDto extends GeographyDataDto implements IPointDto {\n longitude?: number | undefined;\n latitude?: number | undefined;\n elevation?: number | undefined;\n\n constructor(data?: IPointDto) {\n super(data);\n this._discriminator = \"PointDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.longitude = _data[\"longitude\"];\n this.latitude = _data[\"latitude\"];\n this.elevation = _data[\"elevation\"];\n }\n }\n\n static override fromJS(data: any): PointDto {\n data = typeof data === 'object' ? data : {};\n let result = new PointDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"longitude\"] = this.longitude;\n data[\"latitude\"] = this.latitude;\n data[\"elevation\"] = this.elevation;\n super.toJSON(data);\n return data;\n }\n\n clone(): PointDto {\n const json = this.toJSON();\n let result = new PointDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPointDto extends IGeographyDataDto {\n longitude?: number | undefined;\n latitude?: number | undefined;\n elevation?: number | undefined;\n}\n\nexport class LineStringDto extends GeographyDataDto implements ILineStringDto {\n points?: PointDto[] | undefined;\n color?: string | undefined;\n opacity?: number | undefined;\n weight?: number | undefined;\n dashArray?: string | undefined;\n\n constructor(data?: ILineStringDto) {\n super(data);\n this._discriminator = \"LineStringDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"points\"])) {\n this.points = [] as any;\n for (let item of _data[\"points\"])\n this.points!.push(PointDto.fromJS(item));\n }\n this.color = _data[\"color\"];\n this.opacity = _data[\"opacity\"];\n this.weight = _data[\"weight\"];\n this.dashArray = _data[\"dashArray\"];\n }\n }\n\n static override fromJS(data: any): LineStringDto {\n data = typeof data === 'object' ? data : {};\n let result = new LineStringDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.points)) {\n data[\"points\"] = [];\n for (let item of this.points)\n data[\"points\"].push(item.toJSON());\n }\n data[\"color\"] = this.color;\n data[\"opacity\"] = this.opacity;\n data[\"weight\"] = this.weight;\n data[\"dashArray\"] = this.dashArray;\n super.toJSON(data);\n return data;\n }\n\n clone(): LineStringDto {\n const json = this.toJSON();\n let result = new LineStringDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ILineStringDto extends IGeographyDataDto {\n points?: PointDto[] | undefined;\n color?: string | undefined;\n opacity?: number | undefined;\n weight?: number | undefined;\n dashArray?: string | undefined;\n}\n\nexport class PolygonDto extends GeographyDataDto implements IPolygonDto {\n points?: PointDto[] | undefined;\n color?: string | undefined;\n opacity?: number | undefined;\n weight?: number | undefined;\n dashArray?: string | undefined;\n fill?: boolean | undefined;\n\n constructor(data?: IPolygonDto) {\n super(data);\n this._discriminator = \"PolygonDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"points\"])) {\n this.points = [] as any;\n for (let item of _data[\"points\"])\n this.points!.push(PointDto.fromJS(item));\n }\n this.color = _data[\"color\"];\n this.opacity = _data[\"opacity\"];\n this.weight = _data[\"weight\"];\n this.dashArray = _data[\"dashArray\"];\n this.fill = _data[\"fill\"];\n }\n }\n\n static override fromJS(data: any): PolygonDto {\n data = typeof data === 'object' ? data : {};\n let result = new PolygonDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.points)) {\n data[\"points\"] = [];\n for (let item of this.points)\n data[\"points\"].push(item.toJSON());\n }\n data[\"color\"] = this.color;\n data[\"opacity\"] = this.opacity;\n data[\"weight\"] = this.weight;\n data[\"dashArray\"] = this.dashArray;\n data[\"fill\"] = this.fill;\n super.toJSON(data);\n return data;\n }\n\n clone(): PolygonDto {\n const json = this.toJSON();\n let result = new PolygonDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPolygonDto extends IGeographyDataDto {\n points?: PointDto[] | undefined;\n color?: string | undefined;\n opacity?: number | undefined;\n weight?: number | undefined;\n dashArray?: string | undefined;\n fill?: boolean | undefined;\n}\n\nexport class GeoRouteTeaserDto extends GeoObjectTeaserDto implements IGeoRouteTeaserDto {\n color!: string;\n opacity!: number;\n weight!: number;\n dashArray?: string | undefined;\n route?: LineStringDto | undefined;\n\n constructor(data?: IGeoRouteTeaserDto) {\n super(data);\n this._discriminator = \"GeoRouteTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.color = _data[\"color\"];\n this.opacity = _data[\"opacity\"];\n this.weight = _data[\"weight\"];\n this.dashArray = _data[\"dashArray\"];\n this.route = _data[\"route\"] ? LineStringDto.fromJS(_data[\"route\"]) : undefined;\n }\n }\n\n static override fromJS(data: any): GeoRouteTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new GeoRouteTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"color\"] = this.color;\n data[\"opacity\"] = this.opacity;\n data[\"weight\"] = this.weight;\n data[\"dashArray\"] = this.dashArray;\n data[\"route\"] = this.route ? this.route.toJSON() : undefined;\n super.toJSON(data);\n return data;\n }\n\n clone(): GeoRouteTeaserDto {\n const json = this.toJSON();\n let result = new GeoRouteTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGeoRouteTeaserDto extends IGeoObjectTeaserDto {\n color: string;\n opacity: number;\n weight: number;\n dashArray?: string | undefined;\n route?: LineStringDto | undefined;\n}\n\nexport class GeoAreaTeaserDto extends GeoObjectTeaserDto implements IGeoAreaTeaserDto {\n color!: string;\n opacity!: number;\n weight!: number;\n dashArray?: string | undefined;\n fill!: boolean;\n area?: PolygonDto | undefined;\n\n constructor(data?: IGeoAreaTeaserDto) {\n super(data);\n this._discriminator = \"GeoAreaTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.color = _data[\"color\"];\n this.opacity = _data[\"opacity\"];\n this.weight = _data[\"weight\"];\n this.dashArray = _data[\"dashArray\"];\n this.fill = _data[\"fill\"];\n this.area = _data[\"area\"] ? PolygonDto.fromJS(_data[\"area\"]) : undefined;\n }\n }\n\n static override fromJS(data: any): GeoAreaTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new GeoAreaTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"color\"] = this.color;\n data[\"opacity\"] = this.opacity;\n data[\"weight\"] = this.weight;\n data[\"dashArray\"] = this.dashArray;\n data[\"fill\"] = this.fill;\n data[\"area\"] = this.area ? this.area.toJSON() : undefined;\n super.toJSON(data);\n return data;\n }\n\n clone(): GeoAreaTeaserDto {\n const json = this.toJSON();\n let result = new GeoAreaTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGeoAreaTeaserDto extends IGeoObjectTeaserDto {\n color: string;\n opacity: number;\n weight: number;\n dashArray?: string | undefined;\n fill: boolean;\n area?: PolygonDto | undefined;\n}\n\nexport class NewsArticleTeaserDto extends ItemTeaserDto implements INewsArticleTeaserDto {\n\n constructor(data?: INewsArticleTeaserDto) {\n super(data);\n this._discriminator = \"NewsArticleTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): NewsArticleTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new NewsArticleTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): NewsArticleTeaserDto {\n const json = this.toJSON();\n let result = new NewsArticleTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface INewsArticleTeaserDto extends IItemTeaserDto {\n}\n\nexport class GalleryAlbumTeaserDto extends ItemTeaserDto implements IGalleryAlbumTeaserDto {\n pictureCount!: number;\n\n constructor(data?: IGalleryAlbumTeaserDto) {\n super(data);\n this._discriminator = \"GalleryAlbumTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.pictureCount = _data[\"pictureCount\"];\n }\n }\n\n static override fromJS(data: any): GalleryAlbumTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new GalleryAlbumTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pictureCount\"] = this.pictureCount;\n super.toJSON(data);\n return data;\n }\n\n clone(): GalleryAlbumTeaserDto {\n const json = this.toJSON();\n let result = new GalleryAlbumTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGalleryAlbumTeaserDto extends IItemTeaserDto {\n pictureCount: number;\n}\n\nexport class ProblemDefectTeaserDto extends ItemTeaserDto implements IProblemDefectTeaserDto {\n address?: Address | undefined;\n location?: PointDto | undefined;\n status!: DefectStatus;\n\n constructor(data?: IProblemDefectTeaserDto) {\n super(data);\n this._discriminator = \"ProblemDefectTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.address = _data[\"address\"] ? Address.fromJS(_data[\"address\"]) : undefined;\n this.location = _data[\"location\"] ? PointDto.fromJS(_data[\"location\"]) : undefined;\n this.status = _data[\"status\"];\n }\n }\n\n static override fromJS(data: any): ProblemDefectTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new ProblemDefectTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"address\"] = this.address ? this.address.toJSON() : undefined;\n data[\"location\"] = this.location ? this.location.toJSON() : undefined;\n data[\"status\"] = this.status;\n super.toJSON(data);\n return data;\n }\n\n clone(): ProblemDefectTeaserDto {\n const json = this.toJSON();\n let result = new ProblemDefectTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IProblemDefectTeaserDto extends IItemTeaserDto {\n address?: Address | undefined;\n location?: PointDto | undefined;\n status: DefectStatus;\n}\n\nexport enum DefectStatus {\n New = 0,\n InProgress = 1,\n WontFix = 2,\n Done = 3,\n}\n\nexport class CalendarEventTeaserDto extends ItemTeaserDto implements ICalendarEventTeaserDto {\n fromDate!: Date;\n fromTime?: string | undefined;\n untilDate!: Date;\n untilTime?: string | undefined;\n addresses!: Address[];\n\n constructor(data?: ICalendarEventTeaserDto) {\n super(data);\n if (!data) {\n this.addresses = [];\n }\n this._discriminator = \"CalendarEventTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.fromDate = _data[\"fromDate\"] ? new Date(_data[\"fromDate\"].toString()) : undefined;\n this.fromTime = _data[\"fromTime\"];\n this.untilDate = _data[\"untilDate\"] ? new Date(_data[\"untilDate\"].toString()) : undefined;\n this.untilTime = _data[\"untilTime\"];\n if (Array.isArray(_data[\"addresses\"])) {\n this.addresses = [] as any;\n for (let item of _data[\"addresses\"])\n this.addresses!.push(Address.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): CalendarEventTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new CalendarEventTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"fromDate\"] = this.fromDate ? formatDate(this.fromDate) : undefined;\n data[\"fromTime\"] = this.fromTime;\n data[\"untilDate\"] = this.untilDate ? formatDate(this.untilDate) : undefined;\n data[\"untilTime\"] = this.untilTime;\n if (Array.isArray(this.addresses)) {\n data[\"addresses\"] = [];\n for (let item of this.addresses)\n data[\"addresses\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): CalendarEventTeaserDto {\n const json = this.toJSON();\n let result = new CalendarEventTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICalendarEventTeaserDto extends IItemTeaserDto {\n fromDate: Date;\n fromTime?: string | undefined;\n untilDate: Date;\n untilTime?: string | undefined;\n addresses: Address[];\n}\n\nexport class DirectoryFormTeaserDto extends ItemTeaserDto implements IDirectoryFormTeaserDto {\n url?: string | undefined;\n\n constructor(data?: IDirectoryFormTeaserDto) {\n super(data);\n this._discriminator = \"DirectoryFormTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.url = _data[\"url\"];\n }\n }\n\n static override fromJS(data: any): DirectoryFormTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectoryFormTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"url\"] = this.url;\n super.toJSON(data);\n return data;\n }\n\n clone(): DirectoryFormTeaserDto {\n const json = this.toJSON();\n let result = new DirectoryFormTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectoryFormTeaserDto extends IItemTeaserDto {\n url?: string | undefined;\n}\n\nexport class DirectoryPersonTeaserDto extends ItemTeaserDto implements IDirectoryPersonTeaserDto {\n function?: Node | undefined;\n position?: Node | undefined;\n communication?: Address | undefined;\n\n constructor(data?: IDirectoryPersonTeaserDto) {\n super(data);\n this._discriminator = \"DirectoryPersonTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.function = _data[\"function\"] ? Node.fromJS(_data[\"function\"]) : undefined;\n this.position = _data[\"position\"] ? Node.fromJS(_data[\"position\"]) : undefined;\n this.communication = _data[\"communication\"] ? Address.fromJS(_data[\"communication\"]) : undefined;\n }\n }\n\n static override fromJS(data: any): DirectoryPersonTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectoryPersonTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"function\"] = this.function ? this.function.toJSON() : undefined;\n data[\"position\"] = this.position ? this.position.toJSON() : undefined;\n data[\"communication\"] = this.communication ? this.communication.toJSON() : undefined;\n super.toJSON(data);\n return data;\n }\n\n clone(): DirectoryPersonTeaserDto {\n const json = this.toJSON();\n let result = new DirectoryPersonTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectoryPersonTeaserDto extends IItemTeaserDto {\n function?: Node | undefined;\n position?: Node | undefined;\n communication?: Address | undefined;\n}\n\nexport class DirectoryServiceTeaserDto extends ItemTeaserDto implements IDirectoryServiceTeaserDto {\n processes!: DirectoryProcessTeaserDto[];\n\n constructor(data?: IDirectoryServiceTeaserDto) {\n super(data);\n if (!data) {\n this.processes = [];\n }\n this._discriminator = \"DirectoryServiceTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"processes\"])) {\n this.processes = [] as any;\n for (let item of _data[\"processes\"])\n this.processes!.push(DirectoryProcessTeaserDto.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): DirectoryServiceTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectoryServiceTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.processes)) {\n data[\"processes\"] = [];\n for (let item of this.processes)\n data[\"processes\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): DirectoryServiceTeaserDto {\n const json = this.toJSON();\n let result = new DirectoryServiceTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectoryServiceTeaserDto extends IItemTeaserDto {\n processes: DirectoryProcessTeaserDto[];\n}\n\nexport class DirectoryProcessTeaserDto extends ItemTeaserDto implements IDirectoryProcessTeaserDto {\n\n constructor(data?: IDirectoryProcessTeaserDto) {\n super(data);\n this._discriminator = \"DirectoryProcessTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): DirectoryProcessTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectoryProcessTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): DirectoryProcessTeaserDto {\n const json = this.toJSON();\n let result = new DirectoryProcessTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectoryProcessTeaserDto extends IItemTeaserDto {\n}\n\nexport class DirectoryOrgUnitTeaserDto extends ItemTeaserDto implements IDirectoryOrgUnitTeaserDto {\n openingHours?: TimeSeriesDto | undefined;\n address?: Address | undefined;\n communication?: Address | undefined;\n\n constructor(data?: IDirectoryOrgUnitTeaserDto) {\n super(data);\n this._discriminator = \"DirectoryOrgUnitTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.openingHours = _data[\"openingHours\"] ? TimeSeriesDto.fromJS(_data[\"openingHours\"]) : undefined;\n this.address = _data[\"address\"] ? Address.fromJS(_data[\"address\"]) : undefined;\n this.communication = _data[\"communication\"] ? Address.fromJS(_data[\"communication\"]) : undefined;\n }\n }\n\n static override fromJS(data: any): DirectoryOrgUnitTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectoryOrgUnitTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"openingHours\"] = this.openingHours ? this.openingHours.toJSON() : undefined;\n data[\"address\"] = this.address ? this.address.toJSON() : undefined;\n data[\"communication\"] = this.communication ? this.communication.toJSON() : undefined;\n super.toJSON(data);\n return data;\n }\n\n clone(): DirectoryOrgUnitTeaserDto {\n const json = this.toJSON();\n let result = new DirectoryOrgUnitTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectoryOrgUnitTeaserDto extends IItemTeaserDto {\n openingHours?: TimeSeriesDto | undefined;\n address?: Address | undefined;\n communication?: Address | undefined;\n}\n\nexport class DirectorySituationTeaserDto extends ItemTeaserDto implements IDirectorySituationTeaserDto {\n\n constructor(data?: IDirectorySituationTeaserDto) {\n super(data);\n this._discriminator = \"DirectorySituationTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): DirectorySituationTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectorySituationTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): DirectorySituationTeaserDto {\n const json = this.toJSON();\n let result = new DirectorySituationTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectorySituationTeaserDto extends IItemTeaserDto {\n}\n\nexport class DatabaseObjectTeaserDto extends ItemTeaserDto implements IDatabaseObjectTeaserDto {\n databaseObjectTypeId!: number;\n fields!: FieldGroupValuesDto[];\n openingHours?: TimeSeriesDto | undefined;\n address?: Address | undefined;\n communication?: Address | undefined;\n\n constructor(data?: IDatabaseObjectTeaserDto) {\n super(data);\n if (!data) {\n this.fields = [];\n }\n this._discriminator = \"DatabaseObjectTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.databaseObjectTypeId = _data[\"databaseObjectTypeId\"];\n if (Array.isArray(_data[\"fields\"])) {\n this.fields = [] as any;\n for (let item of _data[\"fields\"])\n this.fields!.push(FieldGroupValuesDto.fromJS(item));\n }\n this.openingHours = _data[\"openingHours\"] ? TimeSeriesDto.fromJS(_data[\"openingHours\"]) : undefined;\n this.address = _data[\"address\"] ? Address.fromJS(_data[\"address\"]) : undefined;\n this.communication = _data[\"communication\"] ? Address.fromJS(_data[\"communication\"]) : undefined;\n }\n }\n\n static override fromJS(data: any): DatabaseObjectTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new DatabaseObjectTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"databaseObjectTypeId\"] = this.databaseObjectTypeId;\n if (Array.isArray(this.fields)) {\n data[\"fields\"] = [];\n for (let item of this.fields)\n data[\"fields\"].push(item.toJSON());\n }\n data[\"openingHours\"] = this.openingHours ? this.openingHours.toJSON() : undefined;\n data[\"address\"] = this.address ? this.address.toJSON() : undefined;\n data[\"communication\"] = this.communication ? this.communication.toJSON() : undefined;\n super.toJSON(data);\n return data;\n }\n\n clone(): DatabaseObjectTeaserDto {\n const json = this.toJSON();\n let result = new DatabaseObjectTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDatabaseObjectTeaserDto extends IItemTeaserDto {\n databaseObjectTypeId: number;\n fields: FieldGroupValuesDto[];\n openingHours?: TimeSeriesDto | undefined;\n address?: Address | undefined;\n communication?: Address | undefined;\n}\n\nexport class SearchResultDto extends ItemTeaserDto implements ISearchResultDto {\n\n constructor(data?: ISearchResultDto) {\n super(data);\n this._discriminator = \"SearchResultDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): SearchResultDto {\n data = typeof data === 'object' ? data : {};\n let result = new SearchResultDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): SearchResultDto {\n const json = this.toJSON();\n let result = new SearchResultDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ISearchResultDto extends IItemTeaserDto {\n}\n\nexport enum SortType {\n Random = \"random\",\n Alphabetic = \"alphabetic\",\n Distance = \"distance\",\n Popularity = \"popularity\",\n Time = \"time\",\n}\n\nexport enum SortDirection {\n Ascending = \"ascending\",\n Descending = \"descending\",\n}\n\nexport enum CategoryFilterMode {\n Or = 0,\n And = 1,\n}\n\nexport class ItemDto implements IItemDto {\n id!: number;\n name!: string;\n teaserText?: string | undefined;\n teaserPictureUrl?: string | undefined;\n document?: Node | undefined;\n push!: boolean;\n livePush!: boolean;\n categoryNames!: CategoryNameDto[];\n created!: Date;\n lastModified?: Date | undefined;\n additionalFields!: FieldGroupValuesDto[];\n\n protected _discriminator: string;\n\n constructor(data?: IItemDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.categoryNames = [];\n this.additionalFields = [];\n }\n this._discriminator = \"ItemDto\";\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.teaserText = _data[\"teaserText\"];\n this.teaserPictureUrl = _data[\"teaserPictureUrl\"];\n this.document = _data[\"document\"] ? Node.fromJS(_data[\"document\"]) : undefined;\n this.push = _data[\"push\"];\n this.livePush = _data[\"livePush\"];\n if (Array.isArray(_data[\"categoryNames\"])) {\n this.categoryNames = [] as any;\n for (let item of _data[\"categoryNames\"])\n this.categoryNames!.push(CategoryNameDto.fromJS(item));\n }\n this.created = _data[\"created\"] ? new Date(_data[\"created\"].toString()) : undefined;\n this.lastModified = _data[\"lastModified\"] ? new Date(_data[\"lastModified\"].toString()) : undefined;\n if (Array.isArray(_data[\"additionalFields\"])) {\n this.additionalFields = [] as any;\n for (let item of _data[\"additionalFields\"])\n this.additionalFields!.push(FieldGroupValuesDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ItemDto {\n data = typeof data === 'object' ? data : {};\n if (data[\"discriminator\"] === \"BookingBookableDto\") {\n let result = new BookingBookableDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GeoObjectDto\") {\n throw new Error(\"The abstract class 'GeoObjectDto' cannot be instantiated.\");\n }\n if (data[\"discriminator\"] === \"GeoPlaceDto\") {\n let result = new GeoPlaceDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GeoRouteDto\") {\n let result = new GeoRouteDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GeoAreaDto\") {\n let result = new GeoAreaDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"NewsArticleDto\") {\n let result = new NewsArticleDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GalleryAlbumDto\") {\n let result = new GalleryAlbumDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"ProblemCommentDto\") {\n let result = new ProblemCommentDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"ProblemDefectDto\") {\n let result = new ProblemDefectDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"CalendarEventDto\") {\n let result = new CalendarEventDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DatabaseObjectDto\") {\n let result = new DatabaseObjectDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DirectoryOrgUnitDto\") {\n let result = new DirectoryOrgUnitDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DirectoryPersonDto\") {\n let result = new DirectoryPersonDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DirectoryServiceDto\") {\n let result = new DirectoryServiceDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DirectorySituationDto\") {\n let result = new DirectorySituationDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"InteractionFormDto\") {\n let result = new InteractionFormDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"InteractionSurveyDto\") {\n let result = new InteractionSurveyDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"PublicProblemDefectDetailsDto\") {\n let result = new PublicProblemDefectDetailsDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"ShopReviewDto\") {\n let result = new ShopReviewDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"ShopProductDto\") {\n let result = new ShopProductDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"PublicShopProductDetailsDto\") {\n let result = new PublicShopProductDetailsDto();\n result.init(data);\n return result;\n }\n let result = new ItemDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"discriminator\"] = this._discriminator;\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"teaserText\"] = this.teaserText;\n data[\"teaserPictureUrl\"] = this.teaserPictureUrl;\n data[\"document\"] = this.document ? this.document.toJSON() : undefined;\n data[\"push\"] = this.push;\n data[\"livePush\"] = this.livePush;\n if (Array.isArray(this.categoryNames)) {\n data[\"categoryNames\"] = [];\n for (let item of this.categoryNames)\n data[\"categoryNames\"].push(item.toJSON());\n }\n data[\"created\"] = this.created ? this.created.toISOString() : undefined;\n data[\"lastModified\"] = this.lastModified ? this.lastModified.toISOString() : undefined;\n if (Array.isArray(this.additionalFields)) {\n data[\"additionalFields\"] = [];\n for (let item of this.additionalFields)\n data[\"additionalFields\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): ItemDto {\n const json = this.toJSON();\n let result = new ItemDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IItemDto {\n id: number;\n name: string;\n teaserText?: string | undefined;\n teaserPictureUrl?: string | undefined;\n document?: Node | undefined;\n push: boolean;\n livePush: boolean;\n categoryNames: CategoryNameDto[];\n created: Date;\n lastModified?: Date | undefined;\n additionalFields: FieldGroupValuesDto[];\n}\n\nexport class BookingBookableDto extends ItemDto implements IBookingBookableDto {\n subBookables!: BookingBookableDto[];\n\n constructor(data?: IBookingBookableDto) {\n super(data);\n if (!data) {\n this.subBookables = [];\n }\n this._discriminator = \"BookingBookableDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"subBookables\"])) {\n this.subBookables = [] as any;\n for (let item of _data[\"subBookables\"])\n this.subBookables!.push(BookingBookableDto.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): BookingBookableDto {\n data = typeof data === 'object' ? data : {};\n let result = new BookingBookableDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.subBookables)) {\n data[\"subBookables\"] = [];\n for (let item of this.subBookables)\n data[\"subBookables\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): BookingBookableDto {\n const json = this.toJSON();\n let result = new BookingBookableDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IBookingBookableDto extends IItemDto {\n subBookables: BookingBookableDto[];\n}\n\nexport abstract class GeoObjectDto extends ItemDto implements IGeoObjectDto {\n addresses!: Address[];\n openingHours!: TimeSeriesDto[];\n\n constructor(data?: IGeoObjectDto) {\n super(data);\n if (!data) {\n this.addresses = [];\n this.openingHours = [];\n }\n this._discriminator = \"GeoObjectDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"addresses\"])) {\n this.addresses = [] as any;\n for (let item of _data[\"addresses\"])\n this.addresses!.push(Address.fromJS(item));\n }\n if (Array.isArray(_data[\"openingHours\"])) {\n this.openingHours = [] as any;\n for (let item of _data[\"openingHours\"])\n this.openingHours!.push(TimeSeriesDto.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): GeoObjectDto {\n data = typeof data === 'object' ? data : {};\n if (data[\"discriminator\"] === \"GeoPlaceDto\") {\n let result = new GeoPlaceDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GeoRouteDto\") {\n let result = new GeoRouteDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GeoAreaDto\") {\n let result = new GeoAreaDto();\n result.init(data);\n return result;\n }\n throw new Error(\"The abstract class 'GeoObjectDto' cannot be instantiated.\");\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.addresses)) {\n data[\"addresses\"] = [];\n for (let item of this.addresses)\n data[\"addresses\"].push(item.toJSON());\n }\n if (Array.isArray(this.openingHours)) {\n data[\"openingHours\"] = [];\n for (let item of this.openingHours)\n data[\"openingHours\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): GeoObjectDto {\n throw new Error(\"The abstract class 'GeoObjectDto' cannot be instantiated.\");\n }\n}\n\nexport interface IGeoObjectDto extends IItemDto {\n addresses: Address[];\n openingHours: TimeSeriesDto[];\n}\n\nexport class GeoPlaceDto extends GeoObjectDto implements IGeoPlaceDto {\n location?: PointDto | undefined;\n\n constructor(data?: IGeoPlaceDto) {\n super(data);\n this._discriminator = \"GeoPlaceDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.location = _data[\"location\"] ? PointDto.fromJS(_data[\"location\"]) : undefined;\n }\n }\n\n static override fromJS(data: any): GeoPlaceDto {\n data = typeof data === 'object' ? data : {};\n let result = new GeoPlaceDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"location\"] = this.location ? this.location.toJSON() : undefined;\n super.toJSON(data);\n return data;\n }\n\n clone(): GeoPlaceDto {\n const json = this.toJSON();\n let result = new GeoPlaceDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGeoPlaceDto extends IGeoObjectDto {\n location?: PointDto | undefined;\n}\n\nexport class GeoRouteDto extends GeoObjectDto implements IGeoRouteDto {\n color!: string;\n opacity!: number;\n weight!: number;\n dashArray?: string | undefined;\n route?: LineStringDto | undefined;\n\n constructor(data?: IGeoRouteDto) {\n super(data);\n this._discriminator = \"GeoRouteDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.color = _data[\"color\"];\n this.opacity = _data[\"opacity\"];\n this.weight = _data[\"weight\"];\n this.dashArray = _data[\"dashArray\"];\n this.route = _data[\"route\"] ? LineStringDto.fromJS(_data[\"route\"]) : undefined;\n }\n }\n\n static override fromJS(data: any): GeoRouteDto {\n data = typeof data === 'object' ? data : {};\n let result = new GeoRouteDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"color\"] = this.color;\n data[\"opacity\"] = this.opacity;\n data[\"weight\"] = this.weight;\n data[\"dashArray\"] = this.dashArray;\n data[\"route\"] = this.route ? this.route.toJSON() : undefined;\n super.toJSON(data);\n return data;\n }\n\n clone(): GeoRouteDto {\n const json = this.toJSON();\n let result = new GeoRouteDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGeoRouteDto extends IGeoObjectDto {\n color: string;\n opacity: number;\n weight: number;\n dashArray?: string | undefined;\n route?: LineStringDto | undefined;\n}\n\nexport class GeoAreaDto extends GeoObjectDto implements IGeoAreaDto {\n color!: string;\n opacity!: number;\n weight!: number;\n dashArray?: string | undefined;\n fill!: boolean;\n area?: PolygonDto | undefined;\n\n constructor(data?: IGeoAreaDto) {\n super(data);\n this._discriminator = \"GeoAreaDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.color = _data[\"color\"];\n this.opacity = _data[\"opacity\"];\n this.weight = _data[\"weight\"];\n this.dashArray = _data[\"dashArray\"];\n this.fill = _data[\"fill\"];\n this.area = _data[\"area\"] ? PolygonDto.fromJS(_data[\"area\"]) : undefined;\n }\n }\n\n static override fromJS(data: any): GeoAreaDto {\n data = typeof data === 'object' ? data : {};\n let result = new GeoAreaDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"color\"] = this.color;\n data[\"opacity\"] = this.opacity;\n data[\"weight\"] = this.weight;\n data[\"dashArray\"] = this.dashArray;\n data[\"fill\"] = this.fill;\n data[\"area\"] = this.area ? this.area.toJSON() : undefined;\n super.toJSON(data);\n return data;\n }\n\n clone(): GeoAreaDto {\n const json = this.toJSON();\n let result = new GeoAreaDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGeoAreaDto extends IGeoObjectDto {\n color: string;\n opacity: number;\n weight: number;\n dashArray?: string | undefined;\n fill: boolean;\n area?: PolygonDto | undefined;\n}\n\nexport class NewsArticleDto extends ItemDto implements INewsArticleDto {\n readingTime!: number;\n shareLink?: string | undefined;\n\n constructor(data?: INewsArticleDto) {\n super(data);\n this._discriminator = \"NewsArticleDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.readingTime = _data[\"readingTime\"];\n this.shareLink = _data[\"shareLink\"];\n }\n }\n\n static override fromJS(data: any): NewsArticleDto {\n data = typeof data === 'object' ? data : {};\n let result = new NewsArticleDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"readingTime\"] = this.readingTime;\n data[\"shareLink\"] = this.shareLink;\n super.toJSON(data);\n return data;\n }\n\n clone(): NewsArticleDto {\n const json = this.toJSON();\n let result = new NewsArticleDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface INewsArticleDto extends IItemDto {\n readingTime: number;\n shareLink?: string | undefined;\n}\n\nexport class GalleryAlbumDto extends ItemDto implements IGalleryAlbumDto {\n pictures!: GalleryImage[];\n\n constructor(data?: IGalleryAlbumDto) {\n super(data);\n if (!data) {\n this.pictures = [];\n }\n this._discriminator = \"GalleryAlbumDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"pictures\"])) {\n this.pictures = [] as any;\n for (let item of _data[\"pictures\"])\n this.pictures!.push(GalleryImage.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): GalleryAlbumDto {\n data = typeof data === 'object' ? data : {};\n let result = new GalleryAlbumDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.pictures)) {\n data[\"pictures\"] = [];\n for (let item of this.pictures)\n data[\"pictures\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): GalleryAlbumDto {\n const json = this.toJSON();\n let result = new GalleryAlbumDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGalleryAlbumDto extends IItemDto {\n pictures: GalleryImage[];\n}\n\nexport class ProblemDefectDto extends ItemDto implements IProblemDefectDto {\n creator!: string;\n address?: Address | undefined;\n comments!: ProblemCommentDto[];\n pictures!: GalleryImage[];\n location?: PointDto | undefined;\n status!: DefectStatus;\n\n constructor(data?: IProblemDefectDto) {\n super(data);\n if (!data) {\n this.comments = [];\n this.pictures = [];\n }\n this._discriminator = \"ProblemDefectDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.creator = _data[\"creator\"];\n this.address = _data[\"address\"] ? Address.fromJS(_data[\"address\"]) : undefined;\n if (Array.isArray(_data[\"comments\"])) {\n this.comments = [] as any;\n for (let item of _data[\"comments\"])\n this.comments!.push(ProblemCommentDto.fromJS(item));\n }\n if (Array.isArray(_data[\"pictures\"])) {\n this.pictures = [] as any;\n for (let item of _data[\"pictures\"])\n this.pictures!.push(GalleryImage.fromJS(item));\n }\n this.location = _data[\"location\"] ? PointDto.fromJS(_data[\"location\"]) : undefined;\n this.status = _data[\"status\"];\n }\n }\n\n static override fromJS(data: any): ProblemDefectDto {\n data = typeof data === 'object' ? data : {};\n if (data[\"discriminator\"] === \"PublicProblemDefectDetailsDto\") {\n let result = new PublicProblemDefectDetailsDto();\n result.init(data);\n return result;\n }\n let result = new ProblemDefectDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"creator\"] = this.creator;\n data[\"address\"] = this.address ? this.address.toJSON() : undefined;\n if (Array.isArray(this.comments)) {\n data[\"comments\"] = [];\n for (let item of this.comments)\n data[\"comments\"].push(item.toJSON());\n }\n if (Array.isArray(this.pictures)) {\n data[\"pictures\"] = [];\n for (let item of this.pictures)\n data[\"pictures\"].push(item.toJSON());\n }\n data[\"location\"] = this.location ? this.location.toJSON() : undefined;\n data[\"status\"] = this.status;\n super.toJSON(data);\n return data;\n }\n\n clone(): ProblemDefectDto {\n const json = this.toJSON();\n let result = new ProblemDefectDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IProblemDefectDto extends IItemDto {\n creator: string;\n address?: Address | undefined;\n comments: ProblemCommentDto[];\n pictures: GalleryImage[];\n location?: PointDto | undefined;\n status: DefectStatus;\n}\n\nexport class ProblemCommentDto extends ItemDto implements IProblemCommentDto {\n creator!: string;\n createdByCurrentUser!: boolean;\n createdInBackend!: boolean;\n\n constructor(data?: IProblemCommentDto) {\n super(data);\n this._discriminator = \"ProblemCommentDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.creator = _data[\"creator\"];\n this.createdByCurrentUser = _data[\"createdByCurrentUser\"];\n this.createdInBackend = _data[\"createdInBackend\"];\n }\n }\n\n static override fromJS(data: any): ProblemCommentDto {\n data = typeof data === 'object' ? data : {};\n let result = new ProblemCommentDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"creator\"] = this.creator;\n data[\"createdByCurrentUser\"] = this.createdByCurrentUser;\n data[\"createdInBackend\"] = this.createdInBackend;\n super.toJSON(data);\n return data;\n }\n\n clone(): ProblemCommentDto {\n const json = this.toJSON();\n let result = new ProblemCommentDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IProblemCommentDto extends IItemDto {\n creator: string;\n createdByCurrentUser: boolean;\n createdInBackend: boolean;\n}\n\nexport class CalendarEventDto extends ItemDto implements ICalendarEventDto {\n shareLink?: string | undefined;\n fromDate!: Date;\n fromTime?: string | undefined;\n untilDate!: Date;\n untilTime?: string | undefined;\n addresses!: Address[];\n\n constructor(data?: ICalendarEventDto) {\n super(data);\n if (!data) {\n this.addresses = [];\n }\n this._discriminator = \"CalendarEventDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.shareLink = _data[\"shareLink\"];\n this.fromDate = _data[\"fromDate\"] ? new Date(_data[\"fromDate\"].toString()) : undefined;\n this.fromTime = _data[\"fromTime\"];\n this.untilDate = _data[\"untilDate\"] ? new Date(_data[\"untilDate\"].toString()) : undefined;\n this.untilTime = _data[\"untilTime\"];\n if (Array.isArray(_data[\"addresses\"])) {\n this.addresses = [] as any;\n for (let item of _data[\"addresses\"])\n this.addresses!.push(Address.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): CalendarEventDto {\n data = typeof data === 'object' ? data : {};\n let result = new CalendarEventDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"shareLink\"] = this.shareLink;\n data[\"fromDate\"] = this.fromDate ? formatDate(this.fromDate) : undefined;\n data[\"fromTime\"] = this.fromTime;\n data[\"untilDate\"] = this.untilDate ? formatDate(this.untilDate) : undefined;\n data[\"untilTime\"] = this.untilTime;\n if (Array.isArray(this.addresses)) {\n data[\"addresses\"] = [];\n for (let item of this.addresses)\n data[\"addresses\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): CalendarEventDto {\n const json = this.toJSON();\n let result = new CalendarEventDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICalendarEventDto extends IItemDto {\n shareLink?: string | undefined;\n fromDate: Date;\n fromTime?: string | undefined;\n untilDate: Date;\n untilTime?: string | undefined;\n addresses: Address[];\n}\n\nexport class DatabaseObjectDto extends ItemDto implements IDatabaseObjectDto {\n databaseObjectTypeId!: number;\n fields!: FieldGroupValuesDto[];\n communication?: Address[] | undefined;\n addresses?: Address[] | undefined;\n openingHours?: TimeSeriesDto[] | undefined;\n\n constructor(data?: IDatabaseObjectDto) {\n super(data);\n if (!data) {\n this.fields = [];\n }\n this._discriminator = \"DatabaseObjectDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.databaseObjectTypeId = _data[\"databaseObjectTypeId\"];\n if (Array.isArray(_data[\"fields\"])) {\n this.fields = [] as any;\n for (let item of _data[\"fields\"])\n this.fields!.push(FieldGroupValuesDto.fromJS(item));\n }\n if (Array.isArray(_data[\"communication\"])) {\n this.communication = [] as any;\n for (let item of _data[\"communication\"])\n this.communication!.push(Address.fromJS(item));\n }\n if (Array.isArray(_data[\"addresses\"])) {\n this.addresses = [] as any;\n for (let item of _data[\"addresses\"])\n this.addresses!.push(Address.fromJS(item));\n }\n if (Array.isArray(_data[\"openingHours\"])) {\n this.openingHours = [] as any;\n for (let item of _data[\"openingHours\"])\n this.openingHours!.push(TimeSeriesDto.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): DatabaseObjectDto {\n data = typeof data === 'object' ? data : {};\n let result = new DatabaseObjectDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"databaseObjectTypeId\"] = this.databaseObjectTypeId;\n if (Array.isArray(this.fields)) {\n data[\"fields\"] = [];\n for (let item of this.fields)\n data[\"fields\"].push(item.toJSON());\n }\n if (Array.isArray(this.communication)) {\n data[\"communication\"] = [];\n for (let item of this.communication)\n data[\"communication\"].push(item.toJSON());\n }\n if (Array.isArray(this.addresses)) {\n data[\"addresses\"] = [];\n for (let item of this.addresses)\n data[\"addresses\"].push(item.toJSON());\n }\n if (Array.isArray(this.openingHours)) {\n data[\"openingHours\"] = [];\n for (let item of this.openingHours)\n data[\"openingHours\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): DatabaseObjectDto {\n const json = this.toJSON();\n let result = new DatabaseObjectDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDatabaseObjectDto extends IItemDto {\n databaseObjectTypeId: number;\n fields: FieldGroupValuesDto[];\n communication?: Address[] | undefined;\n addresses?: Address[] | undefined;\n openingHours?: TimeSeriesDto[] | undefined;\n}\n\nexport class DirectoryOrgUnitDto extends ItemDto implements IDirectoryOrgUnitDto {\n communication!: Address[];\n addresses!: Address[];\n openingHours!: TimeSeriesDto[];\n persons!: DirectoryPersonTeaserDto[];\n subOrgUnits!: DirectoryOrgUnitTeaserDto[];\n services!: DirectoryServiceTeaserDto[];\n\n constructor(data?: IDirectoryOrgUnitDto) {\n super(data);\n if (!data) {\n this.communication = [];\n this.addresses = [];\n this.openingHours = [];\n this.persons = [];\n this.subOrgUnits = [];\n this.services = [];\n }\n this._discriminator = \"DirectoryOrgUnitDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"communication\"])) {\n this.communication = [] as any;\n for (let item of _data[\"communication\"])\n this.communication!.push(Address.fromJS(item));\n }\n if (Array.isArray(_data[\"addresses\"])) {\n this.addresses = [] as any;\n for (let item of _data[\"addresses\"])\n this.addresses!.push(Address.fromJS(item));\n }\n if (Array.isArray(_data[\"openingHours\"])) {\n this.openingHours = [] as any;\n for (let item of _data[\"openingHours\"])\n this.openingHours!.push(TimeSeriesDto.fromJS(item));\n }\n if (Array.isArray(_data[\"persons\"])) {\n this.persons = [] as any;\n for (let item of _data[\"persons\"])\n this.persons!.push(DirectoryPersonTeaserDto.fromJS(item));\n }\n if (Array.isArray(_data[\"subOrgUnits\"])) {\n this.subOrgUnits = [] as any;\n for (let item of _data[\"subOrgUnits\"])\n this.subOrgUnits!.push(DirectoryOrgUnitTeaserDto.fromJS(item));\n }\n if (Array.isArray(_data[\"services\"])) {\n this.services = [] as any;\n for (let item of _data[\"services\"])\n this.services!.push(DirectoryServiceTeaserDto.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): DirectoryOrgUnitDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectoryOrgUnitDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.communication)) {\n data[\"communication\"] = [];\n for (let item of this.communication)\n data[\"communication\"].push(item.toJSON());\n }\n if (Array.isArray(this.addresses)) {\n data[\"addresses\"] = [];\n for (let item of this.addresses)\n data[\"addresses\"].push(item.toJSON());\n }\n if (Array.isArray(this.openingHours)) {\n data[\"openingHours\"] = [];\n for (let item of this.openingHours)\n data[\"openingHours\"].push(item.toJSON());\n }\n if (Array.isArray(this.persons)) {\n data[\"persons\"] = [];\n for (let item of this.persons)\n data[\"persons\"].push(item.toJSON());\n }\n if (Array.isArray(this.subOrgUnits)) {\n data[\"subOrgUnits\"] = [];\n for (let item of this.subOrgUnits)\n data[\"subOrgUnits\"].push(item.toJSON());\n }\n if (Array.isArray(this.services)) {\n data[\"services\"] = [];\n for (let item of this.services)\n data[\"services\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): DirectoryOrgUnitDto {\n const json = this.toJSON();\n let result = new DirectoryOrgUnitDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectoryOrgUnitDto extends IItemDto {\n communication: Address[];\n addresses: Address[];\n openingHours: TimeSeriesDto[];\n persons: DirectoryPersonTeaserDto[];\n subOrgUnits: DirectoryOrgUnitTeaserDto[];\n services: DirectoryServiceTeaserDto[];\n}\n\nexport class DirectoryPersonDto extends ItemDto implements IDirectoryPersonDto {\n salutation?: string | undefined;\n firstName?: string | undefined;\n lastName?: string | undefined;\n function?: Node | undefined;\n position?: Node | undefined;\n communication!: Address[];\n addresses!: Address[];\n officeHours!: TimeSeriesDto[];\n orgUnits!: DirectoryOrgUnitTeaserDto[];\n services!: DirectoryServiceTeaserDto[];\n\n constructor(data?: IDirectoryPersonDto) {\n super(data);\n if (!data) {\n this.communication = [];\n this.addresses = [];\n this.officeHours = [];\n this.orgUnits = [];\n this.services = [];\n }\n this._discriminator = \"DirectoryPersonDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.salutation = _data[\"salutation\"];\n this.firstName = _data[\"firstName\"];\n this.lastName = _data[\"lastName\"];\n this.function = _data[\"function\"] ? Node.fromJS(_data[\"function\"]) : undefined;\n this.position = _data[\"position\"] ? Node.fromJS(_data[\"position\"]) : undefined;\n if (Array.isArray(_data[\"communication\"])) {\n this.communication = [] as any;\n for (let item of _data[\"communication\"])\n this.communication!.push(Address.fromJS(item));\n }\n if (Array.isArray(_data[\"addresses\"])) {\n this.addresses = [] as any;\n for (let item of _data[\"addresses\"])\n this.addresses!.push(Address.fromJS(item));\n }\n if (Array.isArray(_data[\"officeHours\"])) {\n this.officeHours = [] as any;\n for (let item of _data[\"officeHours\"])\n this.officeHours!.push(TimeSeriesDto.fromJS(item));\n }\n if (Array.isArray(_data[\"orgUnits\"])) {\n this.orgUnits = [] as any;\n for (let item of _data[\"orgUnits\"])\n this.orgUnits!.push(DirectoryOrgUnitTeaserDto.fromJS(item));\n }\n if (Array.isArray(_data[\"services\"])) {\n this.services = [] as any;\n for (let item of _data[\"services\"])\n this.services!.push(DirectoryServiceTeaserDto.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): DirectoryPersonDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectoryPersonDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"salutation\"] = this.salutation;\n data[\"firstName\"] = this.firstName;\n data[\"lastName\"] = this.lastName;\n data[\"function\"] = this.function ? this.function.toJSON() : undefined;\n data[\"position\"] = this.position ? this.position.toJSON() : undefined;\n if (Array.isArray(this.communication)) {\n data[\"communication\"] = [];\n for (let item of this.communication)\n data[\"communication\"].push(item.toJSON());\n }\n if (Array.isArray(this.addresses)) {\n data[\"addresses\"] = [];\n for (let item of this.addresses)\n data[\"addresses\"].push(item.toJSON());\n }\n if (Array.isArray(this.officeHours)) {\n data[\"officeHours\"] = [];\n for (let item of this.officeHours)\n data[\"officeHours\"].push(item.toJSON());\n }\n if (Array.isArray(this.orgUnits)) {\n data[\"orgUnits\"] = [];\n for (let item of this.orgUnits)\n data[\"orgUnits\"].push(item.toJSON());\n }\n if (Array.isArray(this.services)) {\n data[\"services\"] = [];\n for (let item of this.services)\n data[\"services\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): DirectoryPersonDto {\n const json = this.toJSON();\n let result = new DirectoryPersonDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectoryPersonDto extends IItemDto {\n salutation?: string | undefined;\n firstName?: string | undefined;\n lastName?: string | undefined;\n function?: Node | undefined;\n position?: Node | undefined;\n communication: Address[];\n addresses: Address[];\n officeHours: TimeSeriesDto[];\n orgUnits: DirectoryOrgUnitTeaserDto[];\n services: DirectoryServiceTeaserDto[];\n}\n\nexport class DirectoryServiceDto extends ItemDto implements IDirectoryServiceDto {\n situations!: DirectorySituationTeaserDto[];\n persons!: DirectoryPersonTeaserDto[];\n orgUnits!: DirectoryOrgUnitTeaserDto[];\n forms!: DirectoryFormTeaserDto[];\n processes!: DirectoryProcessTeaserDto[];\n\n constructor(data?: IDirectoryServiceDto) {\n super(data);\n if (!data) {\n this.situations = [];\n this.persons = [];\n this.orgUnits = [];\n this.forms = [];\n this.processes = [];\n }\n this._discriminator = \"DirectoryServiceDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"situations\"])) {\n this.situations = [] as any;\n for (let item of _data[\"situations\"])\n this.situations!.push(DirectorySituationTeaserDto.fromJS(item));\n }\n if (Array.isArray(_data[\"persons\"])) {\n this.persons = [] as any;\n for (let item of _data[\"persons\"])\n this.persons!.push(DirectoryPersonTeaserDto.fromJS(item));\n }\n if (Array.isArray(_data[\"orgUnits\"])) {\n this.orgUnits = [] as any;\n for (let item of _data[\"orgUnits\"])\n this.orgUnits!.push(DirectoryOrgUnitTeaserDto.fromJS(item));\n }\n if (Array.isArray(_data[\"forms\"])) {\n this.forms = [] as any;\n for (let item of _data[\"forms\"])\n this.forms!.push(DirectoryFormTeaserDto.fromJS(item));\n }\n if (Array.isArray(_data[\"processes\"])) {\n this.processes = [] as any;\n for (let item of _data[\"processes\"])\n this.processes!.push(DirectoryProcessTeaserDto.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): DirectoryServiceDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectoryServiceDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.situations)) {\n data[\"situations\"] = [];\n for (let item of this.situations)\n data[\"situations\"].push(item.toJSON());\n }\n if (Array.isArray(this.persons)) {\n data[\"persons\"] = [];\n for (let item of this.persons)\n data[\"persons\"].push(item.toJSON());\n }\n if (Array.isArray(this.orgUnits)) {\n data[\"orgUnits\"] = [];\n for (let item of this.orgUnits)\n data[\"orgUnits\"].push(item.toJSON());\n }\n if (Array.isArray(this.forms)) {\n data[\"forms\"] = [];\n for (let item of this.forms)\n data[\"forms\"].push(item.toJSON());\n }\n if (Array.isArray(this.processes)) {\n data[\"processes\"] = [];\n for (let item of this.processes)\n data[\"processes\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): DirectoryServiceDto {\n const json = this.toJSON();\n let result = new DirectoryServiceDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectoryServiceDto extends IItemDto {\n situations: DirectorySituationTeaserDto[];\n persons: DirectoryPersonTeaserDto[];\n orgUnits: DirectoryOrgUnitTeaserDto[];\n forms: DirectoryFormTeaserDto[];\n processes: DirectoryProcessTeaserDto[];\n}\n\nexport class DirectorySituationDto extends ItemDto implements IDirectorySituationDto {\n services!: DirectoryServiceTeaserDto[];\n subSituations!: DirectorySituationTeaserDto[];\n\n constructor(data?: IDirectorySituationDto) {\n super(data);\n if (!data) {\n this.services = [];\n this.subSituations = [];\n }\n this._discriminator = \"DirectorySituationDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"services\"])) {\n this.services = [] as any;\n for (let item of _data[\"services\"])\n this.services!.push(DirectoryServiceTeaserDto.fromJS(item));\n }\n if (Array.isArray(_data[\"subSituations\"])) {\n this.subSituations = [] as any;\n for (let item of _data[\"subSituations\"])\n this.subSituations!.push(DirectorySituationTeaserDto.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): DirectorySituationDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectorySituationDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.services)) {\n data[\"services\"] = [];\n for (let item of this.services)\n data[\"services\"].push(item.toJSON());\n }\n if (Array.isArray(this.subSituations)) {\n data[\"subSituations\"] = [];\n for (let item of this.subSituations)\n data[\"subSituations\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): DirectorySituationDto {\n const json = this.toJSON();\n let result = new DirectorySituationDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectorySituationDto extends IItemDto {\n services: DirectoryServiceTeaserDto[];\n subSituations: DirectorySituationTeaserDto[];\n}\n\nexport class InteractionFormDto extends ItemDto implements IInteractionFormDto {\n configuration!: InteractionFormConfiguration;\n formConfirmationHtml!: string;\n\n constructor(data?: IInteractionFormDto) {\n super(data);\n if (!data) {\n this.configuration = new InteractionFormConfiguration();\n }\n this._discriminator = \"InteractionFormDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.configuration = _data[\"configuration\"] ? InteractionFormConfiguration.fromJS(_data[\"configuration\"]) : new InteractionFormConfiguration();\n this.formConfirmationHtml = _data[\"formConfirmationHtml\"];\n }\n }\n\n static override fromJS(data: any): InteractionFormDto {\n data = typeof data === 'object' ? data : {};\n let result = new InteractionFormDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"configuration\"] = this.configuration ? this.configuration.toJSON() : undefined;\n data[\"formConfirmationHtml\"] = this.formConfirmationHtml;\n super.toJSON(data);\n return data;\n }\n\n clone(): InteractionFormDto {\n const json = this.toJSON();\n let result = new InteractionFormDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IInteractionFormDto extends IItemDto {\n configuration: InteractionFormConfiguration;\n formConfirmationHtml: string;\n}\n\nexport class InteractionFormConfiguration implements IInteractionFormConfiguration {\n recipientEmailAddress!: string;\n recipientEmailSubject!: string;\n recipientEmailDocument!: Node;\n senderEmailAddressFieldId?: string | undefined;\n senderEmailSubject!: string;\n senderEmailDocument!: Node;\n confirmationPageDocument!: Node;\n pages!: InteractionFormPage[];\n fields!: { [key: string]: InteractionFormField; };\n\n constructor(data?: IInteractionFormConfiguration) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.recipientEmailDocument = new Node();\n this.senderEmailDocument = new Node();\n this.confirmationPageDocument = new Node();\n this.pages = [];\n this.fields = {};\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.recipientEmailAddress = _data[\"recipientEmailAddress\"];\n this.recipientEmailSubject = _data[\"recipientEmailSubject\"];\n this.recipientEmailDocument = _data[\"recipientEmailDocument\"] ? Node.fromJS(_data[\"recipientEmailDocument\"]) : new Node();\n this.senderEmailAddressFieldId = _data[\"senderEmailAddressFieldId\"];\n this.senderEmailSubject = _data[\"senderEmailSubject\"];\n this.senderEmailDocument = _data[\"senderEmailDocument\"] ? Node.fromJS(_data[\"senderEmailDocument\"]) : new Node();\n this.confirmationPageDocument = _data[\"confirmationPageDocument\"] ? Node.fromJS(_data[\"confirmationPageDocument\"]) : new Node();\n if (Array.isArray(_data[\"pages\"])) {\n this.pages = [] as any;\n for (let item of _data[\"pages\"])\n this.pages!.push(InteractionFormPage.fromJS(item));\n }\n if (_data[\"fields\"]) {\n this.fields = {} as any;\n for (let key in _data[\"fields\"]) {\n if (_data[\"fields\"].hasOwnProperty(key))\n (this.fields)![key] = _data[\"fields\"][key] ? InteractionFormField.fromJS(_data[\"fields\"][key]) : new InteractionFormField();\n }\n }\n }\n }\n\n static fromJS(data: any): InteractionFormConfiguration {\n data = typeof data === 'object' ? data : {};\n let result = new InteractionFormConfiguration();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"recipientEmailAddress\"] = this.recipientEmailAddress;\n data[\"recipientEmailSubject\"] = this.recipientEmailSubject;\n data[\"recipientEmailDocument\"] = this.recipientEmailDocument ? this.recipientEmailDocument.toJSON() : undefined;\n data[\"senderEmailAddressFieldId\"] = this.senderEmailAddressFieldId;\n data[\"senderEmailSubject\"] = this.senderEmailSubject;\n data[\"senderEmailDocument\"] = this.senderEmailDocument ? this.senderEmailDocument.toJSON() : undefined;\n data[\"confirmationPageDocument\"] = this.confirmationPageDocument ? this.confirmationPageDocument.toJSON() : undefined;\n if (Array.isArray(this.pages)) {\n data[\"pages\"] = [];\n for (let item of this.pages)\n data[\"pages\"].push(item.toJSON());\n }\n if (this.fields) {\n data[\"fields\"] = {};\n for (let key in this.fields) {\n if (this.fields.hasOwnProperty(key))\n (data[\"fields\"])[key] = this.fields[key] ? this.fields[key].toJSON() : undefined;\n }\n }\n return data;\n }\n\n clone(): InteractionFormConfiguration {\n const json = this.toJSON();\n let result = new InteractionFormConfiguration();\n result.init(json);\n return result;\n }\n}\n\nexport interface IInteractionFormConfiguration {\n recipientEmailAddress: string;\n recipientEmailSubject: string;\n recipientEmailDocument: Node;\n senderEmailAddressFieldId?: string | undefined;\n senderEmailSubject: string;\n senderEmailDocument: Node;\n confirmationPageDocument: Node;\n pages: InteractionFormPage[];\n fields: { [key: string]: InteractionFormField; };\n}\n\nexport class InteractionFormPage implements IInteractionFormPage {\n name!: string;\n rows!: InteractionFormRow[];\n condition?: InteractionFormCondition | undefined;\n\n constructor(data?: IInteractionFormPage) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.rows = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n if (Array.isArray(_data[\"rows\"])) {\n this.rows = [] as any;\n for (let item of _data[\"rows\"])\n this.rows!.push(InteractionFormRow.fromJS(item));\n }\n this.condition = _data[\"condition\"] ? InteractionFormCondition.fromJS(_data[\"condition\"]) : undefined;\n }\n }\n\n static fromJS(data: any): InteractionFormPage {\n data = typeof data === 'object' ? data : {};\n let result = new InteractionFormPage();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n if (Array.isArray(this.rows)) {\n data[\"rows\"] = [];\n for (let item of this.rows)\n data[\"rows\"].push(item.toJSON());\n }\n data[\"condition\"] = this.condition ? this.condition.toJSON() : undefined;\n return data;\n }\n\n clone(): InteractionFormPage {\n const json = this.toJSON();\n let result = new InteractionFormPage();\n result.init(json);\n return result;\n }\n}\n\nexport interface IInteractionFormPage {\n name: string;\n rows: InteractionFormRow[];\n condition?: InteractionFormCondition | undefined;\n}\n\nexport class InteractionFormRow implements IInteractionFormRow {\n columns!: InteractionFormColumn[];\n\n constructor(data?: IInteractionFormRow) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.columns = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"columns\"])) {\n this.columns = [] as any;\n for (let item of _data[\"columns\"])\n this.columns!.push(InteractionFormColumn.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): InteractionFormRow {\n data = typeof data === 'object' ? data : {};\n let result = new InteractionFormRow();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.columns)) {\n data[\"columns\"] = [];\n for (let item of this.columns)\n data[\"columns\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): InteractionFormRow {\n const json = this.toJSON();\n let result = new InteractionFormRow();\n result.init(json);\n return result;\n }\n}\n\nexport interface IInteractionFormRow {\n columns: InteractionFormColumn[];\n}\n\nexport class InteractionFormColumn implements IInteractionFormColumn {\n width!: number;\n field?: InteractionFormField | undefined;\n\n constructor(data?: IInteractionFormColumn) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.width = _data[\"width\"];\n this.field = _data[\"field\"] ? InteractionFormField.fromJS(_data[\"field\"]) : undefined;\n }\n }\n\n static fromJS(data: any): InteractionFormColumn {\n data = typeof data === 'object' ? data : {};\n let result = new InteractionFormColumn();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"width\"] = this.width;\n data[\"field\"] = this.field ? this.field.toJSON() : undefined;\n return data;\n }\n\n clone(): InteractionFormColumn {\n const json = this.toJSON();\n let result = new InteractionFormColumn();\n result.init(json);\n return result;\n }\n}\n\nexport interface IInteractionFormColumn {\n width: number;\n field?: InteractionFormField | undefined;\n}\n\nexport class InteractionFormField implements IInteractionFormField {\n id?: string | undefined;\n name!: string;\n internalName?: string | undefined;\n description?: string | undefined;\n type!: FormFieldType;\n autocompleteType?: AutocompleteType | undefined;\n required!: boolean;\n placeholder?: string | undefined;\n document?: Node | undefined;\n minValue?: number | undefined;\n maxValue?: number | undefined;\n minLength?: number | undefined;\n maxLength?: number | undefined;\n acceptMimeTypes?: string | undefined;\n regEx?: string | undefined;\n condition?: InteractionFormCondition | undefined;\n options?: string[] | undefined;\n likertLabelLeft?: string | undefined;\n likertLabelRight?: string | undefined;\n\n constructor(data?: IInteractionFormField) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.internalName = _data[\"internalName\"];\n this.description = _data[\"description\"];\n this.type = _data[\"type\"];\n this.autocompleteType = _data[\"autocompleteType\"];\n this.required = _data[\"required\"];\n this.placeholder = _data[\"placeholder\"];\n this.document = _data[\"document\"] ? Node.fromJS(_data[\"document\"]) : undefined;\n this.minValue = _data[\"minValue\"];\n this.maxValue = _data[\"maxValue\"];\n this.minLength = _data[\"minLength\"];\n this.maxLength = _data[\"maxLength\"];\n this.acceptMimeTypes = _data[\"acceptMimeTypes\"];\n this.regEx = _data[\"regEx\"];\n this.condition = _data[\"condition\"] ? InteractionFormCondition.fromJS(_data[\"condition\"]) : undefined;\n if (Array.isArray(_data[\"options\"])) {\n this.options = [] as any;\n for (let item of _data[\"options\"])\n this.options!.push(item);\n }\n this.likertLabelLeft = _data[\"likertLabelLeft\"];\n this.likertLabelRight = _data[\"likertLabelRight\"];\n }\n }\n\n static fromJS(data: any): InteractionFormField {\n data = typeof data === 'object' ? data : {};\n let result = new InteractionFormField();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"internalName\"] = this.internalName;\n data[\"description\"] = this.description;\n data[\"type\"] = this.type;\n data[\"autocompleteType\"] = this.autocompleteType;\n data[\"required\"] = this.required;\n data[\"placeholder\"] = this.placeholder;\n data[\"document\"] = this.document ? this.document.toJSON() : undefined;\n data[\"minValue\"] = this.minValue;\n data[\"maxValue\"] = this.maxValue;\n data[\"minLength\"] = this.minLength;\n data[\"maxLength\"] = this.maxLength;\n data[\"acceptMimeTypes\"] = this.acceptMimeTypes;\n data[\"regEx\"] = this.regEx;\n data[\"condition\"] = this.condition ? this.condition.toJSON() : undefined;\n if (Array.isArray(this.options)) {\n data[\"options\"] = [];\n for (let item of this.options)\n data[\"options\"].push(item);\n }\n data[\"likertLabelLeft\"] = this.likertLabelLeft;\n data[\"likertLabelRight\"] = this.likertLabelRight;\n return data;\n }\n\n clone(): InteractionFormField {\n const json = this.toJSON();\n let result = new InteractionFormField();\n result.init(json);\n return result;\n }\n}\n\nexport interface IInteractionFormField {\n id?: string | undefined;\n name: string;\n internalName?: string | undefined;\n description?: string | undefined;\n type: FormFieldType;\n autocompleteType?: AutocompleteType | undefined;\n required: boolean;\n placeholder?: string | undefined;\n document?: Node | undefined;\n minValue?: number | undefined;\n maxValue?: number | undefined;\n minLength?: number | undefined;\n maxLength?: number | undefined;\n acceptMimeTypes?: string | undefined;\n regEx?: string | undefined;\n condition?: InteractionFormCondition | undefined;\n options?: string[] | undefined;\n likertLabelLeft?: string | undefined;\n likertLabelRight?: string | undefined;\n}\n\nexport enum FormFieldType {\n Text = 0,\n TextArea = 1,\n Email = 2,\n TelephoneNumber = 3,\n Number = 4,\n Date = 5,\n File = 6,\n Image = 7,\n Select = 8,\n Checkboxes = 9,\n Radiobuttons = 10,\n Document = 11,\n PriorityList = 12,\n Confirmation = 13,\n Likert = 14,\n}\n\nexport enum AutocompleteType {\n None = 0,\n Name = 1,\n Firstname = 2,\n Lastname = 3,\n Email = 4,\n TelephoneNumber = 5,\n Street = 6,\n City = 7,\n ZipCode = 8,\n Birthday = 9,\n}\n\nexport class InteractionFormCondition implements IInteractionFormCondition {\n condition!: string;\n action!: ConditionAction;\n\n constructor(data?: IInteractionFormCondition) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.condition = _data[\"condition\"];\n this.action = _data[\"action\"];\n }\n }\n\n static fromJS(data: any): InteractionFormCondition {\n data = typeof data === 'object' ? data : {};\n let result = new InteractionFormCondition();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"condition\"] = this.condition;\n data[\"action\"] = this.action;\n return data;\n }\n\n clone(): InteractionFormCondition {\n const json = this.toJSON();\n let result = new InteractionFormCondition();\n result.init(json);\n return result;\n }\n}\n\nexport interface IInteractionFormCondition {\n condition: string;\n action: ConditionAction;\n}\n\nexport enum ConditionAction {\n Hide = 0,\n Show = 1,\n}\n\nexport class BookingReservationSubmittedResponseDto implements IBookingReservationSubmittedResponseDto {\n type!: BookingReservationSubmittedResponseType;\n details!: string;\n\n constructor(data?: IBookingReservationSubmittedResponseDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.type = _data[\"type\"];\n this.details = _data[\"details\"];\n }\n }\n\n static fromJS(data: any): BookingReservationSubmittedResponseDto {\n data = typeof data === 'object' ? data : {};\n let result = new BookingReservationSubmittedResponseDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"details\"] = this.details;\n return data;\n }\n\n clone(): BookingReservationSubmittedResponseDto {\n const json = this.toJSON();\n let result = new BookingReservationSubmittedResponseDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IBookingReservationSubmittedResponseDto {\n type: BookingReservationSubmittedResponseType;\n details: string;\n}\n\nexport enum BookingReservationSubmittedResponseType {\n NoFurtherActionRequired = 0,\n EmailConfirmationNeeded = 1,\n PayPalRedirect = 2,\n}\n\nexport class PublicSubmitBookingReservationCommand implements IPublicSubmitBookingReservationCommand {\n pageId!: number;\n reservationBookableIds!: number[];\n address!: Address;\n\n constructor(data?: IPublicSubmitBookingReservationCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.reservationBookableIds = [];\n this.address = new Address();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n if (Array.isArray(_data[\"reservationBookableIds\"])) {\n this.reservationBookableIds = [] as any;\n for (let item of _data[\"reservationBookableIds\"])\n this.reservationBookableIds!.push(item);\n }\n this.address = _data[\"address\"] ? Address.fromJS(_data[\"address\"]) : new Address();\n }\n }\n\n static fromJS(data: any): PublicSubmitBookingReservationCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicSubmitBookingReservationCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n if (Array.isArray(this.reservationBookableIds)) {\n data[\"reservationBookableIds\"] = [];\n for (let item of this.reservationBookableIds)\n data[\"reservationBookableIds\"].push(item);\n }\n data[\"address\"] = this.address ? this.address.toJSON() : undefined;\n return data;\n }\n\n clone(): PublicSubmitBookingReservationCommand {\n const json = this.toJSON();\n let result = new PublicSubmitBookingReservationCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicSubmitBookingReservationCommand {\n pageId: number;\n reservationBookableIds: number[];\n address: Address;\n}\n\nexport class PublicCreateBookingReservationCommand implements IPublicCreateBookingReservationCommand {\n pageId!: number;\n reservationId!: number;\n token!: string;\n\n constructor(data?: IPublicCreateBookingReservationCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.reservationId = _data[\"reservationId\"];\n this.token = _data[\"token\"];\n }\n }\n\n static fromJS(data: any): PublicCreateBookingReservationCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicCreateBookingReservationCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"reservationId\"] = this.reservationId;\n data[\"token\"] = this.token;\n return data;\n }\n\n clone(): PublicCreateBookingReservationCommand {\n const json = this.toJSON();\n let result = new PublicCreateBookingReservationCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicCreateBookingReservationCommand {\n pageId: number;\n reservationId: number;\n token: string;\n}\n\nexport class CalendarSettingsDto implements ICalendarSettingsDto {\n slugs!: SlugDto[];\n\n constructor(data?: ICalendarSettingsDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.slugs = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"slugs\"])) {\n this.slugs = [] as any;\n for (let item of _data[\"slugs\"])\n this.slugs!.push(SlugDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): CalendarSettingsDto {\n data = typeof data === 'object' ? data : {};\n let result = new CalendarSettingsDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.slugs)) {\n data[\"slugs\"] = [];\n for (let item of this.slugs)\n data[\"slugs\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): CalendarSettingsDto {\n const json = this.toJSON();\n let result = new CalendarSettingsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICalendarSettingsDto {\n slugs: SlugDto[];\n}\n\nexport class SlugDto implements ISlugDto {\n name?: string | undefined;\n slug!: string;\n count!: number;\n\n constructor(data?: ISlugDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.slug = _data[\"slug\"];\n this.count = _data[\"count\"];\n }\n }\n\n static fromJS(data: any): SlugDto {\n data = typeof data === 'object' ? data : {};\n let result = new SlugDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"slug\"] = this.slug;\n data[\"count\"] = this.count;\n return data;\n }\n\n clone(): SlugDto {\n const json = this.toJSON();\n let result = new SlugDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ISlugDto {\n name?: string | undefined;\n slug: string;\n count: number;\n}\n\nexport class PaginatedListOfCalendarEventTeaserDto implements IPaginatedListOfCalendarEventTeaserDto {\n items!: CalendarEventTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfCalendarEventTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(CalendarEventTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfCalendarEventTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfCalendarEventTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfCalendarEventTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfCalendarEventTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfCalendarEventTeaserDto {\n items: CalendarEventTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class CommunicationSettingsDto implements ICommunicationSettingsDto {\n formConfirmationHtml!: string;\n\n constructor(data?: ICommunicationSettingsDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.formConfirmationHtml = _data[\"formConfirmationHtml\"];\n }\n }\n\n static fromJS(data: any): CommunicationSettingsDto {\n data = typeof data === 'object' ? data : {};\n let result = new CommunicationSettingsDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"formConfirmationHtml\"] = this.formConfirmationHtml;\n return data;\n }\n\n clone(): CommunicationSettingsDto {\n const json = this.toJSON();\n let result = new CommunicationSettingsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICommunicationSettingsDto {\n formConfirmationHtml: string;\n}\n\nexport class PublicSubmitCommunicationRecipientCommand implements IPublicSubmitCommunicationRecipientCommand {\n pageId!: number;\n categoryIds!: number[];\n eMail!: string;\n\n constructor(data?: IPublicSubmitCommunicationRecipientCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.categoryIds = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n if (Array.isArray(_data[\"categoryIds\"])) {\n this.categoryIds = [] as any;\n for (let item of _data[\"categoryIds\"])\n this.categoryIds!.push(item);\n }\n this.eMail = _data[\"eMail\"];\n }\n }\n\n static fromJS(data: any): PublicSubmitCommunicationRecipientCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicSubmitCommunicationRecipientCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n if (Array.isArray(this.categoryIds)) {\n data[\"categoryIds\"] = [];\n for (let item of this.categoryIds)\n data[\"categoryIds\"].push(item);\n }\n data[\"eMail\"] = this.eMail;\n return data;\n }\n\n clone(): PublicSubmitCommunicationRecipientCommand {\n const json = this.toJSON();\n let result = new PublicSubmitCommunicationRecipientCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicSubmitCommunicationRecipientCommand {\n pageId: number;\n categoryIds: number[];\n eMail: string;\n}\n\nexport class PublicCreateCommunicationRecipientCommand implements IPublicCreateCommunicationRecipientCommand {\n pageId!: number;\n recipientId!: number;\n token!: string;\n\n constructor(data?: IPublicCreateCommunicationRecipientCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.recipientId = _data[\"recipientId\"];\n this.token = _data[\"token\"];\n }\n }\n\n static fromJS(data: any): PublicCreateCommunicationRecipientCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicCreateCommunicationRecipientCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"recipientId\"] = this.recipientId;\n data[\"token\"] = this.token;\n return data;\n }\n\n clone(): PublicCreateCommunicationRecipientCommand {\n const json = this.toJSON();\n let result = new PublicCreateCommunicationRecipientCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicCreateCommunicationRecipientCommand {\n pageId: number;\n recipientId: number;\n token: string;\n}\n\nexport class PublicDeleteCommunicationRecipientCommand implements IPublicDeleteCommunicationRecipientCommand {\n pageId!: number;\n recipientId!: number;\n token!: string;\n\n constructor(data?: IPublicDeleteCommunicationRecipientCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.recipientId = _data[\"recipientId\"];\n this.token = _data[\"token\"];\n }\n }\n\n static fromJS(data: any): PublicDeleteCommunicationRecipientCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicDeleteCommunicationRecipientCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"recipientId\"] = this.recipientId;\n data[\"token\"] = this.token;\n return data;\n }\n\n clone(): PublicDeleteCommunicationRecipientCommand {\n const json = this.toJSON();\n let result = new PublicDeleteCommunicationRecipientCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicDeleteCommunicationRecipientCommand {\n pageId: number;\n recipientId: number;\n token: string;\n}\n\nexport class DatabaseSettingsDto implements IDatabaseSettingsDto {\n showAllSlug?: string | undefined;\n\n constructor(data?: IDatabaseSettingsDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.showAllSlug = _data[\"showAllSlug\"];\n }\n }\n\n static fromJS(data: any): DatabaseSettingsDto {\n data = typeof data === 'object' ? data : {};\n let result = new DatabaseSettingsDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"showAllSlug\"] = this.showAllSlug;\n return data;\n }\n\n clone(): DatabaseSettingsDto {\n const json = this.toJSON();\n let result = new DatabaseSettingsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDatabaseSettingsDto {\n showAllSlug?: string | undefined;\n}\n\nexport class PaginatedListOfDatabaseObjectTeaserDto implements IPaginatedListOfDatabaseObjectTeaserDto {\n items!: DatabaseObjectTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfDatabaseObjectTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(DatabaseObjectTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfDatabaseObjectTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfDatabaseObjectTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfDatabaseObjectTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfDatabaseObjectTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfDatabaseObjectTeaserDto {\n items: DatabaseObjectTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class FieldFilterDto implements IFieldFilterDto {\n fieldId!: string;\n type!: DatabaseObjectFilterType;\n values!: (string | undefined)[];\n\n constructor(data?: IFieldFilterDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.values = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.fieldId = _data[\"fieldId\"];\n this.type = _data[\"type\"];\n if (Array.isArray(_data[\"values\"])) {\n this.values = [] as any;\n for (let item of _data[\"values\"])\n this.values!.push(item);\n }\n }\n }\n\n static fromJS(data: any): FieldFilterDto {\n data = typeof data === 'object' ? data : {};\n let result = new FieldFilterDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"fieldId\"] = this.fieldId;\n data[\"type\"] = this.type;\n if (Array.isArray(this.values)) {\n data[\"values\"] = [];\n for (let item of this.values)\n data[\"values\"].push(item);\n }\n return data;\n }\n\n clone(): FieldFilterDto {\n const json = this.toJSON();\n let result = new FieldFilterDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IFieldFilterDto {\n fieldId: string;\n type: DatabaseObjectFilterType;\n values: (string | undefined)[];\n}\n\nexport enum DatabaseObjectFilterType {\n Or = 0,\n And = 1,\n Range = 2,\n LessThan = 3,\n GreaterThan = 4,\n}\n\nexport class DatabaseObjectTypeDto implements IDatabaseObjectTypeDto {\n id!: number;\n name!: string;\n enableDocument!: boolean;\n enableAddresses!: boolean;\n enableCommunication!: boolean;\n enableOpeningHours!: boolean;\n fields!: DatabaseObjectTypeFieldGroupDto[];\n\n constructor(data?: IDatabaseObjectTypeDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.fields = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.enableDocument = _data[\"enableDocument\"];\n this.enableAddresses = _data[\"enableAddresses\"];\n this.enableCommunication = _data[\"enableCommunication\"];\n this.enableOpeningHours = _data[\"enableOpeningHours\"];\n if (Array.isArray(_data[\"fields\"])) {\n this.fields = [] as any;\n for (let item of _data[\"fields\"])\n this.fields!.push(DatabaseObjectTypeFieldGroupDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): DatabaseObjectTypeDto {\n data = typeof data === 'object' ? data : {};\n let result = new DatabaseObjectTypeDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"enableDocument\"] = this.enableDocument;\n data[\"enableAddresses\"] = this.enableAddresses;\n data[\"enableCommunication\"] = this.enableCommunication;\n data[\"enableOpeningHours\"] = this.enableOpeningHours;\n if (Array.isArray(this.fields)) {\n data[\"fields\"] = [];\n for (let item of this.fields)\n data[\"fields\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): DatabaseObjectTypeDto {\n const json = this.toJSON();\n let result = new DatabaseObjectTypeDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDatabaseObjectTypeDto {\n id: number;\n name: string;\n enableDocument: boolean;\n enableAddresses: boolean;\n enableCommunication: boolean;\n enableOpeningHours: boolean;\n fields: DatabaseObjectTypeFieldGroupDto[];\n}\n\nexport class DatabaseObjectTypeFieldGroupDto implements IDatabaseObjectTypeFieldGroupDto {\n name!: string;\n fields!: DatabaseObjectTypeFieldDto[];\n\n constructor(data?: IDatabaseObjectTypeFieldGroupDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.fields = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n if (Array.isArray(_data[\"fields\"])) {\n this.fields = [] as any;\n for (let item of _data[\"fields\"])\n this.fields!.push(DatabaseObjectTypeFieldDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): DatabaseObjectTypeFieldGroupDto {\n data = typeof data === 'object' ? data : {};\n let result = new DatabaseObjectTypeFieldGroupDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n if (Array.isArray(this.fields)) {\n data[\"fields\"] = [];\n for (let item of this.fields)\n data[\"fields\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): DatabaseObjectTypeFieldGroupDto {\n const json = this.toJSON();\n let result = new DatabaseObjectTypeFieldGroupDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDatabaseObjectTypeFieldGroupDto {\n name: string;\n fields: DatabaseObjectTypeFieldDto[];\n}\n\nexport class DatabaseObjectTypeFieldDto implements IDatabaseObjectTypeFieldDto {\n id?: string | undefined;\n iconFileUrl?: string | undefined;\n type!: FieldType;\n name!: string;\n unit?: string | undefined;\n restrictToSuggestedValues!: boolean;\n filterOptions!: FilterOptionDto[];\n\n constructor(data?: IDatabaseObjectTypeFieldDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.filterOptions = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.iconFileUrl = _data[\"iconFileUrl\"];\n this.type = _data[\"type\"];\n this.name = _data[\"name\"];\n this.unit = _data[\"unit\"];\n this.restrictToSuggestedValues = _data[\"restrictToSuggestedValues\"];\n if (Array.isArray(_data[\"filterOptions\"])) {\n this.filterOptions = [] as any;\n for (let item of _data[\"filterOptions\"])\n this.filterOptions!.push(FilterOptionDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): DatabaseObjectTypeFieldDto {\n data = typeof data === 'object' ? data : {};\n let result = new DatabaseObjectTypeFieldDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"iconFileUrl\"] = this.iconFileUrl;\n data[\"type\"] = this.type;\n data[\"name\"] = this.name;\n data[\"unit\"] = this.unit;\n data[\"restrictToSuggestedValues\"] = this.restrictToSuggestedValues;\n if (Array.isArray(this.filterOptions)) {\n data[\"filterOptions\"] = [];\n for (let item of this.filterOptions)\n data[\"filterOptions\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): DatabaseObjectTypeFieldDto {\n const json = this.toJSON();\n let result = new DatabaseObjectTypeFieldDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDatabaseObjectTypeFieldDto {\n id?: string | undefined;\n iconFileUrl?: string | undefined;\n type: FieldType;\n name: string;\n unit?: string | undefined;\n restrictToSuggestedValues: boolean;\n filterOptions: FilterOptionDto[];\n}\n\nexport class FilterOptionDto implements IFilterOptionDto {\n label!: string;\n value!: any;\n\n constructor(data?: IFilterOptionDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.label = _data[\"label\"];\n this.value = _data[\"value\"];\n }\n }\n\n static fromJS(data: any): FilterOptionDto {\n data = typeof data === 'object' ? data : {};\n let result = new FilterOptionDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"label\"] = this.label;\n data[\"value\"] = this.value;\n return data;\n }\n\n clone(): FilterOptionDto {\n const json = this.toJSON();\n let result = new FilterOptionDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IFilterOptionDto {\n label: string;\n value: any;\n}\n\nexport enum ComponentType {\n None = 0,\n News = 1,\n Geo = 2,\n Calendar = 3,\n DirectoryForm = 4,\n DirectoryOrgUnit = 5,\n DirectoryPerson = 6,\n DirectoryProcess = 7,\n DirectoryService = 8,\n DirectorySituation = 9,\n Search = 10,\n Database = 11,\n Communication = 12,\n Gallery = 13,\n Problem = 14,\n Weather = 15,\n InteractionForm = 16,\n SubscriptionManager = 17,\n Shop = 18,\n InteractionSurvey = 19,\n Booking = 20,\n}\n\nexport class PaginatedListOfDirectoryFormTeaserDto implements IPaginatedListOfDirectoryFormTeaserDto {\n items!: DirectoryFormTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfDirectoryFormTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(DirectoryFormTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfDirectoryFormTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfDirectoryFormTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfDirectoryFormTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfDirectoryFormTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfDirectoryFormTeaserDto {\n items: DirectoryFormTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class PaginatedListOfDirectoryOrgUnitTeaserDto implements IPaginatedListOfDirectoryOrgUnitTeaserDto {\n items!: DirectoryOrgUnitTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfDirectoryOrgUnitTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(DirectoryOrgUnitTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfDirectoryOrgUnitTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfDirectoryOrgUnitTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfDirectoryOrgUnitTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfDirectoryOrgUnitTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfDirectoryOrgUnitTeaserDto {\n items: DirectoryOrgUnitTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class DirectoryOrgUnitTreeNodeDto implements IDirectoryOrgUnitTreeNodeDto {\n content!: DirectoryOrgUnitTeaserDto;\n expanded!: boolean;\n nodes!: DirectoryOrgUnitTreeNodeDto[];\n depth!: number;\n\n constructor(data?: IDirectoryOrgUnitTreeNodeDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.content = new DirectoryOrgUnitTeaserDto();\n this.nodes = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.content = _data[\"content\"] ? DirectoryOrgUnitTeaserDto.fromJS(_data[\"content\"]) : new DirectoryOrgUnitTeaserDto();\n this.expanded = _data[\"expanded\"];\n if (Array.isArray(_data[\"nodes\"])) {\n this.nodes = [] as any;\n for (let item of _data[\"nodes\"])\n this.nodes!.push(DirectoryOrgUnitTreeNodeDto.fromJS(item));\n }\n this.depth = _data[\"depth\"];\n }\n }\n\n static fromJS(data: any): DirectoryOrgUnitTreeNodeDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectoryOrgUnitTreeNodeDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"content\"] = this.content ? this.content.toJSON() : undefined;\n data[\"expanded\"] = this.expanded;\n if (Array.isArray(this.nodes)) {\n data[\"nodes\"] = [];\n for (let item of this.nodes)\n data[\"nodes\"].push(item.toJSON());\n }\n data[\"depth\"] = this.depth;\n return data;\n }\n\n clone(): DirectoryOrgUnitTreeNodeDto {\n const json = this.toJSON();\n let result = new DirectoryOrgUnitTreeNodeDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectoryOrgUnitTreeNodeDto {\n content: DirectoryOrgUnitTeaserDto;\n expanded: boolean;\n nodes: DirectoryOrgUnitTreeNodeDto[];\n depth: number;\n}\n\nexport class PaginatedListOfDirectoryPersonTeaserDto implements IPaginatedListOfDirectoryPersonTeaserDto {\n items!: DirectoryPersonTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfDirectoryPersonTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(DirectoryPersonTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfDirectoryPersonTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfDirectoryPersonTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfDirectoryPersonTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfDirectoryPersonTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfDirectoryPersonTeaserDto {\n items: DirectoryPersonTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class PaginatedListOfGroupedDirectoryPersonTeaserDto implements IPaginatedListOfGroupedDirectoryPersonTeaserDto {\n items!: GroupedDirectoryPersonTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfGroupedDirectoryPersonTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(GroupedDirectoryPersonTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfGroupedDirectoryPersonTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfGroupedDirectoryPersonTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfGroupedDirectoryPersonTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfGroupedDirectoryPersonTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfGroupedDirectoryPersonTeaserDto {\n items: GroupedDirectoryPersonTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class GroupedDirectoryPersonTeaserDto implements IGroupedDirectoryPersonTeaserDto {\n name?: string | undefined;\n persons!: DirectoryPersonTeaserDto[];\n\n constructor(data?: IGroupedDirectoryPersonTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.persons = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n if (Array.isArray(_data[\"persons\"])) {\n this.persons = [] as any;\n for (let item of _data[\"persons\"])\n this.persons!.push(DirectoryPersonTeaserDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): GroupedDirectoryPersonTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new GroupedDirectoryPersonTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n if (Array.isArray(this.persons)) {\n data[\"persons\"] = [];\n for (let item of this.persons)\n data[\"persons\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): GroupedDirectoryPersonTeaserDto {\n const json = this.toJSON();\n let result = new GroupedDirectoryPersonTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGroupedDirectoryPersonTeaserDto {\n name?: string | undefined;\n persons: DirectoryPersonTeaserDto[];\n}\n\nexport class PaginatedListOfDirectoryServiceTeaserDto implements IPaginatedListOfDirectoryServiceTeaserDto {\n items!: DirectoryServiceTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfDirectoryServiceTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(DirectoryServiceTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfDirectoryServiceTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfDirectoryServiceTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfDirectoryServiceTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfDirectoryServiceTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfDirectoryServiceTeaserDto {\n items: DirectoryServiceTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class PaginatedListOfDirectorySituationTeaserDto implements IPaginatedListOfDirectorySituationTeaserDto {\n items!: DirectorySituationTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfDirectorySituationTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(DirectorySituationTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfDirectorySituationTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfDirectorySituationTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfDirectorySituationTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfDirectorySituationTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfDirectorySituationTeaserDto {\n items: DirectorySituationTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class GallerySettingsDto implements IGallerySettingsDto {\n slugs!: SlugDto[];\n\n constructor(data?: IGallerySettingsDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.slugs = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"slugs\"])) {\n this.slugs = [] as any;\n for (let item of _data[\"slugs\"])\n this.slugs!.push(SlugDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): GallerySettingsDto {\n data = typeof data === 'object' ? data : {};\n let result = new GallerySettingsDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.slugs)) {\n data[\"slugs\"] = [];\n for (let item of this.slugs)\n data[\"slugs\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): GallerySettingsDto {\n const json = this.toJSON();\n let result = new GallerySettingsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGallerySettingsDto {\n slugs: SlugDto[];\n}\n\nexport class PaginatedListOfGalleryAlbumTeaserDto implements IPaginatedListOfGalleryAlbumTeaserDto {\n items!: GalleryAlbumTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfGalleryAlbumTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(GalleryAlbumTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfGalleryAlbumTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfGalleryAlbumTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfGalleryAlbumTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfGalleryAlbumTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfGalleryAlbumTeaserDto {\n items: GalleryAlbumTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport enum GeoCodingFilter {\n Street = 0,\n City = 1,\n}\n\nexport class GeoSettingsDto implements IGeoSettingsDto {\n slugs!: SlugDto[];\n defaultLocation?: PointDto | undefined;\n defaultZoom?: number | undefined;\n\n constructor(data?: IGeoSettingsDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.slugs = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"slugs\"])) {\n this.slugs = [] as any;\n for (let item of _data[\"slugs\"])\n this.slugs!.push(SlugDto.fromJS(item));\n }\n this.defaultLocation = _data[\"defaultLocation\"] ? PointDto.fromJS(_data[\"defaultLocation\"]) : undefined;\n this.defaultZoom = _data[\"defaultZoom\"];\n }\n }\n\n static fromJS(data: any): GeoSettingsDto {\n data = typeof data === 'object' ? data : {};\n let result = new GeoSettingsDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.slugs)) {\n data[\"slugs\"] = [];\n for (let item of this.slugs)\n data[\"slugs\"].push(item.toJSON());\n }\n data[\"defaultLocation\"] = this.defaultLocation ? this.defaultLocation.toJSON() : undefined;\n data[\"defaultZoom\"] = this.defaultZoom;\n return data;\n }\n\n clone(): GeoSettingsDto {\n const json = this.toJSON();\n let result = new GeoSettingsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGeoSettingsDto {\n slugs: SlugDto[];\n defaultLocation?: PointDto | undefined;\n defaultZoom?: number | undefined;\n}\n\nexport class PaginatedListOfGeoObjectTeaserDto implements IPaginatedListOfGeoObjectTeaserDto {\n items!: GeoObjectTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfGeoObjectTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(GeoObjectTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfGeoObjectTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfGeoObjectTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfGeoObjectTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfGeoObjectTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfGeoObjectTeaserDto {\n items: GeoObjectTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class PublicSubmitInteractionFormCommand implements IPublicSubmitInteractionFormCommand {\n pageId!: number;\n formId!: number;\n formData!: { [key: string]: any; };\n\n constructor(data?: IPublicSubmitInteractionFormCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.formData = {};\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.formId = _data[\"formId\"];\n if (_data[\"formData\"]) {\n this.formData = {} as any;\n for (let key in _data[\"formData\"]) {\n if (_data[\"formData\"].hasOwnProperty(key))\n (this.formData)![key] = _data[\"formData\"][key];\n }\n }\n }\n }\n\n static fromJS(data: any): PublicSubmitInteractionFormCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicSubmitInteractionFormCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"formId\"] = this.formId;\n if (this.formData) {\n data[\"formData\"] = {};\n for (let key in this.formData) {\n if (this.formData.hasOwnProperty(key))\n (data[\"formData\"])[key] = (this.formData)[key];\n }\n }\n return data;\n }\n\n clone(): PublicSubmitInteractionFormCommand {\n const json = this.toJSON();\n let result = new PublicSubmitInteractionFormCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicSubmitInteractionFormCommand {\n pageId: number;\n formId: number;\n formData: { [key: string]: any; };\n}\n\nexport class InteractionSurveyDto extends ItemDto implements IInteractionSurveyDto {\n fromDate!: Date;\n fromTime?: string | undefined;\n untilDate!: Date;\n untilTime?: string | undefined;\n configuration!: InteractionSurveyConfiguration;\n formConfirmationHtml!: string;\n\n constructor(data?: IInteractionSurveyDto) {\n super(data);\n if (!data) {\n this.configuration = new InteractionSurveyConfiguration();\n }\n this._discriminator = \"InteractionSurveyDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.fromDate = _data[\"fromDate\"] ? new Date(_data[\"fromDate\"].toString()) : undefined;\n this.fromTime = _data[\"fromTime\"];\n this.untilDate = _data[\"untilDate\"] ? new Date(_data[\"untilDate\"].toString()) : undefined;\n this.untilTime = _data[\"untilTime\"];\n this.configuration = _data[\"configuration\"] ? InteractionSurveyConfiguration.fromJS(_data[\"configuration\"]) : new InteractionSurveyConfiguration();\n this.formConfirmationHtml = _data[\"formConfirmationHtml\"];\n }\n }\n\n static override fromJS(data: any): InteractionSurveyDto {\n data = typeof data === 'object' ? data : {};\n let result = new InteractionSurveyDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"fromDate\"] = this.fromDate ? formatDate(this.fromDate) : undefined;\n data[\"fromTime\"] = this.fromTime;\n data[\"untilDate\"] = this.untilDate ? formatDate(this.untilDate) : undefined;\n data[\"untilTime\"] = this.untilTime;\n data[\"configuration\"] = this.configuration ? this.configuration.toJSON() : undefined;\n data[\"formConfirmationHtml\"] = this.formConfirmationHtml;\n super.toJSON(data);\n return data;\n }\n\n clone(): InteractionSurveyDto {\n const json = this.toJSON();\n let result = new InteractionSurveyDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IInteractionSurveyDto extends IItemDto {\n fromDate: Date;\n fromTime?: string | undefined;\n untilDate: Date;\n untilTime?: string | undefined;\n configuration: InteractionSurveyConfiguration;\n formConfirmationHtml: string;\n}\n\nexport class InteractionSurveyConfiguration extends InteractionFormConfiguration implements IInteractionSurveyConfiguration {\n\n constructor(data?: IInteractionSurveyConfiguration) {\n super(data);\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): InteractionSurveyConfiguration {\n data = typeof data === 'object' ? data : {};\n let result = new InteractionSurveyConfiguration();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): InteractionSurveyConfiguration {\n const json = this.toJSON();\n let result = new InteractionSurveyConfiguration();\n result.init(json);\n return result;\n }\n}\n\nexport interface IInteractionSurveyConfiguration extends IInteractionFormConfiguration {\n}\n\nexport class PublicSubmitInteractionSurveyCommand implements IPublicSubmitInteractionSurveyCommand {\n pageId!: number;\n surveyId!: number;\n surveyData!: { [key: string]: any; };\n\n constructor(data?: IPublicSubmitInteractionSurveyCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.surveyData = {};\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.surveyId = _data[\"surveyId\"];\n if (_data[\"surveyData\"]) {\n this.surveyData = {} as any;\n for (let key in _data[\"surveyData\"]) {\n if (_data[\"surveyData\"].hasOwnProperty(key))\n (this.surveyData)![key] = _data[\"surveyData\"][key];\n }\n }\n }\n }\n\n static fromJS(data: any): PublicSubmitInteractionSurveyCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicSubmitInteractionSurveyCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"surveyId\"] = this.surveyId;\n if (this.surveyData) {\n data[\"surveyData\"] = {};\n for (let key in this.surveyData) {\n if (this.surveyData.hasOwnProperty(key))\n (data[\"surveyData\"])[key] = (this.surveyData)[key];\n }\n }\n return data;\n }\n\n clone(): PublicSubmitInteractionSurveyCommand {\n const json = this.toJSON();\n let result = new PublicSubmitInteractionSurveyCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicSubmitInteractionSurveyCommand {\n pageId: number;\n surveyId: number;\n surveyData: { [key: string]: any; };\n}\n\nexport class NewsSettingsDto implements INewsSettingsDto {\n slugs!: SlugDto[];\n\n constructor(data?: INewsSettingsDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.slugs = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"slugs\"])) {\n this.slugs = [] as any;\n for (let item of _data[\"slugs\"])\n this.slugs!.push(SlugDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): NewsSettingsDto {\n data = typeof data === 'object' ? data : {};\n let result = new NewsSettingsDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.slugs)) {\n data[\"slugs\"] = [];\n for (let item of this.slugs)\n data[\"slugs\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): NewsSettingsDto {\n const json = this.toJSON();\n let result = new NewsSettingsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface INewsSettingsDto {\n slugs: SlugDto[];\n}\n\nexport class PaginatedListOfNewsArticleTeaserDto implements IPaginatedListOfNewsArticleTeaserDto {\n items!: NewsArticleTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfNewsArticleTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(NewsArticleTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfNewsArticleTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfNewsArticleTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfNewsArticleTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfNewsArticleTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfNewsArticleTeaserDto {\n items: NewsArticleTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class DateRangeDto implements IDateRangeDto {\n min!: Date;\n max!: Date;\n years!: number[];\n\n constructor(data?: IDateRangeDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.years = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.min = _data[\"min\"] ? new Date(_data[\"min\"].toString()) : undefined;\n this.max = _data[\"max\"] ? new Date(_data[\"max\"].toString()) : undefined;\n if (Array.isArray(_data[\"years\"])) {\n this.years = [] as any;\n for (let item of _data[\"years\"])\n this.years!.push(item);\n }\n }\n }\n\n static fromJS(data: any): DateRangeDto {\n data = typeof data === 'object' ? data : {};\n let result = new DateRangeDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"min\"] = this.min ? this.min.toISOString() : undefined;\n data[\"max\"] = this.max ? this.max.toISOString() : undefined;\n if (Array.isArray(this.years)) {\n data[\"years\"] = [];\n for (let item of this.years)\n data[\"years\"].push(item);\n }\n return data;\n }\n\n clone(): DateRangeDto {\n const json = this.toJSON();\n let result = new DateRangeDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDateRangeDto {\n min: Date;\n max: Date;\n years: number[];\n}\n\nexport class Typo3PageDto implements ITypo3PageDto {\n id!: number;\n name!: string;\n slug!: string;\n\n constructor(data?: ITypo3PageDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.slug = _data[\"slug\"];\n }\n }\n\n static fromJS(data: any): Typo3PageDto {\n data = typeof data === 'object' ? data : {};\n let result = new Typo3PageDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"slug\"] = this.slug;\n return data;\n }\n\n clone(): Typo3PageDto {\n const json = this.toJSON();\n let result = new Typo3PageDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ITypo3PageDto {\n id: number;\n name: string;\n slug: string;\n}\n\nexport class ProblemSettingsDto implements IProblemSettingsDto {\n defaultLocation?: PointDto | undefined;\n defaultZoom?: number | undefined;\n commentMode!: CommentMode;\n formConfirmationHtml!: string;\n\n constructor(data?: IProblemSettingsDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.defaultLocation = _data[\"defaultLocation\"] ? PointDto.fromJS(_data[\"defaultLocation\"]) : undefined;\n this.defaultZoom = _data[\"defaultZoom\"];\n this.commentMode = _data[\"commentMode\"];\n this.formConfirmationHtml = _data[\"formConfirmationHtml\"];\n }\n }\n\n static fromJS(data: any): ProblemSettingsDto {\n data = typeof data === 'object' ? data : {};\n let result = new ProblemSettingsDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"defaultLocation\"] = this.defaultLocation ? this.defaultLocation.toJSON() : undefined;\n data[\"defaultZoom\"] = this.defaultZoom;\n data[\"commentMode\"] = this.commentMode;\n data[\"formConfirmationHtml\"] = this.formConfirmationHtml;\n return data;\n }\n\n clone(): ProblemSettingsDto {\n const json = this.toJSON();\n let result = new ProblemSettingsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IProblemSettingsDto {\n defaultLocation?: PointDto | undefined;\n defaultZoom?: number | undefined;\n commentMode: CommentMode;\n formConfirmationHtml: string;\n}\n\nexport enum CommentMode {\n Disabled = 0,\n Anonymous = 1,\n Public = 2,\n}\n\nexport class PaginatedListOfProblemDefectTeaserDto implements IPaginatedListOfProblemDefectTeaserDto {\n items!: ProblemDefectTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfProblemDefectTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ProblemDefectTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfProblemDefectTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfProblemDefectTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfProblemDefectTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfProblemDefectTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfProblemDefectTeaserDto {\n items: ProblemDefectTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class PublicSubmitProblemDefectCommand implements IPublicSubmitProblemDefectCommand {\n pageId!: number;\n categoryId!: number;\n creator!: Address;\n name!: string;\n document!: Node;\n pictures?: GalleryImage[] | undefined;\n address?: Address | undefined;\n location?: PointDto | undefined;\n\n constructor(data?: IPublicSubmitProblemDefectCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.creator = new Address();\n this.document = new Node();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.categoryId = _data[\"categoryId\"];\n this.creator = _data[\"creator\"] ? Address.fromJS(_data[\"creator\"]) : new Address();\n this.name = _data[\"name\"];\n this.document = _data[\"document\"] ? Node.fromJS(_data[\"document\"]) : new Node();\n if (Array.isArray(_data[\"pictures\"])) {\n this.pictures = [] as any;\n for (let item of _data[\"pictures\"])\n this.pictures!.push(GalleryImage.fromJS(item));\n }\n this.address = _data[\"address\"] ? Address.fromJS(_data[\"address\"]) : undefined;\n this.location = _data[\"location\"] ? PointDto.fromJS(_data[\"location\"]) : undefined;\n }\n }\n\n static fromJS(data: any): PublicSubmitProblemDefectCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicSubmitProblemDefectCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"categoryId\"] = this.categoryId;\n data[\"creator\"] = this.creator ? this.creator.toJSON() : undefined;\n data[\"name\"] = this.name;\n data[\"document\"] = this.document ? this.document.toJSON() : undefined;\n if (Array.isArray(this.pictures)) {\n data[\"pictures\"] = [];\n for (let item of this.pictures)\n data[\"pictures\"].push(item.toJSON());\n }\n data[\"address\"] = this.address ? this.address.toJSON() : undefined;\n data[\"location\"] = this.location ? this.location.toJSON() : undefined;\n return data;\n }\n\n clone(): PublicSubmitProblemDefectCommand {\n const json = this.toJSON();\n let result = new PublicSubmitProblemDefectCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicSubmitProblemDefectCommand {\n pageId: number;\n categoryId: number;\n creator: Address;\n name: string;\n document: Node;\n pictures?: GalleryImage[] | undefined;\n address?: Address | undefined;\n location?: PointDto | undefined;\n}\n\nexport class PublicCreateProblemDefectCommand implements IPublicCreateProblemDefectCommand {\n pageId!: number;\n defectId!: number;\n token!: string;\n\n constructor(data?: IPublicCreateProblemDefectCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.defectId = _data[\"defectId\"];\n this.token = _data[\"token\"];\n }\n }\n\n static fromJS(data: any): PublicCreateProblemDefectCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicCreateProblemDefectCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"defectId\"] = this.defectId;\n data[\"token\"] = this.token;\n return data;\n }\n\n clone(): PublicCreateProblemDefectCommand {\n const json = this.toJSON();\n let result = new PublicCreateProblemDefectCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicCreateProblemDefectCommand {\n pageId: number;\n defectId: number;\n token: string;\n}\n\nexport class PublicProblemDefectDetailsDto extends ProblemDefectDto implements IPublicProblemDefectDetailsDto {\n categoryId!: number;\n\n constructor(data?: IPublicProblemDefectDetailsDto) {\n super(data);\n this._discriminator = \"PublicProblemDefectDetailsDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.categoryId = _data[\"categoryId\"];\n }\n }\n\n static override fromJS(data: any): PublicProblemDefectDetailsDto {\n data = typeof data === 'object' ? data : {};\n let result = new PublicProblemDefectDetailsDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"categoryId\"] = this.categoryId;\n super.toJSON(data);\n return data;\n }\n\n clone(): PublicProblemDefectDetailsDto {\n const json = this.toJSON();\n let result = new PublicProblemDefectDetailsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicProblemDefectDetailsDto extends IProblemDefectDto {\n categoryId: number;\n}\n\nexport class PublicUpdateProblemDefectCommand implements IPublicUpdateProblemDefectCommand {\n pageId!: number;\n defectId!: number;\n token!: string;\n categoryId!: number;\n name!: string;\n document!: Node;\n pictures!: GalleryImage[];\n address?: Address | undefined;\n location!: PointDto;\n\n constructor(data?: IPublicUpdateProblemDefectCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.document = new Node();\n this.pictures = [];\n this.location = new PointDto();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.defectId = _data[\"defectId\"];\n this.token = _data[\"token\"];\n this.categoryId = _data[\"categoryId\"];\n this.name = _data[\"name\"];\n this.document = _data[\"document\"] ? Node.fromJS(_data[\"document\"]) : new Node();\n if (Array.isArray(_data[\"pictures\"])) {\n this.pictures = [] as any;\n for (let item of _data[\"pictures\"])\n this.pictures!.push(GalleryImage.fromJS(item));\n }\n this.address = _data[\"address\"] ? Address.fromJS(_data[\"address\"]) : undefined;\n this.location = _data[\"location\"] ? PointDto.fromJS(_data[\"location\"]) : new PointDto();\n }\n }\n\n static fromJS(data: any): PublicUpdateProblemDefectCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicUpdateProblemDefectCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"defectId\"] = this.defectId;\n data[\"token\"] = this.token;\n data[\"categoryId\"] = this.categoryId;\n data[\"name\"] = this.name;\n data[\"document\"] = this.document ? this.document.toJSON() : undefined;\n if (Array.isArray(this.pictures)) {\n data[\"pictures\"] = [];\n for (let item of this.pictures)\n data[\"pictures\"].push(item.toJSON());\n }\n data[\"address\"] = this.address ? this.address.toJSON() : undefined;\n data[\"location\"] = this.location ? this.location.toJSON() : undefined;\n return data;\n }\n\n clone(): PublicUpdateProblemDefectCommand {\n const json = this.toJSON();\n let result = new PublicUpdateProblemDefectCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicUpdateProblemDefectCommand {\n pageId: number;\n defectId: number;\n token: string;\n categoryId: number;\n name: string;\n document: Node;\n pictures: GalleryImage[];\n address?: Address | undefined;\n location: PointDto;\n}\n\nexport class PublicSubmitProblemCommentCommand implements IPublicSubmitProblemCommentCommand {\n pageId!: number;\n defectId!: number;\n creator!: Address;\n document!: Node;\n\n constructor(data?: IPublicSubmitProblemCommentCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.creator = new Address();\n this.document = new Node();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.defectId = _data[\"defectId\"];\n this.creator = _data[\"creator\"] ? Address.fromJS(_data[\"creator\"]) : new Address();\n this.document = _data[\"document\"] ? Node.fromJS(_data[\"document\"]) : new Node();\n }\n }\n\n static fromJS(data: any): PublicSubmitProblemCommentCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicSubmitProblemCommentCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"defectId\"] = this.defectId;\n data[\"creator\"] = this.creator ? this.creator.toJSON() : undefined;\n data[\"document\"] = this.document ? this.document.toJSON() : undefined;\n return data;\n }\n\n clone(): PublicSubmitProblemCommentCommand {\n const json = this.toJSON();\n let result = new PublicSubmitProblemCommentCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicSubmitProblemCommentCommand {\n pageId: number;\n defectId: number;\n creator: Address;\n document: Node;\n}\n\nexport class PublicCreateProblemCommentCommand implements IPublicCreateProblemCommentCommand {\n pageId!: number;\n defectId!: number;\n commentId!: number;\n token!: string;\n\n constructor(data?: IPublicCreateProblemCommentCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.defectId = _data[\"defectId\"];\n this.commentId = _data[\"commentId\"];\n this.token = _data[\"token\"];\n }\n }\n\n static fromJS(data: any): PublicCreateProblemCommentCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicCreateProblemCommentCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"defectId\"] = this.defectId;\n data[\"commentId\"] = this.commentId;\n data[\"token\"] = this.token;\n return data;\n }\n\n clone(): PublicCreateProblemCommentCommand {\n const json = this.toJSON();\n let result = new PublicCreateProblemCommentCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicCreateProblemCommentCommand {\n pageId: number;\n defectId: number;\n commentId: number;\n token: string;\n}\n\nexport class PublicUpdateProblemCommentCommand implements IPublicUpdateProblemCommentCommand {\n pageId!: number;\n commentId!: number;\n token!: string;\n document!: Node;\n\n constructor(data?: IPublicUpdateProblemCommentCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.document = new Node();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.commentId = _data[\"commentId\"];\n this.token = _data[\"token\"];\n this.document = _data[\"document\"] ? Node.fromJS(_data[\"document\"]) : new Node();\n }\n }\n\n static fromJS(data: any): PublicUpdateProblemCommentCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicUpdateProblemCommentCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"commentId\"] = this.commentId;\n data[\"token\"] = this.token;\n data[\"document\"] = this.document ? this.document.toJSON() : undefined;\n return data;\n }\n\n clone(): PublicUpdateProblemCommentCommand {\n const json = this.toJSON();\n let result = new PublicUpdateProblemCommentCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicUpdateProblemCommentCommand {\n pageId: number;\n commentId: number;\n token: string;\n document: Node;\n}\n\nexport class PushSubscriptionDto implements IPushSubscriptionDto {\n id!: string;\n subscribedCategories!: CategoryAndModuleNameDto[];\n subscribedLiveItems!: ItemAndModuleNameDto[];\n\n constructor(data?: IPushSubscriptionDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.subscribedCategories = [];\n this.subscribedLiveItems = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n if (Array.isArray(_data[\"subscribedCategories\"])) {\n this.subscribedCategories = [] as any;\n for (let item of _data[\"subscribedCategories\"])\n this.subscribedCategories!.push(CategoryAndModuleNameDto.fromJS(item));\n }\n if (Array.isArray(_data[\"subscribedLiveItems\"])) {\n this.subscribedLiveItems = [] as any;\n for (let item of _data[\"subscribedLiveItems\"])\n this.subscribedLiveItems!.push(ItemAndModuleNameDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): PushSubscriptionDto {\n data = typeof data === 'object' ? data : {};\n let result = new PushSubscriptionDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n if (Array.isArray(this.subscribedCategories)) {\n data[\"subscribedCategories\"] = [];\n for (let item of this.subscribedCategories)\n data[\"subscribedCategories\"].push(item.toJSON());\n }\n if (Array.isArray(this.subscribedLiveItems)) {\n data[\"subscribedLiveItems\"] = [];\n for (let item of this.subscribedLiveItems)\n data[\"subscribedLiveItems\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): PushSubscriptionDto {\n const json = this.toJSON();\n let result = new PushSubscriptionDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPushSubscriptionDto {\n id: string;\n subscribedCategories: CategoryAndModuleNameDto[];\n subscribedLiveItems: ItemAndModuleNameDto[];\n}\n\nexport class CategoryAndModuleNameDto extends CategoryNameDto implements ICategoryAndModuleNameDto {\n moduleId!: number;\n moduleName!: string;\n\n constructor(data?: ICategoryAndModuleNameDto) {\n super(data);\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.moduleId = _data[\"moduleId\"];\n this.moduleName = _data[\"moduleName\"];\n }\n }\n\n static override fromJS(data: any): CategoryAndModuleNameDto {\n data = typeof data === 'object' ? data : {};\n let result = new CategoryAndModuleNameDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"moduleId\"] = this.moduleId;\n data[\"moduleName\"] = this.moduleName;\n super.toJSON(data);\n return data;\n }\n\n clone(): CategoryAndModuleNameDto {\n const json = this.toJSON();\n let result = new CategoryAndModuleNameDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICategoryAndModuleNameDto extends ICategoryNameDto {\n moduleId: number;\n moduleName: string;\n}\n\nexport class ItemNameDto implements IItemNameDto {\n id!: number;\n name!: string;\n\n constructor(data?: IItemNameDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n }\n }\n\n static fromJS(data: any): ItemNameDto {\n data = typeof data === 'object' ? data : {};\n let result = new ItemNameDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n return data;\n }\n\n clone(): ItemNameDto {\n const json = this.toJSON();\n let result = new ItemNameDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IItemNameDto {\n id: number;\n name: string;\n}\n\nexport class ItemAndModuleNameDto extends ItemNameDto implements IItemAndModuleNameDto {\n moduleId!: number;\n moduleName!: string;\n\n constructor(data?: IItemAndModuleNameDto) {\n super(data);\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.moduleId = _data[\"moduleId\"];\n this.moduleName = _data[\"moduleName\"];\n }\n }\n\n static override fromJS(data: any): ItemAndModuleNameDto {\n data = typeof data === 'object' ? data : {};\n let result = new ItemAndModuleNameDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"moduleId\"] = this.moduleId;\n data[\"moduleName\"] = this.moduleName;\n super.toJSON(data);\n return data;\n }\n\n clone(): ItemAndModuleNameDto {\n const json = this.toJSON();\n let result = new ItemAndModuleNameDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IItemAndModuleNameDto extends IItemNameDto {\n moduleId: number;\n moduleName: string;\n}\n\nexport class GroupedCategoryTeasersDto implements IGroupedCategoryTeasersDto {\n type!: ComponentType;\n categories!: CategoryTeaserDto[];\n\n constructor(data?: IGroupedCategoryTeasersDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.categories = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.type = _data[\"type\"];\n if (Array.isArray(_data[\"categories\"])) {\n this.categories = [] as any;\n for (let item of _data[\"categories\"])\n this.categories!.push(CategoryTeaserDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): GroupedCategoryTeasersDto {\n data = typeof data === 'object' ? data : {};\n let result = new GroupedCategoryTeasersDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n if (Array.isArray(this.categories)) {\n data[\"categories\"] = [];\n for (let item of this.categories)\n data[\"categories\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): GroupedCategoryTeasersDto {\n const json = this.toJSON();\n let result = new GroupedCategoryTeasersDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGroupedCategoryTeasersDto {\n type: ComponentType;\n categories: CategoryTeaserDto[];\n}\n\nexport class GetOrCreateEmailPushSubscriptionCommand implements IGetOrCreateEmailPushSubscriptionCommand {\n pageId!: number;\n eMail!: string;\n deviceId?: string | undefined;\n\n constructor(data?: IGetOrCreateEmailPushSubscriptionCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.eMail = _data[\"eMail\"];\n this.deviceId = _data[\"deviceId\"];\n }\n }\n\n static fromJS(data: any): GetOrCreateEmailPushSubscriptionCommand {\n data = typeof data === 'object' ? data : {};\n let result = new GetOrCreateEmailPushSubscriptionCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"eMail\"] = this.eMail;\n data[\"deviceId\"] = this.deviceId;\n return data;\n }\n\n clone(): GetOrCreateEmailPushSubscriptionCommand {\n const json = this.toJSON();\n let result = new GetOrCreateEmailPushSubscriptionCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGetOrCreateEmailPushSubscriptionCommand {\n pageId: number;\n eMail: string;\n deviceId?: string | undefined;\n}\n\nexport class GetOrCreateWebPushSubscriptionCommand implements IGetOrCreateWebPushSubscriptionCommand {\n pageId!: number;\n endpoint!: string;\n keys!: { [key: string]: string; };\n\n constructor(data?: IGetOrCreateWebPushSubscriptionCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.keys = {};\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.endpoint = _data[\"endpoint\"];\n if (_data[\"keys\"]) {\n this.keys = {} as any;\n for (let key in _data[\"keys\"]) {\n if (_data[\"keys\"].hasOwnProperty(key))\n (this.keys)![key] = _data[\"keys\"][key];\n }\n }\n }\n }\n\n static fromJS(data: any): GetOrCreateWebPushSubscriptionCommand {\n data = typeof data === 'object' ? data : {};\n let result = new GetOrCreateWebPushSubscriptionCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"endpoint\"] = this.endpoint;\n if (this.keys) {\n data[\"keys\"] = {};\n for (let key in this.keys) {\n if (this.keys.hasOwnProperty(key))\n (data[\"keys\"])[key] = (this.keys)[key];\n }\n }\n return data;\n }\n\n clone(): GetOrCreateWebPushSubscriptionCommand {\n const json = this.toJSON();\n let result = new GetOrCreateWebPushSubscriptionCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGetOrCreateWebPushSubscriptionCommand {\n pageId: number;\n endpoint: string;\n keys: { [key: string]: string; };\n}\n\nexport class GetOrCreateFirebasePushSubscriptionCommand implements IGetOrCreateFirebasePushSubscriptionCommand {\n pageId!: number;\n token!: string;\n\n constructor(data?: IGetOrCreateFirebasePushSubscriptionCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.token = _data[\"token\"];\n }\n }\n\n static fromJS(data: any): GetOrCreateFirebasePushSubscriptionCommand {\n data = typeof data === 'object' ? data : {};\n let result = new GetOrCreateFirebasePushSubscriptionCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"token\"] = this.token;\n return data;\n }\n\n clone(): GetOrCreateFirebasePushSubscriptionCommand {\n const json = this.toJSON();\n let result = new GetOrCreateFirebasePushSubscriptionCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGetOrCreateFirebasePushSubscriptionCommand {\n pageId: number;\n token: string;\n}\n\nexport class PaginatedListOfSearchResultDto implements IPaginatedListOfSearchResultDto {\n items!: SearchResultDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfSearchResultDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(SearchResultDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfSearchResultDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfSearchResultDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfSearchResultDto {\n const json = this.toJSON();\n let result = new PaginatedListOfSearchResultDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfSearchResultDto {\n items: SearchResultDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport enum ModuleType {\n None = 0,\n Latest = 1,\n Statistics = 2,\n News = 3,\n Typo3 = 4,\n ExternalSite = 5,\n Geo = 6,\n Calendar = 7,\n Directory = 8,\n Database = 9,\n App = 10,\n Settings = 11,\n Organizer = 12,\n Interaction = 13,\n Council = 14,\n Shop = 15,\n Communication = 16,\n Gallery = 17,\n Problem = 18,\n Tracking = 19,\n Booking = 20,\n Help = 100,\n Admin = 101,\n Logo = 102,\n}\n\nexport class SearchSettingsDto implements ISearchSettingsDto {\n searchSlug?: string | undefined;\n\n constructor(data?: ISearchSettingsDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.searchSlug = _data[\"searchSlug\"];\n }\n }\n\n static fromJS(data: any): SearchSettingsDto {\n data = typeof data === 'object' ? data : {};\n let result = new SearchSettingsDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"searchSlug\"] = this.searchSlug;\n return data;\n }\n\n clone(): SearchSettingsDto {\n const json = this.toJSON();\n let result = new SearchSettingsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ISearchSettingsDto {\n searchSlug?: string | undefined;\n}\n\nexport class ShopSettingsDto implements IShopSettingsDto {\n reviewMode!: ReviewMode;\n quantityMode!: QuantityMode;\n shoppingCartLink!: string;\n formConfirmationHtml!: string;\n\n constructor(data?: IShopSettingsDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.reviewMode = _data[\"reviewMode\"];\n this.quantityMode = _data[\"quantityMode\"];\n this.shoppingCartLink = _data[\"shoppingCartLink\"];\n this.formConfirmationHtml = _data[\"formConfirmationHtml\"];\n }\n }\n\n static fromJS(data: any): ShopSettingsDto {\n data = typeof data === 'object' ? data : {};\n let result = new ShopSettingsDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"reviewMode\"] = this.reviewMode;\n data[\"quantityMode\"] = this.quantityMode;\n data[\"shoppingCartLink\"] = this.shoppingCartLink;\n data[\"formConfirmationHtml\"] = this.formConfirmationHtml;\n return data;\n }\n\n clone(): ShopSettingsDto {\n const json = this.toJSON();\n let result = new ShopSettingsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IShopSettingsDto {\n reviewMode: ReviewMode;\n quantityMode: QuantityMode;\n shoppingCartLink: string;\n formConfirmationHtml: string;\n}\n\nexport enum ReviewMode {\n Disabled = 0,\n Public = 1,\n}\n\nexport enum QuantityMode {\n Hidden = 0,\n TrafficLight = 1,\n Numeric = 2,\n}\n\nexport class PaginatedListOfShopProductTeaserDto implements IPaginatedListOfShopProductTeaserDto {\n items!: ShopProductTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfShopProductTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ShopProductTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfShopProductTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfShopProductTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfShopProductTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfShopProductTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfShopProductTeaserDto {\n items: ShopProductTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class ShopProductTeaserDto extends ItemTeaserDto implements IShopProductTeaserDto {\n rating?: number | undefined;\n grossPrice!: number;\n\n constructor(data?: IShopProductTeaserDto) {\n super(data);\n this._discriminator = \"ShopProductTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.rating = _data[\"rating\"];\n this.grossPrice = _data[\"grossPrice\"];\n }\n }\n\n static override fromJS(data: any): ShopProductTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new ShopProductTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"rating\"] = this.rating;\n data[\"grossPrice\"] = this.grossPrice;\n super.toJSON(data);\n return data;\n }\n\n clone(): ShopProductTeaserDto {\n const json = this.toJSON();\n let result = new ShopProductTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IShopProductTeaserDto extends IItemTeaserDto {\n rating?: number | undefined;\n grossPrice: number;\n}\n\nexport class ShippingOption implements IShippingOption {\n id!: string;\n label!: string;\n grossCost!: number;\n type!: ShippingOptionType;\n\n constructor(data?: IShippingOption) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.label = _data[\"label\"];\n this.grossCost = _data[\"grossCost\"];\n this.type = _data[\"type\"];\n }\n }\n\n static fromJS(data: any): ShippingOption {\n data = typeof data === 'object' ? data : {};\n let result = new ShippingOption();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"label\"] = this.label;\n data[\"grossCost\"] = this.grossCost;\n data[\"type\"] = this.type;\n return data;\n }\n\n clone(): ShippingOption {\n const json = this.toJSON();\n let result = new ShippingOption();\n result.init(json);\n return result;\n }\n}\n\nexport interface IShippingOption {\n id: string;\n label: string;\n grossCost: number;\n type: ShippingOptionType;\n}\n\nexport enum ShippingOptionType {\n Postal = 0,\n Digital = 1,\n Pickup = 2,\n}\n\nexport class PaymentOption implements IPaymentOption {\n type!: PaymentType;\n additionalPaymentCosts!: number;\n\n constructor(data?: IPaymentOption) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.type = _data[\"type\"];\n this.additionalPaymentCosts = _data[\"additionalPaymentCosts\"];\n }\n }\n\n static fromJS(data: any): PaymentOption {\n data = typeof data === 'object' ? data : {};\n let result = new PaymentOption();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"additionalPaymentCosts\"] = this.additionalPaymentCosts;\n return data;\n }\n\n clone(): PaymentOption {\n const json = this.toJSON();\n let result = new PaymentOption();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaymentOption {\n type: PaymentType;\n additionalPaymentCosts: number;\n}\n\nexport enum PaymentType {\n None = 0,\n PayPal = 1,\n Invoice = 2,\n}\n\nexport class OrderBreakdownDto implements IOrderBreakdownDto {\n shippingGrossCost!: number;\n shippingTaxes!: number;\n paymentGrossCost!: number;\n paymentTaxes!: number;\n shippingOptionLabel!: string;\n totalTaxes!: number;\n totalGrossCost!: number;\n orderItems!: PaymentOrderItemDto[];\n\n constructor(data?: IOrderBreakdownDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.orderItems = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.shippingGrossCost = _data[\"shippingGrossCost\"];\n this.shippingTaxes = _data[\"shippingTaxes\"];\n this.paymentGrossCost = _data[\"paymentGrossCost\"];\n this.paymentTaxes = _data[\"paymentTaxes\"];\n this.shippingOptionLabel = _data[\"shippingOptionLabel\"];\n this.totalTaxes = _data[\"totalTaxes\"];\n this.totalGrossCost = _data[\"totalGrossCost\"];\n if (Array.isArray(_data[\"orderItems\"])) {\n this.orderItems = [] as any;\n for (let item of _data[\"orderItems\"])\n this.orderItems!.push(PaymentOrderItemDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): OrderBreakdownDto {\n data = typeof data === 'object' ? data : {};\n let result = new OrderBreakdownDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"shippingGrossCost\"] = this.shippingGrossCost;\n data[\"shippingTaxes\"] = this.shippingTaxes;\n data[\"paymentGrossCost\"] = this.paymentGrossCost;\n data[\"paymentTaxes\"] = this.paymentTaxes;\n data[\"shippingOptionLabel\"] = this.shippingOptionLabel;\n data[\"totalTaxes\"] = this.totalTaxes;\n data[\"totalGrossCost\"] = this.totalGrossCost;\n if (Array.isArray(this.orderItems)) {\n data[\"orderItems\"] = [];\n for (let item of this.orderItems)\n data[\"orderItems\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): OrderBreakdownDto {\n const json = this.toJSON();\n let result = new OrderBreakdownDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IOrderBreakdownDto {\n shippingGrossCost: number;\n shippingTaxes: number;\n paymentGrossCost: number;\n paymentTaxes: number;\n shippingOptionLabel: string;\n totalTaxes: number;\n totalGrossCost: number;\n orderItems: PaymentOrderItemDto[];\n}\n\nexport class PaymentOrderItemDto implements IPaymentOrderItemDto {\n name!: string;\n amount!: number;\n individualGrossPrice!: number;\n individualTaxes!: number;\n sumGrossPrice!: number;\n sumTaxes!: number;\n\n constructor(data?: IPaymentOrderItemDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.amount = _data[\"amount\"];\n this.individualGrossPrice = _data[\"individualGrossPrice\"];\n this.individualTaxes = _data[\"individualTaxes\"];\n this.sumGrossPrice = _data[\"sumGrossPrice\"];\n this.sumTaxes = _data[\"sumTaxes\"];\n }\n }\n\n static fromJS(data: any): PaymentOrderItemDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaymentOrderItemDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"amount\"] = this.amount;\n data[\"individualGrossPrice\"] = this.individualGrossPrice;\n data[\"individualTaxes\"] = this.individualTaxes;\n data[\"sumGrossPrice\"] = this.sumGrossPrice;\n data[\"sumTaxes\"] = this.sumTaxes;\n return data;\n }\n\n clone(): PaymentOrderItemDto {\n const json = this.toJSON();\n let result = new PaymentOrderItemDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaymentOrderItemDto {\n name: string;\n amount: number;\n individualGrossPrice: number;\n individualTaxes: number;\n sumGrossPrice: number;\n sumTaxes: number;\n}\n\nexport class ShopOrderItemDto implements IShopOrderItemDto {\n productId!: number;\n amount!: number;\n\n constructor(data?: IShopOrderItemDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.productId = _data[\"productId\"];\n this.amount = _data[\"amount\"];\n }\n }\n\n static fromJS(data: any): ShopOrderItemDto {\n data = typeof data === 'object' ? data : {};\n let result = new ShopOrderItemDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"productId\"] = this.productId;\n data[\"amount\"] = this.amount;\n return data;\n }\n\n clone(): ShopOrderItemDto {\n const json = this.toJSON();\n let result = new ShopOrderItemDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IShopOrderItemDto {\n productId: number;\n amount: number;\n}\n\nexport class ShopProductDto extends ItemDto implements IShopProductDto {\n currentQuantity?: number | undefined;\n grossPrice!: number;\n rating?: number | undefined;\n reviews!: ShopReviewDto[];\n pictures!: GalleryImage[];\n\n constructor(data?: IShopProductDto) {\n super(data);\n if (!data) {\n this.reviews = [];\n this.pictures = [];\n }\n this._discriminator = \"ShopProductDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.currentQuantity = _data[\"currentQuantity\"];\n this.grossPrice = _data[\"grossPrice\"];\n this.rating = _data[\"rating\"];\n if (Array.isArray(_data[\"reviews\"])) {\n this.reviews = [] as any;\n for (let item of _data[\"reviews\"])\n this.reviews!.push(ShopReviewDto.fromJS(item));\n }\n if (Array.isArray(_data[\"pictures\"])) {\n this.pictures = [] as any;\n for (let item of _data[\"pictures\"])\n this.pictures!.push(GalleryImage.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): ShopProductDto {\n data = typeof data === 'object' ? data : {};\n if (data[\"discriminator\"] === \"PublicShopProductDetailsDto\") {\n let result = new PublicShopProductDetailsDto();\n result.init(data);\n return result;\n }\n let result = new ShopProductDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"currentQuantity\"] = this.currentQuantity;\n data[\"grossPrice\"] = this.grossPrice;\n data[\"rating\"] = this.rating;\n if (Array.isArray(this.reviews)) {\n data[\"reviews\"] = [];\n for (let item of this.reviews)\n data[\"reviews\"].push(item.toJSON());\n }\n if (Array.isArray(this.pictures)) {\n data[\"pictures\"] = [];\n for (let item of this.pictures)\n data[\"pictures\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): ShopProductDto {\n const json = this.toJSON();\n let result = new ShopProductDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IShopProductDto extends IItemDto {\n currentQuantity?: number | undefined;\n grossPrice: number;\n rating?: number | undefined;\n reviews: ShopReviewDto[];\n pictures: GalleryImage[];\n}\n\nexport class ShopReviewDto extends ItemDto implements IShopReviewDto {\n creator!: string;\n createdByCurrentUser!: boolean;\n createdInBackend!: boolean;\n rating!: number;\n\n constructor(data?: IShopReviewDto) {\n super(data);\n this._discriminator = \"ShopReviewDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.creator = _data[\"creator\"];\n this.createdByCurrentUser = _data[\"createdByCurrentUser\"];\n this.createdInBackend = _data[\"createdInBackend\"];\n this.rating = _data[\"rating\"];\n }\n }\n\n static override fromJS(data: any): ShopReviewDto {\n data = typeof data === 'object' ? data : {};\n let result = new ShopReviewDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"creator\"] = this.creator;\n data[\"createdByCurrentUser\"] = this.createdByCurrentUser;\n data[\"createdInBackend\"] = this.createdInBackend;\n data[\"rating\"] = this.rating;\n super.toJSON(data);\n return data;\n }\n\n clone(): ShopReviewDto {\n const json = this.toJSON();\n let result = new ShopReviewDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IShopReviewDto extends IItemDto {\n creator: string;\n createdByCurrentUser: boolean;\n createdInBackend: boolean;\n rating: number;\n}\n\nexport class ShopOrderSubmittedResponseDto implements IShopOrderSubmittedResponseDto {\n type!: ShopOrderSubmittedResponseType;\n details!: string;\n\n constructor(data?: IShopOrderSubmittedResponseDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.type = _data[\"type\"];\n this.details = _data[\"details\"];\n }\n }\n\n static fromJS(data: any): ShopOrderSubmittedResponseDto {\n data = typeof data === 'object' ? data : {};\n let result = new ShopOrderSubmittedResponseDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"details\"] = this.details;\n return data;\n }\n\n clone(): ShopOrderSubmittedResponseDto {\n const json = this.toJSON();\n let result = new ShopOrderSubmittedResponseDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IShopOrderSubmittedResponseDto {\n type: ShopOrderSubmittedResponseType;\n details: string;\n}\n\nexport enum ShopOrderSubmittedResponseType {\n NoFurtherActionRequired = 0,\n EmailConfirmationNeeded = 1,\n PayPalRedirect = 2,\n}\n\nexport class PublicSubmitShopOrderCommand implements IPublicSubmitShopOrderCommand {\n pageId!: number;\n orderItems!: ShopOrderItemDto[];\n paymentType!: PaymentType;\n shippingOptionId!: string;\n billingAddress!: Address;\n shippingAddress?: Address | undefined;\n\n constructor(data?: IPublicSubmitShopOrderCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.orderItems = [];\n this.billingAddress = new Address();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n if (Array.isArray(_data[\"orderItems\"])) {\n this.orderItems = [] as any;\n for (let item of _data[\"orderItems\"])\n this.orderItems!.push(ShopOrderItemDto.fromJS(item));\n }\n this.paymentType = _data[\"paymentType\"];\n this.shippingOptionId = _data[\"shippingOptionId\"];\n this.billingAddress = _data[\"billingAddress\"] ? Address.fromJS(_data[\"billingAddress\"]) : new Address();\n this.shippingAddress = _data[\"shippingAddress\"] ? Address.fromJS(_data[\"shippingAddress\"]) : undefined;\n }\n }\n\n static fromJS(data: any): PublicSubmitShopOrderCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicSubmitShopOrderCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n if (Array.isArray(this.orderItems)) {\n data[\"orderItems\"] = [];\n for (let item of this.orderItems)\n data[\"orderItems\"].push(item.toJSON());\n }\n data[\"paymentType\"] = this.paymentType;\n data[\"shippingOptionId\"] = this.shippingOptionId;\n data[\"billingAddress\"] = this.billingAddress ? this.billingAddress.toJSON() : undefined;\n data[\"shippingAddress\"] = this.shippingAddress ? this.shippingAddress.toJSON() : undefined;\n return data;\n }\n\n clone(): PublicSubmitShopOrderCommand {\n const json = this.toJSON();\n let result = new PublicSubmitShopOrderCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicSubmitShopOrderCommand {\n pageId: number;\n orderItems: ShopOrderItemDto[];\n paymentType: PaymentType;\n shippingOptionId: string;\n billingAddress: Address;\n shippingAddress?: Address | undefined;\n}\n\nexport class PublicCreateShopOrderCommand implements IPublicCreateShopOrderCommand {\n pageId!: number;\n orderId!: number;\n token!: string;\n\n constructor(data?: IPublicCreateShopOrderCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.orderId = _data[\"orderId\"];\n this.token = _data[\"token\"];\n }\n }\n\n static fromJS(data: any): PublicCreateShopOrderCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicCreateShopOrderCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"orderId\"] = this.orderId;\n data[\"token\"] = this.token;\n return data;\n }\n\n clone(): PublicCreateShopOrderCommand {\n const json = this.toJSON();\n let result = new PublicCreateShopOrderCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicCreateShopOrderCommand {\n pageId: number;\n orderId: number;\n token: string;\n}\n\nexport class PublicSubmitShopReviewCommand implements IPublicSubmitShopReviewCommand {\n pageId!: number;\n productId!: number;\n creator!: Address;\n document!: Node;\n rating!: number;\n\n constructor(data?: IPublicSubmitShopReviewCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.creator = new Address();\n this.document = new Node();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.productId = _data[\"productId\"];\n this.creator = _data[\"creator\"] ? Address.fromJS(_data[\"creator\"]) : new Address();\n this.document = _data[\"document\"] ? Node.fromJS(_data[\"document\"]) : new Node();\n this.rating = _data[\"rating\"];\n }\n }\n\n static fromJS(data: any): PublicSubmitShopReviewCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicSubmitShopReviewCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"productId\"] = this.productId;\n data[\"creator\"] = this.creator ? this.creator.toJSON() : undefined;\n data[\"document\"] = this.document ? this.document.toJSON() : undefined;\n data[\"rating\"] = this.rating;\n return data;\n }\n\n clone(): PublicSubmitShopReviewCommand {\n const json = this.toJSON();\n let result = new PublicSubmitShopReviewCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicSubmitShopReviewCommand {\n pageId: number;\n productId: number;\n creator: Address;\n document: Node;\n rating: number;\n}\n\nexport class PublicCreateShopReviewCommand implements IPublicCreateShopReviewCommand {\n pageId!: number;\n productId!: number;\n reviewId!: number;\n token!: string;\n\n constructor(data?: IPublicCreateShopReviewCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.productId = _data[\"productId\"];\n this.reviewId = _data[\"reviewId\"];\n this.token = _data[\"token\"];\n }\n }\n\n static fromJS(data: any): PublicCreateShopReviewCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicCreateShopReviewCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"productId\"] = this.productId;\n data[\"reviewId\"] = this.reviewId;\n data[\"token\"] = this.token;\n return data;\n }\n\n clone(): PublicCreateShopReviewCommand {\n const json = this.toJSON();\n let result = new PublicCreateShopReviewCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicCreateShopReviewCommand {\n pageId: number;\n productId: number;\n reviewId: number;\n token: string;\n}\n\nexport class PublicShopProductDetailsDto extends ShopProductDto implements IPublicShopProductDetailsDto {\n\n constructor(data?: IPublicShopProductDetailsDto) {\n super(data);\n this._discriminator = \"PublicShopProductDetailsDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): PublicShopProductDetailsDto {\n data = typeof data === 'object' ? data : {};\n let result = new PublicShopProductDetailsDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): PublicShopProductDetailsDto {\n const json = this.toJSON();\n let result = new PublicShopProductDetailsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicShopProductDetailsDto extends IShopProductDto {\n}\n\nexport class PublicUpdateShopReviewCommand implements IPublicUpdateShopReviewCommand {\n pageId!: number;\n reviewId!: number;\n token!: string;\n document!: Node;\n\n constructor(data?: IPublicUpdateShopReviewCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.document = new Node();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.reviewId = _data[\"reviewId\"];\n this.token = _data[\"token\"];\n this.document = _data[\"document\"] ? Node.fromJS(_data[\"document\"]) : new Node();\n }\n }\n\n static fromJS(data: any): PublicUpdateShopReviewCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicUpdateShopReviewCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"reviewId\"] = this.reviewId;\n data[\"token\"] = this.token;\n data[\"document\"] = this.document ? this.document.toJSON() : undefined;\n return data;\n }\n\n clone(): PublicUpdateShopReviewCommand {\n const json = this.toJSON();\n let result = new PublicUpdateShopReviewCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicUpdateShopReviewCommand {\n pageId: number;\n reviewId: number;\n token: string;\n document: Node;\n}\n\nexport class CurrentWeatherDto implements ICurrentWeatherDto {\n current!: WeatherDto;\n next!: WeatherDto;\n\n constructor(data?: ICurrentWeatherDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.current = new WeatherDto();\n this.next = new WeatherDto();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.current = _data[\"current\"] ? WeatherDto.fromJS(_data[\"current\"]) : new WeatherDto();\n this.next = _data[\"next\"] ? WeatherDto.fromJS(_data[\"next\"]) : new WeatherDto();\n }\n }\n\n static fromJS(data: any): CurrentWeatherDto {\n data = typeof data === 'object' ? data : {};\n let result = new CurrentWeatherDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"current\"] = this.current ? this.current.toJSON() : undefined;\n data[\"next\"] = this.next ? this.next.toJSON() : undefined;\n return data;\n }\n\n clone(): CurrentWeatherDto {\n const json = this.toJSON();\n let result = new CurrentWeatherDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICurrentWeatherDto {\n current: WeatherDto;\n next: WeatherDto;\n}\n\nexport class WeatherDto implements IWeatherDto {\n dateTime!: Date;\n temperature!: number;\n category!: string;\n description!: string;\n iconUrl!: string;\n imageUrl!: string;\n\n constructor(data?: IWeatherDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.dateTime = _data[\"dateTime\"] ? new Date(_data[\"dateTime\"].toString()) : undefined;\n this.temperature = _data[\"temperature\"];\n this.category = _data[\"category\"];\n this.description = _data[\"description\"];\n this.iconUrl = _data[\"iconUrl\"];\n this.imageUrl = _data[\"imageUrl\"];\n }\n }\n\n static fromJS(data: any): WeatherDto {\n data = typeof data === 'object' ? data : {};\n let result = new WeatherDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"dateTime\"] = this.dateTime ? this.dateTime.toISOString() : undefined;\n data[\"temperature\"] = this.temperature;\n data[\"category\"] = this.category;\n data[\"description\"] = this.description;\n data[\"iconUrl\"] = this.iconUrl;\n data[\"imageUrl\"] = this.imageUrl;\n return data;\n }\n\n clone(): WeatherDto {\n const json = this.toJSON();\n let result = new WeatherDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IWeatherDto {\n dateTime: Date;\n temperature: number;\n category: string;\n description: string;\n iconUrl: string;\n imageUrl: string;\n}\n\nexport enum SignalRClientMethods {\n NotificationReceived = 0,\n}\n\nexport enum SignalRServerMethods {\n NotifyAll = 0,\n NotifyUser = 1,\n}\n\nfunction formatDate(d: Date) {\n return d.getFullYear() + '-' + \n (d.getMonth() < 9 ? ('0' + (d.getMonth()+1)) : (d.getMonth()+1)) + '-' +\n (d.getDate() < 10 ? ('0' + d.getDate()) : d.getDate());\n}\n\nexport interface FileParameter {\n data: any;\n fileName: string;\n}\n\nexport interface FileResponse {\n data: Blob;\n status: number;\n fileName?: string;\n headers?: { [name: string]: any };\n}\n\nexport class ApiException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new ApiException(message, status, response, headers, null);\n}"],"mappings":"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"}