diff --git a/PARR.API/Contracts/V1/ApiRoutes.cs b/PARR.API/Contracts/V1/ApiRoutes.cs
index 01024021..40280dbe 100644
--- a/PARR.API/Contracts/V1/ApiRoutes.cs
+++ b/PARR.API/Contracts/V1/ApiRoutes.cs
@@ -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}";
- //}
+ //
+ }
+
}
-}
diff --git a/PARR.API/Contracts/V1/Requests/Queries/PaginationQuery.cs b/PARR.API/Contracts/V1/Requests/Queries/PaginationQuery.cs
new file mode 100644
index 00000000..13134fe6
--- /dev/null
+++ b/PARR.API/Contracts/V1/Requests/Queries/PaginationQuery.cs
@@ -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;
+ }
+ }
+ }
+}
diff --git a/PARR.API/Contracts/V1/Requests/Queries/SchedulerGetAllQuery.cs b/PARR.API/Contracts/V1/Requests/Queries/SchedulerGetAllQuery.cs
new file mode 100644
index 00000000..0b021ad6
--- /dev/null
+++ b/PARR.API/Contracts/V1/Requests/Queries/SchedulerGetAllQuery.cs
@@ -0,0 +1,15 @@
+namespace PARR.API.Contracts.V1.Requests.Queries
+{
+ public class SchedulerGetAllQuery
+ {
+ ///
+ /// true - вкл задания, false - выкл задания, null - все задания
+ ///
+ public bool? IsEnabled { get; set; }
+
+ ///
+ /// Список запланированных заданий на указанную дату
+ ///
+ public DateTimeOffset? StartDatePlanned { get; set; }
+ }
+}
diff --git a/PARR.API/Contracts/V1/Requests/Queries/SchedulerGetByIpQuery.cs b/PARR.API/Contracts/V1/Requests/Queries/SchedulerGetByIpQuery.cs
new file mode 100644
index 00000000..fea5392d
--- /dev/null
+++ b/PARR.API/Contracts/V1/Requests/Queries/SchedulerGetByIpQuery.cs
@@ -0,0 +1,7 @@
+namespace PARR.API.Contracts.V1.Requests.Queries
+{
+ public class SchedulerGetByIpQuery
+ {
+ public string? Ip { get; set; }
+ }
+}
diff --git a/PARR.API/Contracts/V1/Responses/ApiHealthResponse.cs b/PARR.API/Contracts/V1/Responses/ApiHealthResponse.cs
new file mode 100644
index 00000000..a598ee0d
--- /dev/null
+++ b/PARR.API/Contracts/V1/Responses/ApiHealthResponse.cs
@@ -0,0 +1,6 @@
+namespace PARR.API.Contracts.V1.Responses
+{
+ public class ApiHealthResponse
+ {
+ }
+}
diff --git a/PARR.API/Contracts/V1/Responses/ApiVersionResponse.cs b/PARR.API/Contracts/V1/Responses/ApiVersionResponse.cs
new file mode 100644
index 00000000..6db5f104
--- /dev/null
+++ b/PARR.API/Contracts/V1/Responses/ApiVersionResponse.cs
@@ -0,0 +1,9 @@
+namespace PARR.API.Contracts.V1.Responses
+{
+ public class ApiVersionResponse
+ {
+ public string? Version { get; set; }
+
+ public string? Environment { get; set; }
+ }
+}
diff --git a/PARR.API/Contracts/V1/Responses/Base/BaseResponse.cs b/PARR.API/Contracts/V1/Responses/Base/BaseResponse.cs
new file mode 100644
index 00000000..00a4d83d
--- /dev/null
+++ b/PARR.API/Contracts/V1/Responses/Base/BaseResponse.cs
@@ -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 errors)
+ {
+ IsSuccess = isSuccess;
+ Errors = errors;
+ }
+
+ public BaseResponse(bool isSuccess, List errors, string message)
+ {
+ IsSuccess = isSuccess;
+ Errors = errors;
+ Message = message;
+ }
+
+ public List Errors { get; set; } = new List();
+ public bool IsSuccess { get; private set; }
+ public string? Message { get; private set; }
+ }
+}
diff --git a/PARR.API/Contracts/V1/Responses/Base/ErrorModel.cs b/PARR.API/Contracts/V1/Responses/Base/ErrorModel.cs
new file mode 100644
index 00000000..f218ce33
--- /dev/null
+++ b/PARR.API/Contracts/V1/Responses/Base/ErrorModel.cs
@@ -0,0 +1,9 @@
+namespace PARR.API.Contracts.V1.Responses.Base
+{
+ public class ErrorModel
+ {
+ public string? FieldName { get; set; }
+
+ public string? Message { get; set; }
+ }
+}
diff --git a/PARR.API/Contracts/V1/Responses/Base/PagedResponse.cs b/PARR.API/Contracts/V1/Responses/Base/PagedResponse.cs
new file mode 100644
index 00000000..4dd40303
--- /dev/null
+++ b/PARR.API/Contracts/V1/Responses/Base/PagedResponse.cs
@@ -0,0 +1,29 @@
+namespace PARR.API.Contracts.V1.Responses.Base
+{
+ public class PagedResponse : BaseResponse
+ {
+ public PagedResponse(bool isSuccess) : base(isSuccess) { }
+
+ public PagedResponse(bool isSuccess, List errors) : base(isSuccess, errors) { }
+
+ public PagedResponse(bool isSuccess, List errors, string message) : base(isSuccess, errors, message) { }
+
+
+ public PagedResponse(IEnumerable data, bool isSuccess) : base(isSuccess) { Data = data; }
+
+ public PagedResponse(IEnumerable data, bool isSuccess, List errors) : base(isSuccess, errors) { Data = data; }
+
+ public PagedResponse(IEnumerable data, bool isSuccess, List errors, string message) : base(isSuccess, errors, message) { Data = data; }
+
+
+ public IEnumerable? Data { get; set; }
+
+ public int? PageNumber { get; set; }
+
+ public int? PageSize { get; set; }
+
+ public int? TotalPage { get; set; }
+
+ public int? TotalItems { get; set; }
+ }
+}
diff --git a/PARR.API/Contracts/V1/Responses/Base/Response.cs b/PARR.API/Contracts/V1/Responses/Base/Response.cs
new file mode 100644
index 00000000..25691d6e
--- /dev/null
+++ b/PARR.API/Contracts/V1/Responses/Base/Response.cs
@@ -0,0 +1,57 @@
+using FluentValidation.Results;
+
+namespace PARR.API.Contracts.V1.Responses.Base
+{
+ public class Response : BaseResponse
+ {
+ public Response(T response, bool isSuccess) : base(isSuccess)
+ {
+ Data = response;
+ }
+
+ public Response(T response, bool isSuccess, List errors) : base(isSuccess, errors)
+ {
+ Data = response;
+ }
+
+ public Response(T response, bool isSuccess, List errors, string message) : base(isSuccess, errors, message)
+ {
+ Data = response;
+ }
+
+ public T? Data { get; private set; }
+ }
+
+
+ public class Response : Response