'customer-acceptance', 'DELIVERY ACTION TYPE: Validate Questionnaire' => 'validate-questionnaire', 'DELIVERY ACTION TYPE: Manual' => 'manual', 'DELIVERY ACTION TYPE: Schedule meeting' => 'schedule-meeting' ); public function get_label() { return esc_html__( 'Wiaas Delivery Step', 'wiaas' ); } public function get_settings() { $settings_api = $this->get_common_settings_api(); $forms = $this->get_forms(); $form_choices[] = array( 'label' => esc_html__( 'Select a Form', 'wiaas' ), 'value' => '' ); foreach ( $forms as $form ) { $form_choices[] = array( 'label' => $form->title, 'value' => $form->id ); } $settings = array( 'title' => esc_html__( 'Wiaas Delivery Step', 'wiaas' ), 'fields' => array( $settings_api->get_setting_instructions(), array ( 'name' => 'is_visible_to_customer', 'label' => __( 'Visible to customer', 'wiaas' ), 'type' => 'checkbox', 'choices' => array( array( 'label' => __( 'Show to customer', 'wiaas' ), 'name' => 'is_visible_to_customer', 'default_value' => true, ), ), 'tooltip' => __( 'Determines if this step will be shown to customer.', 'wiaas' ), ), array( 'name' => 'target_form_id', 'label' => esc_html__( 'Form', 'wiaas' ), 'type' => 'select', 'onchange' => "jQuery(this).closest('form').submit();", 'choices' => $form_choices, ), ), ); $settings['fields'][] = array( 'name' => 'store_new_entry_id', 'label' => esc_html__( 'Store New Entry ID', 'wiaas' ), 'type' => 'checkbox_and_container', 'checkbox' => array( 'label' => esc_html__( 'Store the ID of the new entry.', 'wiaas' ), ), 'settings' => array( array( 'name' => 'new_entry_id_field', 'type' => 'field_select', 'args' => array( 'input_types' => array( 'hidden', ), ), ), ), ); return $settings; } function process() { $form = $this->get_form(); $entry = $this->get_entry(); $target_form = GFAPI::get_form( $this->target_form_id ); $new_entry = array( 'form_id' => $this->target_form_id, ); $customer_id_value = null; if ( is_array( $form['fields'] ) ) { foreach ( $form['fields'] as $field ) { if (GFCommon::get_label( $field ) === 'order-id') { $new_entry['wiaas_delivery_order_id'] = $entry[$field->id]; } if (GFCommon::get_label( $field ) === 'customer-id') { $customer_id_value = $entry[$field->id]; } } } if ( is_array( $target_form['fields'] ) ) { foreach ( $target_form['fields'] as $field ) { if (GFCommon::get_label( $field ) === 'customer-id') { $new_entry[$field->id] = $customer_id_value; } } } $entry_id = GFAPI::add_entry( $new_entry ); if ( is_wp_error( $entry_id ) ) { $this->log_debug( __METHOD__ .'(): failed to add entry' ); } else { // store entry id gform_update_meta($this->get_entry_id(), 'wiaas_delivery_step_' . $this->get_id() .'_entry_id', $entry_id); } $note = $this->get_name() . ': ' . esc_html__( 'started.', 'wiaas' ); $this->add_note( $note ); return false; } public function status_evaluation() { $target_form_entry = $this->get_target_form_entry(); if(is_wp_error($target_form_entry)) { return 'complete'; } $api = new Gravity_Flow_API( $this->target_form_id ); $status = $api->get_status($target_form_entry); if ( $status === 'complete' || $status === 'approved' ) { return 'complete'; } return 'pending'; } public function get_entry_meta($entry_meta, $form_id) { $entry_meta['wiaas_delivery_step_' . $this->get_id() .'_entry_id'] = null; return $entry_meta; } public function get_forms() { $forms = GFFormsModel::get_forms(); return $forms; } public function get_delivery_action_type() { $target_form = GFAPI::get_form( $this->target_form_id ); return self::$delivery_action_types[$target_form['title']]; } public function get_target_actual_date() { $target_entry = $this->get_target_form_entry(); $target_form = GFAPI::get_form( $this->target_form_id ); if (!is_wp_error($target_entry) && is_array($target_form['fields'])) { foreach ( $target_form['fields'] as $field ) { if (GFCommon::get_label( $field ) === 'Actual Date') { return $target_entry[$field->id]; } } } return null; } public function get_target_step_comments() { $notes = RGFormsModel::get_lead_notes( $this->get_target_form_entry_id() ); $comments = array(); foreach ( $notes as $key => $note ) { if ( $note->note_type !== 'gravityflow' ) { $comments[] = array( 'date' => $note->date_created, 'text' => $note->value, 'user' => $note->user_name ); } } return $comments; } public function get_target_form_entry() { return GFAPI::get_entry($this->get_target_form_entry_id()); } public function get_target_form_entry_id() { return gform_get_meta($this->get_entry_id(), 'wiaas_delivery_step_' . $this->get_id() .'_entry_id'); } }