<?php

/**
 * This is an example module with only the basic
 * setup necessary to get it working.
 *
 * @class SSABookingModule
 */
class SSABookingModule extends FLBuilderModule {

    /**
     * Constructor function for the module. You must pass the
     * name, description, dir and url in an array to the parent class.
     *
     * @method __construct
     */
    public function __construct()
    {
        parent::__construct(array(
            'name'          => __('Booking', 'simply-schedule-appointments'),
            'description'   => __('Show an appointment booking form.', 'simply-schedule-appointments'),
            'category'		=> __('Simply Schedule Appointments', 'simply-schedule-appointments'),
            'dir'           => ssa()->dir( 'includes/beaver-builder/modules/booking/' ),
            'url'           => ssa()->url( 'includes/beaver-builder/modules/booking/'),
            'editor_export' => true, // Defaults to true and can be omitted.
            'enabled'       => true, // Defaults to true and can be omitted.
        ));
    }
}

$appointment_types = ssa()->appointment_type_model->query( array(
    'number' => -1,
    'status' => 'publish',
) );

$map_appointment_type_ids_to_labels = wp_list_pluck( $appointment_types, 'title', 'slug' );
$map_appointment_type_ids_to_labels = array_reverse( $map_appointment_type_ids_to_labels, true );
$map_appointment_type_ids_to_labels[''] = 'All';
$map_appointment_type_ids_to_labels = array_reverse( $map_appointment_type_ids_to_labels, true );


/**
 * Register the module and its form settings.
 */
FLBuilder::register_module('SSABookingModule', array(
    'general'       => array( // Tab
        'title'         => __('General', 'simply-schedule-appointments'), // Tab title
        'sections'      => array( // Tab Sections
            'general'       => array( // Section
                'title'         => __('Options', 'simply-schedule-appointments'), // Section Title
                'fields'        => array( // Section Fields
                    'appointment_type'     => array(
                        'type'          => 'select',
                        'label'         => __( 'Appointment Type', 'simply-schedule-appointments' ),
                        'default'       => '',
                        'options'       => $map_appointment_type_ids_to_labels
                    ),
                )
			),
			'performance' => array( // Section
				'title'  => __( 'Performance', 'simply-schedule-appointments' ),
				'fields' => array(
					'defer' => array(
						'type'    => 'select',
						'label'   => __( 'Defer loading', 'simply-schedule-appointments' ),
						'default' => '',
						'options' => array(
							''    => __( 'No', 'simply-schedule-appointments' ),
							'yes' => __( 'Yes', 'simply-schedule-appointments' ),
						),
						'help'    => __( 'Improves page load performance by deferring initialization until visible.', 'simply-schedule-appointments' ),
					),
				),
			),
			'style'       => array( // Section
                'title'         => __('Styles', 'simply-schedule-appointments'), // Section Title
                'fields'        => array( // Section Fields
					'accent_color' => array(
						'type'          => 'color',
						'label'         => __( 'Accent Color', 'simply-schedule-appointments' ),
						'show_reset'    => true,
						'show_alpha'    => true
					),
					'background_color' => array(
						'type'          => 'color',
						'label'         => __( 'Background Color', 'simply-schedule-appointments' ),
						'show_reset'    => true,
						'show_alpha'    => true
					),
					'font_family' => array(
						'type'          => 'font',
						'label'         => __( 'Font Family', 'simply-schedule-appointments' ),
					),	
					'padding' => array(
						'type'   => 'unit',
						'label'  => __( 'Padding', 'simply-schedule-appointments' ),
						'units'  => array( 'px', 'em', 'rem', 'vw', '%' ),
						'slider' => true,
					),									
				)
            )
        )
    )
));
