1
0
mirror of https://github.com/nerzhul/ocsms.git synced 2025-06-07 16:06:15 +00:00

Use mapper properly on controller. Need tests

This commit is contained in:
Loïc Blot (@U-Exp) 2014-09-12 16:31:08 +02:00
parent 43d122a6b8
commit b853362683
3 changed files with 35 additions and 17 deletions

View File

@ -35,7 +35,8 @@ class Application extends App {
return new SmsController( return new SmsController(
$c->query('AppName'), $c->query('AppName'),
$c->query('Request'), $c->query('Request'),
$c->query('UserId') $c->query('UserId'),
$c->query('SmsMapper')
); );
}); });

View File

@ -15,15 +15,19 @@ namespace OCA\OcSms\Controller;
use \OCP\IRequest; use \OCP\IRequest;
use \OCP\AppFramework\Http\TemplateResponse; use \OCP\AppFramework\Http\TemplateResponse;
use \OCP\AppFramework\Controller; use \OCP\AppFramework\Controller;
use OCA\OcSms\Db\SmsMapper; use \OCA\MyApp\Db\SmsMapper;
class SmsController extends Controller { class SmsController extends Controller {
private $userId; private $userId;
private $smsMapper;
// TMP
private $errorMsg;
public function __construct($appName, IRequest $request, $userId){ public function __construct($appName, IRequest $request, $userId, SmsMapper $mapper){
parent::__construct($appName, $request); parent::__construct($appName, $request);
$this->userId = $userId; $this->userId = $userId;
$this->smsMapper = $mapper;
} }
/** /**
@ -39,8 +43,18 @@ class SmsController extends Controller {
* @NoAdminRequired * @NoAdminRequired
*/ */
public function push ($smsCount, $smsDatas) { public function push ($smsCount, $smsDatas) {
if ($this->checkPushStructure($smsCount, $smsDatas) === false) {
return $this->errorMsg;
}
$smsMapper->saveAll($this->userId, $smsDatas);
return "OK";
}
private function checkPushStructure($smsCount, $smsDatas) {
if ($smsCount != count($smsDatas)) { if ($smsCount != count($smsDatas)) {
return "Error: sms count invalid"; $this->errorMsg = "Error: sms count invalid";
return false;
} }
foreach ($smsDatas as $sms) { foreach ($smsDatas as $sms) {
@ -48,35 +62,38 @@ class SmsController extends Controller {
!array_key_exists("draft", $sms) || !array_key_exists("draft", $sms) ||
!array_key_exists("date", $sms) || !array_key_exists("seen", $sms) || !array_key_exists("date", $sms) || !array_key_exists("seen", $sms) ||
!array_key_exists("body", $sms) || !array_key_exists("address", $sms)) { !array_key_exists("body", $sms) || !array_key_exists("address", $sms)) {
return "Error: bad SMS entry"; $this->errorMsg = "Error: bad SMS entry";
return false;
} }
if (!is_numeric($sms["id"])) { if (!is_numeric($sms["id"])) {
return "Error: Invalid SMS ID"; $this->errorMsg = "Error: Invalid SMS ID";
return false;
} }
if ($sms["read"] !== "true" && $sms["read"] !== "false") { if ($sms["read"] !== "true" && $sms["read"] !== "false") {
return "Error: Invalid SMS Read state"; $this->errorMsg = "Error: Invalid SMS Read state";
return false;
} }
if ($sms["seen"] !== "true" && $sms["seen"] !== "false") { if ($sms["seen"] !== "true" && $sms["seen"] !== "false") {
return "Error: Invalid SMS Seen state"; $this->errorMsg = "Error: Invalid SMS Seen state";
return false;
} }
if ($sms["draft"] !== "true" && $sms["draft"] !== "false") { if ($sms["draft"] !== "true" && $sms["draft"] !== "false") {
return "Error: Invalid SMS Draft state"; $this->errorMsg = "Error: Invalid SMS Draft state";
return false;
} }
if (!is_numeric($sms["date"]) && $sms["date"] != 0 && $sms["date"] != 1) { if (!is_numeric($sms["date"]) && $sms["date"] != 0 && $sms["date"] != 1) {
return "Error: Invalid SMS date"; $this->errorMsg = "Error: Invalid SMS date";
return false;
} }
// @ TODO: test address and body ? // @ TODO: test address and body ?
} }
return true;
$smsMgr = new SmsMapper();
$smsMgr->saveAll($smsDAtas);
return "OK";
} }

View File

@ -21,16 +21,16 @@ class SmsMapper extends Mapper {
} }
// @TODO // @TODO
public function saveAll($smsList) { public function saveAll($userId, $smsList) {
foreach ($smsList as $sms) { foreach ($smsList as $sms) {
$query = \OC_DB::prepare('INSERT INTO *PREFIX*ocsms_smsdatas ' . $query = \OC_DB::prepare('INSERT INTO *PREFIX*ocsms_smsdatas ' .
'(user_id, added, lastmodified, sms_read, sms_seen, sms_date,' . '(user_id, added, lastmodified, sms_read, sms_seen, sms_date,' .
'sms_draft, sms_id, sms_address, sms_msg) VALUES ' . 'sms_draft, sms_id, sms_address, sms_msg) VALUES ' .
'(?,?,?,?,?,?,?,?,?,?)'); '(?,?,?,?,?,?,?,?,?,?)');
$result = $query->execute(array( $result = $query->execute(array(
\OCP\User::getUser(),"NOW()","NOW()", $userId, "NOW()", "NOW()",
$sms["read"] === "true", $sms["seen"] === "true", $sms["read"] === "true", $sms["seen"] === "true",
$sms["date"], $sms["draft"] === "true", $sms["id"], (int) $sms["date"], $sms["draft"] === "true", $sms["id"],
$sms["address"], $sms["body"] $sms["address"], $sms["body"]
)); ));
} }