SendChatMsg   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 63
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 3
Bugs 0 Features 0
Metric Value
wmc 7
c 3
b 0
f 0
lcom 1
cbo 4
dl 0
loc 63
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
B setRequestData() 0 12 5
B execute() 0 27 1
1
<?php
2
/**
3
 * Copyright (c) 2014, Tobia De Koninck hey--at--ledfan.be
4
 * This file is licensed under the AGPL version 3 or later.
5
 * See the COPYING file.
6
 */
7
8
namespace OCA\Chat\OCH\Commands;
9
10
use \OCA\Chat\App\Chat;
11
use \OCA\Chat\Controller\OCH\ApiController;
12
use \OCA\Chat\OCH\ChatAPI;
13
use \OCA\Chat\OCH\Db\UserMapper;
14
use \OCA\Chat\OCH\Db\PushMessage;
15
use \OCA\Chat\OCH\Db\PushMessageMapper;
16
use \OCA\Chat\OCH\Exceptions\RequestDataInvalid;
17
use \OCA\Chat\OCH\Db\Message;
18
use \OCA\Chat\OCH\Db\MessageMapper;
19
20
class SendChatMsg extends ChatAPI {
21
22
	/**
23
	 * @var $pushMessageMapper \OCA\Chat\OCH\Db\PushMessageMapper
24
	 */
25
	private $pushMessageMapper;
26
27
	/**
28
	 * @var $messageMapper \OCA\Chat\OCH\Db\messageMapper
29
	 */
30
	private $messageMapper;
31
32
	public function __construct(
33
		PushMessageMapper $pushMessageMapper,
34
		MessageMapper $messageMapper
35
	){
36
		$this->pushMessageMapper = $pushMessageMapper;
37
		$this->messageMapper = $messageMapper;
38
	}
39
40
41
42
	public function setRequestData(array $requestData){
43
		if(empty($requestData['conv_id'])){
44
			throw new RequestDataInvalid(ApiController::NO_CONV_ID);
45
		}
46
		if(empty($requestData['chat_msg']) || !array_key_exists('chat_msg', $requestData)){
47
			throw new RequestDataInvalid(ApiController::NO_CHAT_MSG);
48
		}
49
		if(empty($requestData['timestamp'])){
50
			throw new RequestDataInvalid(ApiController::NO_TIMESTAMP);
51
		}
52
		$this->requestData = $requestData;
53
	}
54
55
	public function execute(){
56
		$command = json_encode(array(
57
			'type' => 'send_chat_msg',
58
			'data' => array(
59
				'user' => $this->requestData['user'],
60
				'conv_id' => $this->requestData['conv_id'],
61
				'timestamp' => $this->requestData['timestamp'],
62
				'chat_msg' => $this->requestData['chat_msg']
63
			)
64
		));
65
66
		$this->pushMessageMapper->createForAllUsersInConv(
67
			$this->requestData['user']['id'],
68
			$this->requestData['conv_id'],
69
			$command,
70
			$this->requestData['user']['id']
71
		);
72
73
		// All done
74
		// insert this chatMsg into the messages table
75
		$message = new Message();
76
		$message->setConvid($this->requestData['conv_id']);
77
		$message->setTimestamp($this->requestData['timestamp']);
78
		$message->setUser($this->requestData['user']['id']);
79
		$message->setMessage($this->requestData['chat_msg']);
80
		$this->messageMapper->insert($message);
81
	}
82
}
83