diff --git a/ApiDto/Responses/GroupDetailsResponse.cs b/ApiDto/Responses/GroupDetailsResponse.cs index 35c665b..d4f5cae 100644 --- a/ApiDto/Responses/GroupDetailsResponse.cs +++ b/ApiDto/Responses/GroupDetailsResponse.cs @@ -15,6 +15,11 @@ public class GroupDetailsResponse /// public required string Name { get; set; } + /// + /// Gets or sets the course number of the group. + /// + public int CourseNumber { get; set; } + /// /// Gets or sets the unique identifier of the faculty to which the group belongs (optional). /// diff --git a/ApiDto/Responses/GroupResponse.cs b/ApiDto/Responses/GroupResponse.cs index 4526e72..63b91b3 100644 --- a/ApiDto/Responses/GroupResponse.cs +++ b/ApiDto/Responses/GroupResponse.cs @@ -15,6 +15,11 @@ public class GroupResponse /// public required string Name { get; set; } + /// + /// Gets or sets the course number of the group. + /// + public int CourseNumber { get; set; } + /// /// Gets or sets the unique identifier of the faculty to which the group belongs (optional). /// diff --git a/Endpoint/Controllers/V1/GroupController.cs b/Endpoint/Controllers/V1/GroupController.cs index 970bc66..3dc7966 100644 --- a/Endpoint/Controllers/V1/GroupController.cs +++ b/Endpoint/Controllers/V1/GroupController.cs @@ -5,6 +5,7 @@ using Mirea.Api.DataAccess.Application.Cqrs.Group.Queries.GetGroupDetails; using Mirea.Api.DataAccess.Application.Cqrs.Group.Queries.GetGroupList; using Mirea.Api.Dto.Responses; using Mirea.Api.Endpoint.Common.Attributes; +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -13,6 +14,19 @@ namespace Mirea.Api.Endpoint.Controllers.V1 { public class GroupController(IMediator mediator) : BaseControllerV1 { + private static int GetCourseNumber(string groupName) + { + var current = DateTime.Now; + if (!int.TryParse(groupName[2..], out var yearOfGroup) + && !int.TryParse(groupName.Split('-')[^1][..2], out yearOfGroup)) + return -1; + + // Convert a two-digit year to a four-digit one + yearOfGroup += current.Year / 100 * 100; + + return current.Year - yearOfGroup + (current.Month < 9 ? 0 : 1); + } + /// /// Retrieves a list of groups. /// @@ -35,7 +49,8 @@ namespace Mirea.Api.Endpoint.Controllers.V1 { Id = g.Id, Name = g.Name, - FacultyId = g.FacultyId + FacultyId = g.FacultyId, + CourseNumber = GetCourseNumber(g.Name) }) ); } @@ -61,7 +76,8 @@ namespace Mirea.Api.Endpoint.Controllers.V1 Id = result.Id, Name = result.Name, FacultyId = result.FacultyId, - FacultyName = result.Faculty + FacultyName = result.Faculty, + CourseNumber = GetCourseNumber(result.Name) }); } }