This commit is contained in:
Iliyan Angelov
2025-11-24 08:18:18 +02:00
parent 366f28677a
commit 136f75a859
133 changed files with 14977 additions and 3350 deletions

View File

@@ -98,8 +98,8 @@ export const caseStudyService = {
try {
const queryString = params ? buildQueryString(params) : '';
const url = queryString
? `${API_CONFIG.BASE_URL}/api/case-studies/case-studies/?${queryString}`
: `${API_CONFIG.BASE_URL}/api/case-studies/case-studies/`;
? `${API_CONFIG.BASE_URL}/api/case-studies/?${queryString}`
: `${API_CONFIG.BASE_URL}/api/case-studies/`;
const response = await fetch(url, {
method: 'GET',
@@ -123,7 +123,7 @@ export const caseStudyService = {
getCaseStudyBySlug: async (slug: string): Promise<CaseStudy> => {
try {
const response = await fetch(
`${API_CONFIG.BASE_URL}/api/case-studies/case-studies/${slug}/`,
`${API_CONFIG.BASE_URL}/api/case-studies/${slug}/`,
{
method: 'GET',
headers: {
@@ -147,7 +147,7 @@ export const caseStudyService = {
getFeaturedCaseStudies: async (): Promise<CaseStudy[]> => {
try {
const response = await fetch(
`${API_CONFIG.BASE_URL}/api/case-studies/case-studies/featured/`,
`${API_CONFIG.BASE_URL}/api/case-studies/featured/`,
{
method: 'GET',
headers: {
@@ -171,7 +171,7 @@ export const caseStudyService = {
getLatestCaseStudies: async (limit: number = 6): Promise<CaseStudy[]> => {
try {
const response = await fetch(
`${API_CONFIG.BASE_URL}/api/case-studies/case-studies/latest/?limit=${limit}`,
`${API_CONFIG.BASE_URL}/api/case-studies/latest/?limit=${limit}`,
{
method: 'GET',
headers: {
@@ -195,7 +195,7 @@ export const caseStudyService = {
getPopularCaseStudies: async (limit: number = 6): Promise<CaseStudy[]> => {
try {
const response = await fetch(
`${API_CONFIG.BASE_URL}/api/case-studies/case-studies/popular/?limit=${limit}`,
`${API_CONFIG.BASE_URL}/api/case-studies/popular/?limit=${limit}`,
{
method: 'GET',
headers: {
@@ -219,7 +219,7 @@ export const caseStudyService = {
getRelatedCaseStudies: async (slug: string): Promise<CaseStudy[]> => {
try {
const response = await fetch(
`${API_CONFIG.BASE_URL}/api/case-studies/case-studies/${slug}/related/`,
`${API_CONFIG.BASE_URL}/api/case-studies/${slug}/related/`,
{
method: 'GET',
headers: {

View File

@@ -0,0 +1,71 @@
import { API_BASE_URL } from '../config/api';
// Types for Home Banner data
export interface HomeBanner {
id: number;
icon: string;
badge: string;
heading: string;
highlight: string;
subheading: string;
description: string;
button_text: string;
button_url: string;
display_order: number;
is_active: boolean;
created_at: string;
updated_at: string;
}
class HomeServiceAPI {
private baseUrl = `${API_BASE_URL}/api/home`;
/**
* Get all home banners
*/
async getBanners(): Promise<HomeBanner[]> {
try {
const response = await fetch(`${this.baseUrl}/banner/`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
},
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const data = await response.json();
return data.results || data;
} catch (error) {
throw error;
}
}
/**
* Get a specific home banner by ID
*/
async getBanner(id: number): Promise<HomeBanner> {
try {
const response = await fetch(`${this.baseUrl}/banner/${id}/`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
},
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const data = await response.json();
return data;
} catch (error) {
throw error;
}
}
}
export const homeService = new HomeServiceAPI();