function find($criteria = null, $order = null, $limit = 1000, $from = 0)
 {
     $result = $this->database->query($this->buildFindQuery($criteria, $order, $limit, $from));
     if (!is_null($result->getError())) {
         return $result->getError();
     }
     $stages = array();
     while ($row = $result->fetchRow()) {
         $stage = new Stage();
         $value = $row[0];
         $stage->setId($value);
         $value = $row[1];
         $stage->setPid($value);
         $value = $row[2];
         $stage->setName($value);
         $value = $row[3];
         $stage->setAbout($value);
         $value = $row[4];
         $stage->setOrderis($value);
         $value = $row[5];
         $value = $this->database->toBoolean($value);
         $stage->setLast($value);
         $value = $row[6];
         $stage->setPeriod_type($value);
         $value = $row[7];
         $stage->setPeriod($value);
         $value = $row[8];
         $stage->setDelay($value);
         $value = $row[9];
         $stage->setEnded_stage($value);
         $value = $row[10];
         $stage->setEnded_stage_pid($value);
         $value = $row[11];
         $stage->setCancel_customer($value);
         $value = $row[12];
         $stage->setCancel_customer_pid($value);
         $value = $row[13];
         $value = $this->database->toBoolean($value);
         $stage->setSend($value);
         $value = $row[14];
         $stage->setApi($value);
         $value = $row[15];
         $stage->setCampaign($value);
         $value = $row[16];
         $value = $this->database->toBoolean($value);
         $stage->setSend_mail($value);
         $value = $row[17];
         $stage->setSend_to($value);
         $value = $row[18];
         $stage->setSend_from($value);
         $value = $row[19];
         $stage->setSend_subject($value);
         $value = $row[20];
         $stage->setSend_text($value);
         $value = $row[21];
         $stage->setR_date($value);
         $value = $row[22];
         $stage->setR_user($value);
         if ($order != null) {
             array_push($stages, $stage);
         } else {
             $stages[$stage->getId()] = $stage;
         }
     }
     return $stages;
 }
 function actionSaveStage($currentUser)
 {
     $backUrl = $this->context->getFlowScopeAttr("backUrl");
     $stage = new Stage();
     $stageErrs = array();
     $stage->setId($this->context->getRequestAttr("id"));
     $stage->setPid($this->context->getRequestAttr("projectID"));
     $stage->setOrderis($this->context->getRequestAttr("order"));
     $stage->setName($this->context->getRequestAttr("name"));
     if (!is_null($stage->getName())) {
         $stage->setName(trim($stage->getName()));
         if (strlen($stage->getName()) < 1) {
             $stage->setName(null);
         }
     }
     if (is_null($stage->getName())) {
         $stageErrs["name"] = "field.error.empty";
     }
     $stage->setAbout($this->context->getRequestAttr("about"));
     if (!is_null($stage->getAbout())) {
         $stage->setAbout(trim($stage->getAbout()));
         if (strlen($stage->getAbout()) < 1) {
             $stage->setAbout(null);
         }
     }
     $stage->setPeriod_type($this->context->getRequestAttr("period_type"));
     $stage->setPeriod($this->context->getRequestAttr("period"));
     if (!is_null($stage->getPeriod())) {
         $stage->setPeriod(trim($stage->getPeriod()));
         if (strlen($stage->getPeriod()) < 1) {
             $stage->setPeriod(null);
         }
     }
     if (is_null($stage->getPeriod())) {
         $stageErrs["period"] = "field.error.empty";
     } else {
         if (!is_numeric($stage->getPeriod())) {
             $stageErrs["period"] = "field.error.notnumber";
         } else {
             if ($stage->getPeriod() < 1) {
                 $stageErrs["period"] = "field.error.morethenzero";
             }
         }
     }
     $stage->setDelay($this->context->getRequestAttr("delay"));
     if (!is_null($stage->getDelay())) {
         $stage->setDelay(trim($stage->getDelay()));
         if (strlen($stage->getDelay()) < 1) {
             $stage->setDelay(null);
         }
     }
     if (is_null($stage->getDelay())) {
         $stageErrs["delay"] = "field.error.empty";
     } else {
         if (!is_numeric($stage->getDelay())) {
             $stageErrs["delay"] = "field.error.notnumber";
         } else {
             if ($stage->getDelay() < 0) {
                 $stageErrs["delay"] = "field.error.morethenzero";
             }
         }
     }
     $stage->setEnded_stage($this->context->getRequestAttr("ended_stege"));
     $stage->setCancel_customer($this->context->getRequestAttr("cancel_customer"));
     $stage->setEnded_stage_pid("");
     $stage->setCancel_customer_pid("");
     if ($stage->getEnded_stage() != "0" && !is_null($stage->getEnded_stage())) {
         $endedStagePid = $this->context->getRequestAttr("ended_stage_pid");
         if (is_null($endedStagePid) || count($endedStagePid) == 0) {
             $stageErrs["ended_stege_pid"] = "field.error.needselectproject";
         } else {
             $stage->setEnded_stage_pid(implode(",", $endedStagePid));
         }
     }
     if ($stage->getCancel_customer() != "0" && !is_null($stage->getCancel_customer())) {
         $cancelCustomerPid = $this->context->getRequestAttr("cancel_customer_pid");
         if (is_null($cancelCustomerPid) || count($cancelCustomerPid) == "0") {
             $stageErrs["cancel_customer_pid"] = "field.error.needselectproject";
         } else {
             $stage->setCancel_customer_pid(implode(",", $cancelCustomerPid));
         }
     }
     $last = $this->context->getRequestAttr("last");
     $stage->setLast($last == 1 ? true : false);
     $send = $this->context->getRequestAttr("send");
     $stage->setSend($send == 1 ? true : false);
     $stage->setApi(null);
     $stage->setCampaign(null);
     if ($stage->isSend()) {
         $stage->setApi($this->context->getRequestAttr("api"));
         if (!is_null($stage->getApi())) {
             $stage->setApi(trim($stage->getApi()));
             if (strlen($stage->getApi()) < 1) {
                 $stage->setApi(null);
             }
         }
         if (is_null($stage->getApi())) {
             $stageErrs["api"] = "field.error.empty";
         }
         $stage->setCampaign($this->context->getRequestAttr("campaign"));
         if (!is_null($stage->getCampaign())) {
             $stage->setCampaign(trim($stage->getCampaign()));
             if (strlen($stage->getCampaign()) < 1) {
                 $stage->setCampaign(null);
             }
         }
         if (is_null($stage->getCampaign())) {
             $stageErrs["campaign"] = "field.error.empty";
         } else {
             if (preg_match('/\\s/', $stage->getCampaign())) {
                 $stageErrs["campaign"] = "Netinkamas pavadinimas. Negalimi tarpai";
             }
         }
     }
     $send_mail = $this->context->getRequestAttr("send_mail");
     $stage->setSend_mail($send_mail == 1 ? true : false);
     if ($stage->isSend_mail()) {
         $leader = $this->context->getRequestAttr("leader");
         $partner = $this->context->getRequestAttr("partner");
         $customer = $this->context->getRequestAttr("customer");
         $sendTo = (!is_null($leader) ? "leader" : "") . (!is_null($partner) ? "partner" : "") . (!is_null($customer) ? "customer" : "");
         $stage->setSend_to($sendTo);
         if (!is_null($stage->getSend_to())) {
             $stage->setSend_to(trim($stage->getSend_to()));
             if (strlen($stage->getSend_to()) < 1) {
                 $stage->setSend_to(null);
             }
         }
         if (is_null($stage->getSend_to())) {
             $stageErrs["send_to"] = "field.error.needatleestone";
         }
         $stage->setSend_from($this->context->getRequestAttr("send_from"));
         if (!is_null($stage->getSend_from())) {
             $stage->setSend_from(trim($stage->getSend_from()));
             if (strlen($stage->getSend_from()) < 1) {
                 $stage->setSend_from(null);
             }
         }
         if (is_null($stage->getSend_from())) {
             $stageErrs["send_from"] = "field.error.empty";
         } else {
             if (!$this->validateEmail($stage->getSend_from())) {
                 $stageErrs["send_to"] = "field.error.wrongemail";
             }
         }
         $stage->setSend_subject($this->context->getRequestAttr("send_subject"));
         if (!is_null($stage->getSend_subject())) {
             $stage->setSend_subject(trim($stage->getSend_subject()));
             if (strlen($stage->getSend_subject()) < 1) {
                 $stage->setSend_subject(null);
             }
         }
         if (is_null($stage->getSend_subject())) {
             $stageErrs["send_subject"] = "field.error.empty";
         }
         $stage->setSend_text($this->context->getRequestAttr("send_text"));
         if (!is_null($stage->getSend_text())) {
             $stage->setSend_text(trim($stage->getSend_text()));
             if (strlen($stage->getSend_text()) < 1) {
                 $stage->setSend_text(null);
             }
         }
         if (is_null($stage->getSend_text())) {
             $stageErrs["send_text"] = "field.error.empty";
         }
     }
     //$stageErrs["apisss"]=1;
     $timeZone = new DateTimeZone("Europe/Vilnius");
     $time = new DateTime("now", $timeZone);
     $stage->setR_date($time->format("Y-m-d H:i:s"));
     $stage->setR_user($currentUser->getId());
     $this->context->setFlashScopeAttr("stage", $stage);
     $this->context->setFlashScopeAttr("stageErrs", $stageErrs);
     $projectID = $stage->getPid();
     if (!$this->setStoreProject($projectID, "stageProject")) {
         $this->cancelStageEdit();
         if (!is_null($backUrl)) {
             header("Location: " . $backUrl);
             return true;
         }
         return false;
     }
     if (count($stageErrs) >= 1) {
         if (!is_null($backUrl)) {
             header("Location: " . $backUrl);
             return true;
         }
         return false;
     }
     $store = $this->storeStage($stage);
     if (!$store) {
         if (!is_null($backUrl)) {
             header("Location: " . $backUrl);
             return true;
         }
         return false;
     }
     $this->cancelStageEdit();
     if (!is_null($backUrl)) {
         header("Location: " . $backUrl);
         return true;
     }
     return false;
 }