возврат api conditions
This commit is contained in:
@@ -13,11 +13,14 @@ import {
|
|||||||
UpdateDailyConditionOutput,
|
UpdateDailyConditionOutput,
|
||||||
} from './types'
|
} from './types'
|
||||||
|
|
||||||
|
// Базовый URL для API (может быть настроен через переменные окружения)
|
||||||
|
const BASE_URL = import.meta.env.VITE_API_BASE_URL || '/api'
|
||||||
|
|
||||||
// API для лабораторий
|
// API для лабораторий
|
||||||
export const laboratoriesApi = {
|
export const laboratoriesApi = {
|
||||||
// Получить все лаборатории
|
// Получить все лаборатории
|
||||||
getAll: async (): Promise<Laboratory[]> => {
|
getAll: async (): Promise<Laboratory[]> => {
|
||||||
const response = await fetch(`api/laboratories/`)
|
const response = await fetch(`${BASE_URL}/laboratories/`)
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
throw new Error('Ошибка загрузки лабораторий')
|
throw new Error('Ошибка загрузки лабораторий')
|
||||||
}
|
}
|
||||||
@@ -27,7 +30,7 @@ export const laboratoriesApi = {
|
|||||||
|
|
||||||
// Получить лабораторию по ID
|
// Получить лабораторию по ID
|
||||||
getById: async (id: string): Promise<Laboratory | null> => {
|
getById: async (id: string): Promise<Laboratory | null> => {
|
||||||
const response = await fetch(`api/laboratories/${id}`)
|
const response = await fetch(`${BASE_URL}/laboratories/${id}`)
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
if (response.status === 404) {
|
if (response.status === 404) {
|
||||||
return null
|
return null
|
||||||
@@ -57,8 +60,8 @@ export const dailyConditionsApi = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const url = searchParams.toString()
|
const url = searchParams.toString()
|
||||||
? `api/daily-conditions/?${searchParams}`
|
? `${BASE_URL}/daily-conditions/?${searchParams}`
|
||||||
: `api/daily-conditions/`
|
: `${BASE_URL}/daily-conditions/`
|
||||||
|
|
||||||
const response = await fetch(url)
|
const response = await fetch(url)
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
@@ -70,7 +73,7 @@ export const dailyConditionsApi = {
|
|||||||
|
|
||||||
// Получить конкретное условие по ID
|
// Получить конкретное условие по ID
|
||||||
getById: async (id: string): Promise<DailyCondition | null> => {
|
getById: async (id: string): Promise<DailyCondition | null> => {
|
||||||
const response = await fetch(`api/daily-conditions/${id}`)
|
const response = await fetch(`${BASE_URL}/daily-conditions/${id}`)
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
if (response.status === 404) {
|
if (response.status === 404) {
|
||||||
return null
|
return null
|
||||||
@@ -83,7 +86,7 @@ export const dailyConditionsApi = {
|
|||||||
|
|
||||||
// Создать новые условия
|
// Создать новые условия
|
||||||
create: async (input: CreateDailyConditionInput): Promise<string> => {
|
create: async (input: CreateDailyConditionInput): Promise<string> => {
|
||||||
const response = await fetch(`api/daily-conditions/`, {
|
const response = await fetch(`${BASE_URL}/daily-conditions/`, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
@@ -105,7 +108,7 @@ export const dailyConditionsApi = {
|
|||||||
id: string,
|
id: string,
|
||||||
input: UpdateDailyConditionInput
|
input: UpdateDailyConditionInput
|
||||||
): Promise<string> => {
|
): Promise<string> => {
|
||||||
const response = await fetch(`api/daily-conditions/${id}`, {
|
const response = await fetch(`${BASE_URL}/daily-conditions/${id}`, {
|
||||||
method: 'PATCH',
|
method: 'PATCH',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
@@ -121,7 +124,7 @@ export const dailyConditionsApi = {
|
|||||||
|
|
||||||
// Удалить условия
|
// Удалить условия
|
||||||
delete: async (id: string): Promise<void> => {
|
delete: async (id: string): Promise<void> => {
|
||||||
const response = await fetch(`api/daily-conditions/${id}`, {
|
const response = await fetch(`${BASE_URL}/daily-conditions/${id}`, {
|
||||||
method: 'DELETE',
|
method: 'DELETE',
|
||||||
})
|
})
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
@@ -200,3 +203,56 @@ export const elementApi = {
|
|||||||
return savedCondition
|
return savedCondition
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Вспомогательные функции
|
||||||
|
export const verificationConditionsUtils = {
|
||||||
|
// Валидация значения условия
|
||||||
|
validateConditionValue: (
|
||||||
|
value: any,
|
||||||
|
dataType: string = 'string',
|
||||||
|
minValue?: number,
|
||||||
|
maxValue?: number
|
||||||
|
): { isValid: boolean; error?: string } => {
|
||||||
|
if (dataType === 'number') {
|
||||||
|
const numValue = parseFloat(value)
|
||||||
|
if (isNaN(numValue)) {
|
||||||
|
return { isValid: false, error: 'Должно быть числом' }
|
||||||
|
}
|
||||||
|
if (minValue !== undefined && numValue < minValue) {
|
||||||
|
return { isValid: false, error: `Минимальное значение: ${minValue}` }
|
||||||
|
}
|
||||||
|
if (maxValue !== undefined && numValue > maxValue) {
|
||||||
|
return { isValid: false, error: `Максимальное значение: ${maxValue}` }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return { isValid: true }
|
||||||
|
},
|
||||||
|
|
||||||
|
// Форматирование значения с единицей измерения
|
||||||
|
formatValueWithUnit: (value: any, unit?: string): string => {
|
||||||
|
if (value === undefined || value === null || value === '') {
|
||||||
|
return '-'
|
||||||
|
}
|
||||||
|
return unit ? `${value} ${unit}` : value.toString()
|
||||||
|
},
|
||||||
|
|
||||||
|
// Получение ключа условия для хранения в conditions JSON (обычно используется ID типа условия)
|
||||||
|
getConditionKey: (conditionTypeId: string): string => {
|
||||||
|
return conditionTypeId
|
||||||
|
},
|
||||||
|
|
||||||
|
// Генерация ключа на основе названия условия (для обратной совместимости)
|
||||||
|
generateConditionKey: (conditionTypeName: string): string => {
|
||||||
|
return conditionTypeName
|
||||||
|
.toLowerCase()
|
||||||
|
.replace(/\s+/g, '_')
|
||||||
|
.replace(/[^\w]/g, '')
|
||||||
|
},
|
||||||
|
|
||||||
|
// Проверка, является ли строка валидным UUID
|
||||||
|
isValidUUID: (str: string): boolean => {
|
||||||
|
const uuidRegex =
|
||||||
|
/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i
|
||||||
|
return uuidRegex.test(str)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user