| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- using Domain.Entities.EmailVerification.ValueObject;
- namespace Domain.Entities.EmailVerification
- {
- public class EmailVerifyNumber
- {
- public int ID { get; private set; }
- public VerificationType Type { get; private set; }
- public string Email { get; private set; } = default!;
- public string Code { get; private set; } = default!;
- public bool IsVerified { get; private set; } = false;
- public DateTime Expiration { get; private set; }
- public DateTime CreatedAt { get; private set; } = DateTime.UtcNow;
- private EmailVerifyNumber() { }
- private EmailVerifyNumber(VerificationType type, string email, string code, DateTime expiration)
- {
- if (string.IsNullOrWhiteSpace(email))
- {
- throw new ArgumentException("Email is required.", nameof(email));
- }
- if (email.Length > 60)
- {
- throw new ArgumentOutOfRangeException(nameof(email));
- }
- if (string.IsNullOrWhiteSpace(code))
- {
- throw new ArgumentException("Code is required.", nameof(code));
- }
- if (code.Length > 10)
- {
- throw new ArgumentOutOfRangeException(nameof(code));
- }
- Type = type;
- Email = email;
- Code = code;
- Expiration = expiration;
- CreatedAt = DateTime.UtcNow;
- }
- public static EmailVerifyNumber Create(VerificationType type, string email, string code, DateTime expiration)
- {
- return new(type, email, code, expiration);
- }
- public void MarkVerified()
- {
- IsVerified = true;
- }
- }
- }
|