2025-02-11 17:33:57 +04:00

30 lines
1.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using BitterlyAndExclamationMarkContracts.Extensions;
using BitterlyAndExclamationMarkContracts.Infrastructure;
using BitterlyAndExclamationMarkContracts.Exceptions;
using System.Text.RegularExpressions;
namespace BitterlyAndExclamationMarkContracts.DataModels;
public class BuyerDataModel(string id, string fio, string phoneNumber, int scoreCount) : IValidation
{
public string Id { get; private set; } = id;
public string FIO { get; private set; } = fio;
public string PhoneNumber { get; private set; } = phoneNumber;
public int ScoreCount { get; private set; } = scoreCount;
public void Validate()
{
if (Id.IsEmpty())
throw new ValidationException("Field Id is empty");
if (!Id.IsGuid())
throw new ValidationException("The value in the field Id is not a unique identifier");
if (FIO.IsEmpty())
throw new ValidationException("Field FIO is empty");
if (!Regex.IsMatch(FIO, @"\b[А-ЯЁ][а-яё]*\b \b[А-ЯЁ][а-яё]*\b \b[А-ЯЁ][а-яё]*\b"))
throw new ValidationException("Field FIO is not a FIO");
if (PhoneNumber.IsEmpty())
throw new ValidationException("Field PhoneNumber is empty");
if (!Regex.IsMatch(PhoneNumber, @"^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\-]?)?[\d\- ]{7,10}$"))
throw new ValidationException("Field PhoneNumber is not a phone number");
if (ScoreCount < 0)
throw new ValidationException("The value in the field ScoreCount is a negative number");
}
}