public function transform($transaction) { $return_array = ['id' => $transaction->id, 'type' => "receive", 'money' => $transaction->money, 'status' => transaction_status_raw($transaction->status), 'created_at' => format_time_to_mysql(strtotime($transaction->created_at)), 'type' => transaction_type_raw($transaction->type)]; if ($transaction->type == 0) { if ($transaction->receiver != null) { $return_array['receiver'] = $transaction->receiver->name; } $return_array['note'] = "Người nhận: " . $transaction->receiver->name; } else { $return_array['note'] = $transaction->note; } if ($transaction->sender != null) { $return_array['sender'] = $transaction->sender->name; } return $return_array; }
public function create_transaction($domain, Request $request) { if ($this->user->status == 2) { return $this->responseBadRequest('Nhân viên này đang chuyển tiền.'); } else { $this->user->status = 2; $this->user->save(); $transaction = new Transaction(); $transaction->status = 0; $transaction->sender_id = $this->user->id; $transaction->receiver_id = $request->receiver_id; $transaction->receiver_money = User::find($request->receiver_id)->money; $transaction->money = $this->user->money; $transaction->save(); $notification = new Notification(); $notification->product_id = $transaction->id; $notification->actor_id = $this->user->id; $notification->receiver_id = $request->receiver_id; $notification->type = 3; $notification->save(); $data = array("message" => $notification->actor->name . " vừa chuyển tiền cho bạn và đang chờ bạn xác nhận.", "link" => "", 'transaction' => ['id' => $transaction->id, 'sender' => $transaction->sender->name, 'receiver' => $transaction->receiver->name, 'status' => transaction_status_raw($transaction->status), 'money' => $transaction->money], 'created_at' => format_date_full_option($notification->created_at), "receiver_id" => $notification->receiver_id); $publish_data = array("event" => "notification", "data" => $data); Redis::publish('colorme-channel', json_encode($publish_data)); $publish_data = array("event" => "notification", "data" => ["notification" => $this->notificationTransformer->transform($notification)]); Redis::publish('colorme-channel', json_encode($publish_data)); return $this->respond(['transaction' => ['sender' => $transaction->sender->name, 'receiver' => $transaction->receiver->name, 'status' => transaction_status_raw($transaction->status), 'money' => $transaction->money]]); } }
public function confirm_transaction(Request $request) { $transaction_id = $request->id; $status = $request->status; $transaction = Transaction::find($transaction_id); if ($transaction->status != 0) { return json_encode(['error' => 'Giao dịch không ở trạng thái pending', 'status' => transaction_status($transaction->status), 'money' => currency_vnd_format($transaction->receiver->money)]); } $transaction->status = $status; $transaction->sender->status = 0; if ($status == 1) { $transaction->sender->money = $transaction->sender->money - $transaction->money; $transaction->receiver->money = $transaction->receiver->money + $transaction->money; } $transaction->save(); $transaction->sender->save(); $transaction->receiver->save(); $notification = new Notification(); $notification->product_id = $transaction->id; $notification->actor_id = $transaction->receiver->id; $notification->receiver_id = $transaction->sender->id; $notification->type = 4; $notification->save(); $data = array("message" => "Bạn chuyển tiền cho " . $transaction->receiver->name . " " . transaction_status_raw($transaction->status), "link" => "", 'transaction' => ['id' => $transaction->id, 'sender' => $transaction->sender->name, 'receiver' => $transaction->receiver->name, 'status' => transaction_status_raw($transaction->status), 'money' => $transaction->money], 'created_at' => format_date_full_option($notification->created_at), "receiver_id" => $notification->receiver_id); $publish_data = array("event" => "notification", "data" => $data); Redis::publish('colorme-channel', json_encode($publish_data)); $publish_data = array("event" => "notification", "data" => ["notification" => $this->notificationTransformer->transform($notification)]); Redis::publish('colorme-channel', json_encode($publish_data)); $return_data = array('status' => transaction_status($transaction->status), 'money' => currency_vnd_format($transaction->receiver->money)); return json_encode($return_data); }