public function add(IDocument $document) { $identitfier = $this->getDocumentIdentifier($document); if (!in_array($identitfier, $this->ids)) { parent::add($document); } }
/** * * @param mixed $params {id: Array(Number), logo: String, extra: String} * @param function $cb * @return mixed {success: Boolean; message: String} */ static function sign($params, $cb = signDocuments) { $res = array("success" => false, "message" => "Unknown error in Ajax.sign"); $docsId = $params["id"]; if (isset($docsId)) { $docs = new DocumentCollection(); foreach ($docsId as &$id) { $doc = TDataBaseDocument::getDocumentById($id); if ($doc !== null) { $lastDoc = $doc->getLastDocument(); //Проверка статуса Документа. Если Документ имеет статус "В процессе", то вернуть пользователю ошибку if ($lastDoc->getStatus() && $lastDoc->getStatus()->getValue() == DOCUMENT_STATUS_PROCESSING) { $res["message"] = "Один из документов был отправлен на подпись. Повторите попытку позже."; return $res; } $docs->add($lastDoc); } } $ajaxParams = AjaxParams::fromArray($params); if ($cb) { $cb($docs, $ajaxParams); } if ($docs->count()) { $resp = json_decode(AjaxSign::sendSignRequest($docs, $ajaxParams), true); if ($resp["success"] == true) { $res["success"] = true; $res["code"] = $resp["code"]; $res["message"] = $resp['message']; $list = $docs->getList(); foreach ($list as $item) { //Выставление статуса документа для его блокировки DocumentStatus::create($item, DOCUMENT_STATUS_PROCESSING); } } else { $res["message"] = isset($resp["message"]) ? $resp["message"] : $resp["error"]; $res["code"] = $resp["code"]; } } else { $res["message"] = "Нет документов требующих подписи"; } } else { $res["message"] = "POST parameter 'id' is required"; } return $res; }