using Core.Abstractions.Models;
using Core.DomainObjects.Documents;
using WeatherForecast.Models.Pages;
namespace WeatherForecast.Models.Responses {
  /// 
  /// 
  /// 
  public class ContentResponseModel : ResponseModelBase {
    /// 
    /// 
    /// 
    public string SiteName { get; set; }
    /// 
    /// 
    /// 
    public string SiteUrl { get; set; }
    /// 
    /// 
    /// 
    public HeaderModel Header { get; set; }
    /// 
    /// 
    /// 
    public LocalizationModel Localization { get; set; }
    /// 
    /// 
    /// 
    public List Routes { get; set; }
    /// 
    /// 
    /// 
    public List AdminRoutes { get; set; }
    /// 
    /// 
    /// 
    public List ServiceRoutes { get; set; }
    /// 
    /// 
    /// 
    public List TopMenu { get; set; }
    /// 
    /// 
    /// 
    public List SideMenu { get; set; }
    /// 
    /// Home page static front end content
    /// 
    public HomePageModel HomePage { get; set; }
    
    /// 
    /// Shop catalog page static front end content
    /// 
    public ShopCatalogPageModel ShopCatalog { get; set; }
    /// 
    /// Shop item page static front end content
    /// 
    public ShopItemPageModel ShopItem { get; set; }
    /// 
    /// 
    /// 
    public ShopCartPageModel ShopCart { get; set; }
    /// 
    /// 
    /// 
    public ShopCheckoutPageModel ShopCheckout { get; set; }
    /// 
    /// 
    /// 
    public BlogCatalogPageModel BlogCatalog { get; set; }
    /// 
    /// 
    /// 
    public BlogItemPageModel BlogItem { get; set; }
    /// 
    /// 
    /// 
    public SignInPageModel SignIn { get; set; }
    /// 
    /// 
    /// 
    public SignUpPageModel SignUp { get; set; }
    /// 
    /// 
    /// 
    /// 
    public ContentResponseModel(Content domainObject) {
      SiteName = domainObject.SiteName;
      SiteUrl = domainObject.SiteUrl;
      Header = new HeaderModel(domainObject.Header);
      Localization = new LocalizationModel(domainObject.Localization);
      Routes = domainObject.Routes.Select(x => new RouteModel(x)).ToList();
      AdminRoutes = domainObject.AdminRoutes.Select(x => new RouteModel(x)).ToList();
      ServiceRoutes = domainObject.ServiceRoutes.Select(x => new RouteModel(x)).ToList();
      TopMenu = domainObject.TopMenu.Select(x => new MenuItemModel(x)).ToList();
      SideMenu = domainObject.SideMenu.Select(x => new MenuItemModel(x)).ToList();
      HomePage = new HomePageModel(domainObject.HomePage);
      ShopCatalog = new ShopCatalogPageModel(domainObject.ShopCatalog);
      ShopItem = new ShopItemPageModel(domainObject.ShopItem);
      ShopCart = new ShopCartPageModel(domainObject.ShopCart);
      ShopCheckout = new ShopCheckoutPageModel(domainObject.ShopCheckout);
      BlogCatalog = new BlogCatalogPageModel(domainObject.BlogCatalog);
      BlogItem = new BlogItemPageModel(domainObject.BlogItem);
      SignIn = new SignInPageModel(domainObject.SignIn);
      SignUp = new SignUpPageModel(domainObject.SignUp);
    }
  }
}