using System;
using System.Globalization;

namespace ShippingCostCalculator
{
    public class ShippingStrategy
    {
        public ShippingStrategy(decimal flatRate)
        {
            FlatRate = flatRate;
        }

        public decimal FlatRate
        {
            get
            {
                return flatRate;
            }
            set
            {
                if (value <= decimal.Zero)
                    throw new ArgumentOutOfRangeException("value", "Stawka musi być liczbą większą od zera");

                flatRate = value;
            }
        }

        public decimal CalculateShippingCost(float packageWeightInKilograms, Size<float> packageDimensionsInInches, RegionInfo destination)
        {
            if (packageWeightInKilograms <= 0f) 
                throw new ArgumentOutOfRangeException("packageWeightInKilograms", "Waga przesyłki musi być liczbą większą od zera");

            if (packageDimensionsInInches.X <= 0f || packageDimensionsInInches.Y <= 0f)
                throw new ArgumentOutOfRangeException("packageDimensionsInInches", "Wymiary przesyłki muszą być liczbami większymi od zera");

            return decimal.One;
        }

        protected decimal flatRate;
    }
}
