AppointmentCalendarDeleteForm.php in Appointment Calendar 8
File
src/Form/AppointmentCalendarDeleteForm.php
View source
<?php
namespace Drupal\appointment_calendar\Form;
use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Database\Connection;
class AppointmentCalendarDeleteForm extends FormBase {
protected $connection;
public function getFormId() {
return 'appointment_calendar_delete_form';
}
public function __construct(Connection $connection) {
$this->connection = $connection;
}
public function buildForm(array $form, FormStateInterface $form_state) {
$db_conn = \Drupal::database();
$from_date = \Drupal::request()->query
->get('date');
if ($from_date != '') {
$date = date('Y-m-d', $from_date);
$delete_query = $db_conn
->select('node__field_appointment_date', 'ad');
$delete_query
->fields('ad', [
'field_appointment_date_value',
]);
$delete_query
->condition('field_appointment_date_value', '%' . $this->connection
->escapeLike($date) . '%', 'LIKE');
$delete_result = $delete_query
->execute()
->fetchAll();
if (count($delete_result) >= 1) {
$form['date'] = [
'#markup' => $this
->t('Unable to delete ' . $date . '. Appointment already booked in selected date<br>If you still want to delete the selected date, delete timeslots booked and retry<br> '),
];
$form['return'] = [
'#type' => 'submit',
'#value' => t('Return'),
];
}
else {
$form['date_markup'] = [
'#markup' => $this
->t('Are you sure to delete <b>:date</b>?<br>Note:All filled timeslots also will be deleted.<br>', array(
':date' => $date,
)),
];
$form['date'] = [
'#type' => 'hidden',
'#value' => $from_date,
];
$form['delete'] = [
'#type' => 'submit',
'#value' => $this
->t('Yes'),
];
$form['no'] = [
'#type' => 'submit',
'#value' => $this
->t('No'),
];
}
return $form;
}
}
public function validateForm(array &$form, FormStateInterface $form_state) {
}
public function submitForm(array &$form, FormStateInterface $form_state) {
$values = $form_state
->getValues();
$db_conn = \Drupal::database();
$op = (string) $values['op'];
if ($op == $this
->t('Yes')) {
$db_conn
->delete('appointment_date')
->condition('date', $values['date'])
->execute();
$this
->messenger()
->addStatus(t('Selected Date deleted successfully'));
$form_state
->setRedirect('appointment_calendar.list_page');
}
if ($op == $this
->t('No') || $op == $this
->t('Return')) {
$form_state
->setRedirect('appointment_calendar.list_page');
}
}
}