Added api for about us page

This commit is contained in:
Umar Adilov 2025-05-01 21:10:12 +05:00
parent 885d17a15c
commit b4236db5d5
5 changed files with 87 additions and 3 deletions

View File

@ -53,3 +53,15 @@ export type TextResponse = Root<{
_name: string; _name: string;
_znachenie: string | null; _znachenie: string | null;
}>; }>;
export type Team = Root<{
_foto: Image[];
_zvanie: string;
_name: string;
}>;
export type History = Root<{
_name: string;
_god: string;
_opisanie: string;
}>;

View File

@ -2,16 +2,22 @@ import { isEmpty } from 'lodash';
import { import {
Discount, Discount,
History,
Image, Image,
Job, Job,
Partner, Partner,
Select,
Station, Station,
Team,
TextResponse, TextResponse,
} from '../@types'; } from '../@types';
export const presentImage = (images: Image[]) => export const presentImage = (images: Image[]) =>
isEmpty(images) ? null : `${process.env.TAYLOR_MEDIA_URL}/${images[0].url}`; isEmpty(images) ? null : `${process.env.TAYLOR_MEDIA_URL}/${images[0].url}`;
export const presentSelect = (selectItems: Select[]) =>
!isEmpty(selectItems) ? selectItems[0].name : null;
export const presentPartners = (partners: Partner) => export const presentPartners = (partners: Partner) =>
partners.records.map((record) => ({ partners.records.map((record) => ({
name: record._name, name: record._name,
@ -22,8 +28,22 @@ export const presentJobs = (jobs: Job) =>
jobs.records.map((job) => ({ jobs.records.map((job) => ({
name: job._name, name: job._name,
tags: job._tags.map((tag) => tag.name), tags: job._tags.map((tag) => tag.name),
location: !isEmpty(job._localtio) ? job._localtio[0].name : null, location: presentSelect(job._localtio),
type: !isEmpty(job._type) ? job._type[0].name : null, type: presentSelect(job._type),
}));
export const presentTeamMembers = (members: Team) =>
members.records.map((member) => ({
name: member._name,
photo: presentImage(member._foto),
profession: member._zvanie,
}));
export const presentHistoryItems = (historyItems: History) =>
historyItems.records.map((item) => ({
name: item._name,
year: item._god,
description: item._opisanie,
})); }));
export const presentDiscounts = (discounts: Discount) => export const presentDiscounts = (discounts: Discount) =>
@ -50,7 +70,7 @@ export const presentStations = (stations: Station) =>
electricCharge: station._propanCopy || false, electricCharge: station._propanCopy || false,
miniMarket: station._zaryadnayaStanci || false, miniMarket: station._zaryadnayaStanci || false,
toilet: station._miniMarketCop || false, toilet: station._miniMarketCop || false,
region: !isEmpty(station._region) ? station._region[0].name : null, region: presentSelect(station._region),
image: presentImage(station._foto), image: presentImage(station._foto),
})); }));

View File

@ -0,0 +1,6 @@
import { historyRequest, teamRequest } from './common';
export const aboutUsPageRequest = {
...teamRequest,
...historyRequest,
};

View File

@ -76,3 +76,25 @@ export const textsRequest = {
}, },
}, },
}; };
export const teamRequest = {
_komanda: {
records: {
_foto: {
url: true,
},
_zvanie: true,
_name: true,
},
},
};
export const historyRequest = {
_istoriya: {
records: {
_name: true,
_god: true,
_opisanie: true,
},
},
};

View File

@ -0,0 +1,24 @@
import {
presentHistoryItems,
presentTeamMembers,
} from '@/app/api-utlities/presenters';
import { aboutUsPageRequest } from '@/app/api-utlities/requests/about-us-page.request';
import { requestTaylor } from '@/app/api-utlities/utilities/taylor.client';
import { validationErrorHandler } from '../../middlewares/error-handler.middleware';
const routeHandler = async () => {
const response = await requestTaylor(aboutUsPageRequest);
return new Response(
JSON.stringify({
team: presentTeamMembers(response.data._komanda),
history: presentHistoryItems(response.data._istoriya),
}),
{
headers: { 'Content-Type': 'application/json' },
},
);
};
export const GET = validationErrorHandler(routeHandler);