using Core.DomainObjects.Pages;
using WeatherForecast.Models.Abstractions;
using WeatherForecast.Models.PageSections;

namespace WeatherForecast.Models.Pages {

  /// <summary>
  /// 
  /// </summary>
  public class ShopCheckoutPageModel : PageModelBase<ShopCheckoutPage> {

    /// <summary>
    /// 
    /// </summary>
    public BillingAddressSectionModel BillingAddressSection { get; set; }

    /// <summary>
    /// 
    /// </summary>
    public ShippingAddressSectionModel ShippingAddressSection { get; set; }

    /// <summary>
    /// 
    /// </summary>
    public CheckoutSettingsSectionModel SettingsSection { get; set; }

    /// <summary>
    /// 
    /// </summary>
    public CheckoutSummarySectionModel SummarySection { get; set; }

    /// <summary>
    /// 
    /// </summary>
    public PaymentSectionModel PaymentSection { get; set; }

    /// <summary>
    /// 
    /// </summary>
    public FormItemModel Submit { get; set; }

    /// <summary>
    /// 
    /// </summary>
    /// <param name="shopCheckoutPage"></param>
    public ShopCheckoutPageModel(ShopCheckoutPage shopCheckoutPage) : base(shopCheckoutPage) {

      BillingAddressSection = new BillingAddressSectionModel(shopCheckoutPage.BillingAddressSection);
      ShippingAddressSection = new ShippingAddressSectionModel(shopCheckoutPage.ShippingAddressSection);
      SettingsSection = new CheckoutSettingsSectionModel(shopCheckoutPage.SettingsSection);
      SummarySection = new CheckoutSummarySectionModel(shopCheckoutPage.SummarySection);
      PaymentSection = new PaymentSectionModel(shopCheckoutPage.PaymentSection);

      Submit = new FormItemModel(shopCheckoutPage.Submit);
    }
  }
}
