Yc.Box.Types
1.2.0
dotnet add package Yc.Box.Types --version 1.2.0
NuGet\Install-Package Yc.Box.Types -Version 1.2.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Yc.Box.Types" Version="1.2.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Yc.Box.Types" Version="1.2.0" />
<PackageReference Include="Yc.Box.Types" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Yc.Box.Types --version 1.2.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Yc.Box.Types, 1.2.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Yc.Box.Types@1.2.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Yc.Box.Types&version=1.2.0
#tool nuget:?package=Yc.Box.Types&version=1.2.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Yc.Box.Types
Общая библиотека типов и перечислений для проектов YC, включая стандартные обёртки для HTTP API ответов.
Установка
dotnet add package Yc.Box.Types
Что включено
Перечисления (Enums)
ContactMethod
- методы связиContactType
- типы контактовContactTypeHelper
- вспомогательные методы для работы с типами контактовParticipantType
- типы участниковScheduleType
- типы расписания (полный день, неполный день, смены и т.д.)BreakType
- типы перерывовScheduleStatus
- статусы расписания
Модели API ответов (Models.ApiResponses)
Стандартные типы для HTTP API ответов, обеспечивающие единообразие в API проектах:
ApiResponse
- базовый класс для успешных ответовApiResponse<T>
- ответ с даннымиApiErrorResponse
- ответ с ошибкамиValidationError
- детализация ошибок валидации
Модели расписания (Models)
Типы для работы с расписанием работы:
WorkSchedule
- основная модель расписания работыWorkDay
- модель рабочего дняBreak
- модель перерываTimeSlot
- временной слот
Использование
API Responses
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)
{
// Активное расписание
}
Доступные методы расширения для ControllerBase
SuccessResponse(message)
- успешный ответSuccessResponse<T>(data, message)
- успешный ответ с даннымиValidationError()
- ошибка валидации из ModelStateValidationError(field, message, attemptedValue)
- ошибка валидации для поляNotFoundError(message)
- ошибка "не найдено"InternalServerError(message, details)
- внутренняя ошибка сервераUnauthorizedError(message)
- ошибка авторизацииForbiddenError(message)
- ошибка доступаCustomError(statusCode, message, details)
- кастомная ошибка
Статический класс ApiResponseHelper
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"
}
Перечисления расписания
ScheduleType
FullTime
- полный рабочий деньPartTime
- неполный рабочий деньShift
- сменная работаFlexible
- гибкое расписаниеRemote
- удаленная работа
BreakType
Lunch
- обеденный перерывCoffee
- кофе-брейкRest
- отдыхCustom
- пользовательский перерыв
ScheduleStatus
Active
- активноInactive
- неактивноDraft
- черновикArchived
- архивировано
Требования
- .NET 9.0+
- ASP.NET Core (для API Response types)
Версии
- 1.2.0 - Добавлены типы для работы с расписанием (WorkSchedule, WorkDay, Break, TimeSlot и соответствующие перечисления)
- 1.1.3 - Обновлен README с полной документацией для пакета
- 1.1.2 - Добавлен README в NuGet пакет
- 1.1.1 - Перенос ApiResponses в Models, обновление namespace
- 1.1.0 - Добавление типов API ответов
- 1.0.2 - Базовые перечисления
Лицензия
Проект YC Team
Контакты
Для вопросов и предложений обращайтесь к команде разработки YC.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net9.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.