Небольшие внешние изменения

This commit is contained in:
Arsen Mirzaev Tatyano-Muradovich 2021-05-17 01:49:45 +10:00
parent 7e5f39c8e9
commit 248f5470f9
16 changed files with 994 additions and 165 deletions

View File

@ -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",

766
composer.lock generated
View File

@ -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",

View File

@ -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')
) {
// Нет соглашения с офертой
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();
}
}
}
];

View File

@ -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('/');

View File

@ -0,0 +1,20 @@
<?php
use mirzaev\yii2\arangodb\Migration;
class m210512_121658_create_cdek_collection extends Migration
{
public function up()
{
/**
* @param string Название коллекции
* @param array Тип коллекции (2 - документ, 3 - ребро)
*/
$this->createCollection('cdek', ['type' => 2]);
}
public function down()
{
$this->dropCollection('cdek');
}
}

View File

@ -0,0 +1,43 @@
<?php
declare(strict_types=1);
namespace app\models;
use CdekSDK2\Client;
class Cdek extends Document
{
public static function collectionName(): string
{
return 'cdek';
}
public function attributes(): array
{
return array_merge(
parent::attributes(),
[
'data'
]
);
}
public function attributeLabels(): array
{
return array_merge(
parent::attributeLabels(),
[
'data' => 'Данные ДеловыеЛинии',
]
);
}
/**
* Поиск по идентификатору города
*/
public static function searchByCityId(string $id): ?static
{
return static::findOne(['data["id"]' => $id]);
}
}

View File

@ -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['Валюта'];

View File

@ -52,10 +52,10 @@ class Request extends Document
return array_merge(
parent::attributeLabels(),
[
'text' => 'Обращение',
'text' => 'ФИО',
'phon' => 'Номер',
'mail' => 'Почта',
'file' => 'Юридические данные'
'file' => 'Карточка предприятия'
]
);
}

View File

@ -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"
if ($avia) {
// Рассчет для доставки по воздуху
$weight <= 0.5 and $weight = 0.5;
$type = 'avia';
} else {
// Рассчет для доставки по земле
$type = 'auto';
}
$variant = 'terminal';
}
@ -204,7 +208,6 @@ class Dellin extends Model
});
}
/**
* Рассчет доставки
*

View File

@ -73,8 +73,8 @@ AppAsset::register($this);
<h5 class="text-center"><b>Бесплатное экспедирование</b></h5>
</div>
<div class="col-4">
<img class="px-5 img-fluid" src="/img/icons/assortiment.png" title="Наличие всех поставщиков" />
<h5 class="text-center"><b>Наличие всех поставщиков</b></h5>
<img class="px-5 img-fluid" src="/img/icons/assortiment.png" title="Отлаженная сеть поставщиков" />
<h5 class="text-center"><b>Отлаженная сеть поставщиков</b></h5>
</div>
</div>
<div class="row px-3 pb-3 justify-content-center">

View File

@ -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 = $connection['cost'] . ' ' . $connection['currency'];
$cost_auto = $connection['cost']['auto'] . ' ' . $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;
<input id="cart_list_amnt_{$connection['supply']['catn']}" class="form-control text-center" type="text" value="{$connection['amount']}" onchange="return cart_list_amount_update('{$connection['supply']['catn']}', this)" aria-invalid="false">
</div>
<div class="col-2 my-auto text-right">
$delivery дн
<a type="button" onclick="return false;">$delivery_auto дн</a>
<a type="button" onclick="return false;">$delivery_avia дн</a>
</div>
<div class="col-2 my-auto mr-3 text-right">
$cost
$cost_auto
$cost_avia
</div>
</div>
<div class="dropdown-divider"></div>

View File

@ -129,9 +129,9 @@ AppAsset::register($this);
</div>
<div class="col-md-auto mr-md-5 partnership">
<h5 class="row mb-2"><b>Партнёрство</b></h5>
<small class="row mb-1"><a class="text-dark" href="/buyers">Покупателям</a></small>
<small class="row mb-1"><a class="text-dark" href="/suppliers">Поставщикам</a></small>
<small class="row mb-1"><a class="text-dark" href="/partners">Сеть филиалов</a></small>
<small class="row mb-1"><a href="/buyers">Покупателям</a></small>
<small class="row mb-1"><a href="/suppliers">Поставщикам</a></small>
<small class="row mb-1"><a href="/partners">Сеть филиалов</a></small>
</div>
</div>
</footer>

View File

@ -4,23 +4,35 @@
<article class="p-5 rounded overflow-hidden">
<div class="row mb-5">
<div class="col">
<h4 class="mb-4 text-center"><b>Оферта покупателям</b></h4>
<p>1. Общие условия</p>
<p>1.1. Поставщик предлагает заключить договор купли-продажи потребителю, компании и предпринимателю (далее - покупатель) на описанных ниже условиях</p>
<p>1.2. Договор считается заключенным в момент заказа товара на сайте (skillparts.ru)</p>
<p>1.3. Стороны признают юридическую силу скан-копий подписанных документов, переписки, записей в протоколе работы программ, хранящихся на серверах Торговой площадки</p>
<p>1.4 Условия оферты могут быть изменены, дополнены, в этом случае поставщик высылает покупателю уведомление на согласование в личный кабинет или на почту</p>
<p>2. Термины и определения
Поставщик компания ООО «СтандартМашинери», либо филиал компании ООО «СтандартМашинери»
Торговая площадка ООО «СтандартМашинери», предоставляющий программно-аппаратный комплекс организационных, информационных и технических решений, обеспечивающих взаимодействие поставщика и покупателя через электронные каналы связи</p>
<p>3. Условия работы и оплата</p>
<p>3.1. Поставщик обязуется приобрести в собственность товар, заказанный покупателем на сайте, для последующей продажи покупателю, а потребитель обязуется оплатить заказанный Товар</p>
<p>3.2. Цена, количество, наименование заказанного покупателем товара, определяются в момент отправки заказа поставщику</p>
<p>3.3. Покупатель может оплатить заказ или пополнить баланс на сайте. Оплата произведённая на сайте, осуществляется на счёт торговой площадки и учитывается поставщиком как оплата заказа покупателем</p>
<p>3.4. Условия возврата товара отражены и регулируются в личном кабинете покупателя</p>
<p>3.5. Покупатель направляет претензии по исполнению заказа поставщику. В случае неудовлетворения требований, покупатель может информировать торговую площадку на адрес электронной почты info@skillparts.ru</p>
<p>4. Предоставление информации</p>
<p>4.1. Покупатель даёт своё согласие поставщику и торговой площадке осуществлять следующие действия с персональными данными: сбор, систематизацию, накопление, хранение, обновление, изменение, деперсонализацию, уничтожение</p>
<h3 class="mb-5 text-center"><b>Оферта покупателям</b></h3>
<h5>
<p><b class="mr-1">1</b> Общие условия</p>
</h5>
<p class="ml-3"><b>1.1</b> Поставщик предлагает заключить договор купли-продажи потребителю, компании и предпринимателю (далее - покупатель) на описанных ниже условиях</p>
<p class="ml-3"><b>1.2</b> Договор считается заключенным в момент заказа товара на сайте (skillparts.ru)</p>
<p class="ml-3"><b>1.3</b> Стороны признают юридическую силу скан-копий подписанных документов, переписки, записей в протоколе работы программ, хранящихся на серверах Торговой площадки</p>
<p class="ml-3"><b>1.4</b> Условия оферты могут быть изменены, дополнены, в этом случае поставщик высылает покупателю уведомление на согласование в личный кабинет или на почту</p>
</br>
<h5>
<p><b class="mr-1">2</b> Термины и определения</p>
</h5>
<p class="ml-3"><b>Поставщик</b> компания ООО «СтандартМашинери», либо филиал компании ООО «СтандартМашинери»</p>
<p class="ml-3"><b>Торговая площадка</b> ООО «СтандартМашинери», предоставляющий программно-аппаратный комплекс организационных, информационных и технических решений, обеспечивающих взаимодействие поставщика и покупателя через электронные каналы связи</p>
</br>
<h5>
<p><b class="mr-1">3</b> Условия работы и оплата</p>
</h5>
<p class="ml-3"><b>3.1</b> Поставщик обязуется приобрести в собственность товар, заказанный покупателем на сайте, для последующей продажи покупателю, а потребитель обязуется оплатить заказанный Товар</p>
<p class="ml-3"><b>3.2</b> Цена, количество, наименование заказанного покупателем товара, определяются в момент отправки заказа поставщику</p>
<p class="ml-3"><b>3.3</b> Покупатель может оплатить заказ или пополнить баланс на сайте. Оплата произведённая на сайте, осуществляется на счёт торговой площадки и учитывается поставщиком как оплата заказа покупателем</p>
<p class="ml-3"><b>3.4</b> Условия возврата товара отражены и регулируются в личном кабинете покупателя</p>
<p class="ml-3"><b>3.5</b> Покупатель направляет претензии по исполнению заказа поставщику. В случае неудовлетворения требований, покупатель может информировать торговую площадку на адрес электронной почты info@skillparts.ru</p>
</br>
<h5>
<p><b class="mr-1">4</b> Предоставление информации</p>
</h5>
<p class="ml-3"><b>4.1</b> Покупатель даёт своё согласие поставщику и торговой площадке осуществлять следующие действия с персональными данными: сбор, систематизацию, накопление, хранение, обновление, изменение, деперсонализацию, уничтожение</p>
</br>
</br>
<p> Торговая площадка
ООО «СтандартМашинери» ИНН: 2724241607</br>

View File

@ -0,0 +1,61 @@
<link href="/css/pages/offer.css" rel="stylesheet">
<div id="page_offer" class="container mb-auto py-3">
<article class="p-5 rounded overflow-hidden">
<div class="row mb-5">
<div class="col">
<h3 class="mb-5 text-center"><b>Оферта поставщикам</b></h3>
<h5>
<p><b class="mr-1">1</b> Общие условия</p>
</h5>
<p class="ml-3"><b>1.1</b> Торговая площадка предлагает поставщику (предприниматель, компания) заключить договор поставки на описанных ниже условиях</p>
<p class="ml-3"><b>1.2</b> Договор считается заключенным в момент размещения предложения</p>
<p class="ml-3"><b>1.3</b> Стороны признают юридическую силу, содержащихся в системе сайта скан-копий подписанных документов, действий, переписки, записей в протоколе работы программ, хранящихся на серверах</p>
<p class="ml-3"><b>1.4</b> Условия оферты могут быть изменены, дополнены, в этом случае поставщик высылает покупателю уведомление на согласование в личный кабинет или на почту</p>
</br>
<h5>
<p><b class="mr-1">2</b> Термины и определения</p>
</h5>
<p class="ml-3"><b>Баланс поставщика</b> - состояние взаиморасчётов между сторонами</p>
<p class="ml-3"><b>Система сайта</b> - это информационная система, представляющая собой программно-аппаратный комплекс торговой площадки, позволяющий размещать предложения, заказы, оформлять возвраты, обмениваться данными, сообщениями, скан-копиями документов между сторонами
</p>
</br>
<h5>
<p><b class="mr-1">3</b> Условия работы и оплата</p>
</h5>
<p class="ml-3"><b>3.1</b> Поставщику необходимо авторизоваться через систему сайта и разместить предложение</p>
<p class="ml-3"><b>3.2</b> Основанием для поставки товара является заказ</p>
<p class="ml-3"><b>3.3</b> Заказ формируется пользователем системы сайта согласно действующему предложению и транслируется поставщику через систему сайта незамедлительно, при необходимости дублируется на электронную почту, указанную поставщиком при регистрации. Поставщик обязан исполнить заказ</p>
<p class="ml-3"><b>3.4</b> Торговая площадка оплачивает заказ по истечении 5-7 рабочих дней с момента приёмки товара</p>
<p class="ml-3"><b>3.5</b> В случае нарушения сроков оплаты товара поставщик вправе начислить торговой площадке пеню в размере 0,1% от суммы неисполненных обязательств, за каждый день просрочки, но не более чем 10%</p>
</br>
<h5>
<p><b class="mr-1">4</b> Гарантия, условия возврата</p>
</h5>
<p class="ml-3"><b>4.1</b> Комплектность товара проверяется торговой площадкой при получении на складе торговой площадкой</p>
<p class="ml-3"><b>4.2</b> Поставщик гарантирует приём возврата некачественного, <u>а так же</u> некомплектного товара в течение 60 дней</p>
<p class="ml-3"><b>4.3</b> Выявленные расхождения в поставке, возврат товара отражаются сообщаются поставщику на адрес электронной почты указанную при регистрации</p>
<p class="ml-3"><b>4.4</b> Поставщик даёт согласие и гарантирует законность сбора/обработки/хранения и передачи сведений, в т. ч. персональных данных, которые поставщик указывает в системе сайта</p>
</br>
<h5>
<p><b class="mr-1">5</b> Иные условия</p>
</h5>
<p class="ml-3"><b>5.1</b> Все споры решаются путём переговоров, в ином случае в Арбитражном суде города Хабаровск</p>
<p class="ml-3"><b>5.2</b> Настоящий договор-оферта может быть расторгнут: - по инициативе поставщика путём направления соответствующего сообщения в систему сайта либо на <u>электронный адрес</u> указанный ниже в теле текста настоящего договора-оферты; - по инициативе торговой площадки путём направления соответствующего сообщения через систему сайта, либо на адрес электронной почты указанной поставщиком при регистрации</p>
<p class="ml-3"><b>5.3</b> Изменения оферты вступают в силу с момента их публикации</p>
<p class="ml-3"><b>5.4</b> Стороны информированы о ранее действующих версиях оферт</p>
</br>
</br>
<p> Торговая площадка
ООО «СтандартМашинери» ИНН: 2724241607</br>
Юридический адрес: 680014, Хабаровский край, г. Хабаровск, ул. Промышленная 3, офис 105</br>
АО «Тинькофф Банк», р/с 40702810610000696279, БИК: 044525974</br>
Почта: info@skillparts.ru</p>
</div>
</div>
<div class="row mb-0 justify-content-center">
<a class="col-auto text-center text-white btn button_blue button_clean" href="/offer/accept-suppliers">Принять</a>
</div>
</article>
</div>

View File

@ -70,7 +70,7 @@ AppAsset::register($this);
<div class="col-4">
<img class="px-5 img-fluid" src="/img/icons/brain.png" title="Современный инструмент"/>
<h5 class="text-center"><b>Современный инструмент</b></h5>
<p class="text-center"><small>Не требует размещения штата сотрудников</small></p>
<p class="text-center"><small>Не требует дополнительного штата сотрудников</small></p>
</div>
<div class="col-4">
<img class="px-5 img-fluid" src="/img/icons/map.png" title="Расширение географии"/>
@ -88,7 +88,7 @@ AppAsset::register($this);
<a class="mb-1 text-center text-whitw btn button_blue button_clean" href="/suppliers/request">Присоединиться</a>
<small>Ответ в течение суток</small>
</div>
<a class="text-center text-white btn button_blue button_offer_supplier button_clean" role="button" onclick="return false;">Оферта</a>
<a class="text-center text-white btn button_blue button_offer_supplier button_clean" href="/offer/suppliers">Оферта</a>
</div>
</article>
</main>

View File

@ -67,7 +67,7 @@ AppAsset::register($this);
<main id="page_suppliers" class="container pb-5 flex-grow-1 d-flex justify-content-center">
<article class="col my-auto p-3 px-5 rounded overflow-hidden">
<h3 class="py-3 mt-2 mb-3 text-center"><b>Заявка на подключение</b></h3>
<h3 class="py-3 mt-2 mb-4 text-center"><b>Заявка на подключение</b></h3>
<?php $form = ActiveForm::begin([
'id' => 'form_suppliers_request',
'action' => false,
@ -84,19 +84,15 @@ AppAsset::register($this);
?>
<div class="row mb-3">
<?= $form->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']); ?>
<?= $form->field($model_request, 'mail', ['options' => ['class' => "mb-1 col-4"]])->input('email', ['placeholder' => 'company@mail.ru']); ?>
<?= $form->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']) ?>
<div class="row mb-4">
<div class="col-4 mx-auto">
<?= $form->field($model_request, 'text', ['options' => ['class' => "mb-3"]])->input('text', ['placeholder' => 'Иванов Иван Иванович']) ?>
<?= $form->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']); ?>
<?= $form->field($model_request, 'mail', ['options' => ['class' => "mb-3"]])->input('email', ['placeholder' => 'company@mail.ru']); ?>
<?= $form->field($model_request, 'file', ['options' => ['class' => "mb-3 d-flex flex-column justify-content-center"]])->fileInput(['multiple' => true, 'class' => 'my-auto px-0']) ?>
</div>
<?= $form->field($model_request, 'text', ['options' => ['class' => "mb-1"]])->textarea(['rows' => '5', 'maxlength' => '300']) ?>
<p class="mb-3 text-right">
<span id="request-text-current">0</span>
<span> / </span>
<span id="request-text-maximum">300</span>
</p>
</div>
<div class="row">
<?= Html::submitButton('Отправить', ['name' => 'submitRequest', 'id' => 'request-button-send', 'class' => 'col-auto mx-auto btn button_white button_clean']) ?>
@ -106,26 +102,6 @@ AppAsset::register($this);
</article>
</main>
<script src="/js/textarea.js" defer></script>
<script defer>
document.addEventListener('DOMContentLoaded', function() {
initTextarea(
'#request-text',
'#request-text-current',
'#request-text-maximum',
function() {
let send = document.getElementById('request-button-send');
send.disabled = true;
},
function() {
let send = document.getElementById('suppliers-button-send');
send.disabled = false;
});
}, false);
</script>
<?php $this->endBody() ?>
</body>