From 248f5470f924d34b2cd18e2370c512f1becd7482 Mon Sep 17 00:00:00 2001 From: Arsen Mirzaev Tatyano-Muradovich Date: Mon, 17 May 2021 01:49:45 +1000 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B5=D0=B1=D0=BE=D0=BB=D1=8C=D1=88?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B2=D0=BD=D0=B5=D1=88=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- composer.json | 3 +- composer.lock | 766 ++++++++++++++++-- .../skillparts/system/config/web.php.example | 40 +- .../system/controllers/OfferController.php | 36 +- .../m210512_121658_create_cdek_collection.php | 20 + mirzaev/skillparts/system/models/Cdek.php | 43 + mirzaev/skillparts/system/models/Order.php | 30 +- mirzaev/skillparts/system/models/Request.php | 4 +- .../system/models/connection/Dellin.php | 23 +- .../skillparts/system/views/buyers/index.php | 4 +- .../skillparts/system/views/cart/index.php | 31 +- .../skillparts/system/views/layouts/main.php | 6 +- .../skillparts/system/views/offer/index.php | 46 +- .../system/views/offer/supplier.php | 61 ++ .../system/views/suppliers/index.php | 4 +- .../system/views/suppliers/request.php | 42 +- 16 files changed, 994 insertions(+), 165 deletions(-) create mode 100644 mirzaev/skillparts/system/migrations/arangodb/m210512_121658_create_cdek_collection.php create mode 100644 mirzaev/skillparts/system/models/Cdek.php create mode 100644 mirzaev/skillparts/system/views/offer/supplier.php diff --git a/composer.json b/composer.json index 1f72687..783461a 100644 --- a/composer.json +++ b/composer.json @@ -27,7 +27,8 @@ "yiisoft/yii2-imagine": "*", "mirzaev/yii2-arangodb": ">=2.1.x-dev", "mirzaev/yii2-arangodb-sessions": ">=1.1.x-dev", - "guzzlehttp/guzzle": "^7.3" + "guzzlehttp/guzzle": "^7.3", + "cdek-it/sdk2.0": "^0.1.5" }, "require-dev": { "codeception/codeception": ">=4.1", diff --git a/composer.lock b/composer.lock index 7583990..555ba10 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "281d5a604bec47375e20427f528690c7", + "content-hash": "d8be640c77a23c843e66c35f4a38c151", "packages": [ { "name": "bower-asset/bootstrap", @@ -205,6 +205,78 @@ }, "time": "2020-09-08T12:58:28+00:00" }, + { + "name": "cdek-it/sdk2.0", + "version": "0.1.5", + "source": { + "type": "git", + "url": "https://github.com/cdek-it/sdk2.0.git", + "reference": "e4553bbbfa3c6270dd4bb3c9044d44dfe218ec25" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cdek-it/sdk2.0/zipball/e4553bbbfa3c6270dd4bb3c9044d44dfe218ec25", + "reference": "e4553bbbfa3c6270dd4bb3c9044d44dfe218ec25", + "shasum": "" + }, + "require": { + "ext-json": "*", + "jms/serializer": "^1.14.0", + "nyholm/psr7": "^1.2", + "php": "^7.1", + "psr/http-client": "^1.0", + "rakit/validation": "^1.1" + }, + "require-dev": { + "phan/phan": "^1 <1.3 || >1.3.0", + "php-coveralls/php-coveralls": "^2.1", + "php-http/mock-client": "^1.3", + "phpmd/phpmd": "^2.7", + "phpstan/phpstan": ">=0.10", + "phpunit/phpunit": "^6.5 || ^7.4", + "squizlabs/php_codesniffer": "*", + "symfony/http-client": "^4.3", + "vimeo/psalm": ">=3.0.16" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "v0.0.1-dev" + } + }, + "autoload": { + "psr-4": { + "CdekSDK2\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Viktor Chizhekov", + "homepage": "https://github.com/ihomyak", + "role": "Creator" + } + ], + "description": "PHP SDK для API v2.0 от сервиса интеграции компании СДЭК", + "homepage": "https://www.cdek.ru/clients/integrator.html", + "keywords": [ + "cdek", + "delivery", + "sdk", + "v2.0", + "СДЭК", + "служба доставки" + ], + "support": { + "docs": "https://github.com/cdek-it/sdk2.0/blob/master/README.md", + "issues": "https://github.com/cdek-it/sdk2.0/issues", + "source": "https://github.com/cdek-it/sdk2.0/tree/0.1.5" + }, + "time": "2020-09-03T10:43:13+00:00" + }, { "name": "cebe/markdown", "version": "1.2.1", @@ -269,6 +341,145 @@ }, "time": "2018-03-26T11:24:36+00:00" }, + { + "name": "doctrine/annotations", + "version": "1.12.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "b17c5014ef81d212ac539f07a1001832df1b6d3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/b17c5014ef81d212ac539f07a1001832df1b6d3b", + "reference": "b17c5014ef81d212ac539f07a1001832df1b6d3b", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "ext-tokenizer": "*", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/cache": "1.*", + "doctrine/coding-standard": "^6.0 || ^8.1", + "phpstan/phpstan": "^0.12.20", + "phpunit/phpunit": "^7.5 || ^9.1.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "https://www.doctrine-project.org/projects/annotations.html", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "support": { + "issues": "https://github.com/doctrine/annotations/issues", + "source": "https://github.com/doctrine/annotations/tree/1.12.1" + }, + "time": "2021-02-21T21:00:45+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2020-11-10T18:47:58+00:00" + }, { "name": "doctrine/lexer", "version": "1.2.1", @@ -766,6 +977,192 @@ }, "time": "2020-11-03T22:35:03+00:00" }, + { + "name": "jms/metadata", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/metadata.git", + "reference": "e5854ab1aa643623dc64adde718a8eec32b957a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/e5854ab1aa643623dc64adde718a8eec32b957a8", + "reference": "e5854ab1aa643623dc64adde718a8eec32b957a8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "doctrine/cache": "~1.0", + "symfony/cache": "~3.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5.x-dev" + } + }, + "autoload": { + "psr-0": { + "Metadata\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + }, + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Class/method/property metadata management in PHP", + "keywords": [ + "annotations", + "metadata", + "xml", + "yaml" + ], + "support": { + "issues": "https://github.com/schmittjoh/metadata/issues", + "source": "https://github.com/schmittjoh/metadata/tree/1.x" + }, + "time": "2018-10-26T12:40:10+00:00" + }, + { + "name": "jms/parser-lib", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/parser-lib.git", + "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/parser-lib/zipball/c509473bc1b4866415627af0e1c6cc8ac97fa51d", + "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d", + "shasum": "" + }, + "require": { + "phpoption/phpoption": ">=0.9,<2.0-dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-0": { + "JMS\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "description": "A library for easily creating recursive-descent parsers.", + "support": { + "issues": "https://github.com/schmittjoh/parser-lib/issues", + "source": "https://github.com/schmittjoh/parser-lib/tree/1.0.0" + }, + "time": "2012-11-18T18:08:43+00:00" + }, + { + "name": "jms/serializer", + "version": "1.14.1", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/serializer.git", + "reference": "ba908d278fff27ec01fb4349f372634ffcd697c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/ba908d278fff27ec01fb4349f372634ffcd697c0", + "reference": "ba908d278fff27ec01fb4349f372634ffcd697c0", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "doctrine/instantiator": "^1.0.3", + "jms/metadata": "^1.3", + "jms/parser-lib": "1.*", + "php": "^5.5|^7.0", + "phpcollection/phpcollection": "~0.1", + "phpoption/phpoption": "^1.1" + }, + "conflict": { + "twig/twig": "<1.12" + }, + "require-dev": { + "doctrine/orm": "~2.1", + "doctrine/phpcr-odm": "^1.3|^2.0", + "ext-pdo_sqlite": "*", + "jackalope/jackalope-doctrine-dbal": "^1.1.5", + "phpunit/phpunit": "^4.8|^5.0", + "propel/propel1": "~1.7", + "psr/container": "^1.0", + "symfony/dependency-injection": "^2.7|^3.3|^4.0", + "symfony/expression-language": "^2.6|^3.0", + "symfony/filesystem": "^2.1", + "symfony/form": "~2.1|^3.0", + "symfony/translation": "^2.1|^3.0", + "symfony/validator": "^2.2|^3.0", + "symfony/yaml": "^2.1|^3.0", + "twig/twig": "~1.12|~2.0" + }, + "suggest": { + "doctrine/cache": "Required if you like to use cache functionality.", + "doctrine/collections": "Required if you like to use doctrine collection types as ArrayCollection.", + "symfony/yaml": "Required if you'd like to serialize data to YAML format." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.14-dev" + } + }, + "autoload": { + "psr-0": { + "JMS\\Serializer": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + } + ], + "description": "Library for (de-)serializing data of any complexity; supports XML, JSON, and YAML.", + "homepage": "http://jmsyst.com/libs/serializer", + "keywords": [ + "deserialization", + "jaxb", + "json", + "serialization", + "xml" + ], + "support": { + "issues": "https://github.com/schmittjoh/serializer/issues", + "source": "https://github.com/schmittjoh/serializer/tree/1.14.1" + }, + "time": "2020-02-22T20:59:37+00:00" + }, { "name": "maennchen/zipstream-php", "version": "2.1.0", @@ -1225,6 +1622,189 @@ "MIT" ] }, + { + "name": "nyholm/psr7", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/Nyholm/psr7.git", + "reference": "23ae1f00fbc6a886cbe3062ca682391b9cc7c37b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Nyholm/psr7/zipball/23ae1f00fbc6a886cbe3062ca682391b9cc7c37b", + "reference": "23ae1f00fbc6a886cbe3062ca682391b9cc7c37b", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "php-http/message-factory": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "http-interop/http-factory-tests": "^0.8", + "php-http/psr7-integration-tests": "^1.0", + "phpunit/phpunit": "^7.5 || 8.5 || 9.4", + "symfony/error-handler": "^4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "Nyholm\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" + }, + { + "name": "Martijn van der Ven", + "email": "martijn@vanderven.se" + } + ], + "description": "A fast PHP7 implementation of PSR-7", + "homepage": "https://tnyholm.se", + "keywords": [ + "psr-17", + "psr-7" + ], + "support": { + "issues": "https://github.com/Nyholm/psr7/issues", + "source": "https://github.com/Nyholm/psr7/tree/1.4.0" + }, + "funding": [ + { + "url": "https://github.com/Zegnat", + "type": "github" + }, + { + "url": "https://github.com/nyholm", + "type": "github" + } + ], + "time": "2021-02-18T15:41:32+00:00" + }, + { + "name": "php-http/message-factory", + "version": "v1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-http/message-factory.git", + "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1", + "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Factory interfaces for PSR-7 HTTP Message", + "homepage": "http://php-http.org", + "keywords": [ + "factory", + "http", + "message", + "stream", + "uri" + ], + "support": { + "issues": "https://github.com/php-http/message-factory/issues", + "source": "https://github.com/php-http/message-factory/tree/master" + }, + "time": "2015-12-19T14:08:53+00:00" + }, + { + "name": "phpcollection/phpcollection", + "version": "0.5.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-collection.git", + "reference": "f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-collection/zipball/f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6", + "reference": "f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6", + "shasum": "" + }, + "require": { + "phpoption/phpoption": "1.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.4-dev" + } + }, + "autoload": { + "psr-0": { + "PhpCollection": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "General-Purpose Collection Library for PHP", + "keywords": [ + "collection", + "list", + "map", + "sequence", + "set" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-collection/issues", + "source": "https://github.com/schmittjoh/php-collection/tree/master" + }, + "time": "2015-05-17T12:39:23+00:00" + }, { "name": "phpoffice/phpspreadsheet", "version": "1.17.1", @@ -1326,6 +1906,75 @@ }, "time": "2021-03-02T17:54:11+00:00" }, + { + "name": "phpoption/phpoption", + "version": "1.7.5", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "994ecccd8f3283ecf5ac33254543eb0ac946d525" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/994ecccd8f3283ecf5ac33254543eb0ac946d525", + "reference": "994ecccd8f3283ecf5ac33254543eb0ac946d525", + "shasum": "" + }, + "require": { + "php": "^5.5.9 || ^7.0 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "phpunit/phpunit": "^4.8.35 || ^5.7.27 || ^6.5.6 || ^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Graham Campbell", + "email": "graham@alt-three.com" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.7.5" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2020-07-20T17:29:33+00:00" + }, { "name": "psr/http-client", "version": "1.0.1", @@ -1537,6 +2186,52 @@ }, "time": "2017-10-23T01:57:42+00:00" }, + { + "name": "rakit/validation", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/rakit/validation.git", + "reference": "ff003a35cdf5030a5f2482299f4c93f344a35b29" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rakit/validation/zipball/ff003a35cdf5030a5f2482299f4c93f344a35b29", + "reference": "ff003a35cdf5030a5f2482299f4c93f344a35b29", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=7.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^6.5", + "squizlabs/php_codesniffer": "^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Rakit\\Validation\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Muhammad Syifa", + "email": "emsifa@gmail.com" + } + ], + "description": "PHP Laravel like standalone validation library", + "support": { + "issues": "https://github.com/rakit/validation/issues", + "source": "https://github.com/rakit/validation/tree/v1.4.0" + }, + "time": "2020-08-27T05:07:01+00:00" + }, { "name": "ralouphie/getallheaders", "version": "3.0.3", @@ -3262,75 +3957,6 @@ }, "time": "2020-12-18T16:18:31+00:00" }, - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, { "name": "fakerphp/faker", "version": "v1.14.1", diff --git a/mirzaev/skillparts/system/config/web.php.example b/mirzaev/skillparts/system/config/web.php.example index 2118bf1..2d23fc2 100644 --- a/mirzaev/skillparts/system/config/web.php.example +++ b/mirzaev/skillparts/system/config/web.php.example @@ -109,19 +109,39 @@ $config = [ 'params' => require __DIR__ . '/params.php', 'on beforeAction' => function ($event) { if ( - !yii::$app->user->isGuest && - !(isset(yii::$app->session['offer_accepted']) && yii::$app->session['offer_accepted']) && - (yii::$app->request->getPathInfo() !== 'offer' && - yii::$app->request->getPathInfo() !== 'notification' && - yii::$app->request->getPathInfo() !== 'identification' && - yii::$app->request->getPathInfo() !== 'offer/accept') && - (!isset(yii::$app->user->identity->acpt) || - yii::$app->user->identity->acpt === false) + !yii::$app->user->isGuest + && (yii::$app->request->getPathInfo() !== 'offer' + && yii::$app->request->getPathInfo() !== 'offer/suppliers' + && yii::$app->request->getPathInfo() !== 'offer/accept' + && yii::$app->request->getPathInfo() !== 'offer/accept-suppliers' + && yii::$app->request->getPathInfo() !== 'notification' + && yii::$app->request->getPathInfo() !== 'identification') ) { // Нет соглашения с офертой - // Переадресация на оферту - yii::$app->response->redirect('/offer')->send(); + if ( + !(isset(yii::$app->session['offer_buyer_accepted']) + && yii::$app->session['offer_buyer_accepted'] === true) + && (!isset(yii::$app->user->identity->acpt['buyer']) + || yii::$app->user->identity->acpt['buyer'] === false) + ) { + // Нет подтверждения офферты пользователя + + // Переадресация на оферту + yii::$app->response->redirect('/offer')->send(); + } else if ( + (isset(yii::$app->user->identity->agnt) + && yii::$app->user->identity->agnt === true) + && !(isset(yii::$app->session['offer_supplier_accepted']) + && yii::$app->session['offer_supplier_accepted'] === true) + && (!isset(yii::$app->user->identity->acpt['supplier']) + || yii::$app->user->identity->acpt['supplier'] === false) + ) { + // Нет подтверждения офферты поставщика + + // Переадресация на оферту + yii::$app->response->redirect('/offer/suppliers')->send(); + } } } ]; diff --git a/mirzaev/skillparts/system/controllers/OfferController.php b/mirzaev/skillparts/system/controllers/OfferController.php index a1bc077..412baf7 100644 --- a/mirzaev/skillparts/system/controllers/OfferController.php +++ b/mirzaev/skillparts/system/controllers/OfferController.php @@ -21,7 +21,7 @@ class OfferController extends Controller [ 'allow' => true, 'roles' => ['@'], - 'actions' => ['index', 'accept'] + 'actions' => ['index', 'suppliers', 'accept', 'accept-suppliers'] ], [ 'allow' => false, @@ -67,14 +67,42 @@ class OfferController extends Controller return $this->render('/offer/index'); } - public function actionAccept() { - yii::$app->user->identity->acpt = true; + public function actionSuppliers() + { + return $this->render('/offer/supplier'); + } + + public function actionAccept() + { + // Инициализация + yii::$app->user->identity->acpt ?? yii::$app->user->identity->acpt = []; + + // Запись + yii::$app->user->identity->acpt += ['buyer' => true]; if (yii::$app->user->identity->save()) { // Удалось записать данные // Запись в сессию - yii::$app->session['offer_accepted'] = true; + yii::$app->session['offer_buyer_accepted'] = true; + + + yii::$app->response->redirect('/'); + } + } + + public function actionAcceptSuppliers() + { + // Инициализация + yii::$app->user->identity->acpt ?? yii::$app->user->identity->acpt = []; + + yii::$app->user->identity->acpt += ['supplier' => true]; + + if (yii::$app->user->identity->save()) { + // Удалось записать данные + + // Запись в сессию + yii::$app->session['offer_supplier_accepted'] = true; yii::$app->response->redirect('/'); diff --git a/mirzaev/skillparts/system/migrations/arangodb/m210512_121658_create_cdek_collection.php b/mirzaev/skillparts/system/migrations/arangodb/m210512_121658_create_cdek_collection.php new file mode 100644 index 0000000..d41c422 --- /dev/null +++ b/mirzaev/skillparts/system/migrations/arangodb/m210512_121658_create_cdek_collection.php @@ -0,0 +1,20 @@ +createCollection('cdek', ['type' => 2]); + } + + public function down() + { + $this->dropCollection('cdek'); + } +} diff --git a/mirzaev/skillparts/system/models/Cdek.php b/mirzaev/skillparts/system/models/Cdek.php new file mode 100644 index 0000000..2227661 --- /dev/null +++ b/mirzaev/skillparts/system/models/Cdek.php @@ -0,0 +1,43 @@ + 'Данные ДеловыеЛинии', + ] + ); + } + + /** + * Поиск по идентификатору города + */ + public static function searchByCityId(string $id): ?static + { + return static::findOne(['data["id"]' => $id]); + } +} diff --git a/mirzaev/skillparts/system/models/Order.php b/mirzaev/skillparts/system/models/Order.php index 2d80a99..68f1a52 100644 --- a/mirzaev/skillparts/system/models/Order.php +++ b/mirzaev/skillparts/system/models/Order.php @@ -368,8 +368,8 @@ class Order extends Document implements DocumentInterface try { - // Инициализация доставки - $connection['delivery'] = Dellin::calcDeliveryAdvanced( + // Инициализация доставки Dellin (автоматическая) + $connection['delivery']['auto'] = Dellin::calcDeliveryAdvanced( explode('_', $connection['account']['opts']['delivery_from_terminal'])[1], explode('_', yii::$app->user->identity->opts['delivery_to_terminal'])[1], (int) ($connection['product']['wght'] ?? 0), @@ -379,13 +379,35 @@ class Order extends Document implements DocumentInterface count($connection['order_edge_supply']) ); } catch (Exception $e) { - $connection['delivery']['error'] = true; + $connection['delivery']['auto']['error'] = true; // var_dump(json_decode($e->getMessage(), true)['errors']); die; } // Запись цены (цена поставки + цена доставки + наша наценка) - $connection['cost'] = ($cost['ЦенаЗаЕдиницу'] ?? $connection['supply']->onec['Цены']['Цена']['ЦенаЗаЕдиницу']) + ($connection['delivery']['price']['all'] ?? $connection['delivery']['price']['one'] ?? 0) + ($settings['increase'] ?? 0); + $connection['cost']['auto'] = ($cost['ЦенаЗаЕдиницу'] ?? $connection['supply']->onec['Цены']['Цена']['ЦенаЗаЕдиницу']) + ($connection['delivery']['auto']['price']['all'] ?? $connection['delivery']['auto']['price']['one'] ?? 0) + ($settings['increase'] ?? 0); + + try + { + // Инициализация доставки Dellin (автоматическая) + $connection['delivery']['avia'] = Dellin::calcDeliveryAdvanced( + explode('_', $connection['account']['opts']['delivery_from_terminal'])[1], + explode('_', yii::$app->user->identity->opts['delivery_to_terminal'])[1], + (int) ($connection['product']['wght'] ?? 0), + (int) ($connection['product']['dmns']['x'] ?? 0), + (int) ($connection['product']['dmns']['y'] ?? 0), + (int) ($connection['product']['dmns']['z'] ?? 0), + count($connection['order_edge_supply']), + avia: true + ); + } catch (Exception $e) { + $connection['delivery']['avia']['error'] = true; + + var_dump(json_decode($e->getMessage(), true)['errors']); die; + } + + // Запись цены (цена поставки + цена доставки + наша наценка) + $connection['cost']['avia'] = ($cost['ЦенаЗаЕдиницу'] ?? $connection['supply']->onec['Цены']['Цена']['ЦенаЗаЕдиницу']) + ($connection['delivery']['avia']['price']['all'] ?? $connection['delivery']['avia']['price']['one'] ?? 0) + ($settings['increase'] ?? 0); // Запись валюты $connection['currency'] = $cost['Валюта']; diff --git a/mirzaev/skillparts/system/models/Request.php b/mirzaev/skillparts/system/models/Request.php index df7982e..20dd3ee 100644 --- a/mirzaev/skillparts/system/models/Request.php +++ b/mirzaev/skillparts/system/models/Request.php @@ -52,10 +52,10 @@ class Request extends Document return array_merge( parent::attributeLabels(), [ - 'text' => 'Обращение', + 'text' => 'ФИО', 'phon' => 'Номер', 'mail' => 'Почта', - 'file' => 'Юридические данные' + 'file' => 'Карточка предприятия' ] ); } diff --git a/mirzaev/skillparts/system/models/connection/Dellin.php b/mirzaev/skillparts/system/models/connection/Dellin.php index ea932f8..f31c064 100644 --- a/mirzaev/skillparts/system/models/connection/Dellin.php +++ b/mirzaev/skillparts/system/models/connection/Dellin.php @@ -75,9 +75,9 @@ class Dellin extends Model * @todo Загружать помимо терминалов ещё и адреса, чтобы доделать доставку малогабаритных грузов * Разрабраться с параметрами 0,54м * 0,39м * 0,39м (0.082134м) и 0.1 куб метр в чем разница */ - public static function calcDeliveryAdvanced(string $from, string $to, int $weight, int $x, int $y, int $z, int $amount = 1): array + public static function calcDeliveryAdvanced(string $from, string $to, int $weight, int $x, int $y, int $z, int $amount = 1, bool $avia = false): array { - return self::handle(function () use ($from, $to, $weight, $x, $y, $z, $amount) { + return self::handle(function () use ($from, $to, $weight, $x, $y, $z, $amount, $avia) { // Всё готово к работе // Значения по умолчанию, если указан 0 @@ -110,7 +110,6 @@ class Dellin extends Model $height = $z; $length = $y; } else { - // } else if ($z > $x && $z > $y) { // "Z" больше всех // Инициализация @@ -119,12 +118,7 @@ class Dellin extends Model $length = $z; } - // Рассчёт типа доставки - // if ( - // $weight <= 30 && - // $x * $y * $z <= 0.082134 // && - // // $x * $y * $z <= 0.1 if ( $weight <= 30 && ($length <= 0.54 && $width <= 0.39 && $height <= 0.39) @@ -137,7 +131,17 @@ class Dellin extends Model } else { // Доставка категории "auto" - $type = 'auto'; + if ($avia) { + // Рассчет для доставки по воздуху + + $weight <= 0.5 and $weight = 0.5; + $type = 'avia'; + } else { + // Рассчет для доставки по земле + + $type = 'auto'; + } + $variant = 'terminal'; } @@ -204,7 +208,6 @@ class Dellin extends Model }); } - /** * Рассчет доставки * diff --git a/mirzaev/skillparts/system/views/buyers/index.php b/mirzaev/skillparts/system/views/buyers/index.php index 5bf9907..1dc7bdb 100644 --- a/mirzaev/skillparts/system/views/buyers/index.php +++ b/mirzaev/skillparts/system/views/buyers/index.php @@ -73,8 +73,8 @@ AppAsset::register($this);
Бесплатное экспедирование
- -
Наличие всех поставщиков
+ +
Отлаженная сеть поставщиков
diff --git a/mirzaev/skillparts/system/views/cart/index.php b/mirzaev/skillparts/system/views/cart/index.php index f28b583..53cea9a 100644 --- a/mirzaev/skillparts/system/views/cart/index.php +++ b/mirzaev/skillparts/system/views/cart/index.php @@ -40,18 +40,33 @@ use DateTime; // Перебор поставок // Инициализация доставки - if (isset($connection['delivery']['error'])) { + if (isset($connection['delivery']['auto']['error'])) { // Не удалось рассчитать доставку - $delivery = '?'; + $delivery_auto = '?'; } else { // Удалось рассчитать доставку - $delivery = (DateTime::createFromFormat('Y-m-d', $connection['delivery']['orderDates']['arrivalToOspReceiver'])->getTimestamp() - time()) / 60 / 60 / 24 + 1; + // Инициализация + $delivery_auto = ceil((DateTime::createFromFormat('Y-m-d', $connection['delivery']['auto']['orderDates']['arrivalToOspReceiver'])->getTimestamp() - time()) / 60 / 60 / 24) + 1; + + // Инициализация цены + $cost_auto = $connection['cost']['auto'] . ' ' . $connection['currency']; } - // Инициализация цены - $cost = $connection['cost'] . ' ' . $connection['currency']; + // Инициализация доставки + if (isset($connection['delivery']['avia']['error'])) { + // Не удалось рассчитать доставку + + $delivery_avia = '?'; + } else { + // Удалось рассчитать доставку + + $delivery_avia = ceil((DateTime::createFromFormat('Y-m-d H:i:s', $connection['delivery']['avia']['orderDates']['giveoutFromOspReceiver'])->getTimestamp() - time()) / 60 / 60 / 24) + 1; + + // Инициализация цены + $cost_avia = $connection['cost']['avia'] . ' ' . $connection['currency']; + } // Инициализация комментария $comment = $connection['order_edge_supply'][0]['comm'] ?? 'Комментарий к заказу'; @@ -73,10 +88,12 @@ use DateTime;
- $delivery дн + $delivery_auto дн + $delivery_avia дн
- $cost + $cost_auto + $cost_avia
diff --git a/mirzaev/skillparts/system/views/layouts/main.php b/mirzaev/skillparts/system/views/layouts/main.php index 960359e..98c8987 100644 --- a/mirzaev/skillparts/system/views/layouts/main.php +++ b/mirzaev/skillparts/system/views/layouts/main.php @@ -129,9 +129,9 @@ AppAsset::register($this);
Партнёрство
- Покупателям - Поставщикам - Сеть филиалов + Покупателям + Поставщикам + Сеть филиалов
diff --git a/mirzaev/skillparts/system/views/offer/index.php b/mirzaev/skillparts/system/views/offer/index.php index bbced32..b4f9b05 100644 --- a/mirzaev/skillparts/system/views/offer/index.php +++ b/mirzaev/skillparts/system/views/offer/index.php @@ -4,23 +4,35 @@
-

Оферта покупателям

-

1. Общие условия

-

1.1. Поставщик предлагает заключить договор купли-продажи потребителю, компании и предпринимателю (далее - покупатель) на описанных ниже условиях

-

1.2. Договор считается заключенным в момент заказа товара на сайте (skillparts.ru)

-

1.3. Стороны признают юридическую силу скан-копий подписанных документов, переписки, записей в протоколе работы программ, хранящихся на серверах Торговой площадки

-

1.4 Условия оферты могут быть изменены, дополнены, в этом случае поставщик высылает покупателю уведомление на согласование в личный кабинет или на почту

-

2. Термины и определения - Поставщик — компания ООО «СтандартМашинери», либо филиал компании ООО «СтандартМашинери» - Торговая площадка — ООО «СтандартМашинери», предоставляющий программно-аппаратный комплекс организационных, информационных и технических решений, обеспечивающих взаимодействие поставщика и покупателя через электронные каналы связи

-

3. Условия работы и оплата

-

3.1. Поставщик обязуется приобрести в собственность товар, заказанный покупателем на сайте, для последующей продажи покупателю, а потребитель обязуется оплатить заказанный Товар

-

3.2. Цена, количество, наименование заказанного покупателем товара, определяются в момент отправки заказа поставщику

-

3.3. Покупатель может оплатить заказ или пополнить баланс на сайте. Оплата произведённая на сайте, осуществляется на счёт торговой площадки и учитывается поставщиком как оплата заказа покупателем

-

3.4. Условия возврата товара отражены и регулируются в личном кабинете покупателя

-

3.5. Покупатель направляет претензии по исполнению заказа поставщику. В случае неудовлетворения требований, покупатель может информировать торговую площадку на адрес электронной почты info@skillparts.ru

-

4. Предоставление информации

-

4.1. Покупатель даёт своё согласие поставщику и торговой площадке осуществлять следующие действия с персональными данными: сбор, систематизацию, накопление, хранение, обновление, изменение, деперсонализацию, уничтожение

+

Оферта покупателям

+
+

1 Общие условия

+
+

1.1 Поставщик предлагает заключить договор купли-продажи потребителю, компании и предпринимателю (далее - покупатель) на описанных ниже условиях

+

1.2 Договор считается заключенным в момент заказа товара на сайте (skillparts.ru)

+

1.3 Стороны признают юридическую силу скан-копий подписанных документов, переписки, записей в протоколе работы программ, хранящихся на серверах Торговой площадки

+

1.4 Условия оферты могут быть изменены, дополнены, в этом случае поставщик высылает покупателю уведомление на согласование в личный кабинет или на почту

+
+
+

2 Термины и определения

+
+

Поставщик — компания ООО «СтандартМашинери», либо филиал компании ООО «СтандартМашинери»

+

Торговая площадка — ООО «СтандартМашинери», предоставляющий программно-аппаратный комплекс организационных, информационных и технических решений, обеспечивающих взаимодействие поставщика и покупателя через электронные каналы связи

+
+
+

3 Условия работы и оплата

+
+

3.1 Поставщик обязуется приобрести в собственность товар, заказанный покупателем на сайте, для последующей продажи покупателю, а потребитель обязуется оплатить заказанный Товар

+

3.2 Цена, количество, наименование заказанного покупателем товара, определяются в момент отправки заказа поставщику

+

3.3 Покупатель может оплатить заказ или пополнить баланс на сайте. Оплата произведённая на сайте, осуществляется на счёт торговой площадки и учитывается поставщиком как оплата заказа покупателем

+

3.4 Условия возврата товара отражены и регулируются в личном кабинете покупателя

+

3.5 Покупатель направляет претензии по исполнению заказа поставщику. В случае неудовлетворения требований, покупатель может информировать торговую площадку на адрес электронной почты info@skillparts.ru

+
+
+

4 Предоставление информации

+
+

4.1 Покупатель даёт своё согласие поставщику и торговой площадке осуществлять следующие действия с персональными данными: сбор, систематизацию, накопление, хранение, обновление, изменение, деперсонализацию, уничтожение

+

Торговая площадка ООО «СтандартМашинери» ИНН: 2724241607
diff --git a/mirzaev/skillparts/system/views/offer/supplier.php b/mirzaev/skillparts/system/views/offer/supplier.php new file mode 100644 index 0000000..58b805d --- /dev/null +++ b/mirzaev/skillparts/system/views/offer/supplier.php @@ -0,0 +1,61 @@ + + +

+
+
+
+

Оферта поставщикам

+
+

1 Общие условия

+
+

1.1 Торговая площадка предлагает поставщику (предприниматель, компания) заключить договор поставки на описанных ниже условиях

+

1.2 Договор считается заключенным в момент размещения предложения

+

1.3 Стороны признают юридическую силу, содержащихся в системе сайта скан-копий подписанных документов, действий, переписки, записей в протоколе работы программ, хранящихся на серверах

+

1.4 Условия оферты могут быть изменены, дополнены, в этом случае поставщик высылает покупателю уведомление на согласование в личный кабинет или на почту

+
+
+

2 Термины и определения

+
+

Баланс поставщика - состояние взаиморасчётов между сторонами

+

Система сайта - это информационная система, представляющая собой программно-аппаратный комплекс торговой площадки, позволяющий размещать предложения, заказы, оформлять возвраты, обмениваться данными, сообщениями, скан-копиями документов между сторонами +

+
+
+

3 Условия работы и оплата

+
+

3.1 Поставщику необходимо авторизоваться через систему сайта и разместить предложение

+

3.2 Основанием для поставки товара является заказ

+

3.3 Заказ формируется пользователем системы сайта согласно действующему предложению и транслируется поставщику через систему сайта незамедлительно, при необходимости дублируется на электронную почту, указанную поставщиком при регистрации. Поставщик обязан исполнить заказ

+

3.4 Торговая площадка оплачивает заказ по истечении 5-7 рабочих дней с момента приёмки товара

+

3.5 В случае нарушения сроков оплаты товара поставщик вправе начислить торговой площадке пеню в размере 0,1% от суммы неисполненных обязательств, за каждый день просрочки, но не более чем 10%

+
+
+

4 Гарантия, условия возврата

+
+

4.1 Комплектность товара проверяется торговой площадкой при получении на складе торговой площадкой

+

4.2 Поставщик гарантирует приём возврата некачественного, а так же некомплектного товара в течение 60 дней

+

4.3 Выявленные расхождения в поставке, возврат товара отражаются сообщаются поставщику на адрес электронной почты указанную при регистрации

+

4.4 Поставщик даёт согласие и гарантирует законность сбора/обработки/хранения и передачи сведений, в т. ч. персональных данных, которые поставщик указывает в системе сайта

+
+
+

5 Иные условия

+
+

5.1 Все споры решаются путём переговоров, в ином случае в Арбитражном суде города Хабаровск

+

5.2 Настоящий договор-оферта может быть расторгнут: - по инициативе поставщика путём направления соответствующего сообщения в систему сайта либо на электронный адрес указанный ниже в теле текста настоящего договора-оферты; - по инициативе торговой площадки путём направления соответствующего сообщения через систему сайта, либо на адрес электронной почты указанной поставщиком при регистрации

+

5.3 Изменения оферты вступают в силу с момента их публикации

+

5.4 Стороны информированы о ранее действующих версиях оферт

+
+
+

Торговая площадка + ООО «СтандартМашинери» ИНН: 2724241607
+ Юридический адрес: 680014, Хабаровский край, г. Хабаровск, ул. Промышленная 3, офис 105
+ АО «Тинькофф Банк», р/с 40702810610000696279, БИК: 044525974
+ Почта: info@skillparts.ru

+
+
+ + +
+
diff --git a/mirzaev/skillparts/system/views/suppliers/index.php b/mirzaev/skillparts/system/views/suppliers/index.php index 9754cec..3fdd9e9 100644 --- a/mirzaev/skillparts/system/views/suppliers/index.php +++ b/mirzaev/skillparts/system/views/suppliers/index.php @@ -70,7 +70,7 @@ AppAsset::register($this);
Современный инструмент
-

Не требует размещения штата сотрудников

+

Не требует дополнительного штата сотрудников

@@ -88,7 +88,7 @@ AppAsset::register($this); Присоединиться Ответ в течение суток
- Оферта + Оферта
diff --git a/mirzaev/skillparts/system/views/suppliers/request.php b/mirzaev/skillparts/system/views/suppliers/request.php index 3d21938..27e9574 100644 --- a/mirzaev/skillparts/system/views/suppliers/request.php +++ b/mirzaev/skillparts/system/views/suppliers/request.php @@ -67,7 +67,7 @@ AppAsset::register($this);
-

Заявка на подключение

+

Заявка на подключение

'form_suppliers_request', 'action' => false, @@ -84,20 +84,16 @@ AppAsset::register($this); ?> -
- field($model_request, 'phon', ['options' => ['class' => "mb-1 col-3"]])->input('tel', ['aria-invalid' => false, 'aria-required' => true, 'pattern' => '7[0-9]{3}[0-9]{3}[0-9]{2}[0-9]{2}', 'placeholder' => '79091112233', 'title' => '79091112233']); ?> - field($model_request, 'mail', ['options' => ['class' => "mb-1 col-4"]])->input('email', ['placeholder' => 'company@mail.ru']); ?> - field($model_request, 'file', ['options' => ['class' => "mb-1 col-5 d-flex flex-column justify-content-center"]])->fileInput(['multiple' => true, 'class' => 'my-auto px-0']) ?> +
+
+ field($model_request, 'text', ['options' => ['class' => "mb-3"]])->input('text', ['placeholder' => 'Иванов Иван Иванович']) ?> + field($model_request, 'phon', ['options' => ['class' => "mb-3"]])->input('tel', ['aria-invalid' => false, 'aria-required' => true, 'pattern' => '7[0-9]{3}[0-9]{3}[0-9]{2}[0-9]{2}', 'placeholder' => '79091112233', 'title' => '79091112233']); ?> + field($model_request, 'mail', ['options' => ['class' => "mb-3"]])->input('email', ['placeholder' => 'company@mail.ru']); ?> + field($model_request, 'file', ['options' => ['class' => "mb-3 d-flex flex-column justify-content-center"]])->fileInput(['multiple' => true, 'class' => 'my-auto px-0']) ?> +
+
- field($model_request, 'text', ['options' => ['class' => "mb-1"]])->textarea(['rows' => '5', 'maxlength' => '300']) ?> - -

- 0 - / - 300 -

-
'submitRequest', 'id' => 'request-button-send', 'class' => 'col-auto mx-auto btn button_white button_clean']) ?>
@@ -106,26 +102,6 @@ AppAsset::register($this);
- - - endBody() ?>