This commit is contained in:
Mikhail Kuznetsov
2023-06-16 15:00:11 +10:00
parent 73a824057b
commit 57fe9eff09
37 changed files with 1151 additions and 504 deletions

View File

@@ -27,6 +27,20 @@
public const string Metrics = Base + "/metrics";
}
public static class Scheduler
{
public const string GetAll = Base + "/schedulers/";
public const string GetByIp = Base + "/schedulers/ip/";
//public const string Get = Base + "/schedulers/" + getParam;
//public const string GetAreas = Base + "/schedulers/" + getParam + "/areas";
//public const string GetPlaces = Base + "/schedulers/" + getParam + "/places";
//public const string GetTemplates = Base + "/schedulers/" + getParam + "/templates";
public const string getParam = "{id}";
}
//public static class Layer
//{
// public const string GetAll = Base + "/layers/";
@@ -37,6 +51,7 @@
// public const string GetTemplates = Base + "/layers/" + getParam + "/templates";
// public const string getParam = "{id}";
//}
//
}
}
}

View File

@@ -0,0 +1,57 @@
namespace PARR.API.Contracts.V1.Requests.Queries
{
public class PaginationQuery
{
private int pageSizeMax = 100;
private int pageSizeDefault = 10;
private int pageNumberMin = 1;
public PaginationQuery()
{
PageNumber = pageNumberMin;
PageSize = pageSizeDefault;
}
public PaginationQuery(int pageNumber, int pageSize)
{
PageNumber = pageNumber;
PageSize = pageSize;
}
private int _pageNumber;
public int PageNumber
{
get
{
return _pageNumber;
}
set
{
if (value < pageNumberMin)
_pageNumber = pageNumberMin;
else
_pageNumber = value;
}
}
private int _pageSize;
public int PageSize
{
get
{
return _pageSize;
}
set
{
if (value > pageSizeMax)
_pageSize = pageSizeMax;
else
_pageSize = value;
if (_pageSize < 1)
_pageSize = pageSizeDefault;
}
}
}
}

View File

@@ -0,0 +1,15 @@
namespace PARR.API.Contracts.V1.Requests.Queries
{
public class SchedulerGetAllQuery
{
/// <summary>
/// true - вкл задания, false - выкл задания, null - все задания
/// </summary>
public bool? IsEnabled { get; set; }
/// <summary>
/// Список запланированных заданий на указанную дату
/// </summary>
public DateTimeOffset? StartDatePlanned { get; set; }
}
}

View File

@@ -0,0 +1,7 @@
namespace PARR.API.Contracts.V1.Requests.Queries
{
public class SchedulerGetByIpQuery
{
public string? Ip { get; set; }
}
}

View File

@@ -0,0 +1,6 @@
namespace PARR.API.Contracts.V1.Responses
{
public class ApiHealthResponse
{
}
}

View File

@@ -0,0 +1,9 @@
namespace PARR.API.Contracts.V1.Responses
{
public class ApiVersionResponse
{
public string? Version { get; set; }
public string? Environment { get; set; }
}
}

View File

@@ -0,0 +1,29 @@
namespace PARR.API.Contracts.V1.Responses.Base
{
public class BaseResponse
{
public BaseResponse() { }
public BaseResponse(bool isSuccess)
{
IsSuccess = isSuccess;
}
public BaseResponse(bool isSuccess, List<ErrorModel> errors)
{
IsSuccess = isSuccess;
Errors = errors;
}
public BaseResponse(bool isSuccess, List<ErrorModel> errors, string message)
{
IsSuccess = isSuccess;
Errors = errors;
Message = message;
}
public List<ErrorModel> Errors { get; set; } = new List<ErrorModel>();
public bool IsSuccess { get; private set; }
public string? Message { get; private set; }
}
}

View File

@@ -0,0 +1,9 @@
namespace PARR.API.Contracts.V1.Responses.Base
{
public class ErrorModel
{
public string? FieldName { get; set; }
public string? Message { get; set; }
}
}

View File

@@ -0,0 +1,29 @@
namespace PARR.API.Contracts.V1.Responses.Base
{
public class PagedResponse<T> : BaseResponse
{
public PagedResponse(bool isSuccess) : base(isSuccess) { }
public PagedResponse(bool isSuccess, List<ErrorModel> errors) : base(isSuccess, errors) { }
public PagedResponse(bool isSuccess, List<ErrorModel> errors, string message) : base(isSuccess, errors, message) { }
public PagedResponse(IEnumerable<T> data, bool isSuccess) : base(isSuccess) { Data = data; }
public PagedResponse(IEnumerable<T> data, bool isSuccess, List<ErrorModel> errors) : base(isSuccess, errors) { Data = data; }
public PagedResponse(IEnumerable<T> data, bool isSuccess, List<ErrorModel> errors, string message) : base(isSuccess, errors, message) { Data = data; }
public IEnumerable<T>? Data { get; set; }
public int? PageNumber { get; set; }
public int? PageSize { get; set; }
public int? TotalPage { get; set; }
public int? TotalItems { get; set; }
}
}

View File

@@ -0,0 +1,57 @@
using FluentValidation.Results;
namespace PARR.API.Contracts.V1.Responses.Base
{
public class Response<T> : BaseResponse
{
public Response(T response, bool isSuccess) : base(isSuccess)
{
Data = response;
}
public Response(T response, bool isSuccess, List<ErrorModel> errors) : base(isSuccess, errors)
{
Data = response;
}
public Response(T response, bool isSuccess, List<ErrorModel> errors, string message) : base(isSuccess, errors, message)
{
Data = response;
}
public T? Data { get; private set; }
}
public class Response : Response<object?>
{
/// <summary>
/// Респонс для валидации от FluentValidator
/// </summary>
/// <param name="validationErrors">ResultValidate.Errors</param>
public Response(List<ValidationFailure> validationErrors) : base(null, false)
{
var errors = new List<ErrorModel>();
foreach (var error in validationErrors)
{
errors.Add(new ErrorModel
{
FieldName = error.PropertyName,
Message = error.ErrorMessage
});
}
Errors = errors;
}
/// <summary>
/// Респонс когда не нужно передавать объект
/// </summary>
/// <param name="isSuccess"></param>
/// <param name="errors"></param>
public Response(bool isSuccess, List<ErrorModel> errors) : base(null, isSuccess, errors)
{
}
}
}

View File

@@ -0,0 +1,21 @@
namespace PARR.API.Contracts.V1.Responses
{
public class SchedulerBaseResponse
{
public required string Name { get; set; }
public DateTimeOffset StartAt { get; set; }
public int FrequencyMinute { get; set; }
}
public class SchedulerGetAllResponse: SchedulerBaseResponse
{
public Guid Id { get; set; }
public bool IsEnabled { get; set; }
}
public class SchedulerResponse
{
}
}