Sube carpetas API, API.Tests, Application y Domain del Backend

This commit is contained in:
FrancoRu
2026-09-18 13:35:59 -03:00
parent bbb09554bb
commit 2eb4eeef03
572 changed files with 56405 additions and 0 deletions
@@ -0,0 +1,40 @@
using System;
using System.ComponentModel.DataAnnotations;
namespace Application.DTOs.MedicalRecord.Request;
/// <summary>
/// Owner or admin request to approve or reject a player's medical record for a team and tournament.
/// </summary>
public class ReviewMedicalRecordRequest
{
/// <summary>
/// The player whose medical record is being reviewed.
/// </summary>
[Required]
public required Guid PlayerId { get; set; }
/// <summary>
/// The team the player is registered to for the season.
/// </summary>
[Required]
public required Guid TeamId { get; set; }
/// <summary>
/// The tournament the record applies to.
/// </summary>
[Required]
public required Guid TournamentId { get; set; }
/// <summary>
/// True to approve and make the player habilitado; false to reject.
/// </summary>
[Required]
public required bool Approve { get; set; }
/// <summary>
/// Optional reason, typically recorded when rejecting.
/// </summary>
[MaxLength(500)]
public string? Reason { get; set; }
}
@@ -0,0 +1,36 @@
using Microsoft.AspNetCore.Http;
using System;
using System.ComponentModel.DataAnnotations;
namespace Application.DTOs.MedicalRecord.Request;
/// <summary>
/// Multipart request to upload a player's medical-record PDF for a specific team and tournament.
/// </summary>
public class UploadMedicalRecordRequest
{
/// <summary>
/// The player the medical record belongs to.
/// </summary>
[Required]
public required Guid PlayerId { get; set; }
/// <summary>
/// The team the player is registered to for the season.
/// </summary>
[Required]
public required Guid TeamId { get; set; }
/// <summary>
/// The tournament the record applies to.
/// </summary>
[Required]
public required Guid TournamentId { get; set; }
/// <summary>
/// The medical-record PDF to upload.
/// </summary>
[Required]
public required IFormFile File { get; set; }
}
@@ -0,0 +1,65 @@
using Domain.Entities.Models;
using Domain.Enums;
using System;
namespace Application.DTOs.MedicalRecord.Response;
/// <summary>
/// The medical-record eligibility state of a player's season registration, flagging not-habilitado players.
/// </summary>
public class MedicalRecordResponse
{
public required Guid PlayerId { get; set; }
public required Guid TeamId { get; set; }
public required Guid TournamentId { get; set; }
/// <summary>
/// The medical-record status: Pending, Approved, or Rejected.
/// </summary>
public required MedicalRecordStatus Status { get; set; }
/// <summary>
/// True only when the record is Approved.
/// </summary>
public required bool IsHabilitado { get; set; }
/// <summary>
/// Storage reference of the uploaded file, or null if none yet.
/// </summary>
public string? FileUrl { get; set; }
/// <summary>
/// Original uploaded file name, or null if none yet.
/// </summary>
public string? FileName { get; set; }
/// <summary>
/// Reason recorded on rejection, if any.
/// </summary>
public string? ReviewReason { get; set; }
/// <summary>
/// When the record was last approved or rejected, if ever.
/// </summary>
public DateTime? ReviewedAt { get; set; }
/// <summary>
/// Projects a PlayerTeamRegistration into its medical-record view.
/// </summary>
public static MedicalRecordResponse FromRegistration(PlayerTeamRegistration registration)
{
return new MedicalRecordResponse
{
PlayerId = registration.PlayerId,
TeamId = registration.TeamId,
TournamentId = registration.TournamentId,
Status = registration.MedicalRecordStatus,
IsHabilitado = registration.IsHabilitado,
FileUrl = registration.MedicalRecordFileUrl,
FileName = registration.MedicalRecordFileName,
ReviewReason = registration.MedicalRecordReviewReason,
ReviewedAt = registration.MedicalRecordReviewedAt,
};
}
}