astro_avtourist/frontend/src/data/reviewsData.ts
2026-04-19 19:00:42 +05:00

137 lines
5.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

export interface Review {
id: number;
name: string;
surname?: string;
profession: string;
text: string;
rating: number;
avatar: { initial: string; color: string; };
date: string;
votesCount: number;
isHelpful: boolean;
}
const reviewsRaw = [
{
id: 1,
name: "Алексей М.",
profession: "Предприниматель",
text: "Помогли вернуть права после того, как инспектор незаконно составил протокол за встречку. Юрист нашел кучу ошибок в схеме ДТП. Огромное спасибо!",
rating: 5,
date: "2024-03-15",
votesCount: 24,
isHelpful: true
},
{
id: 2,
name: "Екатерина П.",
profession: "Бухгалтер",
text: "Страховая выплатила копейки по ОСАГО. Обратилась сюда, сделали независимую экспертизу и через суд взыскали еще 120 тысяч. Профессионалы!",
rating: 5,
date: "2024-03-10",
votesCount: 18,
isHelpful: true
},
{
id: 3,
name: "Игорь С.",
profession: "IT-специалист",
text: "Грамотно разобрали сложное ДТП на перекрестке. Доказали, что я не виноват, хотя ГИБДД изначально решило иначе. Лучшие в Сургуте.",
rating: 5,
date: "2024-03-05",
votesCount: 31,
isHelpful: true
},
{
id: 4,
name: "Марина К.",
profession: "Менеджер",
text: "Обратилась по вопросу возврата прав после лишения. Всё сделали быстро и профессионально. Через 2 месяца права уже были у меня. Рекомендую!",
rating: 4,
date: "2024-02-28",
votesCount: 15,
isHelpful: true
},
{
id: 5,
name: "Дмитрий В.",
profession: "Инженер",
text: "Были проблемы со страховой после ДТП. Юристы помогли составить претензию, потом представляли интересы в суде. Выиграли дело полностью.",
rating: 5,
date: "2024-02-20",
votesCount: 22,
isHelpful: true
},
{
id: 6,
name: "Ольга Н.",
profession: "Врач",
text: "Купила б/у авто с проблемами, которые не были указаны при продаже. Юристы помогли вернуть деньги через суд. Очень благодарна за помощь!",
rating: 5,
date: "2024-02-15",
votesCount: 27,
isHelpful: true
},
{
id: 7,
name: "Сергей Т.",
profession: "Водитель",
text: "Спор со страховой длился полгода. Сам не мог ничего добиться. Обратился сюда - ребята за 2 месяца решили вопрос в мою пользу. Супер!",
rating: 4,
date: "2024-02-08",
votesCount: 19,
isHelpful: true
},
{
id: 8,
name: "Анна Р.",
profession: "Учитель",
text: "Помогли оспорить штраф с камеры, который пришел ошибочно. Юрист быстро разобрался в ситуации и подготовил все документы. Спасибо!",
rating: 5,
date: "2024-02-01",
votesCount: 12,
isHelpful: false
},
{
id: 9,
name: "Виктор Л.",
profession: "Предприниматель",
text: "Обратился по вопросу компенсации после ДТП. Страховая занижала выплату в 3 раза. Сделали экспертизу и через суд добились справедливой суммы.",
rating: 5,
date: "2024-01-25",
votesCount: 35,
isHelpful: true
}
];
const colors = [
"bg-blue-100 text-blue-600", "bg-teal-100 text-teal-600", "bg-orange-100 text-orange-600",
"bg-pink-100 text-pink-600", "bg-purple-100 text-purple-600", "bg-indigo-100 text-indigo-600",
"bg-green-100 text-green-600", "bg-yellow-100 text-yellow-600", "bg-red-100 text-red-600"
];
export const reviewsData: Review[] = reviewsRaw.map(review => {
const initial = review.name.charAt(0).toUpperCase();
const color = colors[initial.charCodeAt(0) % colors.length];
return { ...review, avatar: { initial, color } };
});
export const votingSummary = (() => {
const totalReviews = reviewsData.length;
const totalVotes = reviewsData.reduce((sum, review) => sum + review.votesCount, 0);
const totalRating = reviewsData.reduce((sum, review) => sum + review.rating, 0);
const averageRating = totalReviews > 0 ? parseFloat((totalRating / totalReviews).toFixed(1)) : 0;
const ratingDistribution = reviewsData.reduce((acc, review) => {
acc[review.rating] = (acc[review.rating] || 0) + 1;
return acc;
}, {} as Record<number, number>);
return {
averageRating,
totalVotes,
totalReviews,
ratingDistribution
};
})();