package public_services

import (
	"time"

	"cpone/db"
)

func NewServicesLandingPage(u LandingPage, uStore db.AppStore) *ServicesLandingPage {

	return &ServicesLandingPage{
		LandingPage:      u,
		LandingPageStore: uStore,
	}
}

type LandingPage struct {
	ID              int       `json:"id"`
	LandingPagename string    `json:"LandingPagename"`
	Email           string    `json:"email"`
	CreatedAt       time.Time `json:"created_at,omitempty"`
}

type ClientService struct {
	ClientServiceID          int    `json:"ClientServiceID"`
	ClientServiceName        string `json:"ClientServiceName"`
	ClientServiceDescription string `json:"ClientServiceDescription"`
	ClientServiceIcon        string `json:"ClientServiceIcon"`
	ClientServiceLink        string `json:"ClientServiceLink"`
}
type AdvantageClient struct {
	AdvantageClientID   int    `json:"AdvantageClientID"`
	AdvantageClientName string `json:"AdvantageClientName"`
	AdvantageClientDesc string `json:"AdvantageClientDesc"`
}

type Promotion struct {
	PromotionID    int    `json:"PromotionID"`
	PromotionAsset string `json:"PromotionAsset"`
	PromotionLink  string `json:"PromotionLink"`
}

type FooterSubNav struct {
	FootSubNavID    int    `json:"FootSubNavID"`
	FootSubNavTitle string `json:"FootSubNavTitle"`
	FootSubNavLink  string `json:"FootSubNavLink"`
}

type FooterNav struct {
	FooterNavID    int            `json:"FooterNavID"`
	FooterNavTitle string         `json:"FooterNavTitle"`
	FooteSubNav    []FooterSubNav `json:"FooterSubNav,omitempty"`
}

type ServicesLandingPage struct {
	LandingPage      LandingPage
	LandingPageStore db.AppStore
}

func (su *ServicesLandingPage) GetAllLandingPages() ([]LandingPage, error) {
	query := `SELECT id, LandingPagename, email, created_at FROM LandingPages ORDER BY created_at DESC`

	rows, err := su.LandingPageStore.Db.Query(query)
	if err != nil {
		return []LandingPage{}, err
	}
	// We close the resource
	defer rows.Close()

	LandingPages := []LandingPage{}
	for rows.Next() {
		rows.Scan(
			&su.LandingPage.ID,
			&su.LandingPage.LandingPagename,
			&su.LandingPage.Email,
			&su.LandingPage.CreatedAt,
		)

		LandingPages = append(LandingPages, su.LandingPage)
	}

	return LandingPages, nil
}

func (su *ServicesLandingPage) GetLandingPageById(id int) (LandingPage, error) {

	query := `SELECT id, LandingPagename, email, created_at FROM LandingPages
		WHERE id = ?`

	stmt, err := su.LandingPageStore.Db.Prepare(query)
	if err != nil {
		return LandingPage{}, err
	}

	defer stmt.Close()

	su.LandingPage.ID = id
	err = stmt.QueryRow(
		su.LandingPage.ID,
	).Scan(
		&su.LandingPage.ID,
		&su.LandingPage.LandingPagename,
		&su.LandingPage.Email,
		&su.LandingPage.CreatedAt,
	)
	if err != nil {
		return LandingPage{}, err
	}

	return su.LandingPage, nil
}
func (su *ServicesLandingPage) GetClientService() ([]ClientService, error) {

	data := []ClientService{
		{
			ClientServiceID:          1,
			ClientServiceName:        "In House Clinic",
			ClientServiceDescription: "Maintaining health in the workplace by carrying out promotional, preventive, curative and rehabilitative programs.",
			ClientServiceIcon:        "uil:clinic-medical",
			ClientServiceLink:        "/",
		},
		{
			ClientServiceID:          2,
			ClientServiceName:        "Laboratorium Test",
			ClientServiceDescription: "Maintaining health in the workplace by carrying out promotional, preventive, curative and rehabilitative programs.",
			ClientServiceIcon:        "healthicons:clinical-a-outline",
			ClientServiceLink:        "/",
		},
		{
			ClientServiceID:          3,
			ClientServiceName:        "Medical Check Up",
			ClientServiceDescription: "Supported by a professional medical, paramedical team, and as well as laboratory equipment ",
			ClientServiceIcon:        "jam:medical",
			ClientServiceLink:        "/",
		},
		{
			ClientServiceID:          4,
			ClientServiceName:        "Medical Check Up 2",
			ClientServiceDescription: "Supported by a professional medical, paramedical team, and as well as laboratory equipment ",
			ClientServiceIcon:        "jam:medical",
			ClientServiceLink:        "/",
		},
		{
			ClientServiceID:          5,
			ClientServiceName:        "Medical Check Up 3",
			ClientServiceDescription: "Supported by a professional medical, paramedical team, and as well as laboratory equipment ",
			ClientServiceIcon:        "jam:medical",
			ClientServiceLink:        "/",
		},
	}

	return data, nil
}
func (su *ServicesLandingPage) GetClientAdvantage() ([]AdvantageClient, error) {

	data := []AdvantageClient{
		{
			AdvantageClientID:   1,
			AdvantageClientName: "ISO Certificate",
			AdvantageClientDesc: "Westerindo Clinical Laboratory has obtained ISO 15189:2009 (ISO 15189:2007) Accreditation from the National Accreditation Committee (KAN) and the Health Laboratory Accreditation Commission (KALK).",
		},
		{
			AdvantageClientID:   2,
			AdvantageClientName: "Modern Technology",
			AdvantageClientDesc: "Laboratory Information System (LIS) is an information system in which laboratory equipment and diagnostic support have been integrated automatically so that examination results can be immediately filled in in employee data. This eliminates the possibility of human error.",
		},
		{
			AdvantageClientID:   3,
			AdvantageClientName: "Good Quality Facilities",
			AdvantageClientDesc: "The laboratory and medical support equipment used at the Westerindo Clinical Laboratory is international scale for precise, fast and accurate results. Lab and medical equipment certificates are periodically renewed according to standards.",
		},
		{
			AdvantageClientID:   4,
			AdvantageClientName: "Professional Service",
			AdvantageClientDesc: "Westerindo Clinical Laboratory is committed to providing professional and excellent service. Therefore, all staff and doctors at the Westerindo Clinical Laboratory have competency certification according to their field.",
		},
		{
			AdvantageClientID:   5,
			AdvantageClientName: "Experienced",
			AdvantageClientDesc: "Westerindo Clinical Laboratory is very experienced in carrying out Medical Check Ups both onsite and insite, in all corners of Indonesia. Serving various kinds of companies, from oil and gas companies, automotive, manufacturing, offices, and others.",
		},
	}

	return data, nil
}
func (su *ServicesLandingPage) GetPromotionList() ([]Promotion, error) {

	data := []Promotion{
		{
			PromotionID:    1,
			PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_1.png",
			PromotionLink:  "",
		},
		{
			PromotionID:    2,
			PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_2.png",
			PromotionLink:  "",
		},
		{
			PromotionID:    3,
			PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_3.png",
			PromotionLink:  "",
		},
		{
			PromotionID:    4,
			PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_2.png",
			PromotionLink:  "",
		},
		{
			PromotionID:    5,
			PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_3.png",
			PromotionLink:  "",
		},
	}

	return data, nil
}
func (su *ServicesLandingPage) GetFooterNavList() ([]FooterNav, error) {
	data := []FooterNav{
		{
			FooterNavID:    1,
			FooterNavTitle: "Dashboard",
			FooteSubNav: []FooterSubNav{
				{
					FootSubNavID:    1,
					FootSubNavTitle: "Dashboard #1",
					FootSubNavLink:  "/",
				},
				{
					FootSubNavID:    2,
					FootSubNavTitle: "Dashboard #2",
					FootSubNavLink:  "/",
				},
			},
		},
		{
			FooterNavID:    2,
			FooterNavTitle: "Benefit",
			FooteSubNav: []FooterSubNav{
				{
					FootSubNavID:    1,
					FootSubNavTitle: "Benefit #1",
					FootSubNavLink:  "/",
				},
				{
					FootSubNavID:    2,
					FootSubNavTitle: "Benefit #2",
					FootSubNavLink:  "/",
				},
			},
		},
		{
			FooterNavID:    3,
			FooterNavTitle: "Finance & Claims",
			FooteSubNav: []FooterSubNav{
				{
					FootSubNavID:    1,
					FootSubNavTitle: "Finance & Claims #1",
					FootSubNavLink:  "/",
				},
				{
					FootSubNavID:    2,
					FootSubNavTitle: "Finance & Claims #2",
					FootSubNavLink:  "/",
				},
			},
		},
		{
			FooterNavID:    4,
			FooterNavTitle: "Memberships",
			FooteSubNav: []FooterSubNav{
				{
					FootSubNavID:    1,
					FootSubNavTitle: "Memberships #1",
					FootSubNavLink:  "/",
				},
				{
					FootSubNavID:    2,
					FootSubNavTitle: "Memberships #2",
					FootSubNavLink:  "/",
				},
			},
		},
	}

	return data, nil
}
