using UniVerse.Application.DTOs.Sync; using System.Text.Json.Serialization; namespace UniVerse.Application.Interfaces; public interface IScheduleSyncService { Task SyncScheduleAsync(SyncScheduleRequest request); Task SyncRoomsAsync(); Task> SearchEmployeesAsync(string fullname); Task GetLastSyncStatusAsync(); } public interface IModeusApiClient { Task SearchEventsAsync(SyncScheduleRequest request); Task SearchRoomsAsync(); Task> SearchEmployeeAsync(string fullname); } // Modeus API response models public record ModeusEvent(string Id, string Name, DateTime StartsAt, DateTime EndsAt, string? RoomId, string? TeacherId, string? TypeId); public record ModeusEventsResponse(List Events); public record ModeusBuilding(string? Id, string? Name, string? NameShort, string? Address); public record ModeusRoom(string Id, string Name, string? NameShort, ModeusBuilding? Building, int? TotalCapacity, int? WorkingCapacity); public record ModeusRoomsEmbedded(List? Rooms); public record ModeusPage(int Size, int TotalElements, int TotalPages, int Number); public class ModeusRoomsResponse { [JsonPropertyName("_embedded")] public ModeusRoomsEmbedded? Embedded { get; init; } public ModeusPage? Page { get; init; } public List? Rooms { get; init; } [JsonIgnore] public IReadOnlyList RoomItems => Embedded?.Rooms ?? Rooms ?? []; } public record ModeusEmployee(string? Id, string FullName, string? Department);