import api from './api'; // Интерфейсы для отзывов export interface Review { id: number; user_id: number; product_id: number; rating: number; title?: string; comment?: string; is_approved: boolean; created_at: string; updated_at?: string; user?: { id: number; email: string; first_name?: string; last_name?: string; }; } export interface ReviewCreate { product_id: number; rating: number; title?: string; comment?: string; } export interface ReviewUpdate { rating?: number; title?: string; comment?: string; is_approved?: boolean; } // Сервис для работы с отзывами const reviewService = { // Получить отзывы для продукта getProductReviews: async (productId: number, params?: { skip?: number; limit?: number; }): Promise => { try { const response = await api.get(`/reviews/products/${productId}`, { params }); return response as Review[]; } catch (error) { console.error(`Ошибка при получении отзывов для продукта ${productId}:`, error); return []; } }, // Создать новый отзыв createReview: async (reviewData: ReviewCreate): Promise => { try { const response = await api.post('/reviews/', reviewData); return response as Review; } catch (error) { console.error('Ошибка при создании отзыва:', error); return null; } }, // Обновить отзыв (только владелец или админ) updateReview: async (reviewId: number, reviewData: ReviewUpdate): Promise => { try { const response = await api.put(`/reviews/${reviewId}`, reviewData); return response as Review; } catch (error) { console.error(`Ошибка при обновлении отзыва ${reviewId}:`, error); return null; } }, // Удалить отзыв (только владелец или админ) deleteReview: async (reviewId: number): Promise => { try { await api.delete(`/reviews/${reviewId}`); return true; } catch (error) { console.error(`Ошибка при удалении отзыва ${reviewId}:`, error); return false; } }, // Одобрить отзыв (только для админов) approveReview: async (reviewId: number): Promise => { try { const response = await api.post(`/reviews/${reviewId}/approve`); return response as Review; } catch (error) { console.error(`Ошибка при одобрении отзыва ${reviewId}:`, error); return null; } } }; export default reviewService;