namespace GermanApp.Shared.Models; /// /// Base API response wrapper for consistent API responses. /// /// The data type of the response public record ApiResponse(T Data, string Message = "Success", bool Success = true) { /// /// Creates a successful response. /// public static ApiResponse Ok(T data, string message = "Success") => new ApiResponse(data, message, true); } /// /// API error response for consistent error handling. /// public record ApiErrorResponse(string Message, int StatusCode, string? Details = null) { public bool Success => false; /// /// Creates an error response. /// public static ApiErrorResponse Error(string message, int statusCode, string? details = null) => new ApiErrorResponse(message, statusCode, details); } /// /// Paginated API response. /// /// The data type of the items public record PaginatedResponse(IEnumerable Items, int PageNumber, int PageSize, int TotalCount, int TotalPages) { /// /// Creates a paginated response. /// public static PaginatedResponse Create(IEnumerable items, int pageNumber, int pageSize, int totalCount) => new PaginatedResponse( items, pageNumber, pageSize, totalCount, (int)Math.Ceiling(totalCount / (double)pageSize) ); }