<?php
/**
 * Instructors List Template.
 *
 * @package Tutor\Views
 * @subpackage Tutor\Instructor
 * @author Themeum <support@themeum.com>
 * @link https://themeum.com
 * @since 2.0.0
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

use TUTOR\Input;
use TUTOR\Instructors_List;
use Tutor\Models\CourseModel;

$allowed_subpage = array();

if ( Input::has( 'sub_page' ) ) {
	$sub_page = Input::get( 'sub_page' );
	if ( in_array( $sub_page, $allowed, true ) ) {
		include_once tutor()->path . "views/pages/{$sub_page}.php";
		return;
	}
}

$instructors = tutor_lms()->instructor_list;

/**
 * Short able params
 */
$user_id     = Input::get( 'user_id', '' );
$course_id   = Input::get( 'course-id', '' );
$data_order  = Input::get( 'order', 'DESC' );
$date        = Input::get( 'date', '' );
$search_term = Input::get( 'search', '' );

/**
 * Determine active tab
 */
$active_tab = Input::get( 'data', 'all' );

/**
 * Pagination data
 */
$selected_page = Input::get( 'paged', 1, Input::TYPE_INT );
$per_page_data = tutor_utils()->get_option( 'pagination_per_page' );
$offset        = ( $per_page_data * $selected_page ) - $per_page_data;

// Available status for instructor.
$available_status = array(
	'pending'  => array( __( 'Pending', 'tutor' ), 'select-warning' ),
	'approved' => array( __( 'Approved', 'tutor' ), 'select-success' ),
	'blocked'  => array( __( 'Blocked', 'tutor' ), 'select-danger' ),
);

$instructor_status = array( 'approved', 'pending', 'blocked' );
if ( 'pending' === $active_tab ) {
	$instructor_status          = array( 'pending' );
	$available_status['reject'] = array( __( 'Reject', 'tutor' ), 'select-danger' );

} elseif ( 'blocked' === $active_tab ) {
	$instructor_status = array( 'blocked' );
} elseif ( 'approved' === $active_tab ) {
	$instructor_status = array( 'approved' );
}

$instructors_list = $instructors::get_instructors( $instructor_status, $offset, $per_page_data, $search_term, $course_id, $date, $data_order );
$total            = $instructors::count_total_instructors( $instructor_status, $search_term, $course_id, $date );

/**
 * Navbar data to make nav menu
 */
$url               = get_pagenum_link();
$add_insructor_url = $url . '&sub_page=add_new_instructor';
$navbar_data       = array(
	'page_title'   => $instructors->page_title,
	'add_button'   => true,
	'button_title' => __( 'Add New', 'tutor' ),
	'button_url'   => $add_insructor_url,
	'modal_target' => 'tutor-instructor-add-new',
);

$filters = array(
	'bulk_action'  => $instructors->bulk_action,
	'bulk_actions' => $instructors->prpare_bulk_actions(),
	'ajax_action'  => 'tutor_instructor_bulk_action',
	'filters'      => array(
		array(
			'label'      => __( 'Courses', 'tutor' ),
			'field_type' => 'select',
			'field_name' => 'course-id',
			'options'    => CourseModel::get_course_dropdown_options(),
			'searchable' => true,
			'value'      => Input::get( 'course-id', '' ),
		),
		array(
			'label'      => __( 'Status', 'tutor' ),
			'field_type' => 'select',
			'field_name' => 'data',
			'options'    => $instructors->tabs_key_value( $search_term, $course_id, $date ),
			'searchable' => false,
			'value'      => Input::get( 'data', '' ),
		),
		array(
			'label'      => __( 'Date', 'tutor' ),
			'field_type' => 'date',
			'field_name' => 'date',
			'show_label' => true,
			'value'      => Input::get( 'date', '' ),
		),
	),
);

?>

<div class="tutor-admin-wrap">
	<?php
		/**
		 * Load Templates with data.
		 */
		$navbar_template  = tutor()->path . 'views/elements/list-navbar.php';
		$filters_template = tutor()->path . 'views/elements/list-filters.php';
		tutor_load_template_from_custom_path( $navbar_template, $navbar_data );
		tutor_load_template_from_custom_path( $filters_template, $filters );
	?>
	<div class="tutor-admin-container tutor-admin-container-lg tutor-mt-16">
		<?php if ( is_array( $instructors_list ) && count( $instructors_list ) ) : ?>
		<div class="tutor-table-responsive tutor-dashboard-list-table">
			<table class="tutor-table tutor-table-middle table-instructors tutor-table-with-checkbox">
				<thead>
					<tr>
						<th width="5%">
							<div class="tutor-d-flex">
								<input type="checkbox" id="tutor-bulk-checkbox-all" class="tutor-form-check-input" />
							</div>
						</th>
						<th class="tutor-table-rows-sorting" width="25%">
							<?php esc_html_e( 'Name', 'tutor' ); ?>
							<span class="tutor-icon-ordering-a-z a-to-z-sort-icon"></span>
						</th>
						<th class="tutor-table-rows-sorting" width="30%">
							<?php esc_html_e( 'Email', 'tutor' ); ?>
							<span class="tutor-icon-ordering-a-z a-to-z-sort-icon"></span>
						</th>
						<th class="tutor-table-rows-sorting" width="5%">
							<?php esc_html_e( 'Total Courses', 'tutor' ); ?>
							<span class="tutor-icon-order-down up-down-icon"></span>
						</th>
						<th class="tutor-table-rows-sorting" width="5%">
							<?php esc_html_e( 'Commission Rate', 'tutor' ); ?>
						</th>

						<?php do_action( 'tutor_after_instructor_list_commission_column' ); ?>

						<th class="tutor-table-rows-sorting" width="10%">
							<?php esc_html_e( 'Status', 'tutor' ); ?>
							<span class="tutor-icon-order-down up-down-icon"></span>
						</th>
						<th></th>
					</tr>
				</thead>
				<tbody>
					<?php
					foreach ( $instructors_list as $list ) :
						$alert     = ( 'pending' === $list->status ? 'warning' : ( 'approved' === $list->status ? 'success' : ( 'blocked' === $list->status ? 'danger' : 'default' ) ) );
						$user_data = get_userdata( $list->ID );
						?>
						<tr>
							<td>
								<div class="td-checkbox tutor-d-flex ">
									<input id="tutor-admin-list-<?php echo esc_attr( $list->ID ); ?>" type="checkbox" class="tutor-form-check-input tutor-bulk-checkbox" name="tutor-bulk-checkbox-all" value="<?php echo esc_attr( $list->ID ); ?>" />
								</div>
							</td>
							<td>
								<div class="tutor-d-flex tutor-align-center tutor-gap-1">
									<?php
									echo wp_kses(
										tutor_utils()->get_tutor_avatar( $list->ID ),
										tutor_utils()->allowed_avatar_tags()
									);
									?>
									<?php echo esc_html( tutils()->get_user_name( $user_data ) ); ?>
									<a href="<?php echo esc_url( tutor_utils()->profile_url( $list->ID, true ) ); ?>" class="tutor-iconic-btn" target="_blank">
										<span class="tutor-icon-external-link"></span>
									</a>
								</div>
							</td>
							<td data-th="<?php esc_html_e( 'Email', 'tutor' ); ?>">
								<div class="tutor-d-flex tutor-align-center" style="gap: 5px;">
									<span class="tutor-fs-7"><?php echo esc_html( $list->user_email ); ?></span>
									<?php do_action( 'tutor_show_email_verified_badge', $list->ID ); ?>
								</div>
							</td>
							</td>
							<td data-th="<?php esc_html_e( 'Total Course', 'tutor' ); ?>">
								<span class="tutor-color-black tutor-fs-7">
									<?php echo esc_html( $instructors->column_total_course( $list, 'total_course' ) ); ?>
								</span>
							</td>
							<td data-th="<?php esc_html_e( 'Commission Rate', 'tutor' ); ?>">
								<span class="tutor-color-black tutor-fs-7">
									<?php
										$commision_string = tutor_utils()->get_option( 'earning_instructor_commission' ) . '%';
										echo apply_filters( 'tutor_pro_instructor_commission_string', $commision_string, $list->ID ); //phpcs:ignore
									?>
								</span>
							</td>

							<?php do_action( 'tutor_after_instructor_list_commission_column_data', $list->ID ); ?>

							<td data-th="<?php esc_html_e( 'Status', 'tutor' ); ?>">
								<span style="display:block; width:0; height:0; overflow:hidden;">
									<?php
										// Render for frontend sorting.
										echo esc_html( $available_status[ $list->status ][0] );
									?>
								</span>
								<div class="tutor-form-select-with-icon <?php echo esc_html( $available_status[ $list->status ][1] ); ?>">
									<select class="tutor-table-row-status-update" data-bulk-ids="<?php echo esc_attr( $list->ID ); ?>" data-status_key="bulk-action" data-action="tutor_instructor_bulk_action">
										<?php foreach ( $available_status as $key => $status_name ) : ?>
											<option data-status_class="<?php echo esc_attr( $available_status[ $key ][1] ); ?>" value="<?php echo esc_attr( $key ); ?>" data-status="<?php echo esc_attr( $key ); ?>" <?php selected( $list->status, $key ); ?>>
												<?php echo esc_html( $available_status[ $key ][0] ); ?>
											</option>
										<?php endforeach; ?>
									</select>
									<i class="icon1 tutor-icon-eye-bold"></i>
									<i class="icon2 tutor-icon-angle-down"></i>
								</div>
							</td>
							<td data-th="<?php esc_html_e( 'Status', 'tutor' ); ?>">
								<?php
								ob_start();
								$profile_url = add_query_arg( 'user_id', $list->ID, self_admin_url( 'user-edit.php' ) );
								?>
								<a href="<?php echo esc_url( $profile_url ); ?>" 
									class="tutor-btn tutor-btn-outline-primary tutor-btn-sm">
									<?php esc_html_e( 'Edit', 'tutor' ); ?>
								</a>
								<?php
								$edit_button = apply_filters( 'tutor_instructor_list_edit_button', ob_get_clean(), $user_data );
								//phpcs:ignore -- already escaped.
								echo $edit_button;
								?>
							</td>
						</tr>
					<?php endforeach; ?>
				</tbody>
			</table>
		</div>
		<?php else : ?>
			<?php tutils()->render_list_empty_state(); ?>
		<?php endif; ?>

		<div class="tutor-admin-page-pagination-wrapper tutor-mt-32">
			<?php
				/**
				 * Prepare pagination data & load template
				 */
			if ( $total > $per_page_data ) {
				$pagination_data     = array(
					'total_items' => $total,
					'per_page'    => $per_page_data,
					'paged'       => $selected_page,
				);
				$pagination_template = tutor()->path . 'views/elements/pagination.php';
				tutor_load_template_from_custom_path( $pagination_template, $pagination_data );
			}
			?>
		</div>
	</div>
</div>

<div id="tutor-instructor-add-new" class="tutor-modal tutor-modal-scrollable">
	<div class="tutor-modal-overlay"></div>
		<div class="tutor-modal-window">
			<form id="tutor-new-instructor-form" class="tutor-modal-content" autocomplete="off" method="post">
				<div class="tutor-modal-header">
					<div class="tutor-modal-title">
						<?php esc_html_e( 'Add New Instructor', 'tutor' ); ?>
					</div>
					<button class="tutor-iconic-btn tutor-modal-close" data-tutor-modal-close>
						<span class="tutor-icon-times" area-hidden="true"></span>
					</button>
				</div>

				<div class="tutor-modal-body">
					<?php tutor_nonce_field(); ?>
					<?php do_action( 'tutor_add_new_instructor_form_fields_before' ); ?>
					<div class="tutor-rows">
						<div class="tutor-col">
							<label class="tutor-form-label">
								<?php esc_html_e( 'First Name', 'tutor' ); ?>
							</label>
							<div class="tutor-mb-16">
								<input type="text" name="first_name" class="tutor-form-control tutor-mb-12" placeholder="<?php esc_attr_e( 'Enter First Name', 'tutor' ); ?>" title="<?php esc_attr_e( 'Only alphanumeric & space are allowed', 'tutor' ); ?>" required/>
							</div>
						</div>
						<div class="tutor-col">
							<label class="tutor-form-label">
								<?php esc_html_e( 'Last Name', 'tutor' ); ?>
							</label>
							<div class="tutor-mb-16">
								<input type="text" name="last_name" class="tutor-form-control tutor-mb-12" placeholder="<?php esc_attr_e( 'Enter Last Name', 'tutor' ); ?>" title="<?php esc_attr_e( 'Only alphanumeric & space are allowed', 'tutor' ); ?>" required/>
							</div>
						</div>
					</div>
					<div class="tutor-row">
						<div class="tutor-col">
							<label class="tutor-form-label">
								<?php esc_html_e( 'Username', 'tutor' ); ?>
							</label>
							<div class="tutor-mb-16">
								<input type="text" name="user_login" class="tutor-form-control tutor-mb-12" autocomplete="off" placeholder="<?php esc_attr_e( 'Enter Username', 'tutor' ); ?>" pattern="^[a-zA-Z0-9_]*$" title="<?php esc_attr_e( 'Only alphanumeric and underscore are allowed', 'tutor' ); ?>" required/>
							</div>
						</div>
						<div class="tutor-col">
							<label class="tutor-form-label">
								<?php esc_html_e( 'Phone Number', 'tutor' ); ?>
								<span class="tutor-fs-7 tutor-fw-medium tutor-color-muted">
									<?php esc_html_e( '(Optional)', 'tutor' ); ?>
								</span>
							</label>
							<div class="tutor-mb-16">
								<input type="text" name="phone_number"  class="tutor-form-control tutor-mb-12" placeholder="<?php esc_attr_e( 'Enter Phone Number', 'tutor' ); ?>" minlength="8" maxlength="16" pattern="[0-9]+" title="<?php esc_attr_e( 'Only number is allowed', 'tutor' ); ?>"/>
							</div>
						</div>
					</div>

					<div class="tutor-row">
						<div class="tutor-col">
							<label class="tutor-form-label">
								<?php esc_html_e( 'Email Address', 'tutor' ); ?>
							</label>
							<div class="tutor-mb-16">
								<input type="email" name="email"  class="tutor-form-control tutor-mb-12" autocomplete="off" placeholder="<?php esc_attr_e( 'Enter Your Email', 'tutor' ); ?>" required/>
							</div>
						</div>
					</div>

					<div class="tutor-row">
						<div class="tutor-col">
							<label class="tutor-form-label">
								<?php esc_html_e( 'Password', 'tutor' ); ?>
							</label>
							<div class="tutor-form-wrap tutor-mb-16">
								<span class="tutor-icon-eye-line tutor-form-icon tutor-form-icon-reverse tutor-password-reveal"></span>
								<input type="password" name="password" id="tutor-instructor-pass"  class="tutor-form-control" minlength="8" placeholder="*******" autocomplete="new-password" required/>
							</div>
						</div>
						<div class="tutor-col">
							<label class="tutor-form-label">
								<?php esc_html_e( 'Retype Password', 'tutor' ); ?>
							</label>
							<div class="tutor-form-wrap tutor-mb-16">
								<span class="tutor-icon-eye-line tutor-form-icon tutor-form-icon-reverse tutor-password-reveal"></span>
								<input type="password" name="password_confirmation"  class="tutor-form-control" placeholder="*******" autocomplete="off" pattern="" title="<?php esc_attr_e( 'Your passwords should match each other. Please recheck.', 'tutor' ); ?>" onfocus="this.setAttribute('pattern', document.getElementById('tutor-instructor-pass').value)" required/>
							</div>
						</div>
					</div>

					<?php do_action( 'tutor_add_new_instructor_form_fields_after' ); ?>

					<div class="tutor-row">
						<div class="tutor-col">
							<label class="tutor-form-label">
								<?php esc_html_e( 'Bio', 'tutor' ); ?>
								<span class="tutor-fs-7 tutor-fw-medium tutor-color-muted">
									<?php esc_html_e( '(Optional)', 'tutor' ); ?>
								</span>
							</label>
							<div class="tutor-mb-16">
								<?php wp_editor( '', 'tutor_profile_bio', tutor_utils()->get_profile_bio_editor_config( 'tutor_profile_bio' ) ); ?>
							</div>
						</div>
					</div>
					<div class="tutor-row" id="tutor-new-instructor-form-response"></div>
				</div>

				<div class="tutor-modal-footer">
					<button class="tutor-btn tutor-btn-outline-primary" data-tutor-modal-close>
						<?php esc_html_e( 'Cancel', 'tutor' ); ?>
					</button>

					<button type="submit" class="tutor-btn tutor-btn-primary" name="tutor_register_instructor_btn" data-tutor-modal-submit>
						<?php esc_html_e( 'Add Instructor', 'tutor' ); ?>
					</button>
				</div>
			</form>
		</div>
	</div>
<?php
/**
 * Instructor Approve, Reject popup
 * that will be shown based on get params
 *
 * @since v2.0.0
 */
$instructor_id   = Input::get( 'instructor', '' );
$prompt_action   = Input::get( 'action', '' );
$instructor_data = get_userdata( $instructor_id );

if ( $instructor_data && ( 'approved' === $prompt_action || 'blocked' === $prompt_action ) ) :
	?>
	<?php $instructor_status = tutor_utils()->instructor_status( $instructor_data->ID, false ); ?>
	<div id="tutor-ins-approval-1" class="tutor-modal tutor-modal-ins-approval tutor-is-active">
		<div class="tutor-modal-overlay"></div>
		<div class="tutor-modal-window tutor-modal-window-sm">
			<div class="tutor-modal-content tutor-modal-content-white">
				<button class="tutor-iconic-btn tutor-modal-close-o" data-tutor-modal-close>
					<span class="tutor-icon-times" area-hidden="true"></span>
				</button>
				<div class="tutor-modal-body tutor-text-center">
					<div class="tutor-py-lg-64">
						<?php if ( $instructor_data ) : ?>
							<div class="tutor-fs-4 tutor-fw-medium tutor-color-black tutor-mb-8">
								<?php esc_html_e( 'A New Instructor Just Signed Up', 'tutor' ); ?>
							</div>
							<div class="tutor-fs-6 tutor-color-muted">
								<?php esc_html_e( 'You can either accept or reject the application. The applicant will be notified via email either way.', 'tutor' ); ?>
							</div>

							<div class="tutor-modal-ins-meta tutor-mt-44">
								<div class="tutor-d-inline-block tutor-avatar tutor-mb-20">
									<?php echo get_avatar( $instructor_data->ID ); ?>
								</div>

								<div class="tutor-fs-4 tutor-fw-medium tutor-color-black tutor-mb-12">
									<?php
										echo esc_html(
											( '' !== $instructor_data->display_name ?
											$instructor_data->display_name : ( '' !== $instructor_data->user_nicename ?
											$instructor_data->user_nicename : '' ) )
										);
									?>
								</div>

								<div class="tutor-fs-6 tutor-color-secondary tutor-mb-8">
									<?php esc_html_e( 'Username:', 'tutor' ); ?>
									<span class="tutor-color-black">
										<?php echo esc_html( $instructor_data->user_login ); ?>
									</span>
								</div>

								<div class="tutor-fs-6 tutor-color-secondary">
									<?php esc_html_e( 'Email:', 'tutor' ); ?>
									<span class="tutor-color-black">
										<?php echo esc_html( $instructor_data->user_email ); ?>
									</span>
								</div>
							</div>

							<div class="tutor-mt-48 tutor-mb-24">
								<?php if ( 'approved' === $prompt_action || 'blocked' === $prompt_action ) : ?>
									<?php if ( 'pending' === $instructor_status ) : ?>
										<a class="instructor-action tutor-btn tutor-btn-primary tutor-btn-block" data-action="approve" data-instructor-id="<?php echo esc_attr( $instructor_data->ID ); ?>">
											<?php esc_html_e( 'Approve the Instructor', 'tutor' ); ?>
										</a>
										<a class="instructor-action tutor-btn tutor-btn-ghost tutor-mt-16" data-action="blocked" data-instructor-id="<?php echo esc_attr( $instructor_data->ID ); ?>">
											<?php esc_html_e( 'Reject the Application', 'tutor' ); ?>
										</a>
									<?php elseif ( 'approved' === $instructor_status ) : ?>
										<a class="instructor-action tutor-btn tutor-btn-primary tutor-btn-block" data-action="blocked" data-instructor-id="<?php echo esc_attr( $instructor_data->ID ); ?>">
											<?php esc_html_e( 'Reject the Application', 'tutor' ); ?>
										</a>
									<?php elseif ( 'blocked' === $instructor_status ) : ?>
										<a class="instructor-action tutor-btn tutor-btn-primary tutor-btn-block" data-action="approve" data-instructor-id="<?php echo esc_attr( $instructor_data->ID ); ?>">
											<?php esc_html_e( 'Approve the Instructor', 'tutor' ); ?>
										</a>
									<?php endif; ?>
								<?php else : ?>
									<div class="tutor-alert tutor-danger tutor-justify-center">
										<div class="tutor-alert-text">
											<span class="tutor-alert-icon tutor-fs-4 tutor-icon-circle-times-line tutor-mr-12"></span>
											<span>
												<?php esc_html_e( 'Attempted invalid action', 'tutor' ); ?>
											</span>
										</div>
									</div>
								<?php endif; ?>
							</div>
						<?php else : ?>
							<div class="tutor-alert tutor-danger tutor-justify-center">
								<div class="tutor-alert-text">
									<span class="tutor-alert-icon tutor-fs-4 tutor-icon-circle-times-line tutor-mr-12"></span>
									<span>
										<?php esc_html_e( 'Invalid instructor', 'tutor' ); ?>
									</span>
								</div>
							</div>
						<?php endif; ?>
					</div>
				</div>
			</div>
		</div>
	</div>
<?php endif; ?>

<style>
	.table-instructors .woocommerce-Price-amount{
		font-size: 0.875rem;
	}
</style>
