1
0
Fork 0
mirror of synced 2025-04-12 05:20:55 +00:00

Compare commits

...

90 commits

Author SHA1 Message Date
9927490844
Merge pull request #55 from Chupocabra/add-dialogs-utm
Utm information in dialog
2025-04-11 16:58:50 +03:00
Alex Komarichev
22e4bf9cac Utm information in dialog 2025-04-11 16:19:28 +03:00
7a87f2669b
Merge pull request #54 from Chupocabra/refactor-members_req
Use CommonFields in MembersRequest
2025-03-26 11:42:56 +03:00
Alex Komarichev
f65dcac9f5 ignore phpstan setID type error 2025-03-26 11:33:11 +03:00
Alex Komarichev
9a23562cbd Use CommonFields in MembersRequest 2025-03-26 11:14:48 +03:00
141c2c9bc3
update actions version in ci 2025-03-26 11:09:50 +03:00
46e0f84265
Merge pull request #53 from kifril-ltd/role-hidden
Add new bot role `hidden`
2024-11-15 14:40:13 +03:00
Kirill Sukhorukov
dc0ead717e Add new bot role hidden 2024-11-14 15:46:02 +03:00
2d5a8ceaed
Added is_system to User 2024-11-05 12:42:01 +03:00
Alex Komarichev
2b798fa877 Added is_system to User 2024-11-05 12:28:27 +03:00
95520bb1e7
Add include_mass_communication param to requests 2024-09-16 15:29:00 +03:00
Opheugene
bd0c267f09 fix tests 2024-09-16 13:53:48 +02:00
Opheugene
f0ba8e65f3 Added include_mass_communication param for requests 2024-09-16 13:44:41 +02:00
fb0e9404a5
Add audio transcription field 2024-09-13 15:22:17 +03:00
Opheugene
b1fd78d2b5 fix phpstan 2024-09-13 13:06:04 +02:00
Opheugene
5da993d598 Add Item transcription 2024-09-13 13:00:57 +02:00
4b6e9e0dff
Add chat reply_deadline field 2024-08-14 17:10:27 +03:00
2640e661cf
Add responsible external_id field 2024-08-14 17:10:14 +03:00
Alex Komarichev
d34270121c Add responsible external_id field 2024-08-14 17:02:07 +03:00
Alex Komarichev
93777973b5 Add reply_deadline to chats.json 2024-08-14 10:00:37 +03:00
Alex Komarichev
bcf3d0974b Add chat reply_deadline field 2024-08-13 19:52:44 +03:00
6e4dd6af44
Add since_id field to ChatsRequest 2024-07-16 13:02:55 +03:00
Vlasov
370fd04824 Added since_id field to ChatsRequest 2024-07-16 12:45:06 +03:00
26aa42ce67
Add template attachments 2024-07-02 16:38:51 +03:00
Alex Komarichev
290d5f87e5 phpstan 2024-07-02 15:35:20 +03:00
Alex Komarichev
54486d4008 Add template attachments 2024-07-02 15:30:36 +03:00
1fc8ccda10
Add templates interaction 2024-06-25 12:05:14 +03:00
Alex Komarichev
33e816ce97 Add templateSend phpdoc 2024-06-25 11:20:01 +03:00
Alex Komarichev
4b5041b05b phpstan 2024-06-24 21:07:47 +03:00
Alex Komarichev
8a20b86b17 Add templates interaction 2024-06-24 20:21:41 +03:00
a05cf2cc09
Add note to SendMessageRequest 2024-06-21 14:02:54 +03:00
Alex Komarichev
be857dd1ac Add note to SendMessageRequest 2024-06-20 19:14:50 +03:00
90b90c0f8d
Add working with customer utm 2024-05-22 16:54:37 +03:00
Alex Komarichev
5aaed7ab7d Add working with customer utm 2024-05-21 20:25:44 +03:00
Chupocabra
6682b9b02c
Add working with dialog tags 2024-02-29 12:01:40 +03:00
41cb22a720
Add suggestions to ChannelSettings 2024-02-06 15:01:55 +03:00
Alex Komarichev
8892e5fe5a Phpstan fixes 2024-02-06 12:05:24 +03:00
Alex Komarichev
e14afbf773 Add suggestions to ChannelSettings 2024-02-05 19:21:42 +03:00
93924bf3b5
add limit field to MessagesRequest 2023-10-26 10:16:31 +03:00
3d7a10f7c6 update phpstan baseline 2023-10-26 10:13:42 +03:00
7dd570ffc3 add limit field to MessagesRequest 2023-10-26 09:50:02 +03:00
Ilyas Salikhov
d92b89ad37
Merge pull request #39 from retailcrm/dialog-list-since-id-filter
Filter sinceId in dialog list method
2023-08-10 19:04:04 +03:00
Ilyas Salikhov
8b9afc52af Filter sinceId in dialog list method 2023-08-10 18:57:40 +03:00
Ilyas Salikhov
d9192f963c
Merge pull request #38 from retailcrm/php-env-and-version
Php ENV and actual version
2023-08-10 18:56:49 +03:00
Ilyas Salikhov
b478dd6f25 Ability to run tests in docker 2023-08-10 18:40:29 +03:00
Ilyas Salikhov
29d6732404 Actualized PHP version in README and composer.json according to the versions in CI 2023-08-10 18:31:31 +03:00
59e9c8d3be
add quote field to the message type 2023-06-07 16:00:13 +03:00
Ruslan Efanov
e1e484e046 add field quote for message 2023-06-05 14:31:09 +03:00
516e7855a0
add note field support 2023-05-24 16:04:21 +03:00
a08a03c1c8 phpstan fix 2023-05-24 15:59:04 +03:00
016f152fef add note field support 2023-05-24 15:56:55 +03:00
max-baranikov
c024350882
Fixed url deserialization in getFileById() method (#35)
* Added tests to reproduce issue
* Fixed url deserialization in getFileById() method
2023-04-27 14:27:18 +03:00
6ec1f00df9
add limit to requests 2023-02-07 16:14:01 +03:00
Ruslan Efanov
58aa909473 add using limit in requests 2023-02-07 12:50:29 +03:00
1650ff34aa
Parse dates with and without nanoseconds 2023-01-20 13:09:15 +03:00
aac414ecd5 parse dates without nanoseconds 2023-01-20 13:06:36 +03:00
181a9703a5
fix for /chats request 2022-12-22 15:41:11 +03:00
910bf5e118
update dependencies 2022-12-22 15:40:59 +03:00
7e1ed1a241 additional fixes 2022-12-22 15:21:14 +03:00
45b1012632 update test matrix 2022-12-22 14:57:29 +03:00
2c5fe64779 update dependencies 2022-12-22 14:55:13 +03:00
0631c80ebb fix for typos 2022-12-22 14:03:10 +03:00
c931b2622c fix for /chats request 2022-12-22 13:46:12 +03:00
7a92435f9f
Add test for GET request of chats by customer_id 2022-12-07 17:03:52 +03:00
Ruslan Efanov
4b898fdc95 Add test for GET request of chats by customer_id 2022-11-16 16:19:27 +03:00
62ff2ec979
update ChatsRequest 2022-11-16 10:01:25 +03:00
6476caf9b9 fix for linter notifications 2022-11-16 09:57:29 +03:00
92a0eb0c0b update ChatsRequest 2022-11-16 09:54:56 +03:00
6fbddeb2a9
Bump guzzlehttp/guzzle from 6.5.7 to 6.5.8 2022-06-22 09:52:14 +03:00
dependabot[bot]
00a8764edb
Bump guzzlehttp/guzzle from 6.5.7 to 6.5.8
Bumps [guzzlehttp/guzzle](https://github.com/guzzle/guzzle) from 6.5.7 to 6.5.8.
- [Release notes](https://github.com/guzzle/guzzle/releases)
- [Changelog](https://github.com/guzzle/guzzle/blob/6.5.8/CHANGELOG.md)
- [Commits](https://github.com/guzzle/guzzle/compare/6.5.7...6.5.8)

---
updated-dependencies:
- dependency-name: guzzlehttp/guzzle
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-21 20:51:06 +00:00
c9a992bf6b
Bump guzzlehttp/guzzle from 6.5.6 to 6.5.7 2022-06-15 09:25:32 +03:00
dependabot[bot]
fff4e6d3fa
Bump guzzlehttp/guzzle from 6.5.6 to 6.5.7
Bumps [guzzlehttp/guzzle](https://github.com/guzzle/guzzle) from 6.5.6 to 6.5.7.
- [Release notes](https://github.com/guzzle/guzzle/releases)
- [Changelog](https://github.com/guzzle/guzzle/blob/6.5.7/CHANGELOG.md)
- [Commits](https://github.com/guzzle/guzzle/compare/6.5.6...6.5.7)

---
updated-dependencies:
- dependency-name: guzzlehttp/guzzle
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-10 06:40:35 +00:00
6f277f6ccd
Update guzzlehttp/guzzle to 6.5.6 2022-05-27 11:21:27 +03:00
dependabot[bot]
f56720289b
Bump guzzlehttp/guzzle from 6.5.5 to 6.5.6
Bumps [guzzlehttp/guzzle](https://github.com/guzzle/guzzle) from 6.5.5 to 6.5.6.
- [Release notes](https://github.com/guzzle/guzzle/releases)
- [Changelog](https://github.com/guzzle/guzzle/blob/6.5.6/CHANGELOG.md)
- [Commits](https://github.com/guzzle/guzzle/compare/6.5.5...6.5.6)

---
updated-dependencies:
- dependency-name: guzzlehttp/guzzle
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-25 18:14:00 +00:00
dependabot[bot]
04cd471765
Bump guzzlehttp/psr7 from 1.8.3 to 1.8.5 (#25)
Bumps [guzzlehttp/psr7](https://github.com/guzzle/psr7) from 1.8.3 to 1.8.5.
- [Release notes](https://github.com/guzzle/psr7/releases)
- [Changelog](https://github.com/guzzle/psr7/blob/1.8.5/CHANGELOG.md)
- [Commits](https://github.com/guzzle/psr7/compare/1.8.3...1.8.5)

---
updated-dependencies:
- dependency-name: guzzlehttp/psr7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-31 15:03:29 +03:00
tishmaria90
cb94fd8e02
Keep false values while deserializing (#24)
Co-authored-by: Maria Tyschitskaya <tyschitskaya@retailcrm.ru>
2021-12-23 14:33:44 +03:00
tishmaria90
98563e2e60
Update php version (#20) 2021-12-13 10:48:18 +03:00
max-baranikov
c6a44ea2b3
Added suggestions to MessageSendRequest (#16) 2021-10-15 13:39:36 +03:00
Opheugene
bb78a4ffb3
Add dialogUnassign method for the client (#15) 2021-09-02 11:17:59 +03:00
Alex Lushpai
84ecba8714
Update product name, cleanup annotations (#14) 2020-12-15 13:34:43 +03:00
Akolzin Dmitry
b7f214a212
Move CI to GitHub Actions (#13) 2020-11-26 15:57:53 +03:00
Alex Lushpai
c758c27e98
Update README.md 2020-11-12 13:58:50 +03:00
Alex Lushpai
ed2efc4d1d
Merge pull request #12 from open-source-contributions/test_enhancement
Test enhancement
2019-10-23 23:41:13 +03:00
peter279k
316836aca7 Test enhancement 2019-10-24 02:35:21 +08:00
Alex Lushpai
0534f31c34
Merge pull request #11 from Neur0toxine/master
[fix] update phpdoc for getters
2019-10-08 17:06:37 +03:00
91453308fe [fix] update phpdoc for getters 2019-10-08 17:02:39 +03:00
Alex Lushpai
9e18bba010
Merge pull request #10 from Neur0toxine/master
[fix] make all getters nullable
2019-10-08 12:33:34 +03:00
49045777d3 [fix] make all getters nullable 2019-10-08 09:12:36 +03:00
Alex Lushpai
6594182fb0
Merge pull request #9 from Neur0toxine/master
[fix] nullable types to avoid exceptions when properties is not set
2019-10-07 10:14:01 +03:00
e111b8d882 [fix] nullable types to avoid exceptions when properties is not set 2019-10-07 09:09:49 +03:00
110 changed files with 5845 additions and 4981 deletions

36
.github/workflows/ci.yml vendored Normal file
View file

@ -0,0 +1,36 @@
name: ci
on:
push:
branches:
- '**'
tags-ignore:
- '*.*'
pull_request:
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
php-version: ['7.3', '7.4', '8.0', '8.1']
steps:
- uses: actions/checkout@v4
- name: Setup PHP ${{ matrix.php-version }}
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
tools: composer:v1
- name: Composer cache
uses: actions/cache@v4
with:
path: ${{ env.HOME }}/.composer/cache
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
- name: Install dependencies
run: composer install -o
- name: Phpstan analysis
run: make stan
- name: Run tests
run: make test
- name: Coverage
run: bash <(curl -s https://codecov.io/bash)

3
.gitignore vendored
View file

@ -194,4 +194,7 @@ build/*
# Test report & coverage # Test report & coverage
test-report.xml test-report.xml
.phpunit.result.cache
clover.xml clover.xml
composer.lock
docker-compose.yml

View file

@ -1,19 +0,0 @@
language: php
cache:
directories:
- $HOME/.composer/cache
php:
- '7.1'
- '7.2'
- '7.3'
before_script:
- flags="-o"
- composer install $flags
script: make travis
after_success:
- bash <(curl -s https://codecov.io/bash)

View file

@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2018-2019 RetailDriver LLC Copyright (c) 2018-2020 RetailDriver LLC
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View file

@ -1,18 +1,16 @@
ROOT_DIR=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) ifneq ("$(wildcard docker-compose.yml)","")
SRC_DIR=$(ROOT_DIR)/src PHP=docker-compose run --rm --no-deps php php
BIN_DIR=$(ROOT_DIR)/vendor/bin else
PHP=php
endif
test: test:
@echo "==> Running tests" @echo "==> Running tests"
@cd $(ROOT_DIR)
@cp .env.dist .env @cp .env.dist .env
@php -d memory_limit=-1 $(BIN_DIR)/phpunit -c phpunit.xml.dist @$(PHP) -d memory_limit=-1 vendor/bin/phpunit -c phpunit.xml.dist
@echo "==> Testing complete" @echo "==> Testing complete"
stan: stan:
@echo "==> Running analysis" @echo "==> Running analysis"
@php $(BIN_DIR)/phpstan analyse @$(PHP) vendor/bin/phpstan analyse
@echo "==> Analysis complete" @echo "==> Analysis complete"
travis: test stan
@echo "==> Completed"

View file

@ -1,16 +1,14 @@
[![Build Status](https://img.shields.io/travis/retailcrm/mg-bot-api-client-php/master.svg?style=flat-square)](https://travis-ci.org/retailcrm/mg-bot-api-client-php) [![Build Status](https://github.com/retailcrm/mg-bot-api-client-php/workflows/ci/badge.svg)](https://github.com/retailcrm/mg-bot-api-client-php/actions)
[![Covarage](https://img.shields.io/codecov/c/gh/retailcrm/mg-bot-api-client-php/master.svg?style=flat-square)](https://codecov.io/gh/retailcrm/mg-bot-api-client-php) [![Coverage](https://img.shields.io/codecov/c/gh/retailcrm/mg-bot-api-client-php/master.svg?logo=codecov&logoColor=white)](https://codecov.io/gh/retailcrm/mg-bot-api-client-php)
[![Latest stable](https://img.shields.io/packagist/v/retailcrm/mg-bot-api-client-php.svg?style=flat-square)](https://packagist.org/packages/retailcrm/mg-bot-api-client-php) [![Latest stable](https://img.shields.io/packagist/v/retailcrm/mg-bot-api-client-php.svg)](https://packagist.org/packages/retailcrm/mg-bot-api-client-php)
[![PHP from Packagist](https://img.shields.io/packagist/php-v/retailcrm/mg-bot-api-client-php.svg?style=flat-square)](https://packagist.org/packages/retailcrm/mg-bot-api-client-php) [![PHP from Packagist](https://img.shields.io/packagist/php-v/retailcrm/mg-bot-api-client-php.svg?logo=php&logoColor=white)](https://packagist.org/packages/retailcrm/mg-bot-api-client-php)
# Message Gateway Bot API PHP client # Message Gateway Bot API PHP client
This is php library for retailCRM MG Bot API.
## Requirements ## Requirements
* PHP 7.1 and above * PHP 7.3 and above
* PHP's cURL support * PHP's cURL support
* PHP's JSON support * PHP's JSON support
@ -53,8 +51,3 @@ try {
echo $response->getPreviousResponsible(); echo $response->getPreviousResponsible();
``` ```
### Documentation
* [English](https://139810.selcdn.ru/download/doc/mg-bot-api/bot.v1.en.html)
* [Russian](https://help.retailcrm.ru/Developers/MgBot)

View file

@ -1,43 +1,50 @@
{ {
"name": "retailcrm/mg-bot-api-client-php", "name": "retailcrm/mg-bot-api-client-php",
"description": "PHP client for retailCRM MG Bot API", "description": "PHP client for MG Bot API",
"type": "library", "type": "library",
"keywords": ["API", "retailCRM", "REST", "bot"], "keywords": ["API", "RetailCRM", "REST", "bot"],
"homepage": "http://www.retailcrm.ru/", "homepage": "http://www.retailcrm.ru/",
"license": "MIT", "license": "MIT",
"authors": [ "authors": [
{ {
"name": "retailCRM", "name": "RetailCRM",
"email": "support@retailcrm.ru" "email": "support@retailcrm.pro"
} }
], ],
"require": { "require": {
"php": ">=7.1", "php": ">=7.3",
"ext-curl": "*", "ext-curl": "*",
"ext-json": "*", "ext-json": "*",
"jms/serializer": "1.14.*", "jms/serializer": "3.*",
"symfony/validator": "4.3.*", "symfony/validator": "5.4.*|^6",
"doctrine/annotations": "1.6.*", "doctrine/annotations": "^1",
"doctrine/cache": "1.6.*", "guzzlehttp/guzzle": "7.*",
"guzzlehttp/guzzle": "6.*" "symfony/intl": "5.4.*|^6",
"symfony/cache": "5.4.*|^6"
}, },
"require-dev": { "require-dev": {
"phpmd/phpmd": "2.*", "phpmd/phpmd": "2.*",
"squizlabs/php_codesniffer": "3.4.*", "squizlabs/php_codesniffer": "3.4.*",
"symfony/dotenv": "4.3.*", "symfony/dotenv": "5.4.*",
"phpunit/phpunit": "7.*", "phpunit/phpunit": "^9",
"phpstan/phpstan": "0.11.*" "phpstan/phpstan": "0.12.*"
}, },
"support": { "support": {
"email": "support@retailcrm.ru" "email": "support@retailcrm.pro"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"RetailCrm\\Mg\\": ["src/", "tests/"], "RetailCrm\\Mg\\": "src/",
"RetailCrm\\Common\\": ["src/", "tests/"] "RetailCrm\\Common\\": "src/"
}, },
"files": ["extra/autoloader.php"] "files": ["extra/autoloader.php"]
}, },
"autoload-dev": {
"psr-4": {
"RetailCrm\\Mg\\": "tests/",
"RetailCrm\\Common\\": "tests/"
}
},
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "1.x-dev" "dev-master": "1.x-dev"

4023
composer.lock generated

File diff suppressed because it is too large Load diff

1932
phpstan-baseline.neon Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,7 @@
includes:
- phpstan-baseline.neon
parameters: parameters:
autoload_files:
- %currentWorkingDirectory%/vendor/autoload.php
level: 7 level: 7
paths: paths:
- %currentWorkingDirectory%/src - %currentWorkingDirectory%/src

View file

@ -1,8 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- https://phpunit.de/manual/current/en/appendixes.configuration.html --> <!-- https://phpunit.de/manual/current/en/appendixes.configuration.html -->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/6.5/phpunit.xsd"
backupGlobals="false" backupGlobals="false"
colors="false" colors="false"
bootstrap="tests/bootstrap.php" bootstrap="tests/bootstrap.php"
@ -15,22 +13,21 @@
stopOnFailure="false" stopOnFailure="false"
stopOnIncomplete="false" stopOnIncomplete="false"
stopOnSkipped="false" stopOnSkipped="false"
stopOnRisky="false" stopOnRisky="false">
> <coverage>
<testsuites> <include>
<testsuite name="Project Test Suite"> <directory>src</directory>
<directory>tests</directory> </include>
</testsuite> <report>
</testsuites> <clover outputFile="clover.xml"/>
</report>
<filter> </coverage>
<whitelist> <testsuites>
<directory>src</directory> <testsuite name="Project Test Suite">
</whitelist> <directory>tests</directory>
</filter> </testsuite>
</testsuites>
<logging> <logging>
<log type="coverage-clover" target="clover.xml"/> <junit outputFile="/tmp/logfile.xml"/>
<log type="junit" target="/tmp/logfile.xml"/> </logging>
</logging>
</phpunit> </phpunit>

View file

@ -6,17 +6,13 @@
* Client * Client
* *
* @package RetailCrm\Mg\Bot * @package RetailCrm\Mg\Bot
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot; namespace RetailCrm\Mg\Bot;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use RetailCrm\Common\Url;
use RetailCrm\Common\Serializer; use RetailCrm\Common\Serializer;
use RetailCrm\Mg\Bot\Model\ModelAdapter; use RetailCrm\Common\Url;
use RetailCrm\Mg\Bot\Model\Entity\Bot; use RetailCrm\Mg\Bot\Model\Entity\Bot;
use RetailCrm\Mg\Bot\Model\Entity\Channel\Channel; use RetailCrm\Mg\Bot\Model\Entity\Channel\Channel;
use RetailCrm\Mg\Bot\Model\Entity\Chat\Chat; use RetailCrm\Mg\Bot\Model\Entity\Chat\Chat;
@ -25,21 +21,22 @@ use RetailCrm\Mg\Bot\Model\Entity\Command;
use RetailCrm\Mg\Bot\Model\Entity\Customer; use RetailCrm\Mg\Bot\Model\Entity\Customer;
use RetailCrm\Mg\Bot\Model\Entity\Dialog; use RetailCrm\Mg\Bot\Model\Entity\Dialog;
use RetailCrm\Mg\Bot\Model\Entity\Message\Message; use RetailCrm\Mg\Bot\Model\Entity\Message\Message;
use RetailCrm\Mg\Bot\Model\Entity\Template\Template;
use RetailCrm\Mg\Bot\Model\Entity\User; use RetailCrm\Mg\Bot\Model\Entity\User;
use RetailCrm\Mg\Bot\Model\ModelAdapter;
use RetailCrm\Mg\Bot\Model\ModelInterface;
use RetailCrm\Mg\Bot\Model\Request\UploadFileByUrlRequest; use RetailCrm\Mg\Bot\Model\Request\UploadFileByUrlRequest;
use RetailCrm\Mg\Bot\Model\Response\AssignResponse; use RetailCrm\Mg\Bot\Model\Response\AssignResponse;
use RetailCrm\Mg\Bot\Model\Response\ErrorOnlyResponse; use RetailCrm\Mg\Bot\Model\Response\ErrorOnlyResponse;
use RetailCrm\Mg\Bot\Model\Response\FullFileResponse; use RetailCrm\Mg\Bot\Model\Response\FullFileResponse;
use RetailCrm\Mg\Bot\Model\Response\MessageSendResponse; use RetailCrm\Mg\Bot\Model\Response\MessageSendResponse;
use RetailCrm\Mg\Bot\Model\Response\UnassignResponse;
use RetailCrm\Mg\Bot\Model\Response\UploadFileResponse; use RetailCrm\Mg\Bot\Model\Response\UploadFileResponse;
/** /**
* Class Client * Class Client
* *
* @package RetailCrm\Mg\Bot * @package RetailCrm\Mg\Bot
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class Client class Client
{ {
@ -276,6 +273,27 @@ class Client
return $adapter->getResponseModel($response); return $adapter->getResponseModel($response);
} }
/**
* Unassigning a dialog from a manager or a bot
*
* @param string $request Request parameters
*
* @return \RetailCrm\Mg\Bot\Model\ModelInterface
* @throws \Exception
*/
public function dialogUnassign(string $request)
{
$response = $this->client->makeRequest(
sprintf("/dialogs/%d/unassign", $request),
HttpClient::METHOD_PATCH,
null
);
$adapter = new ModelAdapter(UnassignResponse::class);
return $adapter->getResponseModel($response);
}
/** /**
* Close exact dialog * Close exact dialog
* *
@ -297,6 +315,48 @@ class Client
return $adapter->getResponseModel($response); return $adapter->getResponseModel($response);
} }
/**
* Add tag to dialog
*
* @param Model\Request\DialogTagRequest $request Request parameters
*
* @return \RetailCrm\Mg\Bot\Model\ModelInterface
* @throws \Exception
*/
public function dialogAddTag(Model\Request\DialogTagRequest $request)
{
$response = $this->client->makeRequest(
sprintf("/dialogs/%d/tags/add", $request->getDialogId()),
HttpClient::METHOD_PATCH,
$request
);
$adapter = new ModelAdapter(ErrorOnlyResponse::class);
return $adapter->getResponseModel($response);
}
/**
* Delete tag from dialog
*
* @param Model\Request\DialogTagRequest $request Request parameters
*
* @return \RetailCrm\Mg\Bot\Model\ModelInterface
* @throws \Exception
*/
public function dialogDeleteTag(Model\Request\DialogTagRequest $request)
{
$response = $this->client->makeRequest(
sprintf("/dialogs/%d/tags/delete", $request->getDialogId()),
HttpClient::METHOD_PATCH,
$request
);
$adapter = new ModelAdapter(ErrorOnlyResponse::class);
return $adapter->getResponseModel($response);
}
/** /**
* Returns filtered members list * Returns filtered members list
* *
@ -402,6 +462,47 @@ class Client
return $adapter->getResponseModel($response); return $adapter->getResponseModel($response);
} }
/**
* Returns templates list
*
* @return Template[]
* @throws \Exception
*/
public function templates(): array
{
$response = $this->client->makeRequest(
'/templates',
HttpClient::METHOD_GET
);
$adapter = new ModelAdapter(Template::class);
return $adapter->getResponseList($response);
}
/**
* Send a template message
*
* @param string $templateId
* @param Model\Request\TemplateSendRequest $request Request parameters
*
* @return \RetailCrm\Mg\Bot\Model\ModelInterface
* @throws \Exception
*/
public function templateSend(string $templateId, Model\Request\TemplateSendRequest $request): ModelInterface
{
$response = $this->client->makeRequest(
sprintf('/templates/%d/send', $templateId),
HttpClient::METHOD_POST,
$request
);
$adapter = new ModelAdapter(MessageSendResponse::class);
return $adapter->getResponseModel($response);
}
/** /**
* Returns filtered users list * Returns filtered users list
* *

View file

@ -6,9 +6,6 @@
* HttpClient * HttpClient
* *
* @package RetailCrm\Mg\Bot * @package RetailCrm\Mg\Bot
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot; namespace RetailCrm\Mg\Bot;
@ -16,7 +13,12 @@ namespace RetailCrm\Mg\Bot;
use BadMethodCallException; use BadMethodCallException;
use ErrorException; use ErrorException;
use Exception; use Exception;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Psr7\Request;
use GuzzleHttp\Psr7\Utils;
use InvalidArgumentException; use InvalidArgumentException;
use Psr\Http\Message\ResponseInterface;
use RetailCrm\Common\Exception\InvalidJsonException; use RetailCrm\Common\Exception\InvalidJsonException;
use RetailCrm\Common\Exception\LimitException; use RetailCrm\Common\Exception\LimitException;
use RetailCrm\Common\Exception\NotFoundException; use RetailCrm\Common\Exception\NotFoundException;
@ -25,19 +27,11 @@ use RetailCrm\Common\Serializer;
use RetailCrm\Common\Url; use RetailCrm\Common\Url;
use RuntimeException; use RuntimeException;
use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Validation;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
use GuzzleHttp\Exception\GuzzleException;
use Psr\Http\Message\ResponseInterface;
use function GuzzleHttp\Psr7\stream_for;
/** /**
* Class HttpClient * Class HttpClient
* *
* @package RetailCrm\Mg\Bot * @package RetailCrm\Mg\Bot
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class HttpClient class HttpClient
{ {
@ -143,7 +137,7 @@ class HttpClient
[self::METHOD_POST, self::METHOD_PUT, self::METHOD_PATCH, self::METHOD_DELETE] [self::METHOD_POST, self::METHOD_PUT, self::METHOD_PATCH, self::METHOD_DELETE]
) && is_string($requestBody) ) && is_string($requestBody)
) { ) {
$request = $request->withBody(stream_for($requestBody)); $request = $request->withBody(Utils::streamFor($requestBody));
} }
$responseObject = null; $responseObject = null;
@ -222,14 +216,15 @@ class HttpClient
/** /**
* Validate given class * Validate given class
* *
* @param string $class * @param object $class
* *
* @return void * @return void
*/ */
private function validateRequest($class) private function validateRequest(object $class)
{ {
$validator = Validation::createValidatorBuilder() $validator = Validation::createValidatorBuilder()
->enableAnnotationMapping() ->enableAnnotationMapping()
->addDefaultDoctrineAnnotationReader()
->getValidator(); ->getValidator();
$errors = $validator->validate($class); $errors = $validator->validate($class);
@ -238,7 +233,7 @@ class HttpClient
$message = ''; $message = '';
foreach ($errors as $error) { foreach ($errors as $error) {
$message .= (string)$error; $message .= $error->getMessage();
} }
throw new InvalidArgumentException($message); throw new InvalidArgumentException($message);

View file

@ -6,9 +6,6 @@
* Constants * Constants
* *
* @package RetailCrm\Mg\Bot\Model * @package RetailCrm\Mg\Bot\Model
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model; namespace RetailCrm\Mg\Bot\Model;
@ -17,9 +14,6 @@ namespace RetailCrm\Mg\Bot\Model;
* Constants class * Constants class
* *
* @package RetailCrm\Mg\Bot\Model * @package RetailCrm\Mg\Bot\Model
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class Constants class Constants
{ {
@ -44,6 +38,7 @@ class Constants
const BOT_ROLE_DISTRIBUTOR = "distributor"; const BOT_ROLE_DISTRIBUTOR = "distributor";
const BOT_ROLE_RESPONSIBLE = "responsible"; const BOT_ROLE_RESPONSIBLE = "responsible";
const BOT_ROLE_HIDDEN = "hidden";
const MESSAGE_SCOPE_PUBLIC = "public"; const MESSAGE_SCOPE_PUBLIC = "public";
const MESSAGE_SCOPE_PRIVATE = "private"; const MESSAGE_SCOPE_PRIVATE = "private";

View file

@ -6,9 +6,6 @@
* Bot entity * Bot entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity * @package RetailCrm\Mg\Bot\Model\Entity
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity; namespace RetailCrm\Mg\Bot\Model\Entity;
@ -22,9 +19,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* Bot class * Bot class
* *
* @package RetailCrm\Mg\Bot\Model\Entity * @package RetailCrm\Mg\Bot\Model\Entity
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class Bot implements ModelInterface class Bot implements ModelInterface
{ {
@ -39,7 +33,7 @@ class Bot implements ModelInterface
/** /**
* @var \DateTime $createdAt * @var \DateTime $createdAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getCreatedAt",setter="setCreatedAt") * @Accessor(getter="getCreatedAt",setter="setCreatedAt")
* @SkipWhenEmpty() * @SkipWhenEmpty()
*/ */
@ -48,7 +42,7 @@ class Bot implements ModelInterface
/** /**
* @var \DateTime $updatedAt * @var \DateTime $updatedAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getUpdatedAt",setter="setUpdatedAt") * @Accessor(getter="getUpdatedAt",setter="setUpdatedAt")
* @SkipWhenEmpty() * @SkipWhenEmpty()
*/ */
@ -136,9 +130,9 @@ class Bot implements ModelInterface
private $isSystem; private $isSystem;
/** /**
* @return string * @return string|null
*/ */
public function getId(): string public function getId(): ?string
{ {
return $this->id; return $this->id;
} }
@ -154,7 +148,7 @@ class Bot implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getCreatedAt(): \DateTime public function getCreatedAt(): ?\DateTime
{ {
return $this->createdAt; return $this->createdAt;
} }
@ -170,7 +164,7 @@ class Bot implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getUpdatedAt(): \DateTime public function getUpdatedAt(): ?\DateTime
{ {
return $this->updatedAt; return $this->updatedAt;
} }
@ -184,9 +178,9 @@ class Bot implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getName(): string public function getName(): ?string
{ {
return $this->name; return $this->name;
} }
@ -200,9 +194,9 @@ class Bot implements ModelInterface
} }
/** /**
* @return array * @return array|null
*/ */
public function getEvents(): array public function getEvents(): ?array
{ {
return $this->events; return $this->events;
} }
@ -216,9 +210,9 @@ class Bot implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getClientId(): string public function getClientId(): ?string
{ {
return $this->clientId; return $this->clientId;
} }
@ -232,9 +226,9 @@ class Bot implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getAvatarUrl(): string public function getAvatarUrl(): ?string
{ {
return $this->avatarUrl; return $this->avatarUrl;
} }
@ -248,9 +242,9 @@ class Bot implements ModelInterface
} }
/** /**
* @return array * @return array|null
*/ */
public function getRoles(): array public function getRoles(): ?array
{ {
return $this->roles; return $this->roles;
} }
@ -264,9 +258,9 @@ class Bot implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getDeactivatedAt(): string public function getDeactivatedAt(): ?string
{ {
return $this->deactivatedAt; return $this->deactivatedAt;
} }
@ -280,9 +274,9 @@ class Bot implements ModelInterface
} }
/** /**
* @return bool * @return bool|null
*/ */
public function isActive(): bool public function isActive(): ?bool
{ {
return $this->isActive; return $this->isActive;
} }
@ -296,9 +290,9 @@ class Bot implements ModelInterface
} }
/** /**
* @return bool * @return bool|null
*/ */
public function isSelf(): bool public function isSelf(): ?bool
{ {
return $this->isSelf; return $this->isSelf;
} }
@ -312,9 +306,9 @@ class Bot implements ModelInterface
} }
/** /**
* @return bool * @return bool|null
*/ */
public function isSystem(): bool public function isSystem(): ?bool
{ {
return $this->isSystem; return $this->isSystem;
} }

View file

@ -6,9 +6,6 @@
* Channel entity * Channel entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Channel * @package RetailCrm\Mg\Bot\Model\Entity\Channel
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity\Channel; namespace RetailCrm\Mg\Bot\Model\Entity\Channel;
@ -22,9 +19,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* Class Channel * Class Channel
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Channel * @package RetailCrm\Mg\Bot\Model\Entity\Channel
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class Channel implements ModelInterface class Channel implements ModelInterface
{ {
@ -39,7 +33,7 @@ class Channel implements ModelInterface
/** /**
* @var \DateTime $createdAt * @var \DateTime $createdAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getCreatedAt",setter="setCreatedAt") * @Accessor(getter="getCreatedAt",setter="setCreatedAt")
*/ */
private $createdAt; private $createdAt;
@ -47,7 +41,7 @@ class Channel implements ModelInterface
/** /**
* @var \DateTime $updatedAt * @var \DateTime $updatedAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getUpdatedAt",setter="setUpdatedAt") * @Accessor(getter="getUpdatedAt",setter="setUpdatedAt")
*/ */
private $updatedAt; private $updatedAt;
@ -55,7 +49,7 @@ class Channel implements ModelInterface
/** /**
* @var \DateTime $activatedAt * @var \DateTime $activatedAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getActivatedAt",setter="setActivatedAt") * @Accessor(getter="getActivatedAt",setter="setActivatedAt")
*/ */
private $activatedAt; private $activatedAt;
@ -63,7 +57,7 @@ class Channel implements ModelInterface
/** /**
* @var \DateTime $deactivatedAt * @var \DateTime $deactivatedAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getDeactivatedAt",setter="setDeactivatedAt") * @Accessor(getter="getDeactivatedAt",setter="setDeactivatedAt")
*/ */
private $deactivatedAt; private $deactivatedAt;
@ -101,9 +95,9 @@ class Channel implements ModelInterface
private $name; private $name;
/** /**
* @return string * @return string|null
*/ */
public function getId(): string public function getId(): ?string
{ {
return $this->id; return $this->id;
} }
@ -119,7 +113,7 @@ class Channel implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getCreatedAt(): DateTime public function getCreatedAt(): ?DateTime
{ {
return $this->createdAt; return $this->createdAt;
} }
@ -135,7 +129,7 @@ class Channel implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getUpdatedAt(): DateTime public function getUpdatedAt(): ?DateTime
{ {
return $this->updatedAt; return $this->updatedAt;
} }
@ -151,7 +145,7 @@ class Channel implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getActivatedAt(): DateTime public function getActivatedAt(): ?DateTime
{ {
return $this->activatedAt; return $this->activatedAt;
} }
@ -167,7 +161,7 @@ class Channel implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getDeactivatedAt(): DateTime public function getDeactivatedAt(): ?DateTime
{ {
return $this->deactivatedAt; return $this->deactivatedAt;
} }
@ -181,9 +175,9 @@ class Channel implements ModelInterface
} }
/** /**
* @return bool * @return bool|null
*/ */
public function isActive(): bool public function isActive(): ?bool
{ {
return $this->isActive; return $this->isActive;
} }
@ -197,9 +191,9 @@ class Channel implements ModelInterface
} }
/** /**
* @return ChannelSettings * @return ChannelSettings|null
*/ */
public function getSettings(): ChannelSettings public function getSettings(): ?ChannelSettings
{ {
return $this->settings; return $this->settings;
} }
@ -213,9 +207,9 @@ class Channel implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getType(): string public function getType(): ?string
{ {
return $this->type; return $this->type;
} }
@ -229,9 +223,9 @@ class Channel implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getName(): string public function getName(): ?string
{ {
return $this->name; return $this->name;
} }
@ -239,7 +233,7 @@ class Channel implements ModelInterface
/** /**
* @param string $name * @param string $name
*/ */
public function setName(string $name) public function setName($name)
{ {
$this->name = $name; $this->name = $name;
} }

View file

@ -6,9 +6,6 @@
* ChannelSettings entity * ChannelSettings entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Channel * @package RetailCrm\Mg\Bot\Model\Entity\Channel
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity\Channel; namespace RetailCrm\Mg\Bot\Model\Entity\Channel;
@ -22,9 +19,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* Class ChannelSettings * Class ChannelSettings
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Channel * @package RetailCrm\Mg\Bot\Model\Entity\Channel
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class ChannelSettings implements ModelInterface class ChannelSettings implements ModelInterface
{ {
@ -90,9 +84,18 @@ class ChannelSettings implements ModelInterface
private $file; private $file;
/** /**
* @return ChannelSettingsStatus * @var ChannelSettingsSuggestions $suggestions
*
* @Type("RetailCrm\Mg\Bot\Model\Entity\Channel\ChannelSettingsSuggestions")
* @Accessor(getter="getSuggestions",setter="setSuggestions")
* @SkipWhenEmpty()
*/ */
public function getStatus(): ChannelSettingsStatus private $suggestions;
/**
* @return ChannelSettingsStatus|null
*/
public function getStatus(): ?ChannelSettingsStatus
{ {
return $this->status; return $this->status;
} }
@ -106,9 +109,9 @@ class ChannelSettings implements ModelInterface
} }
/** /**
* @return bool * @return bool|null
*/ */
public function isSpamAllowed(): bool public function isSpamAllowed(): ?bool
{ {
return $this->spamAllowed; return $this->spamAllowed;
} }
@ -122,9 +125,9 @@ class ChannelSettings implements ModelInterface
} }
/** /**
* @return ChannelSettingsItem * @return ChannelSettingsItem|null
*/ */
public function getText(): ChannelSettingsItem public function getText(): ?ChannelSettingsItem
{ {
return $this->text; return $this->text;
} }
@ -138,9 +141,9 @@ class ChannelSettings implements ModelInterface
} }
/** /**
* @return ChannelSettingsItem * @return ChannelSettingsItem|null
*/ */
public function getProduct(): ChannelSettingsItem public function getProduct(): ?ChannelSettingsItem
{ {
return $this->product; return $this->product;
} }
@ -154,9 +157,9 @@ class ChannelSettings implements ModelInterface
} }
/** /**
* @return ChannelSettingsItem * @return ChannelSettingsItem|null
*/ */
public function getOrder(): ChannelSettingsItem public function getOrder(): ?ChannelSettingsItem
{ {
return $this->order; return $this->order;
} }
@ -170,9 +173,9 @@ class ChannelSettings implements ModelInterface
} }
/** /**
* @return ChannelSettingsItem * @return ChannelSettingsItem|null
*/ */
public function getImage(): ChannelSettingsItem public function getImage(): ?ChannelSettingsItem
{ {
return $this->image; return $this->image;
} }
@ -186,9 +189,9 @@ class ChannelSettings implements ModelInterface
} }
/** /**
* @return ChannelSettingsItem * @return ChannelSettingsItem|null
*/ */
public function getFile(): ChannelSettingsItem public function getFile(): ?ChannelSettingsItem
{ {
return $this->file; return $this->file;
} }
@ -200,4 +203,20 @@ class ChannelSettings implements ModelInterface
{ {
$this->file = $file; $this->file = $file;
} }
/**
* @return ChannelSettingsSuggestions|null
*/
public function getSuggestions(): ?ChannelSettingsSuggestions
{
return $this->suggestions;
}
/**
* @param ChannelSettingsSuggestions $suggestions
*/
public function setSuggestions(ChannelSettingsSuggestions $suggestions): void
{
$this->suggestions = $suggestions;
}
} }

View file

@ -6,9 +6,6 @@
* ChannelSettingsItem entity * ChannelSettingsItem entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Channel * @package RetailCrm\Mg\Bot\Model\Entity\Channel
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity\Channel; namespace RetailCrm\Mg\Bot\Model\Entity\Channel;
@ -22,9 +19,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* ChannelSettingsItem class * ChannelSettingsItem class
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Channel * @package RetailCrm\Mg\Bot\Model\Entity\Channel
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class ChannelSettingsItem implements ModelInterface class ChannelSettingsItem implements ModelInterface
{ {
@ -101,9 +95,9 @@ class ChannelSettingsItem implements ModelInterface
private $noteMaxCharsCount; private $noteMaxCharsCount;
/** /**
* @return string * @return string|null
*/ */
public function getCreating(): string public function getCreating(): ?string
{ {
return $this->creating; return $this->creating;
} }
@ -117,9 +111,9 @@ class ChannelSettingsItem implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getEditing(): string public function getEditing(): ?string
{ {
return $this->editing; return $this->editing;
} }
@ -133,9 +127,9 @@ class ChannelSettingsItem implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getQuoting(): string public function getQuoting(): ?string
{ {
return $this->quoting; return $this->quoting;
} }
@ -149,9 +143,9 @@ class ChannelSettingsItem implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getDeleting(): string public function getDeleting(): ?string
{ {
return $this->deleting; return $this->deleting;
} }
@ -165,9 +159,9 @@ class ChannelSettingsItem implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getDelivered(): string public function getDelivered(): ?string
{ {
return $this->delivered; return $this->delivered;
} }
@ -181,9 +175,9 @@ class ChannelSettingsItem implements ModelInterface
} }
/** /**
* @return int * @return int|null
*/ */
public function getMaxCharsCount(): int public function getMaxCharsCount(): ?int
{ {
return $this->maxCharsCount; return $this->maxCharsCount;
} }
@ -197,9 +191,9 @@ class ChannelSettingsItem implements ModelInterface
} }
/** /**
* @return int * @return int|null
*/ */
public function getMaxItemsCount(): int public function getMaxItemsCount(): ?int
{ {
return $this->maxItemsCount; return $this->maxItemsCount;
} }
@ -213,9 +207,9 @@ class ChannelSettingsItem implements ModelInterface
} }
/** /**
* @return int * @return int|null
*/ */
public function getNoteMaxCharsCount(): int public function getNoteMaxCharsCount(): ?int
{ {
return $this->noteMaxCharsCount; return $this->noteMaxCharsCount;
} }

View file

@ -6,9 +6,6 @@
* ChannelSettingsStatus entity * ChannelSettingsStatus entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Channel * @package RetailCrm\Mg\Bot\Model\Entity\Channel
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity\Channel; namespace RetailCrm\Mg\Bot\Model\Entity\Channel;
@ -22,9 +19,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* ChannelSettingsStatus class * ChannelSettingsStatus class
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Channel * @package RetailCrm\Mg\Bot\Model\Entity\Channel
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class ChannelSettingsStatus implements ModelInterface class ChannelSettingsStatus implements ModelInterface
{ {
@ -47,9 +41,9 @@ class ChannelSettingsStatus implements ModelInterface
private $read; private $read;
/** /**
* @return string * @return string|null
*/ */
public function getDelivered(): string public function getDelivered(): ?string
{ {
return $this->delivered; return $this->delivered;
} }
@ -63,9 +57,9 @@ class ChannelSettingsStatus implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getRead(): string public function getRead(): ?string
{ {
return $this->read; return $this->read;
} }

View file

@ -0,0 +1,100 @@
<?php
/**
* PHP version 7.1
*
* ChannelSettingsSuggestions entity
*
* @package RetailCrm\Mg\Bot\Model\Entity\Channel
*/
namespace RetailCrm\Mg\Bot\Model\Entity\Channel;
use JMS\Serializer\Annotation\Accessor;
use JMS\Serializer\Annotation\SkipWhenEmpty;
use JMS\Serializer\Annotation\Type;
use RetailCrm\Mg\Bot\Model\ModelInterface;
/**
* ChannelSettingsSuggestions class
*
* @package RetailCrm\Mg\Bot\Model\Entity\Channel
*/
class ChannelSettingsSuggestions implements ModelInterface
{
/**
* @var string $email
*
* @Type("string")
* @Accessor(getter="getEmail", setter="setEmail")
* @SkipWhenEmpty()
*/
private $email;
/**
* @var string $phone
*
* @Type("string")
* @Accessor(getter="getPhone", setter="setPhone")
* @SkipWhenEmpty()
*/
private $phone;
/**
* @var string $text
*
*
* @Type("string")
* @Accessor(getter="getText", setter="setText")
* @SkipWhenEmpty()
*/
private $text;
/**
* @return string|null
*/
public function getEmail(): ?string
{
return $this->email;
}
/**
* @param string $email
*/
public function setEmail(string $email): void
{
$this->email = $email;
}
/**
* @return string|null
*/
public function getPhone(): ?string
{
return $this->phone;
}
/**
* @param string $phone
*/
public function setPhone(string $phone): void
{
$this->phone = $phone;
}
/**
* @return string|null
*/
public function getText(): ?string
{
return $this->text;
}
/**
* @param string $text
*/
public function setText(string $text): void
{
$this->text = $text;
}
}

View file

@ -6,9 +6,6 @@
* Chat entity * Chat entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Chat * @package RetailCrm\Mg\Bot\Model\Entity\Chat
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity\Chat; namespace RetailCrm\Mg\Bot\Model\Entity\Chat;
@ -24,9 +21,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* Chat class * Chat class
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Chat * @package RetailCrm\Mg\Bot\Model\Entity\Chat
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class Chat implements ModelInterface class Chat implements ModelInterface
{ {
@ -41,7 +35,7 @@ class Chat implements ModelInterface
/** /**
* @var \DateTime $createdAt * @var \DateTime $createdAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getCreatedAt",setter="setCreatedAt") * @Accessor(getter="getCreatedAt",setter="setCreatedAt")
*/ */
private $createdAt; private $createdAt;
@ -49,7 +43,7 @@ class Chat implements ModelInterface
/** /**
* @var \DateTime $updatedAt * @var \DateTime $updatedAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getUpdatedAt",setter="setUpdatedAt") * @Accessor(getter="getUpdatedAt",setter="setUpdatedAt")
*/ */
private $updatedAt; private $updatedAt;
@ -106,7 +100,7 @@ class Chat implements ModelInterface
/** /**
* @var ChatLastMessage $lastMessage * @var ChatLastMessage $lastMessage
* *
* @Type("ChatLastMessage") * @Type("RetailCrm\Mg\Bot\Model\Entity\Chat\ChatLastMessage")
* @Accessor(getter="getLastMessage",setter="setLastMessage") * @Accessor(getter="getLastMessage",setter="setLastMessage")
*/ */
private $lastMessage; private $lastMessage;
@ -120,9 +114,17 @@ class Chat implements ModelInterface
private $lastActivity; private $lastActivity;
/** /**
* @return string * @var \DateTime $replyDeadline
*
* @Type("DateTime<'Y-m-d\TH:i:sP'>")
* @Accessor(getter="getReplyDeadline",setter="setReplyDeadline")
*/ */
public function getId(): string private $replyDeadline;
/**
* @return string|null
*/
public function getId(): ?string
{ {
return $this->id; return $this->id;
} }
@ -138,7 +140,7 @@ class Chat implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getCreatedAt(): \DateTime public function getCreatedAt(): ?\DateTime
{ {
return $this->createdAt; return $this->createdAt;
} }
@ -154,7 +156,7 @@ class Chat implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getUpdatedAt(): \DateTime public function getUpdatedAt(): ?\DateTime
{ {
return $this->updatedAt; return $this->updatedAt;
} }
@ -168,9 +170,9 @@ class Chat implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getAvatar(): string public function getAvatar(): ?string
{ {
return $this->avatar; return $this->avatar;
} }
@ -184,9 +186,9 @@ class Chat implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getName(): string public function getName(): ?string
{ {
return $this->name; return $this->name;
} }
@ -200,9 +202,9 @@ class Chat implements ModelInterface
} }
/** /**
* @return Channel * @return Channel|null
*/ */
public function getChannel(): Channel public function getChannel(): ?Channel
{ {
return $this->channel; return $this->channel;
} }
@ -216,9 +218,9 @@ class Chat implements ModelInterface
} }
/** /**
* @return array * @return array|null
*/ */
public function getMembers(): array public function getMembers(): ?array
{ {
return $this->members; return $this->members;
} }
@ -232,9 +234,9 @@ class Chat implements ModelInterface
} }
/** /**
* @return Customer * @return Customer|null
*/ */
public function getCustomer(): Customer public function getCustomer(): ?Customer
{ {
return $this->customer; return $this->customer;
} }
@ -248,9 +250,9 @@ class Chat implements ModelInterface
} }
/** /**
* @return int * @return int|null
*/ */
public function getAuthorId(): int public function getAuthorId(): ?int
{ {
return $this->authorId; return $this->authorId;
} }
@ -264,9 +266,9 @@ class Chat implements ModelInterface
} }
/** /**
* @return ChatLastMessage * @return ChatLastMessage|null
*/ */
public function getLastMessage(): ChatLastMessage public function getLastMessage(): ?ChatLastMessage
{ {
return $this->lastMessage; return $this->lastMessage;
} }
@ -282,7 +284,7 @@ class Chat implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getLastActivity(): \DateTime public function getLastActivity(): ?\DateTime
{ {
return $this->lastActivity; return $this->lastActivity;
} }
@ -294,4 +296,20 @@ class Chat implements ModelInterface
{ {
$this->lastActivity = $lastActivity; $this->lastActivity = $lastActivity;
} }
/**
* @return \DateTime
*/
public function getReplyDeadline(): ?\DateTime
{
return $this->replyDeadline;
}
/**
* @param \DateTime $replyDeadline
*/
public function setReplyDeadline(\DateTime $replyDeadline): void
{
$this->replyDeadline = $replyDeadline;
}
} }

View file

@ -6,9 +6,6 @@
* ChatLastMessage entity * ChatLastMessage entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Chat * @package RetailCrm\Mg\Bot\Model\Entity\Chat
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity\Chat; namespace RetailCrm\Mg\Bot\Model\Entity\Chat;
@ -16,15 +13,13 @@ namespace RetailCrm\Mg\Bot\Model\Entity\Chat;
use JMS\Serializer\Annotation\Accessor; use JMS\Serializer\Annotation\Accessor;
use JMS\Serializer\Annotation\SkipWhenEmpty; use JMS\Serializer\Annotation\SkipWhenEmpty;
use JMS\Serializer\Annotation\Type; use JMS\Serializer\Annotation\Type;
use RetailCrm\Mg\Bot\Model\Entity\Customer;
use RetailCrm\Mg\Bot\Model\ModelInterface; use RetailCrm\Mg\Bot\Model\ModelInterface;
/** /**
* ChatLastMessage class * ChatLastMessage class
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Chat * @package RetailCrm\Mg\Bot\Model\Entity\Chat
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class ChatLastMessage implements ModelInterface class ChatLastMessage implements ModelInterface
{ {
@ -40,7 +35,7 @@ class ChatLastMessage implements ModelInterface
/** /**
* @var \DateTime $time * @var \DateTime $time
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:sP'>")
* @Accessor(getter="getTime",setter="setTime") * @Accessor(getter="getTime",setter="setTime")
* @SkipWhenEmpty() * @SkipWhenEmpty()
*/ */
@ -56,9 +51,80 @@ class ChatLastMessage implements ModelInterface
private $type; private $type;
/** /**
* @return int * @var string $scope
*
* @Type("string")
* @Accessor(getter="getScope",setter="setScope")
* @SkipWhenEmpty()
*/ */
public function getId(): int private $scope;
/**
* @var int $chatId
*
* @Type("int")
* @Accessor(getter="getChatId",setter="setChatId")
* @SkipWhenEmpty()
*/
private $chatId;
/**
* @var bool $isRead
*
* @Type("bool")
* @Accessor(getter="getIsRead",setter="setIsRead")
* @SkipWhenEmpty()
*/
private $isRead;
/**
* @var bool $isEdit
*
* @Type("bool")
* @Accessor(getter="getIsEdit",setter="setIsEdit")
* @SkipWhenEmpty()
*/
private $isEdit;
/**
* @var string $status
*
* @Type("string")
* @Accessor(getter="getStatus",setter="setStatus")
* @SkipWhenEmpty()
*/
private $status;
/**
* @var Customer $from
*
* @Type("RetailCrm\Mg\Bot\Model\Entity\Customer")
* @Accessor(getter="getFrom",setter="setFrom")
*/
private $from;
/**
* @var string $content
*
* @Type("string")
* @Accessor(getter="getContent",setter="setContent")
* @SkipWhenEmpty()
*/
private $content;
/**
* @var \RetailCrm\Mg\Bot\Model\Entity\Message\MessageQuote $quote
*
* @Type("RetailCrm\Mg\Bot\Model\Entity\Message\MessageQuote")
* @Accessor(getter="getQuote",setter="setQuote")
* @SkipWhenEmpty()
*/
private $quote;
/**
* @return int|null
*/
public function getId(): ?int
{ {
return $this->id; return $this->id;
} }
@ -74,7 +140,7 @@ class ChatLastMessage implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getTime(): \DateTime public function getTime(): ?\DateTime
{ {
return $this->time; return $this->time;
} }
@ -88,9 +154,9 @@ class ChatLastMessage implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getType(): string public function getType(): ?string
{ {
return $this->type; return $this->type;
} }
@ -102,4 +168,132 @@ class ChatLastMessage implements ModelInterface
{ {
$this->type = $type; $this->type = $type;
} }
/**
* @return mixed
*/
public function getScope()
{
return $this->scope;
}
/**
* @param mixed $scope
*/
public function setScope($scope): void
{
$this->scope = $scope;
}
/**
* @return mixed
*/
public function getChatId()
{
return $this->chatId;
}
/**
* @param mixed $chatId
*/
public function setChatId($chatId): void
{
$this->chatId = $chatId;
}
/**
* @return mixed
*/
public function getIsRead()
{
return $this->isRead;
}
/**
* @param mixed $isRead
*/
public function setIsRead($isRead): void
{
$this->isRead = $isRead;
}
/**
* @return mixed
*/
public function getIsEdit()
{
return $this->isEdit;
}
/**
* @param mixed $isEdit
*/
public function setIsEdit($isEdit): void
{
$this->isEdit = $isEdit;
}
/**
* @return mixed
*/
public function getStatus()
{
return $this->status;
}
/**
* @param mixed $status
*/
public function setStatus($status): void
{
$this->status = $status;
}
/**
* @return mixed
*/
public function getFrom()
{
return $this->from;
}
/**
* @param mixed $from
*/
public function setFrom($from): void
{
$this->from = $from;
}
/**
* @return mixed
*/
public function getContent()
{
return $this->content;
}
/**
* @param mixed $content
*/
public function setContent($content): void
{
$this->content = $content;
}
/**
* @return mixed
*/
public function getQuote()
{
return $this->quote;
}
/**
* @param mixed $quote
*/
public function setQuote($quote): void
{
$this->quote = $quote;
}
} }

View file

@ -6,9 +6,6 @@
* ChatMember entity * ChatMember entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Chat * @package RetailCrm\Mg\Bot\Model\Entity\Chat
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity\Chat; namespace RetailCrm\Mg\Bot\Model\Entity\Chat;
@ -22,9 +19,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* ChatMember class * ChatMember class
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Chat * @package RetailCrm\Mg\Bot\Model\Entity\Chat
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class ChatMember implements ModelInterface class ChatMember implements ModelInterface
{ {
@ -39,7 +33,7 @@ class ChatMember implements ModelInterface
/** /**
* @var \DateTime $createdAt * @var \DateTime $createdAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getCreatedAt",setter="setCreatedAt") * @Accessor(getter="getCreatedAt",setter="setCreatedAt")
*/ */
private $createdAt; private $createdAt;
@ -47,7 +41,7 @@ class ChatMember implements ModelInterface
/** /**
* @var \DateTime $updatedAt * @var \DateTime $updatedAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getUpdatedAt",setter="setUpdatedAt") * @Accessor(getter="getUpdatedAt",setter="setUpdatedAt")
* @SkipWhenEmpty() * @SkipWhenEmpty()
*/ */
@ -90,9 +84,9 @@ class ChatMember implements ModelInterface
private $state; private $state;
/** /**
* @return string * @return string|null
*/ */
public function getId(): string public function getId(): ?string
{ {
return $this->id; return $this->id;
} }
@ -108,7 +102,7 @@ class ChatMember implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getCreatedAt(): \DateTime public function getCreatedAt(): ?\DateTime
{ {
return $this->createdAt; return $this->createdAt;
} }
@ -124,7 +118,7 @@ class ChatMember implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getUpdatedAt(): \DateTime public function getUpdatedAt(): ?\DateTime
{ {
return $this->updatedAt; return $this->updatedAt;
} }
@ -138,9 +132,9 @@ class ChatMember implements ModelInterface
} }
/** /**
* @return int * @return int|null
*/ */
public function getChatId(): int public function getChatId(): ?int
{ {
return $this->chatId; return $this->chatId;
} }
@ -154,9 +148,9 @@ class ChatMember implements ModelInterface
} }
/** /**
* @return int * @return int|null
*/ */
public function getUserId(): int public function getUserId(): ?int
{ {
return $this->userId; return $this->userId;
} }
@ -170,9 +164,9 @@ class ChatMember implements ModelInterface
} }
/** /**
* @return bool * @return bool|null
*/ */
public function isAuthor(): bool public function isAuthor(): ?bool
{ {
return $this->isAuthor; return $this->isAuthor;
} }
@ -186,9 +180,9 @@ class ChatMember implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getState(): string public function getState(): ?string
{ {
return $this->state; return $this->state;
} }

View file

@ -6,9 +6,6 @@
* Command entity * Command entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity * @package RetailCrm\Mg\Bot\Model\Entity
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity; namespace RetailCrm\Mg\Bot\Model\Entity;
@ -22,9 +19,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* Command class * Command class
* *
* @package RetailCrm\Mg\Bot\Model\Entity * @package RetailCrm\Mg\Bot\Model\Entity
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class Command implements ModelInterface class Command implements ModelInterface
{ {
@ -39,7 +33,7 @@ class Command implements ModelInterface
/** /**
* @var \DateTime $createdAt * @var \DateTime $createdAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getCreatedAt",setter="setCreatedAt") * @Accessor(getter="getCreatedAt",setter="setCreatedAt")
*/ */
private $createdAt; private $createdAt;
@ -47,7 +41,7 @@ class Command implements ModelInterface
/** /**
* @var \DateTime $updatedAt * @var \DateTime $updatedAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getUpdatedAt",setter="setUpdatedAt") * @Accessor(getter="getUpdatedAt",setter="setUpdatedAt")
* @SkipWhenEmpty() * @SkipWhenEmpty()
*/ */
@ -72,9 +66,9 @@ class Command implements ModelInterface
private $description; private $description;
/** /**
* @return string * @return string|null
*/ */
public function getId(): string public function getId(): ?string
{ {
return $this->id; return $this->id;
} }
@ -90,7 +84,7 @@ class Command implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getCreatedAt(): \DateTime public function getCreatedAt(): ?\DateTime
{ {
return $this->createdAt; return $this->createdAt;
} }
@ -106,7 +100,7 @@ class Command implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getUpdatedAt(): \DateTime public function getUpdatedAt(): ?\DateTime
{ {
return $this->updatedAt; return $this->updatedAt;
} }
@ -120,9 +114,9 @@ class Command implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getName(): string public function getName(): ?string
{ {
return $this->name; return $this->name;
} }
@ -136,9 +130,9 @@ class Command implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getDescription(): string public function getDescription(): ?string
{ {
return $this->description; return $this->description;
} }

View file

@ -6,9 +6,6 @@
* Customer entity * Customer entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity * @package RetailCrm\Mg\Bot\Model\Entity
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity; namespace RetailCrm\Mg\Bot\Model\Entity;
@ -23,9 +20,6 @@ use JMS\Serializer\Annotation\Type;
* Customer class * Customer class
* *
* @package RetailCrm\Mg\Bot\Model\Entity * @package RetailCrm\Mg\Bot\Model\Entity
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class Customer implements ModelInterface class Customer implements ModelInterface
{ {
@ -40,7 +34,7 @@ class Customer implements ModelInterface
/** /**
* @var \DateTime $createdAt * @var \DateTime $createdAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getCreatedAt",setter="setCreatedAt") * @Accessor(getter="getCreatedAt",setter="setCreatedAt")
*/ */
private $createdAt; private $createdAt;
@ -48,7 +42,7 @@ class Customer implements ModelInterface
/** /**
* @var \DateTime $updatedAt * @var \DateTime $updatedAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getUpdatedAt",setter="setUpdatedAt") * @Accessor(getter="getUpdatedAt",setter="setUpdatedAt")
* @SkipWhenEmpty() * @SkipWhenEmpty()
*/ */
@ -174,9 +168,18 @@ class Customer implements ModelInterface
private $email; private $email;
/** /**
* @return string * @var Utm $utm
*
* @Type("RetailCrm\Mg\Bot\Model\Entity\Utm")
* @Accessor(getter="getUtm",setter="setUtm")
* @SkipWhenEmpty()
*/ */
public function getId(): string private $utm;
/**
* @return string|null
*/
public function getId(): ?string
{ {
return $this->id; return $this->id;
} }
@ -192,7 +195,7 @@ class Customer implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getCreatedAt(): \DateTime public function getCreatedAt(): ?\DateTime
{ {
return $this->createdAt; return $this->createdAt;
} }
@ -208,7 +211,7 @@ class Customer implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getUpdatedAt(): \DateTime public function getUpdatedAt(): ?\DateTime
{ {
return $this->updatedAt; return $this->updatedAt;
} }
@ -222,9 +225,9 @@ class Customer implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getExternalId(): string public function getExternalId(): ?string
{ {
return $this->externalId; return $this->externalId;
} }
@ -238,9 +241,9 @@ class Customer implements ModelInterface
} }
/** /**
* @return int * @return int|null
*/ */
public function getChannelId(): int public function getChannelId(): ?int
{ {
return $this->channelId; return $this->channelId;
} }
@ -254,9 +257,9 @@ class Customer implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getUsername(): string public function getUsername(): ?string
{ {
return $this->username; return $this->username;
} }
@ -270,9 +273,9 @@ class Customer implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getFirstName(): string public function getFirstName(): ?string
{ {
return $this->firstName; return $this->firstName;
} }
@ -286,9 +289,9 @@ class Customer implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getLastName(): string public function getLastName(): ?string
{ {
return $this->lastName; return $this->lastName;
} }
@ -302,9 +305,9 @@ class Customer implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getAvatarUrl(): string public function getAvatarUrl(): ?string
{ {
return $this->avatarUrl; return $this->avatarUrl;
} }
@ -318,9 +321,9 @@ class Customer implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getProfileUrl(): string public function getProfileUrl(): ?string
{ {
return $this->profileUrl; return $this->profileUrl;
} }
@ -334,9 +337,9 @@ class Customer implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getRevokedAt(): string public function getRevokedAt(): ?string
{ {
return $this->revokedAt; return $this->revokedAt;
} }
@ -350,9 +353,9 @@ class Customer implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getCountry(): string public function getCountry(): ?string
{ {
return $this->country; return $this->country;
} }
@ -366,9 +369,9 @@ class Customer implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getLanguage(): string public function getLanguage(): ?string
{ {
return $this->language; return $this->language;
} }
@ -382,9 +385,9 @@ class Customer implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getPhone(): string public function getPhone(): ?string
{ {
return $this->phone; return $this->phone;
} }
@ -398,9 +401,9 @@ class Customer implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getEmail(): string public function getEmail(): ?string
{ {
return $this->email; return $this->email;
} }
@ -412,4 +415,21 @@ class Customer implements ModelInterface
{ {
$this->email = $email; $this->email = $email;
} }
/**
* @return Utm|null
*/
public function getUtm(): ?Utm
{
return $this->utm;
}
/**
* @param Utm $utm
* @return void
*/
public function setUtm(Utm $utm): void
{
$this->utm = $utm;
}
} }

View file

@ -6,9 +6,6 @@
* Dialog entity * Dialog entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity * @package RetailCrm\Mg\Bot\Model\Entity
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity; namespace RetailCrm\Mg\Bot\Model\Entity;
@ -22,9 +19,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* Dialog class * Dialog class
* *
* @package RetailCrm\Mg\Bot\Model\Entity * @package RetailCrm\Mg\Bot\Model\Entity
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class Dialog implements ModelInterface class Dialog implements ModelInterface
{ {
@ -39,7 +33,7 @@ class Dialog implements ModelInterface
/** /**
* @var \DateTime $createdAt * @var \DateTime $createdAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getCreatedAt",setter="setCreatedAt") * @Accessor(getter="getCreatedAt",setter="setCreatedAt")
*/ */
private $createdAt; private $createdAt;
@ -47,7 +41,7 @@ class Dialog implements ModelInterface
/** /**
* @var \DateTime $updatedAt * @var \DateTime $updatedAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getUpdatedAt",setter="setUpdatedAt") * @Accessor(getter="getUpdatedAt",setter="setUpdatedAt")
* @SkipWhenEmpty() * @SkipWhenEmpty()
*/ */
@ -92,7 +86,7 @@ class Dialog implements ModelInterface
/** /**
* @var \DateTime $closedAt * @var \DateTime $closedAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getClosedAt",setter="setClosedAt") * @Accessor(getter="getClosedAt",setter="setClosedAt")
* @SkipWhenEmpty() * @SkipWhenEmpty()
*/ */
@ -126,9 +120,18 @@ class Dialog implements ModelInterface
private $isActive; private $isActive;
/** /**
* @return string * @var Utm $utm
*
* @Type("RetailCrm\Mg\Bot\Model\Entity\Utm")
* @Accessor(getter="getUtm",setter="setUtm")
* @SkipWhenEmpty()
*/ */
public function getId(): string private $utm;
/**
* @return string|null
*/
public function getId(): ?string
{ {
return $this->id; return $this->id;
} }
@ -144,7 +147,7 @@ class Dialog implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getCreatedAt(): \DateTime public function getCreatedAt(): ?\DateTime
{ {
return $this->createdAt; return $this->createdAt;
} }
@ -160,7 +163,7 @@ class Dialog implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getUpdatedAt(): \DateTime public function getUpdatedAt(): ?\DateTime
{ {
return $this->updatedAt; return $this->updatedAt;
} }
@ -174,9 +177,9 @@ class Dialog implements ModelInterface
} }
/** /**
* @return int * @return int|null
*/ */
public function getBotId(): int public function getBotId(): ?int
{ {
return $this->botId; return $this->botId;
} }
@ -190,9 +193,9 @@ class Dialog implements ModelInterface
} }
/** /**
* @return int * @return int|null
*/ */
public function getChatId(): int public function getChatId(): ?int
{ {
return $this->chatId; return $this->chatId;
} }
@ -206,9 +209,9 @@ class Dialog implements ModelInterface
} }
/** /**
* @return int * @return int|null
*/ */
public function getBeginMessageId(): int public function getBeginMessageId(): ?int
{ {
return $this->beginMessageId; return $this->beginMessageId;
} }
@ -222,9 +225,9 @@ class Dialog implements ModelInterface
} }
/** /**
* @return int * @return int|null
*/ */
public function getEndingMessageId(): int public function getEndingMessageId(): ?int
{ {
return $this->endingMessageId; return $this->endingMessageId;
} }
@ -240,7 +243,7 @@ class Dialog implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getClosedAt(): \DateTime public function getClosedAt(): ?\DateTime
{ {
return $this->closedAt; return $this->closedAt;
} }
@ -254,9 +257,9 @@ class Dialog implements ModelInterface
} }
/** /**
* @return bool * @return bool|null
*/ */
public function isAssigned(): bool public function isAssigned(): ?bool
{ {
return $this->isAssigned; return $this->isAssigned;
} }
@ -270,9 +273,9 @@ class Dialog implements ModelInterface
} }
/** /**
* @return Responsible * @return Responsible|null
*/ */
public function getResponsible(): Responsible public function getResponsible(): ?Responsible
{ {
return $this->responsible; return $this->responsible;
} }
@ -286,9 +289,9 @@ class Dialog implements ModelInterface
} }
/** /**
* @return bool * @return bool|null
*/ */
public function isActive(): bool public function isActive(): ?bool
{ {
return $this->isActive; return $this->isActive;
} }
@ -300,4 +303,21 @@ class Dialog implements ModelInterface
{ {
$this->isActive = $isActive; $this->isActive = $isActive;
} }
/**
* @return Utm|null
*/
public function getUtm(): ?Utm
{
return $this->utm;
}
/**
* @param Utm $utm
* @return void
*/
public function setUtm(Utm $utm): void
{
$this->utm = $utm;
}
} }

View file

@ -6,9 +6,6 @@
* FileMeta entity * FileMeta entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity * @package RetailCrm\Mg\Bot\Model\Entity
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity; namespace RetailCrm\Mg\Bot\Model\Entity;
@ -22,9 +19,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* FileMeta class * FileMeta class
* *
* @package RetailCrm\Mg\Bot\Model\Entity * @package RetailCrm\Mg\Bot\Model\Entity
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class FileMeta implements ModelInterface class FileMeta implements ModelInterface
{ {
@ -47,9 +41,9 @@ class FileMeta implements ModelInterface
private $width; private $width;
/** /**
* @return int * @return int|null
*/ */
public function getHeight(): int public function getHeight(): ?int
{ {
return $this->height; return $this->height;
} }
@ -63,9 +57,9 @@ class FileMeta implements ModelInterface
} }
/** /**
* @return int * @return int|null
*/ */
public function getWidth(): int public function getWidth(): ?int
{ {
return $this->width; return $this->width;
} }

View file

@ -6,9 +6,6 @@
* Item entity * Item entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Message * @package RetailCrm\Mg\Bot\Model\Entity\Message
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity\Message; namespace RetailCrm\Mg\Bot\Model\Entity\Message;
@ -22,9 +19,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* Item class * Item class
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Message * @package RetailCrm\Mg\Bot\Model\Entity\Message
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class Item implements ModelInterface class Item implements ModelInterface
{ {
@ -56,9 +50,18 @@ class Item implements ModelInterface
private $caption; private $caption;
/** /**
* @return string * @var string $transcription
*
* @Type("string")
* @Accessor(getter="getTranscription",setter="setTranscription")
* @SkipWhenEmpty()
*/ */
public function getId() private $transcription;
/**
* @return string|null
*/
public function getId(): ?string
{ {
return $this->id; return $this->id;
} }
@ -72,9 +75,9 @@ class Item implements ModelInterface
} }
/** /**
* @return int * @return int|null
*/ */
public function getSize(): int public function getSize(): ?int
{ {
return $this->size; return $this->size;
} }
@ -88,7 +91,7 @@ class Item implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getCaption() public function getCaption()
{ {
@ -102,4 +105,20 @@ class Item implements ModelInterface
{ {
$this->caption = $caption; $this->caption = $caption;
} }
/**
* @return string|null
*/
public function getTranscription(): ?string
{
return $this->transcription;
}
/**
* @param string $transcription
*/
public function setTranscription(string $transcription): void
{
$this->transcription = $transcription;
}
} }

View file

@ -6,9 +6,6 @@
* Message entity * Message entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Message * @package RetailCrm\Mg\Bot\Model\Entity\Message
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity\Message; namespace RetailCrm\Mg\Bot\Model\Entity\Message;
@ -24,9 +21,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* Message class * Message class
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Message * @package RetailCrm\Mg\Bot\Model\Entity\Message
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class Message implements ModelInterface class Message implements ModelInterface
{ {
@ -41,7 +35,7 @@ class Message implements ModelInterface
/** /**
* @var \DateTime $createdAt * @var \DateTime $createdAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getCreatedAt",setter="setCreatedAt") * @Accessor(getter="getCreatedAt",setter="setCreatedAt")
*/ */
private $createdAt; private $createdAt;
@ -49,7 +43,7 @@ class Message implements ModelInterface
/** /**
* @var \DateTime $updatedAt * @var \DateTime $updatedAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getUpdatedAt",setter="setUpdatedAt") * @Accessor(getter="getUpdatedAt",setter="setUpdatedAt")
* @SkipWhenEmpty() * @SkipWhenEmpty()
*/ */
@ -127,11 +121,28 @@ class Message implements ModelInterface
*/ */
private $content; private $content;
/**
* @var string $note
*
* @Type("string")
* @Accessor(getter="getNote",setter="setNote")
* @SkipWhenEmpty()
*/
private $note;
/**
* @var ?Quote $quote
*
* @Type("RetailCrm\Mg\Bot\Model\Entity\Message\Quote")
* @SkipWhenEmpty()
*/
private $quote;
/** /**
* @var bool $isRead * @var bool $isRead
* *
* @Type("bool") * @Type("bool")
* @Accessor(getter="getIsRead",setter="setIsRead") * @Accessor(getter="isRead",setter="setIsRead")
* @SkipWhenEmpty() * @SkipWhenEmpty()
*/ */
private $isRead; private $isRead;
@ -140,7 +151,7 @@ class Message implements ModelInterface
* @var bool $isEdit * @var bool $isEdit
* *
* @Type("bool") * @Type("bool")
* @Accessor(getter="getIsEdit",setter="setIsEdit") * @Accessor(getter="isEdit",setter="setIsEdit")
* @SkipWhenEmpty() * @SkipWhenEmpty()
*/ */
private $isEdit; private $isEdit;
@ -184,7 +195,7 @@ class Message implements ModelInterface
/** /**
* @var \DateTime $channelSentAt * @var \DateTime $channelSentAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getChannelSentAt",setter="setChannelSentAt") * @Accessor(getter="getChannelSentAt",setter="setChannelSentAt")
* @SkipWhenEmpty() * @SkipWhenEmpty()
*/ */
@ -209,9 +220,9 @@ class Message implements ModelInterface
private $product; private $product;
/** /**
* @return string * @return string|null
*/ */
public function getId(): string public function getId(): ?string
{ {
return $this->id; return $this->id;
} }
@ -227,7 +238,7 @@ class Message implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getCreatedAt(): \DateTime public function getCreatedAt(): ?\DateTime
{ {
return $this->createdAt; return $this->createdAt;
} }
@ -243,7 +254,7 @@ class Message implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getUpdatedAt(): \DateTime public function getUpdatedAt(): ?\DateTime
{ {
return $this->updatedAt; return $this->updatedAt;
} }
@ -257,9 +268,9 @@ class Message implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getActions(): string public function getActions(): ?string
{ {
return $this->actions; return $this->actions;
} }
@ -273,9 +284,9 @@ class Message implements ModelInterface
} }
/** /**
* @return array * @return array|null
*/ */
public function getItems(): array public function getItems(): ?array
{ {
return $this->items; return $this->items;
} }
@ -289,9 +300,9 @@ class Message implements ModelInterface
} }
/** /**
* @return User * @return User|null
*/ */
public function getFrom(): User public function getFrom(): ?User
{ {
return $this->from; return $this->from;
} }
@ -307,7 +318,7 @@ class Message implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getTime(): \DateTime public function getTime(): ?\DateTime
{ {
return $this->time; return $this->time;
} }
@ -321,9 +332,9 @@ class Message implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getType(): string public function getType(): ?string
{ {
return $this->type; return $this->type;
} }
@ -337,9 +348,9 @@ class Message implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getScope(): string public function getScope(): ?string
{ {
return $this->scope; return $this->scope;
} }
@ -353,9 +364,9 @@ class Message implements ModelInterface
} }
/** /**
* @return int * @return int|null
*/ */
public function getChatId(): int public function getChatId(): ?int
{ {
return $this->chatId; return $this->chatId;
} }
@ -369,9 +380,9 @@ class Message implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getContent(): string public function getContent(): ?string
{ {
return $this->content; return $this->content;
} }
@ -385,9 +396,37 @@ class Message implements ModelInterface
} }
/** /**
* @return bool * @return string|null
*/ */
public function isRead(): bool public function getNote(): ?string
{
return $this->note;
}
/**
* @param string $note
*/
public function setNote(string $note): void
{
$this->note = $note;
}
public function getQuote(): ?Quote
{
return $this->quote ?? null;
}
public function setQuote(?Quote $quote): Message
{
$this->quote = $quote;
return $this;
}
/**
* @return bool|null
*/
public function isRead(): ?bool
{ {
return $this->isRead; return $this->isRead;
} }
@ -401,9 +440,9 @@ class Message implements ModelInterface
} }
/** /**
* @return bool * @return bool|null
*/ */
public function isEdit(): bool public function isEdit(): ?bool
{ {
return $this->isEdit; return $this->isEdit;
} }
@ -417,9 +456,9 @@ class Message implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getStatus(): string public function getStatus(): ?string
{ {
return $this->status; return $this->status;
} }
@ -433,9 +472,9 @@ class Message implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getAction(): string public function getAction(): ?string
{ {
return $this->action; return $this->action;
} }
@ -449,9 +488,9 @@ class Message implements ModelInterface
} }
/** /**
* @return Dialog * @return Dialog|null
*/ */
public function getDialog(): Dialog public function getDialog(): ?Dialog
{ {
return $this->dialog; return $this->dialog;
} }
@ -465,9 +504,9 @@ class Message implements ModelInterface
} }
/** /**
* @return int * @return int|null
*/ */
public function getChannelId(): int public function getChannelId(): ?int
{ {
return $this->channelId; return $this->channelId;
} }
@ -483,7 +522,7 @@ class Message implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getChannelSentAt(): \DateTime public function getChannelSentAt(): ?\DateTime
{ {
return $this->channelSentAt; return $this->channelSentAt;
} }
@ -497,9 +536,9 @@ class Message implements ModelInterface
} }
/** /**
* @return MessageOrder * @return MessageOrder|null
*/ */
public function getOrder(): MessageOrder public function getOrder(): ?MessageOrder
{ {
return $this->order; return $this->order;
} }
@ -513,9 +552,9 @@ class Message implements ModelInterface
} }
/** /**
* @return MessageProduct * @return MessageProduct|null
*/ */
public function getProduct(): MessageProduct public function getProduct(): ?MessageProduct
{ {
return $this->product; return $this->product;
} }

View file

@ -6,9 +6,6 @@
* MessageCost entity * MessageCost entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Message * @package RetailCrm\Mg\Bot\Model\Entity\Message
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity\Message; namespace RetailCrm\Mg\Bot\Model\Entity\Message;
@ -23,9 +20,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* MessageCost class * MessageCost class
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Message * @package RetailCrm\Mg\Bot\Model\Entity\Message
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class MessageCost implements ModelInterface class MessageCost implements ModelInterface
{ {
@ -49,7 +43,7 @@ class MessageCost implements ModelInterface
private $currency; private $currency;
/** /**
* @return float * @return float|null
*/ */
public function getValue() public function getValue()
{ {
@ -65,7 +59,7 @@ class MessageCost implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getCurrency() public function getCurrency()
{ {

View file

@ -6,9 +6,6 @@
* MessageDelivery entity * MessageDelivery entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Message * @package RetailCrm\Mg\Bot\Model\Entity\Message
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity\Message; namespace RetailCrm\Mg\Bot\Model\Entity\Message;
@ -23,9 +20,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* MessageDelivery class * MessageDelivery class
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Message * @package RetailCrm\Mg\Bot\Model\Entity\Message
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class MessageDelivery implements ModelInterface class MessageDelivery implements ModelInterface
{ {
@ -68,7 +62,7 @@ class MessageDelivery implements ModelInterface
private $comment; private $comment;
/** /**
* @return string * @return string|null
*/ */
public function getName() public function getName()
{ {
@ -84,7 +78,7 @@ class MessageDelivery implements ModelInterface
} }
/** /**
* @return MessageCost * @return MessageCost|null
*/ */
public function getPrice() public function getPrice()
{ {
@ -100,7 +94,7 @@ class MessageDelivery implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getAddress() public function getAddress()
{ {
@ -116,7 +110,7 @@ class MessageDelivery implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getComment() public function getComment()
{ {

View file

@ -6,9 +6,6 @@
* MessageOrder entity * MessageOrder entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Message * @package RetailCrm\Mg\Bot\Model\Entity\Message
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity\Message; namespace RetailCrm\Mg\Bot\Model\Entity\Message;
@ -22,9 +19,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* MessageOrder class * MessageOrder class
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Message * @package RetailCrm\Mg\Bot\Model\Entity\Message
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class MessageOrder implements ModelInterface class MessageOrder implements ModelInterface
{ {
@ -101,7 +95,7 @@ class MessageOrder implements ModelInterface
private $payments; private $payments;
/** /**
* @return string * @return string|null
*/ */
public function getNumber() public function getNumber()
{ {
@ -117,7 +111,7 @@ class MessageOrder implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getUrl() public function getUrl()
{ {
@ -133,7 +127,7 @@ class MessageOrder implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getDate() public function getDate()
{ {
@ -149,7 +143,7 @@ class MessageOrder implements ModelInterface
} }
/** /**
* @return MessageCost * @return MessageCost|null
*/ */
public function getCost() public function getCost()
{ {
@ -165,7 +159,7 @@ class MessageOrder implements ModelInterface
} }
/** /**
* @return MessageStatus * @return MessageStatus|null
*/ */
public function getStatus() public function getStatus()
{ {
@ -181,7 +175,7 @@ class MessageOrder implements ModelInterface
} }
/** /**
* @return MessageDelivery * @return MessageDelivery|null
*/ */
public function getDelivery() public function getDelivery()
{ {
@ -197,7 +191,7 @@ class MessageOrder implements ModelInterface
} }
/** /**
* @return array * @return array|null
*/ */
public function getItems() public function getItems()
{ {
@ -213,7 +207,7 @@ class MessageOrder implements ModelInterface
} }
/** /**
* @return array * @return array|null
*/ */
public function getPayments() public function getPayments()
{ {

View file

@ -4,11 +4,6 @@
* PHP version 7.1 * PHP version 7.1
* *
* MessageOrderItem entity * MessageOrderItem entity
*
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
*
* @see http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity\Message; namespace RetailCrm\Mg\Bot\Model\Entity\Message;
@ -20,11 +15,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
/** /**
* MessageOrderItem class * MessageOrderItem class
*
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
*
* @see http://help.retailcrm.pro/docs/Developers
*/ */
class MessageOrderItem implements ModelInterface class MessageOrderItem implements ModelInterface
{ {
@ -74,7 +64,7 @@ class MessageOrderItem implements ModelInterface
private $quantity; private $quantity;
/** /**
* @return string * @return string|null
*/ */
public function getName() public function getName()
{ {
@ -90,7 +80,7 @@ class MessageOrderItem implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getUrl() public function getUrl()
{ {
@ -106,7 +96,7 @@ class MessageOrderItem implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getImg() public function getImg()
{ {
@ -122,7 +112,7 @@ class MessageOrderItem implements ModelInterface
} }
/** /**
* @return MessageCost * @return MessageCost|null
*/ */
public function getPrice() public function getPrice()
{ {
@ -138,7 +128,7 @@ class MessageOrderItem implements ModelInterface
} }
/** /**
* @return MessageQuantity * @return MessageQuantity|null
*/ */
public function getQuantity() public function getQuantity()
{ {

View file

@ -6,9 +6,6 @@
* MessageOrderPaymentStatus entity * MessageOrderPaymentStatus entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Message * @package RetailCrm\Mg\Bot\Model\Entity\Message
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity\Message; namespace RetailCrm\Mg\Bot\Model\Entity\Message;
@ -22,9 +19,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* MessageOrderPaymentStatus class * MessageOrderPaymentStatus class
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Message * @package RetailCrm\Mg\Bot\Model\Entity\Message
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class MessageOrderPaymentStatus implements ModelInterface class MessageOrderPaymentStatus implements ModelInterface
{ {
@ -47,9 +41,9 @@ class MessageOrderPaymentStatus implements ModelInterface
private $payed; private $payed;
/** /**
* @return string * @return string|null
*/ */
public function getName(): string public function getName(): ?string
{ {
return $this->name; return $this->name;
} }
@ -63,9 +57,9 @@ class MessageOrderPaymentStatus implements ModelInterface
} }
/** /**
* @return bool * @return bool|null
*/ */
public function getPayed(): bool public function getPayed(): ?bool
{ {
return $this->payed; return $this->payed;
} }

View file

@ -6,9 +6,6 @@
* MessagePayment entity * MessagePayment entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Message * @package RetailCrm\Mg\Bot\Model\Entity\Message
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity\Message; namespace RetailCrm\Mg\Bot\Model\Entity\Message;
@ -22,9 +19,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* MessagePayment class * MessagePayment class
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Message * @package RetailCrm\Mg\Bot\Model\Entity\Message
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class MessagePayment implements ModelInterface class MessagePayment implements ModelInterface
{ {
@ -56,7 +50,7 @@ class MessagePayment implements ModelInterface
private $amount; private $amount;
/** /**
* @return string * @return string|null
*/ */
public function getName() public function getName()
{ {
@ -72,7 +66,7 @@ class MessagePayment implements ModelInterface
} }
/** /**
* @return MessageOrderPaymentStatus * @return MessageOrderPaymentStatus|null
*/ */
public function getStatus() public function getStatus()
{ {
@ -88,7 +82,7 @@ class MessagePayment implements ModelInterface
} }
/** /**
* @return MessageCost * @return MessageCost|null
*/ */
public function getAmount() public function getAmount()
{ {

View file

@ -6,9 +6,6 @@
* MessageProduct entity * MessageProduct entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Message * @package RetailCrm\Mg\Bot\Model\Entity\Message
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity\Message; namespace RetailCrm\Mg\Bot\Model\Entity\Message;
@ -22,9 +19,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* MessageProduct class * MessageProduct class
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Message * @package RetailCrm\Mg\Bot\Model\Entity\Message
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class MessageProduct implements ModelInterface class MessageProduct implements ModelInterface
{ {
@ -92,9 +86,9 @@ class MessageProduct implements ModelInterface
private $quantity; private $quantity;
/** /**
* @return int * @return int|null
*/ */
public function getId(): int public function getId(): ?int
{ {
return $this->id; return $this->id;
} }
@ -108,9 +102,9 @@ class MessageProduct implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getName(): string public function getName(): ?string
{ {
return $this->name; return $this->name;
} }
@ -124,9 +118,9 @@ class MessageProduct implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getArticle(): string public function getArticle(): ?string
{ {
return $this->article; return $this->article;
} }
@ -140,9 +134,9 @@ class MessageProduct implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getUrl(): string public function getUrl(): ?string
{ {
return $this->url; return $this->url;
} }
@ -156,9 +150,9 @@ class MessageProduct implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getImg(): string public function getImg(): ?string
{ {
return $this->img; return $this->img;
} }
@ -172,9 +166,9 @@ class MessageProduct implements ModelInterface
} }
/** /**
* @return MessageCost * @return MessageCost|null
*/ */
public function getCost(): MessageCost public function getCost(): ?MessageCost
{ {
return $this->cost; return $this->cost;
} }
@ -188,9 +182,9 @@ class MessageProduct implements ModelInterface
} }
/** /**
* @return MessageQuantity * @return MessageQuantity|null
*/ */
public function getQuantity(): MessageQuantity public function getQuantity(): ?MessageQuantity
{ {
return $this->quantity; return $this->quantity;
} }

View file

@ -6,9 +6,6 @@
* MessageQuantity entity * MessageQuantity entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Message * @package RetailCrm\Mg\Bot\Model\Entity\Message
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity\Message; namespace RetailCrm\Mg\Bot\Model\Entity\Message;
@ -23,9 +20,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* MessageQuantity class * MessageQuantity class
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Message * @package RetailCrm\Mg\Bot\Model\Entity\Message
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class MessageQuantity implements ModelInterface class MessageQuantity implements ModelInterface
{ {
@ -49,7 +43,7 @@ class MessageQuantity implements ModelInterface
private $unit; private $unit;
/** /**
* @return float * @return float|null
*/ */
public function getValue() public function getValue()
{ {
@ -65,7 +59,7 @@ class MessageQuantity implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getUnit() public function getUnit()
{ {

View file

@ -0,0 +1,172 @@
<?php
/**
* PHP version 7.3
*
* @category MessageQuote
* @package RetailCrm\Mg\Bot\Model\Entity\Message
*/
namespace RetailCrm\Mg\Bot\Model\Entity\Message;
use JMS\Serializer\Annotation\Accessor;
use JMS\Serializer\Annotation\SkipWhenEmpty;
use JMS\Serializer\Annotation\Type;
use RetailCrm\Mg\Bot\Model\Entity\User;
/**
* Class MessageQuote
*
* @category MessageQuote
* @package RetailCrm\Mg\Bot\Model\Entity\Message
*/
class MessageQuote
{
/**
* @var int $id
*
* @Type("int")
* @Accessor(getter="getId",setter="setId")
* @SkipWhenEmpty()
*/
private $id;
/**
* @var string $type
*
* @Type("string")
* @Accessor(getter="getType",setter="setType")
* @SkipWhenEmpty()
*/
private $type;
/**
* @var User $from
*
* @Type("RetailCrm\Mg\Bot\Model\Entity\User")
* @Accessor(getter="getFrom",setter="setFrom")
* @SkipWhenEmpty()
*/
private $from;
/**
* @var \DateTime $time
*
* @Type("DateTime<'Y-m-d\TH:i:sP'>")
* @Accessor(getter="getTime",setter="setTime")
*/
private $time;
/**
* @var string $content
*
* @Type("string")
* @Accessor(getter="getContent",setter="setContent")
*/
private $content;
/**
* @var object[] $items
*
* @Type("array")
* @Accessor(getter="getItems",setter="setItems")
* @SkipWhenEmpty()
*/
private $items;
/**
* @return int
*/
public function getId(): int
{
return $this->id;
}
/**
* @param int $id
*/
public function setId(int $id): void
{
$this->id = $id;
}
/**
* @return string|null
*/
public function getType(): ?string
{
return $this->type;
}
/**
* @param string $type
*/
public function setType(string $type): void
{
$this->type = $type;
}
/**
* @return User|null
*/
public function getFrom(): ?User
{
return $this->from;
}
/**
* @param User $from
*/
public function setFrom(User $from): void
{
$this->from = $from;
}
/**
* @return \DateTime
*/
public function getTime(): ?\DateTime
{
return $this->time;
}
/**
* @param \DateTime $time
*/
public function setTime(\DateTime $time): void
{
$this->time = $time;
}
/**
* @return string
*/
public function getContent(): string
{
return $this->content;
}
/**
* @param string $content
*/
public function setContent(string $content): void
{
$this->content = $content;
}
/**
* @return object[]|null
*/
public function getItems(): ?array
{
return $this->items;
}
/**
* @param object[] $items
*/
public function setItems(array $items): void
{
$this->items = $items;
}
}

View file

@ -6,9 +6,6 @@
* MessageStatus entity * MessageStatus entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Message * @package RetailCrm\Mg\Bot\Model\Entity\Message
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity\Message; namespace RetailCrm\Mg\Bot\Model\Entity\Message;
@ -22,9 +19,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* MessageStatus class * MessageStatus class
* *
* @package RetailCrm\Mg\Bot\Model\Entity\Message * @package RetailCrm\Mg\Bot\Model\Entity\Message
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class MessageStatus implements ModelInterface class MessageStatus implements ModelInterface
{ {
@ -47,9 +41,9 @@ class MessageStatus implements ModelInterface
private $name; private $name;
/** /**
* @return string * @return string|null
*/ */
public function getCode(): string public function getCode(): ?string
{ {
return $this->code; return $this->code;
} }
@ -63,9 +57,9 @@ class MessageStatus implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getName(): string public function getName(): ?string
{ {
return $this->name; return $this->name;
} }

View file

@ -0,0 +1,106 @@
<?php
namespace RetailCrm\Mg\Bot\Model\Entity\Message;
use DateTime;
use JMS\Serializer\Annotation as Serializer;
use JMS\Serializer\Annotation\Accessor;
use JMS\Serializer\Annotation\SkipWhenEmpty;
use JMS\Serializer\Annotation\Type;
use RetailCrm\Mg\Bot\Model\Entity\User;
use RetailCrm\Mg\Bot\Model\ModelInterface;
class Quote implements ModelInterface
{
/**
* @var int
*
* @Type("integer")
*/
private $id;
/**
* @var string
*
* @Type("string")
*/
private $type;
/**
* @var User
*
* @Type("RetailCrm\Mg\Bot\Model\Entity\User")
*/
private $from;
/**
* @var DateTime $time
*
* @Type("DateTime<'Y-m-d\TH:i:sP'>")
* @Accessor(getter="getTime",setter="setTime")
* @SkipWhenEmpty()
*/
private $time;
/**
* @var string
*
* @Type("string")
*/
private $content;
public function getId(): int
{
return $this->id;
}
public function setId(int $id): Quote
{
$this->id = $id;
return $this;
}
public function getType(): string
{
return $this->type;
}
public function setType(string $type): Quote
{
$this->type = $type;
return $this;
}
public function getFrom(): User
{
return $this->from;
}
public function setFrom(User $from): Quote
{
$this->from = $from;
return $this;
}
public function getTime(): DateTime
{
return $this->time;
}
public function setTime(DateTime $time): Quote
{
$this->time = $time;
return $this;
}
public function getContent(): string
{
return $this->content;
}
public function setContent(string $content): Quote
{
$this->content = $content;
return $this;
}
}

View file

@ -0,0 +1,74 @@
<?php
/**
* PHP version 7.1
*
* Suggestion entity
*
* @package RetailCrm\Mg\Bot\Model\Entity\Message
*/
namespace RetailCrm\Mg\Bot\Model\Entity\Message;
use JMS\Serializer\Annotation\Accessor;
use JMS\Serializer\Annotation\SkipWhenEmpty;
use JMS\Serializer\Annotation\Type;
use RetailCrm\Mg\Bot\Model\ModelInterface;
/**
* Suggestion class
*
* @package RetailCrm\Mg\Bot\Model\Entity\Message
*/
class Suggestion implements ModelInterface
{
/**
* @var string $title
*
* @Type("string")
* @Accessor(getter="getTitle",setter="setTitle")
* @SkipWhenEmpty()
*/
private $title;
/**
* @var string $type
*
* @Type("string")
* @Accessor(getter="getType",setter="setType")
* @SkipWhenEmpty()
*/
private $type;
/**
* @return string|null
*/
public function getTitle(): ?string
{
return $this->title;
}
/**
* @param string $title
*/
public function setTitle(string $title)
{
$this->title = $title;
}
/**
* @return string|null
*/
public function getType(): ?string
{
return $this->type;
}
/**
* @param string $type
*/
public function setType(string $type)
{
$this->type = $type;
}
}

View file

@ -0,0 +1,50 @@
<?php
/**
* PHP version 7.1
*
* TransportAttachments entity
*
* @package RetailCrm\Mg\Bot\Model\Entity\Message
*/
namespace RetailCrm\Mg\Bot\Model\Entity\Message;
use JMS\Serializer\Annotation\Accessor;
use JMS\Serializer\Annotation\SkipWhenEmpty;
use JMS\Serializer\Annotation\Type;
use RetailCrm\Mg\Bot\Model\ModelInterface;
/**
* TransportAttachments class
*
* @package RetailCrm\Mg\Bot\Model\Entity\Message
*/
class TransportAttachments implements ModelInterface
{
/**
* @var array $suggestions
*
* @Type("array")
* @Accessor(getter="getSuggestions",setter="setSuggestions")
* @SkipWhenEmpty()
*/
private $suggestions;
/**
* @param array $suggestions
*/
public function setSuggestions(array $suggestions): void
{
$this->suggestions = $suggestions;
}
/**
* @return array
*/
public function getSuggestions(): array
{
return $this->suggestions;
}
}

View file

@ -6,9 +6,6 @@
* Responsible entity * Responsible entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity * @package RetailCrm\Mg\Bot\Model\Entity
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity; namespace RetailCrm\Mg\Bot\Model\Entity;
@ -22,9 +19,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* Responsible class * Responsible class
* *
* @package RetailCrm\Mg\Bot\Model\Entity * @package RetailCrm\Mg\Bot\Model\Entity
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class Responsible implements ModelInterface class Responsible implements ModelInterface
{ {
@ -56,9 +50,18 @@ class Responsible implements ModelInterface
private $type; private $type;
/** /**
* @return string * @var string $externalId
*
* @Type("string")
* @Accessor(getter="getExternalId",setter="setExternalId")
* @SkipWhenEmpty()
*/ */
public function getAssignedAt(): string private $externalId;
/**
* @return string|null
*/
public function getAssignedAt(): ?string
{ {
return $this->assignedAt; return $this->assignedAt;
} }
@ -72,9 +75,9 @@ class Responsible implements ModelInterface
} }
/** /**
* @return int * @return int|null
*/ */
public function getId(): int public function getId(): ?int
{ {
return $this->id; return $this->id;
} }
@ -88,9 +91,9 @@ class Responsible implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getType(): string public function getType(): ?string
{ {
return $this->type; return $this->type;
} }
@ -102,4 +105,20 @@ class Responsible implements ModelInterface
{ {
$this->type = $type; $this->type = $type;
} }
/**
* @return string|null
*/
public function getExternalId(): ?string
{
return $this->externalId;
}
/**
* @param string $externalId
*/
public function setExternalId(string $externalId): void
{
$this->externalId = $externalId;
}
} }

View file

@ -0,0 +1,78 @@
<?php
/**
* PHP version 7.1
*
* Tag entity
*
* @package RetailCrm\Mg\Bot\Model\Entity
*/
namespace RetailCrm\Mg\Bot\Model\Entity;
use JMS\Serializer\Annotation\Accessor;
use JMS\Serializer\Annotation\SkipWhenEmpty;
use JMS\Serializer\Annotation\Type;
use RetailCrm\Mg\Bot\Model\ModelInterface;
use Symfony\Component\Validator\Constraints as Assert;
/**
* Tag class
*
* @package RetailCrm\Mg\Bot\Model\Entity
*/
class Tag implements ModelInterface
{
/**
* @var string $name
*
* @Type("string")
* @Accessor(getter="getName",setter="setName")
*
* @Assert\NotBlank
*/
private $name;
/**
* @var string $colorCode
*
* @Type("string")
* @Accessor(getter="getColorCode",setter="setColorCode")
* @SkipWhenEmpty()
*/
private $colorCode;
/**
* @return string
*/
public function getName(): string
{
return $this->name;
}
/**
* @param string $name
* @return void
*/
public function setName(string $name): void
{
$this->name = $name;
}
/**
* @return string|null
*/
public function getColorCode(): ?string
{
return $this->colorCode;
}
/**
* @param string $colorCode
* @return void
*/
public function setColorCode(string $colorCode): void
{
$this->colorCode = $colorCode;
}
}

View file

@ -0,0 +1,385 @@
<?php
/**
* PHP version 7.1
*
* Template entity
*
* @package RetailCrm\Mg\Bot\Model\Entity\Template
*/
namespace RetailCrm\Mg\Bot\Model\Entity\Template;
use RetailCrm\Mg\Bot\Model\ModelInterface;
use JMS\Serializer\Annotation\Accessor;
use JMS\Serializer\Annotation\SkipWhenEmpty;
use JMS\Serializer\Annotation\Type;
/**
* Template class
*
* @package RetailCrm\Mg\Bot\Model\Entity\Template
*/
class Template implements ModelInterface
{
/**
* @var int $id
*
* @Type("int")
* @Accessor(getter="getId",setter="setId")
*/
private $id;
/**
* @var string $code
*
* @Type("string")
* @Accessor(getter="getCode",setter="setCode")
*/
private $code;
/**
* @var int $channelId
*
* @Type("int")
* @Accessor(getter="getChannelId",setter="setChannelId")
*/
private $channelId;
/**
* @var string $name
*
* @Type("string")
* @Accessor(getter="getName",setter="setName")
*/
private $name;
/**
* @var bool $enabled
*
* @Type("bool")
* @Accessor(getter="getEnabled",setter="setEnabled")
*/
private $enabled;
/**
* @var string $type
*
* @Type("string")
* @Accessor(getter="getType",setter="setType")
*/
private $type;
/**
* @var array<string, string> $template
*
* @Type("array")
* @Accessor(getter="getTemplate",setter="setTemplate")
*/
private $template;
/**
* @var string $body
*
* @Type("string")
* @Accessor(getter="getBody",setter="setBody")
*/
private $body;
/**
* @var string $lang
*
* @Type("string")
* @Accessor(getter="getLang",setter="setLang")
*/
private $lang;
/**
* @var string $category
*
* @Type("string")
* @Accessor(getter="getCategory",setter="setCategory")
*/
private $category;
/**
* @var string $verificationStatus
*
* @Type("string")
* @Accessor(getter="getVerificationStatus",setter="setVerificationStatus")
*/
private $verificationStatus;
/**
* @var string $rejectionReason
*
* @Type("string")
* @Accessor(getter="getRejectionReason",setter="setRejectionReason")
*/
private $rejectionReason;
/**
* @var string $quality
*
* @Type("string")
* @Accessor(getter="getQuality",setter="setQuality")
* @SkipWhenEmpty()
*/
private $quality;
/**
* @var array<string, string> $header
*
* @Type("array")
* @Accessor(getter="getHeader",setter="setHeader")
* @SkipWhenEmpty()
*/
private $header;
/**
* @var array<string, array<string, string>> $buttons
*
* @Type("array")
* @Accessor(getter="getButtons",setter="setButtons")
* @SkipWhenEmpty()
*/
private $buttons;
/**
* @return int|null
*/
public function getId(): ?int
{
return $this->id;
}
/**
* @param int $id
*/
public function setId(int $id): void
{
$this->id = $id;
}
/**
* @return string|null
*/
public function getCode(): ?string
{
return $this->code;
}
/**
* @param string $code
*/
public function setCode(string $code): void
{
$this->code = $code;
}
/**
* @return int|null
*/
public function getChannelId(): ?int
{
return $this->channelId;
}
/**
* @param int $channelId
*/
public function setChannelId(int $channelId): void
{
$this->channelId = $channelId;
}
/**
* @return string|null
*/
public function getName(): ?string
{
return $this->name;
}
/**
* @param string $name
*/
public function setName(string $name): void
{
$this->name = $name;
}
/**
* @return bool|null
*/
public function getEnabled(): ?bool
{
return $this->enabled;
}
/**
* @param bool $enabled
*/
public function setEnabled(bool $enabled): void
{
$this->enabled = $enabled;
}
/**
* @return string|null
*/
public function getType(): ?string
{
return $this->type;
}
/**
* @param string $type
*/
public function setType(string $type): void
{
$this->type = $type;
}
/**
* @return array<string, string>|null
*/
public function getTemplate(): ?array
{
return $this->template;
}
/**
* @param array<string, string> $template
*/
public function setTemplate(array $template): void
{
$this->template = $template;
}
/**
* @return string|null
*/
public function getBody(): ?string
{
return $this->body;
}
/**
* @param string $body
*/
public function setBody(string $body): void
{
$this->body = $body;
}
/**
* @return string|null
*/
public function getVerificationStatus(): ?string
{
return $this->verificationStatus;
}
/**
* @param string $verificationStatus
*/
public function setVerificationStatus(string $verificationStatus): void
{
$this->verificationStatus = $verificationStatus;
}
/**
* @return string|null
*/
public function getLang(): ?string
{
return $this->lang;
}
/**
* @param string $lang
*/
public function setLang(string $lang): void
{
$this->lang = $lang;
}
/**
* @return string|null
*/
public function getCategory(): ?string
{
return $this->category;
}
/**
* @param string $category
*/
public function setCategory(string $category): void
{
$this->category = $category;
}
/**
* @return string|null
*/
public function getRejectionReason(): ?string
{
return $this->rejectionReason;
}
/**
* @param string $rejectionReason
*/
public function setRejectionReason(string $rejectionReason): void
{
$this->rejectionReason = $rejectionReason;
}
/**
* @return string|null
*/
public function getQuality(): ?string
{
return $this->quality;
}
public function setQuality(string $quality): void
{
$this->quality = $quality;
}
/**
* @return array<string, string>|null
*/
public function getHeader(): ?array
{
return $this->header;
}
/**
* @param array<string, string> $header
*/
public function setHeader(array $header): void
{
$this->header = $header;
}
/**
* @return array<string, array<string, string>>|null
*/
public function getButtons(): ?array
{
return $this->buttons;
}
/**
* @param array<string, array<string, string>> $buttons
*/
public function setButtons(array $buttons): void
{
$this->buttons = $buttons;
}
}

View file

@ -0,0 +1,74 @@
<?php
/**
* PHP version 7.1
*
* TemplateAttachment entity
*
* @package RetailCrm\Mg\Bot\Model\Entity\Template
*/
namespace RetailCrm\Mg\Bot\Model\Entity\Template;
use JMS\Serializer\Annotation\Accessor;
use JMS\Serializer\Annotation\SkipWhenEmpty;
use JMS\Serializer\Annotation\Type;
use RetailCrm\Mg\Bot\Model\ModelInterface;
/**
* TemplateAttachment class
*
* @package RetailCrm\Mg\Bot\Model\Entity\Template
*/
class TemplateAttachment implements ModelInterface
{
/**
* @var string $id
*
* @Type("string")
* @Accessor(getter="getId",setter="setId")
*/
private $id;
/**
* @var string $caption
*
* @Type("string")
* @Accessor(getter="getCaption",setter="setCaption")
* @SkipWhenEmpty()
*/
private $caption;
/**
* @return string|null
*/
public function getId(): ?string
{
return $this->id;
}
/**
* @param string $id
* @return void
*/
public function setId(string $id): void
{
$this->id = $id;
}
/**
* @return string|null
*/
public function getCaption(): ?string
{
return $this->caption;
}
/**
* @param string $caption
*/
public function setCaption(string $caption): void
{
$this->caption = $caption;
}
}

View file

@ -0,0 +1,120 @@
<?php
/**
* PHP version 7.1
*
* TemplateVariables entity
*
* @package RetailCrm\Mg\Bot\Model\Entity\Template
*/
namespace RetailCrm\Mg\Bot\Model\Entity\Template;
use JMS\Serializer\Annotation\Accessor;
use JMS\Serializer\Annotation\SkipWhenEmpty;
use JMS\Serializer\Annotation\Type;
use RetailCrm\Mg\Bot\Model\ModelInterface;
/**
* TemplateVariables class
*
* @package RetailCrm\Mg\Bot\Model\Entity\Template
*/
class TemplateVariables implements ModelInterface
{
/**
* @var array<string, string> $header
*
* @Type("array")
* @Accessor(getter="getHeader",setter="setHeader")
*/
private $header;
/** @var array<TemplateAttachment> $attachments
*
* @Type("array")
* @Accessor(getter="getAttachments",setter="setAttachments")
*/
private $attachments;
/**
* @var array<string, string> $body
*
* @Type("array")
* @Accessor(getter="getBody",setter="setBody")
*/
private $body;
/**
* @var array<string, array<string, string>> $buttons
*
* @Type("array")
* @Accessor(getter="getButtons",setter="setButtons")
*/
private $buttons;
/**
* @return array<string, string>|null
*/
public function getHeader(): ?array
{
return $this->header;
}
/**
* @param array<string, string> $header
*/
public function setHeader(array $header): void
{
$this->header = $header;
}
/**
* @return array<string, string>|null
*/
public function getBody(): ?array
{
return $this->body;
}
/**
* @param array<string, string> $body
*/
public function setBody(array $body): void
{
$this->body = $body;
}
/**
* @return array<string, array<string, string>>|null
*/
public function getButtons(): ?array
{
return $this->buttons;
}
/**
* @param array<string, array<string, string>> $buttons
*/
public function setButtons(array $buttons): void
{
$this->buttons = $buttons;
}
/**
* @return TemplateAttachment[]|null
*/
public function getAttachments(): ?array
{
return $this->attachments;
}
/**
* @param TemplateAttachment[] $attachments
*/
public function setAttachments(array $attachments): void
{
$this->attachments = $attachments;
}
}

View file

@ -6,9 +6,6 @@
* User entity * User entity
* *
* @package RetailCrm\Mg\Bot\Model\Entity * @package RetailCrm\Mg\Bot\Model\Entity
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Entity; namespace RetailCrm\Mg\Bot\Model\Entity;
@ -23,9 +20,6 @@ use JMS\Serializer\Annotation\Type;
* User class * User class
* *
* @package RetailCrm\Mg\Bot\Model\Entity * @package RetailCrm\Mg\Bot\Model\Entity
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class User implements ModelInterface class User implements ModelInterface
{ {
@ -40,7 +34,7 @@ class User implements ModelInterface
/** /**
* @var \DateTime $createdAt * @var \DateTime $createdAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getCreatedAt",setter="setCreatedAt") * @Accessor(getter="getCreatedAt",setter="setCreatedAt")
*/ */
private $createdAt; private $createdAt;
@ -48,7 +42,7 @@ class User implements ModelInterface
/** /**
* @var \DateTime $updatedAt * @var \DateTime $updatedAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getUpdatedAt",setter="setUpdatedAt") * @Accessor(getter="getUpdatedAt",setter="setUpdatedAt")
* @SkipWhenEmpty() * @SkipWhenEmpty()
*/ */
@ -142,16 +136,25 @@ class User implements ModelInterface
/** /**
* @var \DateTime $revokedAt * @var \DateTime $revokedAt
* *
* @Type("DateTime<'Y-m-d\TH:i:s\.u\Z'>") * @Type("DateTime<'Y-m-d\TH:i:s\.u\Z', null, ['Y-m-d\TH:i:s\.u\Z', 'Y-m-d\TH:i:s\Z']>")
* @Accessor(getter="getRevokedAt",setter="setRevokedAt") * @Accessor(getter="getRevokedAt",setter="setRevokedAt")
* @SkipWhenEmpty() * @SkipWhenEmpty()
*/ */
private $revokedAt; private $revokedAt;
/** /**
* @return string * @var bool $isSystem
*
* @Type("bool")
* @Accessor(getter="isSystem",setter="setIsSystem")
* @SkipWhenEmpty()
*/ */
public function getId(): string private $isSystem;
/**
* @return string|null
*/
public function getId(): ?string
{ {
return $this->id; return $this->id;
} }
@ -167,7 +170,7 @@ class User implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getCreatedAt(): \DateTime public function getCreatedAt(): ?\DateTime
{ {
return $this->createdAt; return $this->createdAt;
} }
@ -183,7 +186,7 @@ class User implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getUpdatedAt(): \DateTime public function getUpdatedAt(): ?\DateTime
{ {
return $this->updatedAt; return $this->updatedAt;
} }
@ -197,9 +200,9 @@ class User implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getExternalId(): string public function getExternalId(): ?string
{ {
return $this->externalId; return $this->externalId;
} }
@ -213,9 +216,9 @@ class User implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getType(): string public function getType(): ?string
{ {
return $this->type; return $this->type;
} }
@ -229,9 +232,9 @@ class User implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getAvatar(): string public function getAvatar(): ?string
{ {
return $this->avatar; return $this->avatar;
} }
@ -245,9 +248,9 @@ class User implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getName(): string public function getName(): ?string
{ {
return $this->name; return $this->name;
} }
@ -261,9 +264,9 @@ class User implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getUsername(): string public function getUsername(): ?string
{ {
return $this->username; return $this->username;
} }
@ -277,9 +280,9 @@ class User implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getFirstName(): string public function getFirstName(): ?string
{ {
return $this->firstName; return $this->firstName;
} }
@ -293,9 +296,9 @@ class User implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getLastName(): string public function getLastName(): ?string
{ {
return $this->lastName; return $this->lastName;
} }
@ -309,9 +312,9 @@ class User implements ModelInterface
} }
/** /**
* @return bool * @return bool|null
*/ */
public function isActive(): bool public function isActive(): ?bool
{ {
return $this->isActive; return $this->isActive;
} }
@ -325,9 +328,9 @@ class User implements ModelInterface
} }
/** /**
* @return bool * @return bool|null
*/ */
public function isOnline(): bool public function isOnline(): ?bool
{ {
return $this->isOnline; return $this->isOnline;
} }
@ -343,7 +346,7 @@ class User implements ModelInterface
/** /**
* @return \DateTime * @return \DateTime
*/ */
public function getRevokedAt(): \DateTime public function getRevokedAt(): ?\DateTime
{ {
return $this->revokedAt; return $this->revokedAt;
} }
@ -355,4 +358,20 @@ class User implements ModelInterface
{ {
$this->revokedAt = $revokedAt; $this->revokedAt = $revokedAt;
} }
/**
* @return bool|null
*/
public function isSystem(): ?bool
{
return $this->isSystem;
}
/**
* @param bool $isSystem
*/
public function setIsSystem(bool $isSystem): void
{
$this->isSystem = $isSystem;
}
} }

View file

@ -0,0 +1,154 @@
<?php
/**
* PHP version 7.1
*
* Utm entity
*
* @package Retailcrm\Mg\Bot\Model\Entity
*/
namespace RetailCrm\Mg\Bot\Model\Entity;
use JMS\Serializer\Annotation\Accessor;
use JMS\Serializer\Annotation\SkipWhenEmpty;
use JMS\Serializer\Annotation\Type;
use RetailCrm\Mg\Bot\Model\ModelInterface;
/**
* Utm class
*
* @package RetailCrm\Mg\Bot\Model\Entity
*/
class Utm implements ModelInterface
{
/**
* @var string $campaign
*
* @Type("string")
* @Accessor(getter="getCampaign",setter="setCampaign")
* @SkipWhenEmpty()
*/
private $campaign;
/**
* @var string $content
*
* @Type("string")
* @Accessor(getter="getContent",setter="setContent")
* @SkipWhenEmpty()
*/
private $content;
/**
* @var string $medium
*
* @Type("string")
* @Accessor(getter="getMedium",setter="setMedium")
* @SkipWhenEmpty()
*/
private $medium;
/**
* @var string $source
*
* @Type("string")
* @Accessor(getter="getSource",setter="setSource")
* @SkipWhenEmpty()
*/
private $source;
/**
* @var string $term
*
* @Type("string")
* @Accessor(getter="getTerm",setter="setTerm")
* @SkipWhenEmpty()
*/
private $term;
/**
* @return string|null
*/
public function getCampaign(): ?string
{
return $this->campaign;
}
/**
* @param string $campaign
* @return void
*/
public function setCampaign(string $campaign): void
{
$this->campaign = $campaign;
}
/**
* @return string|null
*/
public function getContent(): ?string
{
return $this->content;
}
/**
* @param string $content
* @return void
*/
public function setContent(string $content): void
{
$this->content = $content;
}
/**
* @return string|null
*/
public function getMedium(): ?string
{
return $this->medium;
}
/**
* @param string $medium
* @return void
*/
public function setMedium(string $medium): void
{
$this->medium = $medium;
}
/**
* @return string|null
*/
public function getSource(): ?string
{
return $this->source;
}
/**
* @param string $source
* @return void
*/
public function setSource(string $source): void
{
$this->source = $source;
}
/**
* @return string|null
*/
public function getTerm(): ?string
{
return $this->term;
}
/**
* @param string $term
* @return void
*/
public function setTerm(string $term): void
{
$this->term = $term;
}
}

View file

@ -6,9 +6,6 @@
* ModelAdapter * ModelAdapter
* *
* @package RetailCrm\Mg\Bot\Adapter * @package RetailCrm\Mg\Bot\Adapter
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model; namespace RetailCrm\Mg\Bot\Model;
@ -21,9 +18,6 @@ use RetailCrm\Common\Serializer;
* Class ModelAdapter * Class ModelAdapter
* *
* @package RetailCrm\Mg\Bot\Adapter * @package RetailCrm\Mg\Bot\Adapter
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class ModelAdapter class ModelAdapter
{ {

View file

@ -5,14 +5,10 @@
* ModelInterface * ModelInterface
* *
* @package RetailCrm\Mg\Bot\Model * @package RetailCrm\Mg\Bot\Model
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model; namespace RetailCrm\Mg\Bot\Model;
interface ModelInterface interface ModelInterface
{ {
} }

View file

@ -6,9 +6,6 @@
* Bots Request * Bots Request
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Request; namespace RetailCrm\Mg\Bot\Model\Request;
@ -22,13 +19,11 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* BotsRequest class * BotsRequest class
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class BotsRequest implements ModelInterface class BotsRequest implements ModelInterface
{ {
use CommonFields; use CommonFields;
use PageLimit;
/** /**
* @Type("int") * @Type("int")

View file

@ -6,9 +6,6 @@
* Channels list request * Channels list request
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Request; namespace RetailCrm\Mg\Bot\Model\Request;
@ -22,13 +19,11 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* ChannelsRequest class * ChannelsRequest class
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class ChannelsRequest implements ModelInterface class ChannelsRequest implements ModelInterface
{ {
use CommonFields; use CommonFields;
use PageLimit;
/** /**
* @Type("array") * @Type("array")

View file

@ -6,9 +6,6 @@
* Chats list request * Chats list request
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Request; namespace RetailCrm\Mg\Bot\Model\Request;
@ -22,13 +19,12 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* ChatsRequest class * ChatsRequest class
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class ChatsRequest implements ModelInterface class ChatsRequest implements ModelInterface
{ {
use CommonFields; use CommonFields;
use PageLimit;
use IncludeMassCommunication;
/** /**
* @Type("int") * @Type("int")
@ -44,6 +40,24 @@ class ChatsRequest implements ModelInterface
*/ */
private $channelType; private $channelType;
/**
* @var int $customerId
*
* @Type("int")
* @Accessor(getter="getCustomerId",setter="setCustomerId")
* @SkipWhenEmpty()
*/
private $customerId;
/**
* @var int $sinceId
*
* @Type("int")
* @Accessor(getter="getSinceId",setter="setSinceId")
* @SkipWhenEmpty()
*/
private $sinceId;
/** /**
* @return int * @return int
*/ */
@ -75,4 +89,38 @@ class ChatsRequest implements ModelInterface
{ {
$this->channelType = $channelType; $this->channelType = $channelType;
} }
/**
* @return int|null
*/
public function getCustomerId(): ?int
{
return $this->customerId;
}
/**
* @param int $customerId
* @return void
*/
public function setCustomerId($customerId)
{
$this->customerId = $customerId;
}
/**
* @return int|null
*/
public function getSinceId()
{
return $this->sinceId;
}
/**
* @param int $sinceId
* @return void
*/
public function setSinceId($sinceId)
{
$this->sinceId = $sinceId;
}
} }

View file

@ -6,9 +6,6 @@
* Edit Command Request * Edit Command Request
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Request; namespace RetailCrm\Mg\Bot\Model\Request;
@ -22,9 +19,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* CommandEditRequest class * CommandEditRequest class
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class CommandEditRequest implements ModelInterface class CommandEditRequest implements ModelInterface
{ {

View file

@ -6,9 +6,6 @@
* Commands list request * Commands list request
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Request; namespace RetailCrm\Mg\Bot\Model\Request;
@ -22,9 +19,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* CommandsRequest class * CommandsRequest class
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class CommandsRequest implements ModelInterface class CommandsRequest implements ModelInterface
{ {

View file

@ -6,9 +6,6 @@
* Common fields * Common fields
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Request; namespace RetailCrm\Mg\Bot\Model\Request;
@ -21,9 +18,6 @@ use JMS\Serializer\Annotation\Type;
* CommonFields trait * CommonFields trait
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
trait CommonFields trait CommonFields
{ {
@ -55,9 +49,9 @@ trait CommonFields
private $until; private $until;
/** /**
* @return int * @return int|null
*/ */
public function getId() public function getId(): ?int
{ {
return $this->id; return $this->id;
} }

View file

@ -6,9 +6,6 @@
* Customers list request * Customers list request
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Request; namespace RetailCrm\Mg\Bot\Model\Request;
@ -22,13 +19,11 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* CustomersRequest class * CustomersRequest class
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class CustomersRequest implements ModelInterface class CustomersRequest implements ModelInterface
{ {
use CommonFields; use CommonFields;
use PageLimit;
/** /**
* @Type("string") * @Type("string")

View file

@ -6,9 +6,6 @@
* Dialog assign request * Dialog assign request
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Request; namespace RetailCrm\Mg\Bot\Model\Request;
@ -23,9 +20,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* DialogAssignRequest class * DialogAssignRequest class
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class DialogAssignRequest implements ModelInterface class DialogAssignRequest implements ModelInterface
{ {

View file

@ -0,0 +1,78 @@
<?php
/**
* PHP version 7.1
*
* Dialog add or delete tag request
*
* @package RetailCrm\Mg\Bot\Model\Request
*/
namespace RetailCrm\Mg\Bot\Model\Request;
use JMS\Serializer\Annotation\Accessor;
use JMS\Serializer\Annotation\SkipWhenEmpty;
use JMS\Serializer\Annotation\Type;
use RetailCrm\Mg\Bot\Model\Entity\Tag;
use RetailCrm\Mg\Bot\Model\ModelInterface;
/**
* DialogTagRequest class
*
* @package RetailCrm\Mg\Bot\Model\Request
*/
class DialogTagRequest implements ModelInterface
{
/**
* @var int $dialogId
*
* @Type("int")
* @Accessor(getter="getDialogId", setter="setDialogId")
* @SkipWhenEmpty()
*/
private $dialogId;
/**
* @var Tag[] $tags
*
* @Type("array")
* @Accessor(getter="getTags", setter="setTags")
* @SkipWhenEmpty()
*/
private $tags;
/**
* @return int
*/
public function getDialogId(): int
{
return $this->dialogId;
}
/**
* @param int $dialogId
* @return void
*/
public function setDialogId(int $dialogId): void
{
$this->dialogId = $dialogId;
}
/**
* @return Tag[]
*/
public function getTags(): array
{
return $this->tags;
}
/**
* @param Tag[] $tags
* @return void
*/
public function setTags(array $tags): void
{
$this->tags = $tags;
}
}

View file

@ -6,9 +6,6 @@
* Dialogs list request * Dialogs list request
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Request; namespace RetailCrm\Mg\Bot\Model\Request;
@ -22,13 +19,21 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* DialogsRequest class * DialogsRequest class
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class DialogsRequest implements ModelInterface class DialogsRequest implements ModelInterface
{ {
use CommonFields; use CommonFields;
use PageLimit;
use IncludeMassCommunication;
/**
* @var int $sinceId
*
* @Type("int")
* @Accessor(getter="getSinceId",setter="setSinceId")
* @SkipWhenEmpty
*/
private $sinceId;
/** /**
* @var int $chatId * @var int $chatId
@ -75,6 +80,22 @@ class DialogsRequest implements ModelInterface
*/ */
private $assign; private $assign;
/**
* @return int
*/
public function getSinceId()
{
return $this->sinceId;
}
/**
* @param int $sinceId
*/
public function setSinceId(int $sinceId)
{
$this->sinceId = $sinceId;
}
/** /**
* @return int * @return int
*/ */

View file

@ -0,0 +1,48 @@
<?php
/**
* PHP version 7.1
*
* Common fields
*
* @package RetailCrm\Mg\Bot\Model\Request
*/
namespace RetailCrm\Mg\Bot\Model\Request;
use JMS\Serializer\Annotation\Accessor;
use JMS\Serializer\Annotation\SkipWhenEmpty;
use JMS\Serializer\Annotation\Type;
/**
* CommonFields trait
*
* @package RetailCrm\Mg\Bot\Model\Request
*/
trait IncludeMassCommunication
{
/**
* @var int $includeMassCommunication
*
* @Type("int")
* @Accessor(getter="getIncludeMassCommunication",setter="setIncludeMassCommunication")
* @SkipWhenEmpty
*/
private $includeMassCommunication;
/**
* @return int
*/
public function getIncludeMassCommunication()
{
return $this->includeMassCommunication;
}
/**
* @param int $includeMassCommunication
*/
public function setIncludeMassCommunication(?int $includeMassCommunication): void
{
$this->includeMassCommunication = $includeMassCommunication;
}
}

View file

@ -6,9 +6,6 @@
* Bot info request * Bot info request
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Request; namespace RetailCrm\Mg\Bot\Model\Request;
@ -22,9 +19,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* InfoRequest class * InfoRequest class
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class InfoRequest implements ModelInterface class InfoRequest implements ModelInterface
{ {

View file

@ -6,9 +6,6 @@
* Members list request * Members list request
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Request; namespace RetailCrm\Mg\Bot\Model\Request;
@ -22,12 +19,12 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* MembersRequest class * MembersRequest class
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class MembersRequest implements ModelInterface class MembersRequest implements ModelInterface
{ {
use CommonFields;
use PageLimit;
/** /**
* @var int $chatId * @var int $chatId
* *
@ -55,24 +52,6 @@ class MembersRequest implements ModelInterface
*/ */
private $state; private $state;
/**
* @var string $since
*
* @Type("string")
* @Accessor(getter="getSince",setter="setSince")
* @SkipWhenEmpty
*/
private $since;
/**
* @var string $until
*
* @Type("string")
* @Accessor(getter="getUntil",setter="setUntil")
* @SkipWhenEmpty
*/
private $until;
/** /**
* @return int * @return int
*/ */
@ -120,36 +99,4 @@ class MembersRequest implements ModelInterface
{ {
$this->state = $state; $this->state = $state;
} }
/**
* @return string
*/
public function getSince()
{
return $this->since;
}
/**
* @param string $since
*/
public function setSince(string $since)
{
$this->since = $since;
}
/**
* @return string
*/
public function getUntil()
{
return $this->until;
}
/**
* @param string $until
*/
public function setUntil(string $until)
{
$this->until = $until;
}
} }

View file

@ -6,9 +6,6 @@
* Messages edit request * Messages edit request
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Request; namespace RetailCrm\Mg\Bot\Model\Request;
@ -22,9 +19,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* MessageEditRequest class * MessageEditRequest class
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class MessageEditRequest implements ModelInterface class MessageEditRequest implements ModelInterface
{ {
@ -47,9 +41,9 @@ class MessageEditRequest implements ModelInterface
private $content; private $content;
/** /**
* @return int * @return int|null
*/ */
public function getId() public function getId(): ?int
{ {
return $this->id; return $this->id;
} }

View file

@ -6,9 +6,6 @@
* Messages send request * Messages send request
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Request; namespace RetailCrm\Mg\Bot\Model\Request;
@ -19,6 +16,7 @@ use JMS\Serializer\Annotation\SkipWhenEmpty;
use JMS\Serializer\Annotation\Type; use JMS\Serializer\Annotation\Type;
use RetailCrm\Mg\Bot\Model\Entity\Message\MessageOrder; use RetailCrm\Mg\Bot\Model\Entity\Message\MessageOrder;
use RetailCrm\Mg\Bot\Model\Entity\Message\MessageProduct; use RetailCrm\Mg\Bot\Model\Entity\Message\MessageProduct;
use RetailCrm\Mg\Bot\Model\Entity\Message\TransportAttachments;
use RetailCrm\Mg\Bot\Model\ModelInterface; use RetailCrm\Mg\Bot\Model\ModelInterface;
use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Constraints as Assert;
@ -26,9 +24,6 @@ use Symfony\Component\Validator\Constraints as Assert;
* MessageSendRequest class * MessageSendRequest class
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class MessageSendRequest implements ModelInterface class MessageSendRequest implements ModelInterface
{ {
@ -77,6 +72,15 @@ class MessageSendRequest implements ModelInterface
*/ */
private $items; private $items;
/**
* @var string $note
*
* @Type("string")
* @Accessor(getter="getNote",setter="setNote")
* @SkipWhenEmpty()
*/
private $note;
/** /**
* @var string $scope * @var string $scope
* *
@ -87,6 +91,16 @@ class MessageSendRequest implements ModelInterface
*/ */
private $scope; private $scope;
/**
* @var TransportAttachments $transportAttachments
*
* @Type("RetailCrm\Mg\Bot\Model\Entity\Message\TransportAttachments")
* @Accessor(getter="getTransportAttachments",setter="setTransportAttachments")
* @SkipWhenEmpty
*/
private $transportAttachments;
/** /**
* @var int $chatId * @var int $chatId
* *
@ -140,6 +154,22 @@ class MessageSendRequest implements ModelInterface
$this->scope = $scope; $this->scope = $scope;
} }
/**
* @return TransportAttachments
*/
public function getTransportAttachments()
{
return $this->transportAttachments;
}
/**
* @param TransportAttachments $transportAttachments
*/
public function setTransportAttachments(TransportAttachments $transportAttachments)
{
$this->transportAttachments = $transportAttachments;
}
/** /**
* @return string * @return string
*/ */
@ -220,6 +250,22 @@ class MessageSendRequest implements ModelInterface
$this->items = $items; $this->items = $items;
} }
/**
* @return null|string
*/
public function getNote(): ?string
{
return $this->note;
}
/**
* @param string $note
*/
public function setNote(string $note): void
{
$this->note = $note;
}
/** /**
* @return int * @return int
*/ */

View file

@ -6,9 +6,6 @@
* Messages list request * Messages list request
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Request; namespace RetailCrm\Mg\Bot\Model\Request;
@ -22,13 +19,11 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* MessagesRequest class * MessagesRequest class
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class MessagesRequest implements ModelInterface class MessagesRequest implements ModelInterface
{ {
use CommonFields; use CommonFields;
use IncludeMassCommunication;
/** /**
* @var int $chatId * @var int $chatId
@ -111,6 +106,15 @@ class MessagesRequest implements ModelInterface
*/ */
private $type; private $type;
/**
* @var int $limit
*
* @Type("int")
* @Accessor(getter="getLimit",setter="setLimit")
* @SkipWhenEmpty()
*/
private $limit;
/** /**
* @return int * @return int
*/ */
@ -254,4 +258,20 @@ class MessagesRequest implements ModelInterface
{ {
$this->type = $type; $this->type = $type;
} }
/**
* @return int
*/
public function getLimit()
{
return $this->limit;
}
/**
* @param int $limit
*/
public function setLimit(int $limit)
{
$this->limit = $limit;
}
} }

View file

@ -0,0 +1,49 @@
<?php
/**
* PHP version 7.1
*
* Page limit
*
* @package RetailCrm\Mg\Bot\Model\Request
*/
namespace RetailCrm\Mg\Bot\Model\Request;
use JMS\Serializer\Annotation\Accessor;
use JMS\Serializer\Annotation\SkipWhenEmpty;
use JMS\Serializer\Annotation\Type;
/**
* PageLimit trait
*
* @package RetailCrm\Mg\Bot\Model\Request
*/
trait PageLimit
{
/**
* @var int $limit
*
* @Type("int")
* @Accessor(getter="getLimit",setter="setLimit")
* @SkipWhenEmpty
*/
private $limit;
/**
* @return int|null
*/
public function getLimit(): ?int
{
return $this->limit;
}
/**
* @param int $limit
* @return void
*/
public function setLimit($limit)
{
$this->limit = $limit;
}
}

View file

@ -0,0 +1,77 @@
<?php
/**
* PHP version 7.1
*
* Template send request
*
* @package RetailCrm\Mg\Bot\Model\Request
*/
namespace RetailCrm\Mg\Bot\Model\Request;
use JMS\Serializer\Annotation\Accessor;
use JMS\Serializer\Annotation\SkipWhenEmpty;
use JMS\Serializer\Annotation\Type;
use RetailCrm\Mg\Bot\Model\Entity\Template\TemplateVariables;
use RetailCrm\Mg\Bot\Model\ModelInterface;
use Symfony\Component\Validator\Constraints as Assert;
/**
* TemplateSendRequest class
*
* @package RetailCrm\Mg\Bot\Model\Request
*/
class TemplateSendRequest implements ModelInterface
{
/**
* @var string $phone
*
* @Type("string")
* @Accessor(getter="getPhone",setter="setPhone")
*
* @Assert\NotBlank
*/
private $phone;
/**
* @var TemplateVariables $args
*
* @Type("RetailCrm\Mg\Bot\Model\Entity\Template\TemplateVariables")
* @Accessor(getter="getArgs",setter="setArgs")
* @SkipWhenEmpty()
*/
private $args;
/**
* @return string
*/
public function getPhone(): string
{
return $this->phone;
}
/**
* @param string $phone
*/
public function setPhone(string $phone): void
{
$this->phone = $phone;
}
/**
* @return TemplateVariables|null
*/
public function getArgs(): ?TemplateVariables
{
return $this->args;
}
/**
* @param TemplateVariables $args
*/
public function setArgs(TemplateVariables $args): void
{
$this->args = $args;
}
}

View file

@ -6,9 +6,6 @@
* Upload file by url request * Upload file by url request
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Request; namespace RetailCrm\Mg\Bot\Model\Request;
@ -22,9 +19,6 @@ use Symfony\Component\Validator\Constraints as Assert;
* UploadFileByUrlRequest class * UploadFileByUrlRequest class
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class UploadFileByUrlRequest implements ModelInterface class UploadFileByUrlRequest implements ModelInterface
{ {
@ -33,7 +27,7 @@ class UploadFileByUrlRequest implements ModelInterface
* *
* @Type("string") * @Type("string")
* @Accessor(getter="getUrl",setter="setUrl") * @Accessor(getter="getUrl",setter="setUrl")
* @Assert\NotBlank() * @Assert\NotBlank(allowNull=false)
* @Assert\Url() * @Assert\Url()
*/ */
private $url; private $url;

View file

@ -6,9 +6,6 @@
* Users list request * Users list request
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Request; namespace RetailCrm\Mg\Bot\Model\Request;
@ -22,13 +19,11 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* UsersRequest class * UsersRequest class
* *
* @package RetailCrm\Mg\Bot\Model\Request * @package RetailCrm\Mg\Bot\Model\Request
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class UsersRequest implements ModelInterface class UsersRequest implements ModelInterface
{ {
use CommonFields; use CommonFields;
use PageLimit;
/** /**
* @Type("string") * @Type("string")

View file

@ -6,9 +6,6 @@
* AssignResponse * AssignResponse
* *
* @package RetailCrm\Mg\Bot\Model\Response * @package RetailCrm\Mg\Bot\Model\Response
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Response; namespace RetailCrm\Mg\Bot\Model\Response;
@ -23,9 +20,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* AssignResponse class * AssignResponse class
* *
* @package RetailCrm\Mg\Bot\Model\Response * @package RetailCrm\Mg\Bot\Model\Response
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class AssignResponse implements ModelInterface class AssignResponse implements ModelInterface
{ {
@ -68,9 +62,9 @@ class AssignResponse implements ModelInterface
private $responsible; private $responsible;
/** /**
* @return bool * @return bool|null
*/ */
public function getIsReassign(): bool public function getIsReassign(): ?bool
{ {
return $this->isReassign; return $this->isReassign;
} }
@ -84,9 +78,9 @@ class AssignResponse implements ModelInterface
} }
/** /**
* @return int * @return int|null
*/ */
public function getLeftManagerId(): int public function getLeftManagerId(): ?int
{ {
return $this->leftManagerId; return $this->leftManagerId;
} }
@ -100,9 +94,9 @@ class AssignResponse implements ModelInterface
} }
/** /**
* @return Responsible * @return Responsible|null
*/ */
public function getPreviousResponsible(): Responsible public function getPreviousResponsible(): ?Responsible
{ {
return $this->previousResponsible; return $this->previousResponsible;
} }
@ -116,9 +110,9 @@ class AssignResponse implements ModelInterface
} }
/** /**
* @return Responsible * @return Responsible|null
*/ */
public function getResponsible(): Responsible public function getResponsible(): ?Responsible
{ {
return $this->responsible; return $this->responsible;
} }

View file

@ -6,9 +6,6 @@
* ErrorTrait * ErrorTrait
* *
* @package RetailCrm\Mg\Bot\Model\Response * @package RetailCrm\Mg\Bot\Model\Response
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Response; namespace RetailCrm\Mg\Bot\Model\Response;
@ -22,9 +19,6 @@ use JMS\Serializer\Annotation\Type;
* CommonFields trait * CommonFields trait
* *
* @package RetailCrm\Mg\Bot\Model\Response * @package RetailCrm\Mg\Bot\Model\Response
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
trait CommonFields trait CommonFields
{ {
@ -44,9 +38,9 @@ trait CommonFields
private $statusCode; private $statusCode;
/** /**
* @return array * @return array|null
*/ */
public function getErrors(): array public function getErrors(): ?array
{ {
return empty($this->errors) ? [] : $this->errors; return empty($this->errors) ? [] : $this->errors;
} }
@ -60,9 +54,9 @@ trait CommonFields
} }
/** /**
* @return int * @return int|null
*/ */
public function getStatusCode(): int public function getStatusCode(): ?int
{ {
return $this->statusCode; return $this->statusCode;
} }

View file

@ -6,9 +6,6 @@
* ErrorOnlyResponse * ErrorOnlyResponse
* *
* @package RetailCrm\Mg\Bot\Model\Response * @package RetailCrm\Mg\Bot\Model\Response
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Response; namespace RetailCrm\Mg\Bot\Model\Response;
@ -19,9 +16,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* ErrorOnlyResponse class * ErrorOnlyResponse class
* *
* @package RetailCrm\Mg\Bot\Model\Response * @package RetailCrm\Mg\Bot\Model\Response
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class ErrorOnlyResponse implements ModelInterface class ErrorOnlyResponse implements ModelInterface
{ {

View file

@ -6,13 +6,11 @@
* FullFileResponse * FullFileResponse
* *
* @package RetailCrm\Mg\Bot\Model\Response * @package RetailCrm\Mg\Bot\Model\Response
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Response; namespace RetailCrm\Mg\Bot\Model\Response;
use JMS\Serializer\Annotation\SerializedName;
use JMS\Serializer\Annotation\Accessor; use JMS\Serializer\Annotation\Accessor;
use JMS\Serializer\Annotation\SkipWhenEmpty; use JMS\Serializer\Annotation\SkipWhenEmpty;
use JMS\Serializer\Annotation\Type; use JMS\Serializer\Annotation\Type;
@ -22,9 +20,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* FullFileResponse class * FullFileResponse class
* *
* @package RetailCrm\Mg\Bot\Model\Response * @package RetailCrm\Mg\Bot\Model\Response
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class FullFileResponse implements ModelInterface class FullFileResponse implements ModelInterface
{ {
@ -61,15 +56,16 @@ class FullFileResponse implements ModelInterface
* @var string $url * @var string $url
* *
* @Type("string") * @Type("string")
* @SerializedName("Url")
* @Accessor(getter="getUrl",setter="setUrl") * @Accessor(getter="getUrl",setter="setUrl")
* @SkipWhenEmpty() * @SkipWhenEmpty()
*/ */
private $url; private $url;
/** /**
* @return string * @return string|null
*/ */
public function getId(): string public function getId(): ?string
{ {
return $this->id; return $this->id;
} }
@ -83,9 +79,9 @@ class FullFileResponse implements ModelInterface
} }
/** /**
* @return int * @return int|null
*/ */
public function getSize(): int public function getSize(): ?int
{ {
return $this->size; return $this->size;
} }
@ -99,9 +95,9 @@ class FullFileResponse implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getType(): string public function getType(): ?string
{ {
return $this->type; return $this->type;
} }
@ -115,9 +111,9 @@ class FullFileResponse implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getUrl(): string public function getUrl(): ?string
{ {
return $this->url; return $this->url;
} }

View file

@ -6,9 +6,6 @@
* MessageSendResponse * MessageSendResponse
* *
* @package RetailCrm\Mg\Bot\Model\Response * @package RetailCrm\Mg\Bot\Model\Response
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Response; namespace RetailCrm\Mg\Bot\Model\Response;
@ -22,9 +19,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* MessageSendResponse class * MessageSendResponse class
* *
* @package RetailCrm\Mg\Bot\Model\Response * @package RetailCrm\Mg\Bot\Model\Response
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class MessageSendResponse implements ModelInterface class MessageSendResponse implements ModelInterface
{ {
@ -49,9 +43,9 @@ class MessageSendResponse implements ModelInterface
private $time; private $time;
/** /**
* @return int * @return int|null
*/ */
public function getMessageId(): int public function getMessageId(): ?int
{ {
return $this->messageId; return $this->messageId;
} }
@ -65,9 +59,9 @@ class MessageSendResponse implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getTime(): string public function getTime(): ?string
{ {
return $this->time; return $this->time;
} }

View file

@ -0,0 +1,52 @@
<?php
/**
* PHP version 7.1
*
* UnassignResponse
*
* @package RetailCrm\Mg\Bot\Model\Response
*/
namespace RetailCrm\Mg\Bot\Model\Response;
use JMS\Serializer\Annotation\Accessor;
use JMS\Serializer\Annotation\SkipWhenEmpty;
use JMS\Serializer\Annotation\Type;
use RetailCrm\Mg\Bot\Model\Entity\Responsible;
use RetailCrm\Mg\Bot\Model\ModelInterface;
/**
* UnassignResponse class
*
* @package RetailCrm\Mg\Bot\Model\Response
*/
class UnassignResponse implements ModelInterface
{
use CommonFields;
/**
* @var Responsible $previousResponsible
*
* @Type("RetailCrm\Mg\Bot\Model\Entity\Responsible")
* @Accessor(getter="getPreviousResponsible",setter="setPreviousResponsible")
* @SkipWhenEmpty()
*/
private $previousResponsible;
/**
* @return Responsible|null
*/
public function getPreviousResponsible(): ?Responsible
{
return $this->previousResponsible;
}
/**
* @param Responsible $previousResponsible
*/
public function setPreviousResponsible(Responsible $previousResponsible)
{
$this->previousResponsible = $previousResponsible;
}
}

View file

@ -6,9 +6,6 @@
* UploadFileResponse * UploadFileResponse
* *
* @package RetailCrm\Mg\Bot\Model\Response * @package RetailCrm\Mg\Bot\Model\Response
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Model\Response; namespace RetailCrm\Mg\Bot\Model\Response;
@ -23,9 +20,6 @@ use RetailCrm\Mg\Bot\Model\ModelInterface;
* UploadFileResponse class * UploadFileResponse class
* *
* @package RetailCrm\Mg\Bot\Model\Response * @package RetailCrm\Mg\Bot\Model\Response
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class UploadFileResponse implements ModelInterface class UploadFileResponse implements ModelInterface
{ {
@ -104,9 +98,9 @@ class UploadFileResponse implements ModelInterface
private $type; private $type;
/** /**
* @return string * @return string|null
*/ */
public function getCreatedAt(): string public function getCreatedAt(): ?string
{ {
return $this->createdAt; return $this->createdAt;
} }
@ -120,9 +114,9 @@ class UploadFileResponse implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getHash(): string public function getHash(): ?string
{ {
return $this->hash; return $this->hash;
} }
@ -136,9 +130,9 @@ class UploadFileResponse implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getId(): string public function getId(): ?string
{ {
return $this->id; return $this->id;
} }
@ -152,9 +146,9 @@ class UploadFileResponse implements ModelInterface
} }
/** /**
* @return FileMeta * @return FileMeta|null
*/ */
public function getMeta(): FileMeta public function getMeta(): ?FileMeta
{ {
return $this->meta; return $this->meta;
} }
@ -168,9 +162,9 @@ class UploadFileResponse implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getMimeType(): string public function getMimeType(): ?string
{ {
return $this->mimeType; return $this->mimeType;
} }
@ -184,9 +178,9 @@ class UploadFileResponse implements ModelInterface
} }
/** /**
* @return int * @return int|null
*/ */
public function getSize(): int public function getSize(): ?int
{ {
return $this->size; return $this->size;
} }
@ -200,9 +194,9 @@ class UploadFileResponse implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getSourceUrl(): string public function getSourceUrl(): ?string
{ {
return $this->sourceUrl; return $this->sourceUrl;
} }
@ -216,9 +210,9 @@ class UploadFileResponse implements ModelInterface
} }
/** /**
* @return string * @return string|null
*/ */
public function getType(): string public function getType(): ?string
{ {
return $this->type; return $this->type;
} }

View file

@ -6,9 +6,6 @@
* InvalidJsonException * InvalidJsonException
* *
* @package RetailCrm\Common\Exception * @package RetailCrm\Common\Exception
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Common\Exception; namespace RetailCrm\Common\Exception;
@ -20,9 +17,6 @@ use Throwable;
* Class InvalidJsonException * Class InvalidJsonException
* *
* @package RetailCrm\Common\Exception * @package RetailCrm\Common\Exception
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class InvalidJsonException extends DomainException implements Throwable class InvalidJsonException extends DomainException implements Throwable
{ {

View file

@ -6,9 +6,6 @@
* LimitException * LimitException
* *
* @package RetailCrm\Common\Exception * @package RetailCrm\Common\Exception
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Common\Exception; namespace RetailCrm\Common\Exception;
@ -20,9 +17,6 @@ use Throwable;
* Class LimitException * Class LimitException
* *
* @package RetailCrm\Common\Exception * @package RetailCrm\Common\Exception
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class LimitException extends DomainException implements Throwable class LimitException extends DomainException implements Throwable
{ {

View file

@ -5,9 +5,6 @@
* NotFoundException * NotFoundException
* *
* @package RetailCrm\Common\Exception * @package RetailCrm\Common\Exception
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Common\Exception; namespace RetailCrm\Common\Exception;
@ -19,9 +16,6 @@ use Throwable;
* Class NotFoundException * Class NotFoundException
* *
* @package RetailCrm\Common\Exception * @package RetailCrm\Common\Exception
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class NotFoundException extends DomainException implements Throwable class NotFoundException extends DomainException implements Throwable
{ {

View file

@ -5,9 +5,6 @@
* UnauthorizedException * UnauthorizedException
* *
* @package RetailCrm\Common\Exception * @package RetailCrm\Common\Exception
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Common\Exception; namespace RetailCrm\Common\Exception;

View file

@ -6,9 +6,6 @@
* Register * Register
* *
* @package RetailCrm\Common * @package RetailCrm\Common
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Common; namespace RetailCrm\Common;
@ -23,9 +20,6 @@ use Symfony\Component\Validator\Constraints as Assert;
* Class Register * Class Register
* *
* @package RetailCrm\Common * @package RetailCrm\Common
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class Register class Register
{ {

View file

@ -6,9 +6,6 @@
* Serializer * Serializer
* *
* @package RetailCrm\Common * @package RetailCrm\Common
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Common; namespace RetailCrm\Common;
@ -23,9 +20,6 @@ use RetailCrm\Mg\Bot\Model\Response\ErrorOnlyResponse;
* Class Serializer * Class Serializer
* *
* @package RetailCrm\Common * @package RetailCrm\Common
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class Serializer class Serializer
{ {
@ -46,14 +40,16 @@ class Serializer
$serializer = SerializerBuilder::create()->build(); $serializer = SerializerBuilder::create()->build();
$context = self::getContext(false); $context = self::getContext(false);
switch ($serialize) { if ($context instanceof SerializationContext) {
case self::S_ARRAY: switch ($serialize) {
$serialized = $serializer->toArray($request, $context); case self::S_ARRAY:
break; $serialized = $serializer->toArray($request, $context);
case self::S_JSON: break;
default: case self::S_JSON:
$serialized = $serializer->serialize($request, $serialize, $context); default:
break; $serialized = $serializer->serialize($request, $serialize, $context);
break;
}
} }
return $serialized; return $serialized;
@ -74,15 +70,20 @@ class Serializer
$serializer = SerializerBuilder::create()->build(); $serializer = SerializerBuilder::create()->build();
$context = self::getContext(true); $context = self::getContext(true);
switch ($from) { if ($context instanceof DeserializationContext) {
case self::S_ARRAY: switch ($from) {
$deserialized = $serializer case self::S_ARRAY:
->fromArray(array_filter($data), self::normalizeNamespace($entityType), $context); $filtered = array_filter($data, static function ($el) {
break; return $el !== null;
case self::S_JSON: });
$deserialized = $serializer $deserialized = $serializer
->deserialize($data, self::normalizeNamespace($entityType), $from, $context); ->fromArray($filtered, self::normalizeNamespace($entityType), $context);
break; break;
case self::S_JSON:
$deserialized = $serializer
->deserialize($data, self::normalizeNamespace($entityType), $from, $context);
break;
}
} }
return $deserialized instanceof ModelInterface ? $deserialized : new ErrorOnlyResponse(); return $deserialized instanceof ModelInterface ? $deserialized : new ErrorOnlyResponse();
@ -99,9 +100,9 @@ class Serializer
$context = new DeserializationContext(); $context = new DeserializationContext();
} else { } else {
$context = new SerializationContext(); $context = new SerializationContext();
}
$context->setSerializeNull(false); $context->setSerializeNull(false);
}
return $context; return $context;
} }
@ -109,7 +110,7 @@ class Serializer
/** /**
* @param string $namespace * @param string $namespace
* *
* @return bool|string * @return string
*/ */
private static function normalizeNamespace(string $namespace) private static function normalizeNamespace(string $namespace)
{ {

View file

@ -6,9 +6,6 @@
* Url * Url
* *
* @package RetailCrm\Common * @package RetailCrm\Common
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Common; namespace RetailCrm\Common;
@ -17,9 +14,6 @@ namespace RetailCrm\Common;
* Class Url * Class Url
* *
* @package RetailCrm\Common * @package RetailCrm\Common
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class Url class Url
{ {

View file

@ -6,9 +6,6 @@
* Test case class * Test case class
* *
* @package Test * @package Test
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion5
*/ */
namespace RetailCrm\Mg\Bot\Test; namespace RetailCrm\Mg\Bot\Test;
@ -23,9 +20,6 @@ use RetailCrm\Mg\Bot\Client;
* Class TestCase * Class TestCase
* *
* @package Test * @package Test
* @author RetailCrm <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://www.retailcrm.ru/docs/Developers/ApiVersion5
*/ */
class TestCase extends BaseCase class TestCase extends BaseCase
{ {

View file

@ -6,13 +6,13 @@
* Client Test * Client Test
* *
* @package RetailCrm\Mg\Bot\Tests * @package RetailCrm\Mg\Bot\Tests
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Tests; namespace RetailCrm\Mg\Bot\Tests;
use Psr\Http\Message\ResponseInterface;
use RetailCrm\Mg\Bot\Client;
use RetailCrm\Mg\Bot\HttpClient;
use RetailCrm\Mg\Bot\Model\Constants; use RetailCrm\Mg\Bot\Model\Constants;
use RetailCrm\Mg\Bot\Model\Entity\Channel; use RetailCrm\Mg\Bot\Model\Entity\Channel;
use RetailCrm\Mg\Bot\Model\Entity\Chat\Chat; use RetailCrm\Mg\Bot\Model\Entity\Chat\Chat;
@ -30,9 +30,6 @@ use RetailCrm\Mg\Bot\Test\TestCase;
* Class ClientListTest * Class ClientListTest
* *
* @package RetailCrm\Mg\Bot\Tests * @package RetailCrm\Mg\Bot\Tests
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class ClientListTest extends TestCase class ClientListTest extends TestCase
{ {
@ -55,8 +52,11 @@ class ClientListTest extends TestCase
$response = $client->channels($request); $response = $client->channels($request);
static::assertEquals(4, count($response), "Incorrect channels count"); static::assertCount(5, $response, "Incorrect channels count");
static::assertTrue($response[0] instanceof Channel\Channel, "Incorrect channel instance"); static::assertInstanceOf(Channel\Channel::class, $response[0], "Incorrect channel instance");
$textSuggestions = $response[0]->getSettings()->getSuggestions()->getText();
static::assertStringContainsString("both", $textSuggestions, "Incorrect text suggestions");
} }
/** /**
@ -77,8 +77,29 @@ class ClientListTest extends TestCase
$response = $client->chats($request); $response = $client->chats($request);
static::assertEquals(2, count($response), "Incorrect chats count"); static::assertCount(3, $response, "Incorrect chats count");
static::assertTrue($response[0] instanceof Chat, "Incorrect chat instance"); static::assertInstanceOf(Chat::class, $response[0], "Incorrect chat instance");
}
/**
* @group("list")
* @throws \Exception
*/
public function testGetChatsByCustomerId(): void
{
$client = self::getApiClient(
null,
null,
false,
$this->getJsonResponse('chatsByCustomerId')
);
$request = new Request\ChatsRequest();
$request->setCustomerId(39);
$response = $client->chats($request);
static::assertCount(1, $response, "Incorrect chats count");
static::assertInstanceOf(Chat::class, $response[0], "Incorrect chat instance");
} }
/** /**
@ -97,8 +118,8 @@ class ClientListTest extends TestCase
$request = new Request\MembersRequest(); $request = new Request\MembersRequest();
$response = $client->members($request); $response = $client->members($request);
static::assertEquals(4, count($response), "Incorrect members count"); static::assertCount(5, $response, "Incorrect members count");
static::assertTrue($response[0] instanceof ChatMember, "Incorrect member instance"); static::assertInstanceOf(ChatMember::class, $response[0], "Incorrect member instance");
} }
/** /**
@ -117,11 +138,12 @@ class ClientListTest extends TestCase
$request = new Request\MessagesRequest(); $request = new Request\MessagesRequest();
$request->setChannelType(Constants::CHANNEL_TYPE_INSTAGRAM); $request->setChannelType(Constants::CHANNEL_TYPE_INSTAGRAM);
$request->setType(Constants::MESSAGE_TYPE_TEXT); $request->setType(Constants::MESSAGE_TYPE_TEXT);
$request->setLimit(1000);
$response = $client->messages($request); $response = $client->messages($request);
static::assertEquals(2, count($response), "Incorrect message count"); static::assertCount(3, $response, "Incorrect message count");
static::assertTrue($response[0] instanceof Message, "Incorrect message instance"); static::assertInstanceOf(Message::class, $response[0], "Incorrect message instance");
} }
/** /**
@ -140,7 +162,7 @@ class ClientListTest extends TestCase
$request = new Request\CommandsRequest(); $request = new Request\CommandsRequest();
$response = $client->commands($request); $response = $client->commands($request);
self::assertEquals(0, count($response), "Invalid commands count"); self::assertCount(0, $response, "Invalid commands count");
} }
/** /**
@ -162,7 +184,7 @@ class ClientListTest extends TestCase
$data = $client->bots($request); $data = $client->bots($request);
static::assertEquals(3, count($data)); static::assertCount(4, $data);
} }
/** /**
@ -184,8 +206,8 @@ class ClientListTest extends TestCase
$response = $client->users($request); $response = $client->users($request);
self::assertEquals(2, count($response)); self::assertCount(3, $response);
self::assertTrue($response[0] instanceof User); self::assertInstanceOf(User::class, $response[0]);
} }
/** /**
@ -207,8 +229,8 @@ class ClientListTest extends TestCase
$response = $client->dialogs($request); $response = $client->dialogs($request);
self::assertEquals(2, count($response)); self::assertCount(3, $response);
self::assertTrue($response[0] instanceof Dialog); self::assertInstanceOf(Dialog::class, $response[0]);
} }
/** /**
@ -228,7 +250,10 @@ class ClientListTest extends TestCase
$response = $client->customers($request); $response = $client->customers($request);
self::assertEquals(2, count($response)); self::assertCount(3, $response);
self::assertTrue($response[0] instanceof Customer); self::assertInstanceOf(Customer::class, $response[0]);
$utm = $response[0]->getUtm()->getCampaign();
static::assertEquals('spring_sale', $utm, "Incorrect utm data");
} }
} }

View file

@ -6,9 +6,6 @@
* Commands Test * Commands Test
* *
* @package RetailCrm\Mg\Bot\Tests * @package RetailCrm\Mg\Bot\Tests
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Tests; namespace RetailCrm\Mg\Bot\Tests;
@ -24,9 +21,6 @@ use RetailCrm\Mg\Bot\Test\TestCase;
* Class CommandsTest * Class CommandsTest
* *
* @package RetailCrm\Mg\Bot\Tests * @package RetailCrm\Mg\Bot\Tests
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class CommandsTest extends TestCase class CommandsTest extends TestCase
{ {
@ -86,7 +80,7 @@ class CommandsTest extends TestCase
$response = $client->commandEdit($request); $response = $client->commandEdit($request);
self::assertTrue($response instanceof ErrorOnlyResponse); self::assertInstanceOf(ErrorOnlyResponse::class, $response);
self::assertTrue($response->isSuccessful()); self::assertTrue($response->isSuccessful());
} }
@ -106,6 +100,6 @@ class CommandsTest extends TestCase
$response = $client->commandDelete("show_payment_types"); $response = $client->commandDelete("show_payment_types");
self::assertTrue($response->isSuccessful() == true); self::assertTrue($response->isSuccessful());
} }
} }

View file

@ -7,9 +7,6 @@
* *
* @package RetailCrm\Mg\Bot\Tests * @package RetailCrm\Mg\Bot\Tests
* @category Test * @category Test
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Tests; namespace RetailCrm\Mg\Bot\Tests;
@ -17,7 +14,9 @@ namespace RetailCrm\Mg\Bot\Tests;
use InvalidArgumentException; use InvalidArgumentException;
use RetailCrm\Common\Exception\NotFoundException; use RetailCrm\Common\Exception\NotFoundException;
use RetailCrm\Mg\Bot\Model\Entity\Responsible; use RetailCrm\Mg\Bot\Model\Entity\Responsible;
use RetailCrm\Mg\Bot\Model\Entity\Tag;
use RetailCrm\Mg\Bot\Model\Request\DialogAssignRequest; use RetailCrm\Mg\Bot\Model\Request\DialogAssignRequest;
use RetailCrm\Mg\Bot\Model\Request\DialogTagRequest;
use RetailCrm\Mg\Bot\Model\Response\ErrorOnlyResponse; use RetailCrm\Mg\Bot\Model\Response\ErrorOnlyResponse;
use RetailCrm\Mg\Bot\Test\TestCase; use RetailCrm\Mg\Bot\Test\TestCase;
@ -27,9 +26,6 @@ use RetailCrm\Mg\Bot\Test\TestCase;
* Class DialogsTest * Class DialogsTest
* *
* @package RetailCrm\Mg\Bot\Tests * @package RetailCrm\Mg\Bot\Tests
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class DialogsTest extends TestCase class DialogsTest extends TestCase
{ {
@ -78,6 +74,42 @@ class DialogsTest extends TestCase
self::assertTrue($response->getResponsible() instanceof Responsible); self::assertTrue($response->getResponsible() instanceof Responsible);
} }
/**
* @group("dialogs")
* @throws \Exception
*/
public function testDialogUnassignError()
{
$this->expectException(\RuntimeException::class);
$client = self::getApiClient(
null,
null,
false,
$this->getErrorsResponse(400, "incorrect dialog_id")
);
$client->dialogUnassign(-1);
}
/**
* @group("dialogs")
* @throws \Exception
*/
public function testDialogUnassign()
{
$client = self::getApiClient(
null,
null,
false,
$this->getJsonResponse('dialogUnassigned')
);
$response = $client->dialogUnassign(60);
self::assertTrue($response->isSuccessful());
self::assertTrue($response->getPreviousResponsible() instanceof Responsible);
}
/** /**
* @group("dialogs") * @group("dialogs")
* @throws \Exception * @throws \Exception
@ -111,7 +143,183 @@ class DialogsTest extends TestCase
$response = $client->dialogClose('62'); $response = $client->dialogClose('62');
self::assertTrue($response instanceof ErrorOnlyResponse); self::assertInstanceOF(ErrorOnlyResponse::class, $response);
self::assertTrue($response->isSuccessful());
self::assertEmpty($response->getErrors());
}
/**
* @group("dialogs")
* @throws \Exception
*/
public function testDialogAddTagColorError()
{
$this->expectException(NotFoundException::class);
$client = self::getApiClient(
null,
null,
false,
$this->getErrorsResponse(404,
"'color_code can contain only the following values: " .
"light-red; light-blue; light-green; light-orange; light-gray; " .
"light-grayish-blue; red; blue; green; orange; gray; grayish-blue'"
)
);
$tags[0] = new Tag();
$tags[0]->setName('tag1');
$tags[0]->setColorCode('qwerty');
$request = new DialogTagRequest();
$request->setDialogId(60);
$request->setTags($tags);
$client->dialogAddTag($request);
}
/**
* @group("dialogs")
* @throws \Exception
*/
public function testDialogAddTagDialogError()
{
$this->expectException(NotFoundException::class);
$client = self::getApiClient(
null,
null,
false,
$this->getErrorsResponse(404, "dialog #123456789 not found")
);
$tags[0] = new Tag();
$tags[0]->setName('tag1');
$request = new DialogTagRequest();
$request->setDialogId(123456789);
$request->setTags($tags);
$client->dialogAddTag($request);
}
/**
* @group("dialogs")
* @throws \Exception
*/
public function testDialogAddTagEmptyTagError()
{
$this->expectException(\TypeError::class);
$client = self::getApiClient();
$tags[0] = new Tag();
$request = new DialogTagRequest();
$request->setDialogId(60);
$request->setTags($tags);
$client->dialogAddTag($request);
}
/**
* @group("dialogs")
* @throws \Exception
*/
public function testDialogAddTag()
{
$client = self::getApiClient(
null,
null,
false,
$this->getResponse('{}')
);
$tags[0] = new Tag();
$tags[0]->setName('tag1');
$tags[0]->setColorCode('red');
$tags[1] = new Tag();
$tags[1]->setName('tag2');
$request = new DialogTagRequest();
$request->setDialogId(60);
$request->setTags($tags);
$response = $client->dialogAddTag($request);
self::assertInstanceOF(ErrorOnlyResponse::class, $response);
self::assertTrue($response->isSuccessful());
self::assertEmpty($response->getErrors());
}
/**
* @group("dialogs")
* @throws \Exception
*/
public function testDialogDeleteTagDialogError()
{
$this->expectException(NotFoundException::class);
$client = self::getApiClient(
null,
null,
false,
$this->getErrorsResponse(404, "dialog #123456789 not found")
);
$tags[0] = new Tag();
$tags[0]->setName('tag1');
$request = new DialogTagRequest();
$request->setDialogId(123456789);
$request->setTags($tags);
$client->dialogAddTag($request);
}
/**
* @group("dialogs")
* @throws \Exception
*/
public function testDialogDeleteTagEmptyTagError()
{
$this->expectException(\TypeError::class);
$client = self::getApiClient();
$tags[0] = new Tag();
$request = new DialogTagRequest();
$request->setTags($tags);
$client->dialogDeleteTag($request);
}
/**
* @group("dialogs")
* @throws \Exception
*/
public function testDialogDeleteTag()
{
$client = self::getApiClient(
null,
null,
false,
$this->getResponse('{}')
);
$tags[0] = new Tag();
$tags[0]->setName('tag1');
$request = new DialogTagRequest();
$request->setDialogId(60);
$request->setTags($tags);
$response = $client->dialogDeleteTag($request);
self::assertInstanceOF(ErrorOnlyResponse::class, $response);
self::assertTrue($response->isSuccessful()); self::assertTrue($response->isSuccessful());
self::assertEmpty($response->getErrors()); self::assertEmpty($response->getErrors());
} }

View file

@ -6,9 +6,6 @@
* Upload file Test * Upload file Test
* *
* @package RetailCrm\Mg\Bot\Tests * @package RetailCrm\Mg\Bot\Tests
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Tests; namespace RetailCrm\Mg\Bot\Tests;
@ -23,9 +20,6 @@ use RetailCrm\Mg\Bot\Test\TestCase;
* Class UploadFileTest * Class UploadFileTest
* *
* @package RetailCrm\Mg\Bot\Tests * @package RetailCrm\Mg\Bot\Tests
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class FileTest extends TestCase class FileTest extends TestCase
{ {
@ -33,17 +27,32 @@ class FileTest extends TestCase
* @group("upload") * @group("upload")
* @throws \Exception * @throws \Exception
*/ */
public function testUploadFileByUrlException() public function testUploadFileByUrlEmpty()
{ {
$client = self::getApiClient( $client = self::getApiClient(
null, null,
null, null,
false, false,
$this->getEmptyResponse(400) $this->getErrorsResponse(400, 'Something is not quite right.')
); );
self::expectException(\InvalidArgumentException::class); self::expectException(\InvalidArgumentException::class);
$client->uploadFileByUrl(''); $client->uploadFileByUrl('');
}
/**
* @group("upload")
* @throws \Exception
*/
public function testUploadFileByUrlInvalid()
{
$client = self::getApiClient(
null,
null,
false,
$this->getErrorsResponse(400, 'Something is not quite right.')
);
self::expectException(\InvalidArgumentException::class);
$client->uploadFileByUrl('rar'); $client->uploadFileByUrl('rar');
} }
@ -83,7 +92,7 @@ class FileTest extends TestCase
$response = $client->uploadFile(__FILE__); $response = $client->uploadFile(__FILE__);
self::assertTrue($response instanceof UploadFileResponse); self::assertInstanceOf(UploadFileResponse::class, $response);
self::assertEquals('b2bdba90-166c-4e0a-829d-69f26a09fd2a', $response->getId()); self::assertEquals('b2bdba90-166c-4e0a-829d-69f26a09fd2a', $response->getId());
self::assertEquals('file', $response->getType()); self::assertEquals('file', $response->getType());
self::assertEquals(214, $response->getSize()); self::assertEquals(214, $response->getSize());
@ -105,7 +114,10 @@ class FileTest extends TestCase
$response = $client->getFileById($fileId); $response = $client->getFileById($fileId);
self::assertTrue($response instanceof FullFileResponse); self::assertInstanceOf(FullFileResponse::class, $response);
self::assertEquals($fileId, $response->getId()); self::assertEquals($fileId, $response->getId());
$fileUrl = 'https://s3.eu-central-1.amazonaws.com/mg-node-files/files/21/b2bdba90-166c-4e0a-829d-69f26a09fd2a';
self::assertEquals($fileUrl, $response->getUrl());
} }
} }

View file

@ -6,14 +6,12 @@
* Messages Test * Messages Test
* *
* @package RetailCrm\Mg\Bot\Tests * @package RetailCrm\Mg\Bot\Tests
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Tests; namespace RetailCrm\Mg\Bot\Tests;
use RetailCrm\Mg\Bot\Model\Constants; use RetailCrm\Mg\Bot\Model\Constants;
use RetailCrm\Mg\Bot\Model\Entity\Message\Item;
use RetailCrm\Mg\Bot\Model\Entity\Message\MessageCost; use RetailCrm\Mg\Bot\Model\Entity\Message\MessageCost;
use RetailCrm\Mg\Bot\Model\Entity\Message\MessageDelivery; use RetailCrm\Mg\Bot\Model\Entity\Message\MessageDelivery;
use RetailCrm\Mg\Bot\Model\Entity\Message\MessageOrder; use RetailCrm\Mg\Bot\Model\Entity\Message\MessageOrder;
@ -22,6 +20,8 @@ use RetailCrm\Mg\Bot\Model\Entity\Message\MessageOrderPaymentStatus;
use RetailCrm\Mg\Bot\Model\Entity\Message\MessageProduct; use RetailCrm\Mg\Bot\Model\Entity\Message\MessageProduct;
use RetailCrm\Mg\Bot\Model\Entity\Message\MessageQuantity; use RetailCrm\Mg\Bot\Model\Entity\Message\MessageQuantity;
use RetailCrm\Mg\Bot\Model\Entity\Message\MessageStatus; use RetailCrm\Mg\Bot\Model\Entity\Message\MessageStatus;
use RetailCrm\Mg\Bot\Model\Entity\Message\Suggestion;
use RetailCrm\Mg\Bot\Model\Entity\Message\TransportAttachments;
use RetailCrm\Mg\Bot\Model\Request\MessageEditRequest; use RetailCrm\Mg\Bot\Model\Request\MessageEditRequest;
use RetailCrm\Mg\Bot\Model\Request\MessageSendRequest; use RetailCrm\Mg\Bot\Model\Request\MessageSendRequest;
use RetailCrm\Mg\Bot\Model\Response\MessageSendResponse; use RetailCrm\Mg\Bot\Model\Response\MessageSendResponse;
@ -33,9 +33,6 @@ use RetailCrm\Mg\Bot\Test\TestCase;
* Class MessagesTest * Class MessagesTest
* *
* @package RetailCrm\Mg\Bot\Tests * @package RetailCrm\Mg\Bot\Tests
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class MessagesTest extends TestCase class MessagesTest extends TestCase
{ {
@ -91,7 +88,7 @@ class MessagesTest extends TestCase
if ($response instanceof MessageSendResponse) { if ($response instanceof MessageSendResponse) {
self::assertTrue($response->isSuccessful()); self::assertTrue($response->isSuccessful());
self::assertEquals(0, count($response->getErrors())); self::assertCount(0, $response->getErrors());
self::assertEquals(3636, $response->getMessageId()); self::assertEquals(3636, $response->getMessageId());
} }
} }
@ -163,7 +160,7 @@ class MessagesTest extends TestCase
if ($response instanceof MessageSendResponse) { if ($response instanceof MessageSendResponse) {
self::assertTrue($response->isSuccessful()); self::assertTrue($response->isSuccessful());
self::assertEquals(0, count($response->getErrors())); self::assertCount(0, $response->getErrors());
self::assertEquals(3636, $response->getMessageId()); self::assertEquals(3636, $response->getMessageId());
} }
} }
@ -213,7 +210,7 @@ class MessagesTest extends TestCase
if ($response instanceof MessageSendResponse) { if ($response instanceof MessageSendResponse) {
self::assertTrue($response->isSuccessful()); self::assertTrue($response->isSuccessful());
self::assertEquals(0, count($response->getErrors())); self::assertCount(0, $response->getErrors());
self::assertEquals(3636, $response->getMessageId()); self::assertEquals(3636, $response->getMessageId());
} }
} }
@ -262,7 +259,7 @@ class MessagesTest extends TestCase
$response = $client->messageEdit($request); $response = $client->messageEdit($request);
self::assertTrue($response->isSuccessful()); self::assertTrue($response->isSuccessful());
self::assertEquals(0, count($response->getErrors())); self::assertCount(0, $response->getErrors());
} }
/** /**
@ -301,6 +298,102 @@ class MessagesTest extends TestCase
$response = $client->messageDelete('3636'); $response = $client->messageDelete('3636');
self::assertTrue($response->isSuccessful()); self::assertTrue($response->isSuccessful());
self::assertEquals(0, count($response->getErrors())); self::assertCount(0, $response->getErrors());
}
/**
* @group("messages")
* @throws \Exception
*/
public function testMessageSendSuggestions()
{
$client = self::getApiClient(
null,
null,
false,
$this->getResponse(
'{"message_id":3636,"time":"2019-06-24T06:02:04.434291791Z"}',
201
)
);
$suggestionsData = [
[
'title' => 'Hello',
'type' => 'text'
],
[
'type' => 'email'
],
[
'type' => 'phone'
],
];
$suggestions = [];
foreach ($suggestionsData as $suggestionsDatum) {
$suggestion = new Suggestion();
$suggestion->setType($suggestionsDatum['type']);
if (isset($suggestionsDatum['title'])) {
$suggestion->setTitle($suggestionsDatum['title']);
}
$suggestions[] = $suggestion;
}
$transportAttachments = new TransportAttachments();
$transportAttachments->setSuggestions($suggestions);
$request = new MessageSendRequest();
$request->setChatId(28);
$request->setScope(Constants::MESSAGE_SCOPE_PUBLIC);
$request->setContent("Hello");
$request->setTransportAttachments($transportAttachments);
$response = $client->messageSend($request);
self::assertInstanceOf(MessageSendResponse::class, $response);
if ($response instanceof MessageSendResponse) {
self::assertTrue($response->isSuccessful());
self::assertCount(0, $response->getErrors());
self::assertEquals(3636, $response->getMessageId());
}
}
public function testMessageSendItems()
{
$client = self::getApiClient(
null,
null,
false,
$this->getResponse(
'{"message_id":4242,"time":"2019-06-24T06:02:04.434291791Z"}',
201
)
);
$item = new Item();
$item->setCaption('demo caption');
$item->setId('e33e5398-814a-47d6-902a-466ba120ce45');
$request = new MessageSendRequest();
$request->setChatId(28);
$request->setScope(Constants::MESSAGE_SCOPE_PUBLIC);
$request->setContent("Hello");
$request->setItems([$item]);
$request->setNote('demo note');
$response = $client->messageSend($request);
self::assertInstanceOf(MessageSendResponse::class, $response);
if ($response instanceof MessageSendResponse) {
self::assertTrue($response->isSuccessful());
self::assertCount(0, $response->getErrors());
self::assertEquals(4242, $response->getMessageId());
}
} }
} }

View file

@ -0,0 +1,57 @@
<?php
namespace RetailCrm\Mg\Bot\Tests\Model;
use PHPStan\Testing\TestCase;
use RetailCrm\Common\Serializer;
use RetailCrm\Mg\Bot\Model\Request\BotsRequest;
use RetailCrm\Mg\Bot\Model\Request\ChannelsRequest;
use RetailCrm\Mg\Bot\Model\Request\ChatsRequest;
use RetailCrm\Mg\Bot\Model\Request\CustomersRequest;
use RetailCrm\Mg\Bot\Model\Request\DialogsRequest;
use RetailCrm\Mg\Bot\Model\Request\MembersRequest;
use RetailCrm\Mg\Bot\Model\Request\UsersRequest;
class ListEntityRequestTest extends TestCase
{
private const LIMIT = 100;
public function testListRequestsWithLimit(): void
{
$expected = json_encode(['limit' => self::LIMIT]);
$request = new BotsRequest();
$request->setLimit(self::LIMIT);
self::assertEquals($expected, Serializer::serialize($request));
$request = new ChannelsRequest();
$request->setLimit(self::LIMIT);
self::assertEquals($expected, Serializer::serialize($request));
$request = new ChatsRequest();
$request->setLimit(self::LIMIT);
self::assertEquals($expected, Serializer::serialize($request));
$request = new CustomersRequest();
$request->setLimit(self::LIMIT);
self::assertEquals($expected, Serializer::serialize($request));
$request = new DialogsRequest();
$request->setLimit(self::LIMIT);
self::assertEquals($expected, Serializer::serialize($request));
$request = new MembersRequest();
$request->setLimit(self::LIMIT);
self::assertEquals($expected, Serializer::serialize($request));
$request = new UsersRequest();
$request->setLimit(self::LIMIT);
self::assertEquals($expected, Serializer::serialize($request));
}
}

View file

@ -0,0 +1,94 @@
<?php
namespace RetailCrm\Mg\Bot\Tests\Model;
use RetailCrm\Common\Serializer;
use RetailCrm\Mg\Bot\Model\Entity\Message\Message;
use PHPUnit\Framework\TestCase;
class MessageTest extends TestCase
{
/**
* @dataProvider dataProvider_noContent
* @param $content
*/
public function testDeserialization_NoContent($content): void
{
$item = ['content' => $content];
/** @var Message $result */
$result = Serializer::deserialize($item, Message::class, Serializer::S_ARRAY);
self::assertNull($result->getContent());
}
/**
* @dataProvider dataProvider_withContent
* @param $content
*/
public function testDeserialization_WithContent($content): void
{
$item = ['content' => $content];
/** @var Message $result */
$result = Serializer::deserialize($item, Message::class, Serializer::S_ARRAY);
self::assertNotNull($result->getContent());
self::assertEquals($content, $result->getContent());
}
public function testDeserializationWithQuoute(): void
{
$json = file_get_contents(__DIR__ . '/../../../Resources/messageWithQuote.json');
/** @var Message $message */
$message = Serializer::deserialize($json, Message::class);
self::assertEquals(3373, $message->getId());
self::assertNotNull($message->getQuote());
self::assertEquals("22144962", $message->getQuote()->getId());
self::assertEquals("text", $message->getQuote()->getType());
self::assertEquals("11111", $message->getQuote()->getFrom()->getId());
self::assertEquals("Something content", $message->getQuote()->getContent());
self::assertNotNull($message->getQuote()->getTime());
}
public function testSerialization_NoContent(): void
{
$item = new Message();
$result = Serializer::serialize($item);
self::assertEquals('{}', $result);
}
/**
* @dataProvider dataProvider_withContent
* @param $content
* @param $json
*/
public function testSerialization_WithContent($content, $json): void
{
$item = new Message();
$item->setContent($content);
$result = Serializer::serialize($item);
self::assertEquals($json, $result);
}
public function dataProvider_noContent(): array
{
return [
[null],
];
}
public function dataProvider_withContent(): array
{
return [
['', '{"content":""}'],
['0', '{"content":"0"}'],
['Something', '{"content":"Something"}'],
];
}
}

View file

@ -4,9 +4,6 @@
* *
* RegisterTest.php * RegisterTest.php
* *
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Mg\Bot\Tests; namespace RetailCrm\Mg\Bot\Tests;
@ -20,9 +17,6 @@ use RetailCrm\Mg\Bot\Test\TestCase;
* Class RegisterTest * Class RegisterTest
* *
* @package RetailCrm\Mg\Bot\Tests * @package RetailCrm\Mg\Bot\Tests
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class RegisterTest extends TestCase class RegisterTest extends TestCase
{ {

View file

@ -0,0 +1,113 @@
<?php
namespace RetailCrm\Mg\Bot\Tests;
use RetailCrm\Common\Exception\NotFoundException;
use RetailCrm\Mg\Bot\Model\Request\TemplateSendRequest;
use RetailCrm\Mg\Bot\Model\Response\MessageSendResponse;
use RetailCrm\Mg\Bot\Test\TestCase;
use RetailCrm\Mg\Bot\Model\Entity\Template;
/**
* PHP version 7.0
*
* Class TemplatesTest
*
* @package RetailCrm\Mg\Bot\Tests
*/
class TemplatesTest extends TestCase
{
/**
* @group("templates")
* @throws \Exception
*/
public function testTemplatesList()
{
$client = self::getApiClient(
null,
null,
false,
$this->getJsonResponse('templates')
);
$response = $client->templates();
static::assertCount(2, $response, "Incorrect templates count");
static::assertInstanceOf(Template\Template::class, $response[0], "Incorrect template instance");
$templateType = $response[0]->getHeader()['content']['type'];
static::assertStringContainsString("video", $templateType, "Incorrect template type");
}
/**
* @group("templates")
* @throws \Exception
*/
public function testTemplateSendNotFound()
{
$this->expectException(NotFoundException::class);
$client = self::getApiClient(
null,
null,
false,
$this->getErrorsResponse(404, "template id=3 was not found")
);
$request = new TemplateSendRequest();
$request->setPhone('123');
$client->templateSend(3, $request);
}
/**
* @group("templates")
* @throws \Exception
*/
public function testTemplateSendVariablesError()
{
$this->expectException(NotFoundException::class);
$client = self::getApiClient(
null,
null,
false,
$this->getErrorsResponse(404, "variables number doesn't match template")
);
$request = new TemplateSendRequest();
$request->setPhone('123');
$client->templateSend(2, $request);
}
/**
* @group("templates")
* @throws \Exception
*/
public function testTemplateSendSuccess()
{
$client = self::getApiClient(
null,
null,
false,
$this->getResponse(
'{"message_id":4242,"time":"2019-06-24T06:02:04.434291791Z"}',
201
)
);
$request = new TemplateSendRequest();
$request->setPhone('123');
$response = $client->templateSend(1, $request);
self::assertInstanceOf(MessageSendResponse::class, $response);
if ($response instanceof MessageSendResponse) {
self::assertTrue($response->isSuccessful());
self::assertCount(0, $response->getErrors());
self::assertEquals(4242, $response->getMessageId());
}
}
}

View file

@ -5,9 +5,6 @@
* Class RegisterTest * Class RegisterTest
* *
* @package RetailCrm\Common\Tests * @package RetailCrm\Common\Tests
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
namespace RetailCrm\Common\Tests; namespace RetailCrm\Common\Tests;
@ -19,9 +16,6 @@ use PHPUnit\Framework\TestCase;
* Class RegisterTest * Class RegisterTest
* *
* @package RetailCrm\Mg\Bot\Tests * @package RetailCrm\Mg\Bot\Tests
* @author retailCRM <integration@retailcrm.ru>
* @license https://opensource.org/licenses/MIT MIT License
* @link http://help.retailcrm.pro/docs/Developers
*/ */
class RegisterTest extends TestCase class RegisterTest extends TestCase
{ {

View file

@ -42,5 +42,21 @@
"is_active": true, "is_active": true,
"is_self": false, "is_self": false,
"is_system": false "is_system": false
},
{
"id": 5,
"name": "Weird date formats bot",
"events": null,
"client_id": "identifier_4",
"avatar_url": "https://s3.retailcrm.pro/eu-central-1/retailcrm-billing/images/5b97bfd983d2b-bot-logo-2.svg",
"roles": [
"responsible"
],
"created_at": "2018-09-06T13:40:02Z",
"updated_at": "2018-09-12T06:15:32Z",
"deactivated_at": "2019-09-12T06:15:32Z",
"is_active": true,
"is_self": false,
"is_system": false
} }
] ]

View file

@ -35,6 +35,11 @@
"quoting": "both", "quoting": "both",
"deleting": "receive", "deleting": "receive",
"max_items_count": 1 "max_items_count": 1
},
"suggestions": {
"text": "both",
"email": "both",
"phone": "both"
} }
}, },
"created_at": "2019-06-11T12:46:48.72241Z", "created_at": "2019-06-11T12:46:48.72241Z",
@ -79,6 +84,11 @@
"quoting": "both", "quoting": "both",
"deleting": "receive", "deleting": "receive",
"max_items_count": 1 "max_items_count": 1
},
"suggestions": {
"text": "both",
"email": "both",
"phone": "both"
} }
}, },
"created_at": "2019-06-11T12:41:44.660495Z", "created_at": "2019-06-11T12:41:44.660495Z",
@ -123,6 +133,11 @@
"quoting": "both", "quoting": "both",
"deleting": "receive", "deleting": "receive",
"max_items_count": 1 "max_items_count": 1
},
"suggestions": {
"text": "both",
"email": "both",
"phone": "both"
} }
}, },
"created_at": "2019-06-11T12:38:24.322413Z", "created_at": "2019-06-11T12:38:24.322413Z",
@ -167,6 +182,11 @@
"quoting": "both", "quoting": "both",
"deleting": "receive", "deleting": "receive",
"max_items_count": 1 "max_items_count": 1
},
"suggestions": {
"text": "both",
"email": "both",
"phone": "both"
} }
}, },
"created_at": "2019-06-11T12:33:08.676214Z", "created_at": "2019-06-11T12:33:08.676214Z",
@ -174,5 +194,54 @@
"activated_at": "2019-06-11T12:33:08.676043Z", "activated_at": "2019-06-11T12:33:08.676043Z",
"deactivated_at": "2019-06-11T12:38:19.615335Z", "deactivated_at": "2019-06-11T12:38:19.615335Z",
"is_active": true "is_active": true
},
{
"id": 68,
"type": "telegram",
"name": "@oldtestbot",
"settings": {
"status": {
"delivered": "send"
},
"text": {
"creating": "both",
"editing": "both",
"quoting": "both",
"deleting": "receive",
"max_chars_count": 4096
},
"product": {
"creating": "receive",
"editing": "receive"
},
"order": {
"creating": "receive",
"editing": "receive"
},
"image": {
"creating": "both",
"editing": "both",
"quoting": "both",
"deleting": "receive",
"max_items_count": 10
},
"file": {
"creating": "both",
"editing": "both",
"quoting": "both",
"deleting": "receive",
"max_items_count": 1
},
"suggestions": {
"text": "both",
"email": "both",
"phone": "both"
}
},
"created_at": "2019-06-11T12:33:08Z",
"updated_at": "2019-06-11T12:38:19Z",
"activated_at": "2019-06-11T12:33:08Z",
"deactivated_at": "2019-06-11T12:38:19Z",
"is_active": false
} }
] ]

View file

@ -57,6 +57,7 @@
"author_id": 0, "author_id": 0,
"last_message": null, "last_message": null,
"last_activity": "2019-06-11T17:36:20+03:00", "last_activity": "2019-06-11T17:36:20+03:00",
"reply_deadline": "2019-06-18T17:36:20Z",
"created_at": "2019-06-11T12:49:26.938879Z", "created_at": "2019-06-11T12:49:26.938879Z",
"updated_at": "2019-06-14T14:40:28.7111Z" "updated_at": "2019-06-14T14:40:28.7111Z"
}, },
@ -108,9 +109,102 @@
"last_name": "Петрович" "last_name": "Петрович"
}, },
"author_id": 0, "author_id": 0,
"last_message": null, "last_message": {
"id": 1,
"time": "2022-12-21T17:15:54+01:00",
"type": "command",
"scope": "private",
"chat_id": 1053,
"is_read": false,
"is_edit": false,
"status": "received",
"from": {
"id": 2,
"external_id": "12",
"type": "user",
"avatar": null,
"name": "Cuenta Soporte",
"first_name": "Cuenta",
"last_name": "Soporte",
"is_technical_account": true
}
},
"last_activity": "2019-06-13T11:07:14+03:00", "last_activity": "2019-06-13T11:07:14+03:00",
"reply_deadline": "2019-06-20T11:07:14Z",
"created_at": "2019-06-11T07:34:16.082957Z", "created_at": "2019-06-11T07:34:16.082957Z",
"updated_at": "2019-06-16T08:10:28.657972Z" "updated_at": "2019-06-16T08:10:28.657972Z"
},
{
"id": 28,
"avatar": "",
"name": "",
"channel": {
"id": 61,
"avatar": "",
"transport_id": 1,
"type": "fbmessenger",
"settings": {
"status": {
"delivered": "send",
"read": "send"
},
"text": {
"creating": "both",
"quoting": "receive",
"max_chars_count": 2000
},
"product": {
"creating": "receive"
},
"order": {
"creating": "receive"
},
"image": {
"creating": "both",
"max_items_count": 10
},
"file": {
"creating": "both",
"max_items_count": 10
}
},
"name": "testbot",
"is_active": false
},
"members": null,
"customer": {
"id": 38,
"type": "customer",
"avatar": "",
"name": "Пётр Петрович",
"username": "Пётр",
"first_name": "Пётр",
"last_name": "Петрович"
},
"author_id": 0,
"last_message": {
"id": 1,
"time": "2022-12-21T17:15:54+01:00",
"type": "command",
"scope": "private",
"chat_id": 1053,
"is_read": false,
"is_edit": false,
"status": "received",
"from": {
"id": 2,
"external_id": "12",
"type": "user",
"avatar": null,
"name": "Cuenta Soporte",
"first_name": "Cuenta",
"last_name": "Soporte",
"is_technical_account": true
}
},
"last_activity": "2019-06-13T11:07:14+03:00",
"reply_deadline":"2019-06-20T11:07:14Z",
"created_at": "2019-06-11T07:34:16Z",
"updated_at": "2019-06-16T08:10:28Z"
} }
] ]

View file

@ -0,0 +1,63 @@
[
{
"id": 30,
"avatar": "",
"name": "",
"channel": {
"id": 72,
"avatar": "",
"transport_id": 4,
"type": "fbmessenger",
"settings": {
"status": {
"delivered": "send"
},
"text": {
"creating": "both",
"editing": "both",
"quoting": "both",
"deleting": "receive",
"max_chars_count": 4096
},
"product": {
"creating": "receive",
"editing": "receive"
},
"order": {
"creating": "receive",
"editing": "receive"
},
"image": {
"creating": "both",
"editing": "both",
"quoting": "both",
"deleting": "receive",
"max_items_count": 10
},
"file": {
"creating": "both",
"editing": "both",
"quoting": "both",
"deleting": "receive",
"max_items_count": 1
}
},
"name": "testbot",
"is_active": true
},
"members": null,
"customer": {
"id": 39,
"type": "customer",
"avatar": "",
"name": "Иван",
"username": "Иван",
"first_name": "Иван"
},
"author_id": 0,
"last_message": null,
"last_activity": "2019-06-11T17:36:20+03:00",
"created_at": "2019-06-11T12:49:26.938879Z",
"updated_at": "2019-06-14T14:40:28.7111Z"
}
]

Some files were not shown because too many files have changed in this diff Show more