Project

General

Profile

Actions

Back-Feature #527

closed

реализовать сервис Action

Added by Алексей Подшиблов 9 days ago. Updated 4 days ago.

Status:
Closed
Priority:
Normal
Start date:
05/22/2026
Due date:
% Done:

0%

Estimated time:

Description

interface ICharity {
id: string; // uuid - уникальный номер перевода
user_id: string; // uuid - кто выделил деньги (ссылка на User.id)
balance_charity_id: string;// uuid - из какого списания взяты деньги (ссылка на BalanceCharity.id)
amount: number; // сумма
description: string; // описание перевода
recipient: string; // получатель (приют, клиника)
location: string | null; // местонахождение получателя (город, адрес) - может быть пустым
created_at: Date; // дата создания записи
}
// питомец
interface IPet {
id: string; // uuid - уникальный номер питомца
user_id: string; // uuid - ссылка на владельца (User.id)
name?: string | null; // официальное имя (по родословной)
home_name?: string | null; // домашняя кличка
type: string; // тип животного: 'dog', 'cat', 'other'
breed?: string | null; // порода
birth_date?: Date | null; // дата рождения
gender?: string | null; // пол: 'male', 'female'
photo_url?: string | null; // ссылка на фото
chip_number?: string | null; // номер чипа
pedigree_number?: string | null; // номер родословной (
created_at: Date; // дата создания записи
}

export enum SportType {
AGILITY = 'agility', // аджилити
OBEDIENCE = 'obedience', // обидиенс
NOSEWORK = 'nosework', // ноузворк
FRISBEE = 'frisbee', // фризби (дог-фрисби)
OKD = 'okd', // общий курс дрессировки
ZKS = 'zks', // защитно-караульная служба
CANICROSS = 'canicross', // каникросс
HERDING = 'herding', // пастьба
OTHER = 'other' // другой вид спорта
}

export enum ActionStatus {
DRAFT = 'draft',
PUBLISHED = 'published',
CLOSED = 'closed',
CANCELLED = 'cancelled'
}

export enum CurrencyCode {
UNDEF = 'undefined',
RUB = 'RUB',
}

export enum CharityType {
SHELTER = 'shelter', // помощь приюту
SPECIFIC_DOG = 'specificDog', // конкретной собаке
MEDICAL = 'medical', // операция / лечение
FOSTER = 'foster', // оплата передержки
FOOD = 'food', // покупка корма
OTHER = 'other' // другое
}

export enum CharityStatus {
DRAFT = 'draft', // черновик
ACTIVE = 'active', // активный сбор
COMPLETED = 'completed', // сбор завершён
CANCELLED = 'cancelled' // отменён
}

export interface IContacts {
phone?: string;
chatId?: string;
}

export interface IActionSport {
id: string; // uuid
organizerId: string; // uuid организатора (User.id)
title: string;
description: string;
sportType: SportType;
pics?: string[] | null; // главное фото
startDate: Date; // дата начала
startTime: string; // время начала
endDate?: Date | null; // дата окончания
endTime?: string | null; // время окончания
location: string;
price: number;
currency: CurrencyCode;
maxParticipants: number; // максимальное количество участников
contacts?: IContacts;
status: ActionStatus;
createdAt: Date; // дата создания
}

export interface IActionCharity {
id: string; // uuid
organizerId: string; // uuid организатора
charityType: CharityType;
title: string;
description: string;
pics?: string[] | null; // галерея фото (опционально)
petId?: string | null; // uuid собаки (Pet.id)
startDate: Date; // дата начала сбора
endDate?: Date | null; // дата окончания
location?: string | null; // место (город, приют)
targetAmount: number; // целевая сумма
collectedAmount: number; // сколько собрано
currency: CurrencyCode;
recipient: string;
status: CharityStatus;
createdAt: Date; // дата создания записи
updatedAt: Date; // дата последнего обновления
}

перетащить окружение сервиса акшен из енота, реализовать интерфейсы, енамы, ентити

Actions

Also available in: Atom PDF