Common types and enums for YC projects including API response wrappers and work schedule types
License
—
Deps
0
Install Size
—
Vulns
✓ 0
Published
Jul 25, 2025
$ dotnet add package Yc.Box.TypesОбщая библиотека типов и перечислений для проектов YC, включая стандартные обёртки для HTTP API ответов.
dotnet add package Yc.Box.Types
ContactMethod - методы связиContactType - типы контактовContactTypeHelper - вспомогательные методы для работы с типами контактовParticipantType - типы участниковScheduleType - типы расписания (полный день, неполный день, смены и т.д.)BreakType - типы перерывовScheduleStatus - статусы расписанияСтандартные типы для HTTP API ответов, обеспечивающие единообразие в API проектах:
ApiResponse - базовый класс для успешных ответовApiResponse<T> - ответ с даннымиApiErrorResponse - ответ с ошибкамиValidationError - детализация ошибок валидацииТипы для работы с расписанием работы:
WorkSchedule - основная модель расписания работыWorkDay - модель рабочего дняBreak - модель перерываTimeSlot - временной слотusing Yc.Box.Types.Models.ApiResponses;
[ApiController]
[Route("api/[controller]")]
public class ExampleController : ControllerBase
{
[HttpGet]
public IActionResult GetData()
{
var data = new { Name = "Test", Value = 123 };
return this.SuccessResponse(data, "Данные получены");
}
[HttpPost]
public IActionResult CreateData([FromBody] CreateDataRequest request)
{
if (!ModelState.IsValid)
return this.ValidationError();
if (request.Name == null)
return this.ValidationError("Name", "Поле обязательно для заполнения");
// Логика создания...
return this.SuccessResponse("Данные созданы");
}
[HttpGet("{id}")]
public IActionResult GetById(int id)
{
var data = GetDataById(id);
if (data == null)
return this.NotFoundError($"Данные с ID {id} не найдены");
return this.SuccessResponse(data);
}
}
using Yc.Box.Types.Models;
using Yc.Box.Types.Enums;
// Создание расписания
var schedule = new WorkSchedule
{
Id = Guid.NewGuid(),
Name = "Стандартное расписание",
Type = ScheduleType.FullTime,
Status = ScheduleStatus.Active,
WorkDays = new List<WorkDay>
{
new WorkDay
{
DayOfWeek = DayOfWeek.Monday,
StartTime = TimeSpan.FromHours(9),
EndTime = TimeSpan.FromHours(18),
Breaks = new List<Break>
{
new Break
{
Type = BreakType.Lunch,
StartTime = TimeSpan.FromHours(13),
Duration = TimeSpan.FromMinutes(60)
}
}
}
}
};
// Проверка типа расписания
if (schedule.Type == ScheduleType.FullTime)
{
// Логика для полного рабочего дня
}
// Проверка статуса
if (schedule.Status == ScheduleStatus.Active)
{
// Активное расписание
}
SuccessResponse(message) - успешный ответSuccessResponse<T>(data, message) - успешный ответ с даннымиValidationError() - ошибка валидации из ModelStateValidationError(field, message, attemptedValue) - ошибка валидации для поляNotFoundError(message) - ошибка "не найдено"InternalServerError(message, details) - внутренняя ошибка сервераUnauthorizedError(message) - ошибка авторизацииForbiddenError(message) - ошибка доступаCustomError(statusCode, message, details) - кастомная ошибкаpublic class ExampleService
{
public object ProcessData(object data)
{
try
{
// Логика обработки...
return ApiResponseHelper.Success(data);
}
catch (ValidationException ex)
{
return ApiResponseHelper.ValidationError("Field", ex.Message);
}
catch (Exception ex)
{
return ApiResponseHelper.InternalServerError(ex.Message);
}
}
}
{
"success": true,
"message": "Данные получены",
"timestamp": "2024-01-15T10:30:00Z",
"data": {
"id": 1,
"name": "Test"
}
}
{
"success": false,
"statusCode": 400,
"message": "Неверные данные",
"timestamp": "2024-01-15T10:30:00Z",
"traceId": "0HN7KOGKF7QHD:00000001",
"errors": [
{
"field": "Name",
"message": "Поле обязательно для заполнения",
"attemptedValue": null
}
]
}
{
"success": false,
"statusCode": 404,
"message": "Данные с ID 123 не найдены",
"timestamp": "2024-01-15T10:30:00Z",
"traceId": "0HN7KOGKF7QHD:00000001"
}
FullTime - полный рабочий деньPartTime - неполный рабочий деньShift - сменная работаFlexible - гибкое расписаниеRemote - удаленная работаLunch - обеденный перерывCoffee - кофе-брейкRest - отдыхCustom - пользовательский перерывActive - активноInactive - неактивноDraft - черновикArchived - архивированоПроект YC Team
Для вопросов и предложений обращайтесь к команде разработки YC.