using IRaCIS.Core.Infrastructure.Extention;

namespace IRaCIS.Application.Contracts
{
    public class SystemLogDTO
    {
        public Guid Id { get; set; }
        public string ApiPath { get; set; } = string.Empty;
        public string Params { get; set; } = string.Empty;
        public string Result { get; set; } = string.Empty;
        public DateTime RequestTime { get; set; } = DateTime.Now;
        public long ElapsedMilliseconds { get; set; } = 0;
        public Guid OptUserId { get; set; } = Guid.Empty;
        public string OptUserName { get; set; } = string.Empty;
        public string ClientIP { get; set; } = string.Empty;
        public bool Status { get; set; } = true;
        public string Message { get; set; } = string.Empty;
        public string LogCategory { get; set; } = string.Empty;
    }

    public class QueryLogQueryDTO : PageInput
    {
        public string Keyword { get; set; } = string.Empty;
        public string LogCategory { get; set; } = string.Empty;
        public DateTime? BeginTime { get; set; } 
        public DateTime? EndTime { get; set; }
    }


    public class AuditQueryDTO : PageInput
    {
        public Guid TrialId { get; set; }

        public Guid? StudyId { get; set; }

        public Guid? SubjectId { get; set; }

        public int? AuditType { get; set; }

        public string SubjectInfo { get; set; } = string.Empty;

        public Guid? OptUserId { get; set; }


        public DateTime?  StartDate { get; set; }

        public DateTime? EndDate { get; set; }
    }


    public class AuditDTO
    {
        public Guid Id { get; set; }

        public int AuditType { get; set; }

        public Guid TrialId { get; set; }

        public Guid StudyId { get; set; }

        public Guid? SubjectId { get; set; }

        public string SubjectName { get; set; } = string.Empty;

        public string SubjectCode { get; set; } = string.Empty;

        public Guid OptUserId { get; set; }

        public string OptUser { get; set; } = string.Empty;

        public DateTime OptTime { get; set; } = DateTime.Now;

        public string Note { get; set; } = string.Empty;

        public string Detail { get; set; } = string.Empty;

        public string TrialCode { get; set; } = string.Empty;

        public string TrialIndication { get; set; } = string.Empty;
    }


    public class OptUserDto
    {
        public Guid  OptUserId { get; set; }
        public string OptUser { get; set; } = string.Empty;
    }

    public class AuditSubjectSelectDto
    {
        public Guid? SubjectId { get; set; }

        public string SubjectCode { get; set; } = string.Empty;

        public string SubjectName { get; set; } = string.Empty;

    }

}