60 lines
2.1 KiB
C#
60 lines
2.1 KiB
C#
using LCU.Library.Internal.MemberPreferencesApiModels.Entities;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel.DataAnnotations;
|
|
|
|
namespace LCU.Library.Internal.MemberPreferencesApiModels.Requests
|
|
{
|
|
public class MemberOptinRequest : IValidatableObject
|
|
{
|
|
[Required] public string UserId { get; set; }
|
|
public string Email { get; set; }
|
|
[Required] public string Value { get; set; }
|
|
[Required] public string LegalReference { get; set; }
|
|
|
|
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
|
|
{
|
|
var results = new List<ValidationResult>();
|
|
|
|
if (!string.Equals(Value, DeliveryPreference.Electronic, StringComparison.InvariantCultureIgnoreCase) &&
|
|
!string.Equals(Value, DeliveryPreference.Paper, StringComparison.InvariantCultureIgnoreCase))
|
|
{
|
|
results.Add(new ValidationResult(
|
|
$"Invalid Option for Unified Opt-In Preference",
|
|
new[] { "Value" }));
|
|
}
|
|
|
|
if (string.Equals(Value, DeliveryPreference.Electronic, StringComparison.InvariantCultureIgnoreCase))
|
|
{
|
|
if (string.IsNullOrWhiteSpace(Email))
|
|
{
|
|
results.Add(new ValidationResult("Email is required when Opting in", new[] { "Email" }));
|
|
}
|
|
else
|
|
{
|
|
try
|
|
{
|
|
var unused = new System.Net.Mail.MailAddress(Email);
|
|
}
|
|
catch
|
|
{
|
|
results.Add(new ValidationResult("Invalid Email Format", new[] { "Email" }));
|
|
}
|
|
}
|
|
}
|
|
|
|
return results;
|
|
}
|
|
|
|
public bool IsElectronicRequest()
|
|
{
|
|
return string.Equals(Value, DeliveryPreference.Electronic, StringComparison.InvariantCultureIgnoreCase);
|
|
}
|
|
|
|
public bool IsPaperRequest()
|
|
{
|
|
return string.Equals(Value, DeliveryPreference.Paper, StringComparison.InvariantCultureIgnoreCase);
|
|
}
|
|
}
|
|
}
|