M Jawahiruzzaman
M Jawahiruzzaman

Reputation: 11

Issue with Data Returning [false, false, false] after looping updated data in Phalcon

I am working on a project using Phalcon and encountering an issue while trying to save DrugOrder objects. Below is the relevant part of my code:

$drug_order = DrugOrder::find([
    'conditions' => "resep_no = :resep_no: AND disposition= :disposition: AND hospital_id = :hospital_id:",
    'bind' => [
        'resep_no' => $resep_no,
        'disposition' => 'retur',
        'hospital_id' => $this->membership->houseID()
    ]
]);

if ($drug_order && count($drug_order) > 0) {
    $discount = CF::toArray($discount);
    foreach ($drug_order as $order) {
        if (!empty($discount)) {
            $checker = array_values(array_filter($discount, function ($d) use ($order) {
                return $d['drug_order_id'] == $order->drug_order_id || $d['drug_order_id'] == $order->returned_drug_id;
            }));
            if (!empty($checker)) {
                $order->discount_percentage = (double)$checker[0]['discount_percentage'];
                $order->discount = (double)$checker[0]['discount'];
                $order->sisa = (double)$checker[0]['sisa'];
            }
        }
        $order->disposition = 'returned';
        $order->retur_date = $now;
        $order->retur_by = $security->user_id;
        $order->retur_by_name = $security->full_name;
        $order->modified_date = $now;
        $order->modified_by = $security->user_id;
        $order->modified_by_name = $security->full_name;

        if ($order->save() === false) {
            $messages = $order->getMessages();
            foreach ($messages as $message) {
                $this->base->logError($message, static::class, __LINE__);
            }
        } else {
            $this->base->logDev($order->toArray()); // Log the order details after saving
        }
    }
}

$this->base->logDev($drug_order->toArray()); // Log the entire drug_order collection

$prescription_tags = preg_split('@,@', $drug_prescription->tags, -1, PREG_SPLIT_NO_EMPTY);
$resep_retur_no = CF::valuesInArrayByPrefix($prescription_tags, 'retur-from-resep-');
if (!empty($resep_retur_no)) {
    foreach ($drug_order as $order) {
        $order_drug_tags = preg_split('@,@', $order->tags, -1, PREG_SPLIT_NO_EMPTY);
        $drug_retur_nos = CF::valuesInArrayByPrefix($order_drug_tags, 'retur-from-resep-');
        $gudang_service->setUsedStockTransactionDisposition($drug_prescription->depo_id, current($drug_retur_nos), $gudang_service::STOCK_DISPOSITION_RETUR_USED, [], $order->returned_drug_id, $order->numero_retur, $usage, $drug_prescription->depo_name);
    }
} else {
    foreach ($drug_order as $order) {
        $gudang_service->setUsedStockTransactionDisposition($drug_prescription->depo_id, $resep_no, $gudang_service::STOCK_DISPOSITION_RETUR_USED, [], $order->drug_order_id, $order->numero_retur, $usage);
    }
}

$debug_key = sprintf('%s (%s)', $drug_prescription->full_name, $drug_prescription->rm_id);
$message = sprintf('Obat pada resep %s pasien dengan nama %s berhasil diretur.', $drug_prescription->resep_no, $debug_key);
$this->logger->logAction($this->resourceName, $message, [], strtolower($this->resourceName), $security->user_id, 'ok', $drug_prescription->resep_no);
 

The problem I'm facing is that when I perform logDev for drug_order, the result is [false, false, false] even though the save() method returns true for each DrugOrder.

I have tried adding detailed logging for each DrugOrder object after saving, but the result remains the same. I have also ensured that each DrugOrder is saved correctly without any error messages.

Can anyone provide insights into why drug_order still shows [false, false, false] in the logDev? Is there something I might be missing in the save or logging process? Thank you in advance for your assistance.

Upvotes: 0

Views: 32

Answers (0)

Related Questions