Example #1
0
        public House(
            Uri houseUrl,
            AddressLocation address,
            Area groundArea,
            Area houseArea,
            EnergyTypes energyType,
            DateTime forSaleDate,
            DateTime originalForSaleDate,
            IEnumerable <HouseImage> images,
            IEnumerable <InternetOption> internetOptions,
            IEnumerable <Shop> shops,
            IEnumerable <CategoryRating> ratings)
        {
            if (houseUrl.Scheme != Uri.UriSchemeHttp && houseUrl.Scheme != Uri.UriSchemeHttps)
            {
                throw new ArgumentException($"House url should use {Uri.UriSchemeHttp} or {Uri.UriSchemeHttps}.", nameof(houseUrl));
            }

            if (originalForSaleDate > forSaleDate)
            {
                throw new ArgumentOutOfRangeException(nameof(forSaleDate), "Original for sale date cannot be later than the current for sale date.");
            }

            if (forSaleDate > DateTime.Now)
            {
                throw new ArgumentOutOfRangeException(nameof(forSaleDate), "For sale date cannot be in the future.");
            }
            if (originalForSaleDate > DateTime.Now)
            {
                throw new ArgumentOutOfRangeException(nameof(originalForSaleDate), "Original for sale date cannot be in the future.");
            }

            HouseUrl            = houseUrl;
            Address             = address ?? throw new ArgumentNullException(nameof(address));
            GroundArea          = groundArea ?? throw new ArgumentNullException(nameof(address));
            HouseArea           = houseArea ?? throw new ArgumentNullException(nameof(address));
            EnergyType          = energyType;
            ForSaleDate         = forSaleDate;
            OriginalForSaleDate = originalForSaleDate;
            Images          = new ReadOnlyCollection <HouseImage>(images?.ToList() ?? throw new ArgumentNullException(nameof(images)));
            InternetOptions = new ReadOnlyCollection <InternetOption>(internetOptions?.ToList() ?? throw new ArgumentNullException(nameof(internetOptions)));
            Shops           = new ReadOnlyCollection <Shop>(shops?.ToList() ?? throw new ArgumentNullException(nameof(shops)));
            Ratings         = new ReadOnlyCollection <CategoryRating>(ratings?.ToList() ?? throw new ArgumentNullException(nameof(ratings)));
        }
Example #2
0
 public Shop(string name, AddressLocation address)
 {
     Name    = name ?? throw new ArgumentNullException(nameof(name));
     Address = address ?? throw new ArgumentNullException(nameof(address));
 }