public function update_order_status() { $id = Request::segment(3); $order = Order::find($id); $order->status = Input::get('status'); $order->save(); if ($order->status == 'Delivered') { $total = $order->total_amount; // Charge Users $credits = UserCredit::where('user_id', $order->user_id)->first(); $balance = $credits->earned - $credits->spent; if ($total > $balance) { $ledger_temp = UserCredit::find($credits->id); $ledger_temp->spent = $ledger_temp->earned; $ledger_temp->save(); $total = $total - $balance; } else { $ledger_temp = UserCredit::find($credits->id); $ledger_temp->spent = $ledger_temp->spent + $total; $ledger_temp->save(); $total = 0; } $order = Order::find($id); $order->card_payment = $total; $order->credit_payment = $order->total_amount - $total; $order->save(); try { $payment = Payment::find($order->payment_id); $customer_id = $payment->customer_id; Stripe::setApiKey(Config::get('app.stripe_secret_key')); Stripe_Charge::create(array("amount" => $total * 100, "currency" => "usd", "customer" => $customer_id)); $walk->is_paid = 1; if ($walk->tip) { $walk->tip_status = 2; } } catch (Exception $e) { //print_r($e); } // Payment Charged Mail $user = User::find($order->user_id); Mail::send('emails.payment_charged', array('user' => $user, 'order' => $order), function ($message) use($user) { $message->to($user->email, $user->first_name)->subject('Order Successfully Delivered!'); }); // Payment Charged Mail to Admin $admin_email = Config::get('app.admin_email'); Mail::send('emails.admin_payment_charged', array('user' => $user, 'order' => $order), function ($message) use($admin_email) { $message->to($admin_email, "Admin")->subject('Payment Charged!'); }); } $message = "Successfully updated the order status"; $type = "success"; return Redirect::to('/admin/order/' . $id . '/details')->with('type', $type)->with('message', $message); }