KazaniForm.php
Mon Dec 27 2021 14:57:06 GMT+0000 (Coordinated Universal Time)
<?php namespace Drupal\kazan_dizajner\Form; use Drupal\Core\Form\FormBase; use Drupal\Core\Form\FormStateInterface; class KazaniForm extends FormBase { protected $cena; public function getFormId(): string { return 'kazani_form'; } public function buildForm(array $form, FormStateInterface $form_state): array { $form['kazani_tipovi'] = [ '#type' => 'radios', '#title' => '1. Izaberite model kazana koji želite da kreirate:', '#options' => [ 'prevrtac' => 'Kazani prevrtači', 'praktik' => 'Kazani praktik', 'profesionalni' => 'Kazani profesionalni', ], ]; $form['kazani_prevrtaci_zapremina'] = [ '#type' => 'radios', '#title' => '2. Izaberite zapreminu kotla:', '#options' => [ '_prevrtac_40_litara' => '40 litara', '_prevrtac_60_litara' => '60 litara', '_prevrtac_80_litara' => '80 litara', '_prevrtac_100_litara' => '100 litara' ], '#states' => [ 'visible' => [ 'input[name="kazani_tipovi"]' => ['value' => 'prevrtac'] ] ], //TODO: Ne rade conditional fieldovi kada radi ajax // '#ajax' => [ // 'callback' => '::myAjaxCallback', // 'wrapper' => 'edit-output', // 'progress' => [ // 'type' => 'throbber', // 'message' => $this->t('Verifying entry...'), // ], // ] ]; $form['kazani_prevrtaci_debljina_dna'] = [ '#type' => 'radios', '#title' => 'Izaberite debljinu dna kotla:', '#options' => [ '_prevrtac_1_5_mm' => 'Dno kotla - 1.5 mm', '_prevrtac_2_mm' => 'Dno kotla - 2 mm', '_prevrtac_3_mmm' => 'Dno kotla - 3 mm', '_prevrtac_4_mm' => 'Dno kotla - 4 mm' ], '#states' => [ 'visible' => [ 'input[name="kazani_prevrtaci_zapremina"]' => [ ['value' => '_prevrtac_40_litara'], ['value' => '_prevrtac_60_litara'], ['value' => '_prevrtac_80_litara'], ['value' => '_prevrtac_100_litara'], ], ['input[name="kazani_tipovi"]' => ['value' => 'prevrtac']] ] ] ]; $form['kazani_prevrtaci_cev'] = [ '#type' => 'radios', '#title' => '3. Izaberite željenu dužinu i prečnik cevi/lule:', '#options' => [ '_prevrtac_fi28x1500mm' => 'Cev/lula - fi 28x1500 mm (STANDARD)', '_prevrtac_fi28x2000mm' => 'Cev/lula - fi 28x2000 mm', '_prevrtac_fi28x2500mm' => 'Cev/lula - fi 28x2500 mm', '_prevrtac_fi28x3000mm' => 'Cev/lula - fi 28x3000 mm', '_prevrtac_fi28x3500mm' => 'Cev/lula - fi 28x3500 mm', '_prevrtac_fi28x4000mm' => 'Cev/lula - fi 28x4000 mm', '_prevrtac_fi40x2000mm' => 'Cev/lula - fi 40x2000 mm', '_prevrtac_fi40x2500mm' => 'Cev/lula - fi 40x2500 mm', '_prevrtac_fi40x3000mm' => 'Cev/lula - fi 40x3000 mm', '_prevrtac_fi40x3500mm' => 'Cev/lula - fi 40x3500 mm', '_prevrtac_fi40x4000mm' => 'Cev/lula - fi 40x4000 mm', ], '#states' => [ 'visible' => [ 'input[name="kazani_tipovi"]' => ['value' => 'prevrtac'] ], ] ]; $form['kazani_prevrtaci_hladnjak'] = [ '#type' => 'radios', '#title' => '4. Izaberite zapreminu i model hladnjaka:', '#options' => [ '_prevrtac_pocinkovani_od_330_litara' => 'Pocinkovani hladnjak od 330 litara (STANDARD)', '_praktik_prohromski_od_330_litara' => 'Prohromski hladnjak od 330 litara', '_prevrtac_pocinkovani_od_470_litara' => 'Pocinkovani hladnjak od 470 litara', '_prevrtac_prohromski_od_470_litara' => 'Prohromski hladnjak od 470 litara' ], '#states' => [ 'visible' => [ 'input[name="kazani_tipovi"]' => [ ['value' => 'prevrtac'], ] ], ] ]; $form['hladnjak_prevrtaci_izmenjivac'] = [ '#type' => 'radios', '#title' => 'Izmenjivač toplote u hladnjaku', '#options' => [ '_prevrtac_spirala_5_navoja' => 'Spirala 5 navoja (STANDARD)', '_prevrtac_cilindar_kiler' => 'Doplata za cilindar/kiler' ], '#states' => [ 'visible' => [ 'input[name="kazani_tipovi"]' => [ ['value' => 'prevrtac'], ] ], ] ]; $form['kazani_prevrtaci_mesalica'] = [ '#type' => 'radios', '#title' => '5. Izaberite jednu od varijanti mešalice:', '#options' => [ '_prevrtac_rucna' => 'Ručna mešalica (STANDARD)', '_prevrtac_elektricna' => 'Električna mešalica' ], '#states' => [ 'visible' => [ 'input[name="kazani_tipovi"]' => [ ['value' => 'prevrtac'], ] ], ] ]; $form['dodatna_prevrtaci_oprema'] = [ '#type' => 'checkboxes', '#title' => '6. Izaberite potrebnu dodatnu opremu:', '#options' => [ '_prevrtac_alkoholmetar' => 'Alkoholmetar', '_prevrtac_sirometar' => 'Sirometar', '_prevrtac_plamenik' => 'Plamenik', '_prevrtac_levak' => 'Levak', '_prevrtac_menzura' => 'Menzura', ], '#states' => [ 'visible' => [ 'input[name="kazani_tipovi"]' => [ ['value' => 'prevrtac'], ] ], ] ]; // Kazani praktik. $form['kazani_praktik_zapremina'] = [ '#type' => 'radios', '#title' => '2. Izaberite zapreminu kotla:', '#options' => [ '_praktik_60_litara' => '60 litara', '_praktik_80_litara' => '80 litara', '_praktik_100_litara' => '100 litara' ], '#states' => [ 'visible' => [ 'input[name="kazani_tipovi"]' => ['value' => 'praktik'] ] ] ]; $form['kazani_praktik_debljina_dna'] = [ '#type' => 'radios', '#title' => 'Izaberite debljinu dna kotla:', '#options' => [ '_praktik_1_5_mm' => 'Dno kotla - 1.5 mm', '_praktik_2_mm' => 'Dno kotla - 2 mm', '_praktik_3_mmm' => 'Dno kotla - 3 mm', '_praktik_4_mm' => 'Dno kotla - 4 mm' ], '#states' => [ 'visible' => [ ':input[name="kazani_praktik_zapremina"]' => [ ['value' => '_praktik_60_litara'], ['value' => '_praktik_80_litara'], ['value' => '_praktik_100_litara'] ], [':input[name="kazani_tipovi"]' => ['value' => 'praktik']] ] ] ]; $form['kazani_praktik_cev'] = [ '#type' => 'radios', '#title' => '3. Izaberite željenu dužinu i prečnik cevi/lule:', '#options' => [ '_praktik_fi40x2000mm' => 'Cev/lula - fi 40x2000 mm (STANDARD)', '_praktik_fi40x2500mm' => 'Cev/lula - fi 40x2500 mm', '_praktik_fi40x3000mm' => 'Cev/lula - fi 40x3000 mm', '_praktik_fi40x3500mm' => 'Cev/lula - fi 40x3500 mm', '_praktik_fi40x4000mm' => 'Cev/lula - fi 40x4000 mm', ], '#states' => [ 'visible' => [ 'input[name="kazani_tipovi"]' => ['value' => 'praktik'] ], ] ]; $form['kazani_praktik_hladnjak'] = [ '#type' => 'radios', '#title' => '4. Izaberite zapreminu i model hladnjaka:', '#options' => [ '_praktik_pocinkovani_od_330_litara' => 'Pocinkovani hladnjak od 330 litara (STANDARD)', '_praktik_prohromski_od_330_litara' => 'Prohromski hladnjak od 330 litara', '_praktik_pocinkovani_od_470_litara' => 'Pocinkovani hladnjak od 470 litara', '_praktik_prohromski_od_470_litara' => 'Prohromski hladnjak od 470 litara' ], '#states' => [ 'visible' => [ 'input[name="kazani_tipovi"]' => [ ['value' => 'praktik'], ] ], ] ]; $form['hladnjak_praktik_izmenjivac'] = [ '#type' => 'radios', '#title' => 'Izmenjivač toplote u hladnjaku', '#options' => [ '_praktik_spirala_5_navoja' => 'Spirala 5 navoja (STANDARD)', '_praktik_cilindar_kiler' => 'Doplata za cilindar/kiler' ], '#states' => [ 'visible' => [ 'input[name="kazani_tipovi"]' => [ ['value' => 'praktik'], ] ], ] ]; $form['kazani_praktik_mesalica'] = [ '#type' => 'radios', '#title' => '5. Izaberite jednu od varijanti mešalice:', '#options' => [ '_praktik_rucna' => 'Ručna mešalica (STANDARD)', '_praktik_elektricna' => 'Električna mešalica' ], '#states' => [ 'visible' => [ 'input[name="kazani_tipovi"]' => [ ['value' => 'praktik'], ] ], ] ]; $form['dodatna_praktik_oprema'] = [ '#type' => 'checkboxes', '#title' => '6. Izaberite potrebnu dodatnu opremu:', '#options' => [ '_praktik_alkoholmetar' => 'Alkoholmetar', '_praktik_sirometar' => 'Sirometar', '_praktik_plamenik' => 'Plamenik', '_praktik_levak' => 'Levak', '_praktik_menzura' => 'Menzura', ], '#states' => [ 'visible' => [ 'input[name="kazani_tipovi"]' => [ ['value' => 'praktik'], ] ], ] ]; // Kazani profesionalni. $form['kazani_profesionalni_zapremina'] = [ '#type' => 'radios', '#title' => '2. Izaberite zapreminu kotla:', '#options' => [ '_profi_80_litara' => '80 litara', '_profi_100_litara' => '100 litara', '_profi_120_litara' => '120 litara', '_profi_160_litara' => '160 litara', '_profi_200_litara' => '200 litara', ], '#states' => [ 'visible' => [ 'input[name="kazani_tipovi"]' => ['value' => 'profesionalni'] ] ] ]; $form['kazani_profesionalni_debljina_dna'] = [ '#type' => 'radios', '#title' => 'Izaberite debljinu dna kotla:', '#options' => [ '_profi_1_5_mm' => 'Dno kotla - 1.5 mm (STANDARD)', '_profi_2_mm' => 'Dno kotla - 2 mm', '_profi_3_mmm' => 'Dno kotla - 3 mm', '_profi_4_mm' => 'Dno kotla - 4 mm', '_profi_5_mm' => 'Dno kotla - 5 mm', ], '#states' => [ 'visible' => [ ':input[name="kazani_profesionalni_zapremina"]' => [ ['value' => '_profi_80_litara'], ['value' => '_profi_100_litara'], ['value' => '_profi_120_litara'], ['value' => '_profi_160_litara'], ['value' => '_profi_200_litara'], ], [':input[name="kazani_tipovi"]' => ['value' => 'profesionalni']] ], ] ]; $form['kazani_profesionalni_cev'] = [ '#type' => 'radios', '#title' => '3. Izaberite željenu dužinu i prečnik cevi/lule:', '#options' => [ '_profi_fi40x2000mm' => 'Cev/lula - fi 40x2000 mm (STANDARD)', '_profi_fi40x2500mm' => 'Cev/lula - fi 40x2500 mm', '_profi_fi40x3000mm' => 'Cev/lula - fi 40x3000 mm', '_profi_fi40x3500mm' => 'Cev/lula - fi 40x3500 mm', '_profi_fi40x4000mm' => 'Cev/lula - fi 40x4000 mm', ], '#states' => [ 'visible' => [ 'input[name="kazani_tipovi"]' => ['value' => 'profesionalni'] ], ] ]; $form['kazani_profesionalni_hladnjak'] = [ '#type' => 'radios', '#title' => '4. Izaberite zapreminu i model hladnjaka:', '#options' => [ '_profi_pocinkovani_od_330_litara' => 'Pocinkovani hladnjak od 330 litara (STANDARD)', '_profi_prohromski_od_330_litara' => 'Prohromski hladnjak od 330 litara', '_profi_pocinkovani_od_470_litara' => 'Pocinkovani hladnjak od 470 litara', '_profi_prohromski_od_470_litara' => 'Prohromski hladnjak od 470 litara' ], '#states' => [ 'visible' => [ 'input[name="kazani_tipovi"]' => [ ['value' => 'profesionalni'] ] ], ] ]; $form['hladnjak_profesionalni_izmenjivac'] = [ '#type' => 'radios', '#title' => 'Izmenjivač toplote u hladnjaku', '#options' => [ '_profi_spirala_5_navoja' => 'Spirala 5 navoja (STANDARD)', '_profi_cilindar_kiler' => 'Doplata za cilindar/kiler' ], '#states' => [ 'visible' => [ 'input[name="kazani_tipovi"]' => [ ['value' => 'profesionalni'] ] ], ] ]; $form['kazani_profesionalni_mesalica'] = [ '#type' => 'radios', '#title' => '5. Izaberite jednu od varijanti mešalice:', '#options' => [ '_profi_rucna' => 'Ručna mešalica (STANDARD)', '_profi_elektricna' => 'Električna mešalica' ], '#states' => [ 'visible' => [ 'input[name="kazani_tipovi"]' => [ ['value' => 'profesionalni'] ] ], ] ]; $form['dodatna_profesionalni_oprema'] = [ '#type' => 'checkboxes', '#title' => '6. Izaberite potrebnu dodatnu opremu:', '#options' => [ '_profi_alkoholmetar' => 'Alkoholmetar', '_profi_sirometar' => 'Sirometar', '_profi_plamenik' => 'Plamenik', '_profi_levak' => 'Levak', '_profi_menzura' => 'Menzura', ], '#states' => [ 'visible' => [ 'input[name="kazani_tipovi"]' => [ ['value' => 'profesionalni'] ] ], ] ]; $form['izracunaj_cenu'] = [ '#type' => 'button', '#value' => 'Izracunaj cenu', '#ajax' => [ 'callback' => '::cene', 'wrapper' => 'edit-output', 'progress' => [ 'type' => 'throbber', 'message' => $this->t('Verifying entry...'), ] ] ]; // Order price. $form['cena'] = [ '#type' => 'label', '#attributes' => ['id' => 'edit-output'], '#title' => 'Cena', ]; // User information. $form['emailaddress'] = [ '#type' => 'email', '#title' => 'E-mail (dobićete kopiju gore kreiranog kazana)*' ]; $form['phone'] = [ '#type' => 'tel', '#title' => 'Broj telefona*' ]; $form['message'] = [ '#type' => 'textarea', '#title' => 'Poruka*' ]; $form['actions']['#type'] = 'actions'; $form['actions']['submit'] = [ '#type' => 'submit', '#value' => $this->t('Save'), '#button_type' => 'primary' ]; return $form; } public static function cene(array &$form, FormStateInterface $form_state) { $config = \Drupal::config('kazan_dizajner.settings'); $cena = ''; $oprema_cena = ''; // Fetching users input for acquiring each item price. if ($form_state->getUserInput()['kazani_tipovi'] == 'prevrtac') { $zapremina = $form_state->getUserInput()['kazani_prevrtaci_zapremina']; ($zapremina) ? $form_state->getUserInput()['kazani_prevrtaci_zapremina'] : ''; $dno = $form_state->getUserInput()['kazani_prevrtaci_debljina_dna']; ($dno) ? $form_state->getUserInput()['kazani_prevrtaci_debljina_dna'] : ''; $cev = $form_state->getUserInput()['kazani_prevrtaci_cev']; ($cev) ? $form_state->getUserInput()['kazani_prevrtaci_cev'] : ''; $hladnjak = $form_state->getUserInput()['kazani_prevrtaci_hladnjak']; ($hladnjak) ? $form_state->getUserInput()['kazani_prevrtaci_hladnjak'] : ''; $izmenjivac = $form_state->getUserInput()['hladnjak_prevrtaci_izmenjivac']; ($izmenjivac) ? $form_state->getUserInput()['hladnjak_prevrtaci_izmenjivac'] : ''; $mesalica = $form_state->getUserInput()['kazani_prevrtaci_mesalica']; ($mesalica) ? $form_state->getUserInput()['kazani_prevrtaci_mesalica'] : ''; $dodaci = $form_state->getUserInput()['dodatna_prevrtaci_oprema']; foreach ($dodaci as $dodatak) { if ($dodatak != NULL) { $oprema_cena += $config->get($dodatak); } } } else if ($form_state->getUserInput()['kazani_tipovi'] == 'praktik') { $zapremina = $form_state->getUserInput()['kazani_praktik_zapremina']; ($zapremina) ? $form_state->getUserInput()['kazani_prevrtaci_zapremina'] : ''; $dno = $form_state->getUserInput()['kazani_praktik_debljina_dna']; ($dno) ? $form_state->getUserInput()['kazani_praktik_debljina_dna'] : ''; $cev = $form_state->getUserInput()['kazani_praktik_cev']; ($cev) ? $form_state->getUserInput()['kazani_praktik_cev'] : ''; $hladnjak = $form_state->getUserInput()['kazani_praktik_hladnjak']; ($hladnjak) ? $form_state->getUserInput()['kazani_praktik_hladnjak'] : ''; $izmenjivac = $form_state->getUserInput()['hladnjak_praktik_izmenjivac']; ($izmenjivac) ? $form_state->getUserInput()['hladnjak_praktik_izmenjivac'] : ''; $mesalica = $form_state->getUserInput()['kazani_praktik_mesalica']; ($mesalica) ? $form_state->getUserInput()['kazani_praktik_mesalica'] : ''; $dodaci = $form_state->getUserInput()['dodatna_praktik_oprema']; foreach ($dodaci as $dodatak) { if ($dodatak != NULL) { $oprema_cena += $config->get($dodatak); } } } else { $zapremina = $form_state->getUserInput()['kazani_profesionalni_zapremina']; ($zapremina) ? $form_state->getUserInput()['kazani_profesionalni_zapremina'] : ''; $dno = $form_state->getUserInput()['kazani_profesionalni_debljina_dna']; ($dno) ? $form_state->getUserInput()['kazani_profesionalni_debljina_dna'] : ''; $cev = $form_state->getUserInput()['kazani_profesionalni_cev']; ($cev) ? $form_state->getUserInput()['kazani_profesionalni_cev'] : ''; $hladnjak = $form_state->getUserInput()['kazani_profesionalni_hladnjak']; ($hladnjak) ? $form_state->getUserInput()['kazani_profesionalni_hladnjak'] : ''; $izmenjivac = $form_state->getUserInput()['hladnjak_profesionalni_izmenjivac']; ($izmenjivac) ? $form_state->getUserInput()['hladnjak_profesionalni_izmenjivac'] : ''; $mesalica = $form_state->getUserInput()['kazani_profesionalni_mesalica']; ($mesalica) ? $form_state->getUserInput()['kazani_profesionalni_mesalica'] : ''; $dodaci = $form_state->getUserInput()['dodatna_profesionalni_oprema']; foreach ($dodaci as $dodatak) { if ($dodatak != NULL) { $oprema_cena += $config->get($dodatak); } } } //Calculating total order price. $artikli = []; array_push($artikli, $zapremina, $dno, $cev, $hladnjak, $izmenjivac, $mesalica); foreach($artikli as $artikal) { if ($artikal != NULL) { $cena += $config->get($artikal); } } $cena += $oprema_cena; $form['cena']['#title'] = 'Cena ovog kazana bi iznosila ' . $cena . ' RSD.'; return $form['cena']; } public function submitForm(array &$form, FormStateInterface $form_state) { if ($form_state->getValue) $message = 'Specifikacija kazana' . PHP_EOL . PHP_EOL . 'Email: ' . $form_state->getValue('emailaddress') . PHP_EOL . 'Telefon: ' . $form_state->getValue('phone') . PHP_EOL . 'Poruka: ' . $form_state->getValue('message') . PHP_EOL . 'Tip: ' . $form_state->getValue('kazani_tipovi') . PHP_EOL . 'Zapremina: ' . $form_state->getValue(''); $mailManager = \Drupal::service('plugin.manager.mail'); $module = 'kazan_dizajner'; $key = 'mail_order'; $to = $form_state->getValue('emailaddress'); dsm($form_state->getValue('kazani_tipovi')); } }
Comments