performer.php 16 KB
<?php
    /**
     * @var View                $this
     * @var SearchPerformerForm $model
     */

    use common\models\Specialization;
    use frontend\models\SearchPerformerForm;
    use kartik\select2\Select2;
    use \yii\helpers\Html;
    use yii\helpers\Url;
    use yii\jui\SliderInput;
    use yii\web\JsExpression;
    use yii\web\View;
    use yii\widgets\ActiveForm;
    use yii\widgets\LinkSorter;
    use yii\widgets\ListView;

    $sort_array = $dataProvider->sort->getAttributeOrders();
    $active_key = array_keys($sort_array)[ 0 ];
    $active_value = $sort_array[ $active_key ];
    $sort_name = ( ( $active_value == 4 ) ? '-' : '' ) . $active_key;
    $this->title = 'My Yii Application';
?>

<div class="section-box content">
    <div class="section-box-22">
        <div class="box-wr">
            <div class="box-all">
                <div class="left-search-work">
                    <?php
                        $form = ActiveForm::begin([
                            'options' => [ 'class' => 'search-work-form' ],
                            'action'  => [ '' ],
                            'method'  => 'get',
                        ]);
                    ?>
                    <?= $form->field($model, 'city')
                             ->widget(Select2::classname(), [
                                 'options'       => [ 'placeholder' => 'Выбор города ...' ],
                                 'pluginOptions' => [
                                     'allowClear'         => true,
                                     'minimumInputLength' => 3,
                                     'ajax'               => [
                                         'url'      => \yii\helpers\Url::to([ 'site/city' ]),
                                         'dataType' => 'json',
                                         'data'     => new JsExpression('function(params) { return {q:params.term}; }'),
                                     ],
                                     'escapeMarkup'       => new JsExpression('function (markup) { return markup; }'),
                                     'templateResult'     => new JsExpression('function(city) { return city.text; }'),
                                     'templateSelection'  => new JsExpression('function (city) { return city.text; }'),
                                 ],
                             ]); ?>

                    <?php
                        // New specialization chooser
                    ?>
                    <div class="input-blocks-wrapper admin-menu-list">
                        <div class="input-blocks" style="width: 100%; margin-bottom: 5px">
                            <label>Специализации</label>
                            <div class="required"></div>
                        </div>
                        <div class="style">
                            <ul class="content-menu-first">
                                <?php foreach($specializations as $specialization): ?>
                                    <li data-img="<?= $specialization->image ?>">
                                        <span data-menu-bg="<?= $specialization->background ?>" style="background: <?= $specialization->background ?>"></span><a href="#"><?= $specialization->specialization_name ?></a>
                                        <ul>
                                            <?php foreach($specialization->children as $child_first): ?>

                                                <?php if($child_first instanceof Specialization): ?>
                                                    <li>
                                                        <a href="#"><?= $child_first->specialization_name ?></a>
                                                        <ul>
                                                            <?php foreach($child_first->children as $child_second): ?>
                                                                <?php if($child_first instanceof Specialization): ?>
                                                                    <li>
                                                                        <a href="#" title="<?= $child_second->specialization_name ?>">
                                                                            <?= $form->field($model, "specialization[{$child_second->specialization_id}]", [
                                                                                'template' => '{input}{label}{hint}{error}',
                                                                            ])
                                                                                     ->label('<span></span>' . $child_second->specialization_name)
                                                                                     ->checkbox([
                                                                                         'value'   => $child_second->specialization_id,
                                                                                         'label'   => NULL,
                                                                                         'uncheck' => NULL,
                                                                                         'class'   => 'custom-check',
                                                                                     ], false) ?>
                                                                        </a>
                                                                    </li>
                                                                <?php endif; ?>
                                                            <?php endforeach; ?>
                                                        </ul>
                                                    </li>
                                                <?php endif; ?>
                                            <?php endforeach; ?>

                                        </ul>
                                    </li>
                                <?php endforeach; ?>
                            </ul>
                        </div>
                        <div class="style admn-menu-err">
                            <div class="help-block">Необходимо выбрать хотя бы одну «специализацию».</div>
                        </div>
                    </div>

                    <div class="admin-specialization-selected style">
                        <ul></ul>
                    </div>
                    
                    <?php
                        // End of new specialization chooser
                    ?>

                    <?php
                        /*
                    ?>

                    <?= $form->field($model, 'specialization[]')
                             ->dropDownList($specialization, [ 'prompt' => 'Любая' ]); ?>
                        <?php
                        */
                    ?>

                    <?= $form->field($model, 'portfolio', [
                        'options'  => [
                            'class' => 'blocks-check-list-wrapp',
                        ],
                        'template' => "<div class='blocks-check-title'>{label}</div>\n{input}\n{hint}\n{error}",
                    ])
                             ->label('Искать в')
                             ->radioList([
                                 1 => 'Портфолио',
                                 0 => 'Услуги',
                             ], [
                                 'item'     => function($index, $label, $name, $checked, $value) use ($model) {
                                     return "<div class='blocks-check-list'><input type='radio' id='{$model->formName()}-{$index}-portfolio' name='{$name}' class='check-search' value='{$value}' " . ( $checked ? 'checked' : '' ) . "><label for='{$model->formName()}-{$index}-portfolio'><span></span>{$label}</label></div>";
                                 },
                                 'unselect' => NULL,
                             ]); ?>

                    <?= $form->field($model, 'type')
                             ->dropDownList([
                                 '1' => 'Частное лицо',
                                 '2' => 'Компания',
                             ], [ 'prompt' => 'Любой' ]); ?>



                    <?=

                        $form->field($model, 'working_conditions')
                             ->checkboxList([
                                 'guarantee'  => 'С гарантией',
                                 //'contract' => 'С договором',
                                 //'estimate' => 'Со сметой',
                                 'prepayment' => 'Без предоплаты',
                             ], [
                                 'item' => function($index, $label, $name, $checked, $value) {
                                     $return = '<div class="blocks-check-list">';
                                     $return .= '<input type="checkbox" ' . ( $checked ? "checked" : "" ) . ' name="' . $name . '" class="check-search" value="' . $value . '" id="theme-' . $index . '">';
                                     $return .= '<label for="theme-' . $index . '"><span></span>' . $label . '</label>';
                                     $return .= '</div>';
                                     return $return;
                                 },
                             ]); ?>

                    <div class="blocks-check-list-wrapp">
                        <div id="slider-value"></div>
                        <?php
                            echo $form->field($model, 'rating', [
                                'template'     => "{label}<br><div id='{$form->id}-rating'>{$model->rating}</div><br>{input}\n{hint}\n{error}",
                                'labelOptions' => [
                                    'class' => 'blocks-check-title',
                                ],
                            ])
                                      ->widget(SliderInput::className(), [
                                          'clientOptions' => [
                                              'min'  => 0,
                                              'max'  => 5,
                                              'step' => 0.5,
                                          ],
                                          'clientEvents'  => [
                                              'slide' => "function( event, ui ) {
                                         $( '#{$form->id}-rating' ).text(ui.value);
                                         $('input[name=\"{$model->formName()}[rating]\"]').val(ui.value);

                                     }",
                                          ],
                                      ]);
                        ?>
                    </div>


                    <?= $form->field($model, 'online', [
                        'options'  => [
                            'class' => 'blocks-check-list-wrapp',
                        ],
                        'template' => "<div class='blocks-check-title'>{label}</div>\n{input}\n{hint}\n{error}",
                    ])
                             ->radioList([
                                 '' => 'Все',
                                 1  => 'Онлайн',
                             ], [
                                 'item'     => function($index, $label, $name, $checked, $value) use ($model) {
                                     return "<div class='blocks-check-list'><input type='radio' id='{$model->formName()}-{$index}' name='{$name}' class='check-search' value='{$value}' " . ( $checked ? 'checked' : '' ) . "><label for='{$model->formName()}-{$index}'><span></span>{$label}</label></div>";
                                 },
                                 'unselect' => NULL,
                             ]); ?>

                    <?= $form->field($model, 'additional_parameters')
                             ->checkboxList([
                                 'with_portfolio' => 'Только с портфолио',
                                 'with_comments'  => 'Только с мнениями',
                                 'only_free'      => 'Только свободные',
                             ], [
                                 'item' => function($index, $label, $name, $checked, $value) {
                                     $return = '<div class="blocks-check-list">';
                                     $return .= '<input type="checkbox" ' . ( $checked ? "checked" : "" ) . ' name="' . $name . '" class="check-search" value="' . $value . '" id="theme2-' . $index . '">';
                                     $return .= '<label for="theme2-' . $index . '"><span></span>' . $label . '</label>';
                                     $return .= '</div>';
                                     return $return;
                                 },
                             ]); ?>
                    <div class="blocks-check-list-submit">
                        <?= Html::submitInput('Найти') ?>
                    </div>

                    <?php
                        $form->end();
                    ?>
                </div>
                <div class="right-search-work">
                    <div class="search-worker-title style">Найти исполнителя</div>
                    <div class="search-worker-title-two style">Проектанты готовые приступить к работе
                        <span><?= $dataProvider->totalCount ?></span></div>
                    <div class="search-worker-search-wr style">
                        <?php
                            $form2 = ActiveForm::begin([
                                'method'  => 'get',
                                'action'  => [ '' ],
                                'options' => [ 'class' => 'search-worker-form' ],
                            ]);
                        ?>

                        <?= $form2->field($model, 'search', [ 'options' => [ 'tag' => 'span' ] ])
                                  ->label(false)
                                  ->textInput([ 'placeholder' => $model->getAttributeLabel('search') ]); ?>

                        <?= Html::submitInput('Найти'); ?>

                        <?php
                            $form2->end();
                        ?>

                        <?php
                            if(empty( \Yii::$app->user->id ) || empty( \Yii::$app->user->identity->specializations )) {
                                echo Html::a('Добавить себя в каталог', Url::toRoute('accounts/service'), [ 'class' => 'add-to-catalog-search-worker' ]);
                            }
                        ?>

                        <div class="search-worker-sort-wr style">
                            <div class="search-worker-sort">Сортировать:&nbsp;</div>
                            <ul>
                                <li class="activejob">
                                    <a href="#" data-sort-name="<?= $sort_name ?>"></a>
                                    <div class="sidebar-droped-wr style">
                                        <?php
                                            echo LinkSorter::widget([
                                                'sort' => $dataProvider->sort,
                                            ]);
                                        ?>
                                    </div>
                                </li>
                            </ul>
                        </div>
                    </div>

                    <div class="search-worker-blocks-wr style">

                        <?=

                            ListView::widget([
                                'dataProvider' => $dataProvider,
                                'itemView'     => '_performer_list_view',
                                'layout'       => "{items}\n<div class='navi-buttons-wr style'>{pager}</div>",
                            ]); ?>


                    </div>
                </div>
            </div>
        </div>
    </div>

</div>