expense_tracker-1.2.1/src/Form/StatemantsForm.php

src/Form/StatemantsForm.php
<?php

namespace Drupal\expense_tracker\Form;

use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Drupal\Core\Messenger\MessengerInterface;
use Drupal\Core\Url;

/**
 * Class StatemantsForm.
 */
class StatemantsForm extends FormBase {

  /**
   * Drupal\Core\Messenger\MessengerInterface definition.
   *
   * @var \Drupal\Core\Messenger\MessengerInterface
   */
  protected $messenger;
  /**
   * Constructs a new StatemantsForm object.
   */
  public function __construct(
    MessengerInterface $messenger
  ) {
    $this->messenger = $messenger;
  }

  public static function create(ContainerInterface $container) {
    return new static(
      $container->get('messenger')
    );
  }


  /**
   * {@inheritdoc}
   */
  public function getFormId() {
    return 'ex82_hello_form';
  }

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state) {

    $statement_options = array(
     'last_seven_days' => $this->t('Last 7 days'),
     'last_thirty_days' => $this->t('Last 30 days'),
     'this_week' => $this->t('This week'),
     'last_week' => $this->t('Last week'),
     'this_month' => $this->t('This month'),
     'last_month' => $this->t('Last month'),
     'this_quarter' => $this->t('This Quarter'),
     'last_quarter' => $this->t('Last Quarter'),
     'this_year' => $this->t('This year'),
     'last_year' => $this->t('Last year')
   );

    $form['transaction_type'] = array(
      '#type' => 'select',
      '#title' => t('Transaction type'),
      '#options' => $statement_options,
      '#description' => t('<small>Filter financial statements by transaction type</small>'),
      '#default_value' => '',
      '#options' => array(
        'All' => t('All'),
        '1' => t('Expense'),
        '2' => t('Income'),
      ),
    );

    $form['statement_type'] = array(
      '#type' => 'radios',
      '#title' => t('Analyze income and expense statement'),
      '#options' => $statement_options,
      '#description' => t('Filter financial statements by specific date range'),
      '#default_value' => 'last_seven_days',
    );

    $form['submit'] = [
      '#type' => 'submit',
      '#value' => $this->t('Submit'),
    ];

    return $form;
  }

  /**
   * {@inheritdoc}
   */
  public function validateForm(array &$form, FormStateInterface $form_state) {
    parent::validateForm($form, $form_state);
  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    // Display result.


    $form_state->setRedirect('user.page');

    $query = array();

    $statement_type = $form_state->getValue('statement_type');
    $transaction_type = $form_state->getValue('transaction_type');
    switch ($statement_type) {

      case 'last_seven_days':
      $yesterday = strtotime("-1 day");
      $last_seven_days_from = strtotime("-8 day");
      $lsd_start = date("Y-m-d",$last_seven_days_from);
      $lsd_end = date("Y-m-d",$yesterday);
      $query['from'] = $lsd_start;
      $query['to'] = $lsd_end;

      break;

      case 'last_thirty_days':
      $yesterday = strtotime("-1 day");
      $last_seven_days_from = strtotime("-30 day");
      $lsd_start = date("Y-m-d",$last_seven_days_from);
      $lsd_end = date("Y-m-d",$yesterday);
      $query['from'] = $lsd_start;
      $query['to'] = $lsd_end;

      break;

      case 'this_week':
      $lsd_start = date('Y-m-d', strtotime("this week"));
      $today = time();
      $lsd_end = date("Y-m-d",$today);
      $query['from'] = $lsd_start;
      $query['to'] = $lsd_end;

      break;

      case 'last_week':
      $lsd_start = date('Y-m-d', strtotime("this week -8 day"));
      $lsd_end = date('Y-m-d', strtotime("this week -2 day"));
      $query['from'] = $lsd_start;
      $query['to'] = $lsd_end;

      break;

      case 'this_month':
      $lsd_start = date('Y-m-d', strtotime("first day of this month"));
      $lsd_end = date('Y-m-d', strtotime("last day of this month"));
      $query['from'] = $lsd_start;
      $query['to'] = $lsd_end;

      break;

      case 'last_month':

      $lsd_start = date('Y-m-d', strtotime("first day of last month"));
      $lsd_end = date('Y-m-d', strtotime("last day of last month"));
      $query['from'] = $lsd_start;
      $query['to'] = $lsd_end;

      break;

      case 'this_quarter':

      $current_quarter = ceil(date('n') / 3);
      $lsd_start = date('Y-m-d', strtotime(date('Y') . '-' . (($current_quarter * 3) - 2) . '-1'));
      $lsd_end = date('Y-m-t', strtotime(date('Y') . '-' . (($current_quarter * 3)) . '-1'));

      $query['from'] = $lsd_start;
      $query['to'] = $lsd_end;
      break;

      case 'last_quarter':
      $last_quarter = ceil(date('n') / 3)-1;
      $lsd_start = date('Y-m-d', strtotime(date('Y') . '-' . (($last_quarter * 3) - 2) . '-1'));
      $lsd_end = date('Y-m-t', strtotime(date('Y') . '-' . (($last_quarter * 3)) . '-1'));

      $query['from'] = $lsd_start;
      $query['to'] = $lsd_end;

      break;

      case 'this_year':

      $lsd_start = date('Y-m-d', strtotime("first day of january this year"));
      $lsd_end = date('Y-m-d', strtotime("last day of december this year"));
      $query['from'] = $lsd_start;
      $query['to'] = $lsd_end;

      break;

    }

    $query['referrer'] = 'statements';
    $query['transaction_type'] = $transaction_type;

    $url = Url::fromRoute('expense_tracker.et_transaction_list', $query);
    $form_state->setRedirectUrl($url);


  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc