<?php
/*
 * Jetpack CRM
 * https://jetpackcrm.com
 * V3.0+
 *
 * Copyright 2020 Automattic
 *
 * Date: 05/07/19
 */

defined( 'ZEROBSCRM_PATH' ) || exit( 0 );

/**
 * ZBS DAL >> Addresses
 *
 * @author   Woody Hayday <hello@jetpackcrm.com>
 * @version  2.0
 * @access   public
 * @see      https://jetpackcrm.com/kb
 */
class zbsDAL_addresses extends zbsDAL_ObjectLayer {

	protected $objectType = ZBS_TYPE_ADDRESS;
	// protected $objectDBPrefix = 'zbsadd_';
	protected $include_in_templating = true;
	protected $objectModel           = array(

		// ID
		'ID'          => array(
			'fieldname' => 'ID',
			'format'    => 'int',
		),

		// site + team generics
		'zbs_site'    => array(
			'fieldname' => 'zbs_site',
			'format'    => 'int',
		),
		'zbs_team'    => array(
			'fieldname' => 'zbs_team',
			'format'    => 'int',
		),
		'zbs_owner'   => array(
			'fieldname' => 'zbs_owner',
			'format'    => 'int',
		),

		// other fields
		'addr1'       => array(
			// db model:
			'fieldname'   => 'zbsa_addr1',
			'format'      => 'str',
			// output model
			'input_type'  => 'text',
			'label'       => 'Address Line 1',
			'placeholder' => '',
		),
		'addr2'       => array(
			// db model:
			'fieldname'   => 'zbsa_addr2',
			'format'      => 'str',
			// output model
			'input_type'  => 'text',
			'label'       => 'Address Line 2',
			'placeholder' => '',
		),
		'city'        => array(
			// db model:
			'fieldname'   => 'zbsa_city',
			'format'      => 'str',
			// output model
			'input_type'  => 'text',
			'label'       => 'City',
			'placeholder' => 'e.g. New York',
		),
		'county'      => array(
			// db model:
			'fieldname'   => 'zbsa_county',
			'format'      => 'str',
			// output model
			'input_type'  => 'text',
			'label'       => 'County',
			'placeholder' => 'e.g. Kings County',
		),
		'postcode'    => array(
			// db model:
			'fieldname'   => 'zbsa_postcode',
			'format'      => 'str',
			// output model
			'input_type'  => 'text',
			'label'       => 'Post Code',
			'placeholder' => 'e.g. 10019',
		),
		'country'     => array(
			// db model:
			'fieldname'   => 'zbsa_country',
			'format'      => 'str',
			// output model
			'input_type'  => 'selectcountry',
			'label'       => 'Country',
			'placeholder' => '',
		),

		'created'     => array(
			'fieldname' => 'zbsa_created',
			'format'    => 'uts',
		),
		'lastupdated' => array(
			'fieldname' => 'zbsa_lastupdated',
			'format'    => 'uts',
		),

	);

	function __construct( $args = array() ) {

		#} =========== LOAD ARGS ==============
		$defaultArgs = array(

			// 'tag' => false,

		);
		foreach ( $defaultArgs as $argK => $argV ) {
			$this->$argK = $argV;
			if ( is_array( $args ) && isset( $args[ $argK ] ) ) {
				if ( is_array( $args[ $argK ] ) ) {
					$newData = $this->$argK;
					if ( ! is_array( $newData ) ) {
						$newData = array();
					} foreach ( $args[ $argK ] as $subK => $subV ) {
						$newData[ $subK ] = $subV;
					}$this->$argK = $newData;
				} else {
					$this->$argK = $args[ $argK ]; }
			}
		}
		#} =========== / LOAD ARGS =============
	}

	// ===============================================================================
	// ===========   ADDRESS  ========================================================

	/*
			Addresses as distinct objects didn't make the v3.0 cut.
			They'd be a valid area for expansion post v3.0.

			This file is here as a precursor, and is used by the 3.0 migration routine
			to stop custom field keys colliding with field names (the obj model above)
			(function zeroBSCRM_AJAX_dbMigration300open())


	*/

	// ===========  /   ADDRESS  =====================================================
	// ===============================================================================
} // / class
