using MagicCarpetContracts.Exceptions; using MagicCarpetContracts.Extensions; using MagicCarpetContracts.Infrastructure; using MagicCarpetContracts.Resources; using Microsoft.Extensions.Localization; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MagicCarpetContracts.DataModels; internal class SaleTourDataModel(string saleId, string tourId, int count, double price) : IValidation { private readonly TourDataModel? _tour; public string SaleId { get; private set; } = saleId; public string TourId { get; private set; } = tourId; public int Count { get; private set; } = count; public double Price { get; private set; } = price; public string TourName => _tour?.TourName ?? string.Empty; public SaleTourDataModel(string saleId, string tourId, int count, double price, TourDataModel tour) : this(saleId, tourId, count, price) { _tour = tour; } public void Validate(IStringLocalizer localizer) { if (SaleId.IsEmpty()) throw new ValidationException(string.Format(localizer["ValidationExceptionMessageEmptyField"], "SaleId")); if (!SaleId.IsGuid()) throw new ValidationException(string.Format(localizer["ValidationExceptionMessageNotAId"], "SaleId")); if (TourId.IsEmpty()) throw new ValidationException(string.Format(localizer["ValidationExceptionMessageEmptyField"], "ITourIdd")); if (!TourId.IsGuid()) throw new ValidationException(string.Format(localizer["ValidationExceptionMessageNotAId"], "TourId")); if (Count <= 0) throw new ValidationException(string.Format(localizer["ValidationExceptionMessageLessOrEqualZero"], "Count")); if (Price <= 0) throw new ValidationException(string.Format(localizer["ValidationExceptionMessageLessOrEqualZero"], "Price")); } }