where('payments.is_active','=',1) ->where('payments.cyware_synced','=',1) ->where('station_id',StaticContents::app_station_id()); if($params['date_start'] != null && $params['date_end'] != null) { $list = $list->where('paid_at','>=',date('Y-m-d',strtotime($params['date_start'])).' 00:00:00') ->where('paid_at','<=',date('Y-m-d',strtotime($params['date_end'])).' 23:59:59'); } if($params['search'] != null) { $list = $list->whereHas('loyaltyCard', function ($query) use ($params) { $query->where('card_number', 'LIKE', '%'.$params['search'].'%'); }); } $sorting = $params['sorting']; if(count($sorting) > 0) { $list = $list->sort($sorting['field'],$sorting['sort_order']); } if($export) return $list->get(); else return $list->paginate($params['page_size']); } public function get_by_trans_num($trans_num) { $data = Payment::with(['ratings','items']) ->where('trans_num',$trans_num); return $data->first(); } public function store_non_app($data,$member_data) { $this->payments = new Payment(); $uuid = new UuidHelper; $this->payments->payment_uuid = $uuid->generate_uuid1(); $this->payments->lcard_id = $member_data->lcard_id; $this->payments->station_id = $data['station_id']; $this->payments->firstname = $member_data->personalDetails->firstname; $this->payments->lastname = $member_data->personalDetails->lastname; $this->payments->payer_email = $member_data->email; $this->payments->trans_num = $data['trans_num']; // $this->payments->item_name = $data['item_name']; // $this->payments->item_code = $data['item_code']; $this->payments->amount = $data['total_amount']; $this->payments->points = $data['points']; $this->payments->entry_type_code = $data['entry_type_code']; $this->payments->entry_type_desc = $data['entry_type_desc']; // $this->payments->quantity = $data['quantity']; $this->payments->created_by = $member_data->lcard_id; $this->payments->payer_id = 0; $this->payments->business = ''; $this->payments->verify_sign = ''; $this->payments->receiver_email = ''; if($this->payments->save()) { $payment_id = $this->payments->payment_id; foreach ($data['items'] as $k => $i) { $this->items = new PaymentsItems(); $this->items->payment_id = $payment_id; $this->items->item_name = $i['item']; $this->items->quantity = $i['quantity']; $this->items->price = $i['price']; $this->items->created_at = date('Y-m-d H:i:s'); $this->items->save(); } return $payment_id; } else return false; } public function store($data,$member_data) { $this->payments = new Payment(); $uuid = new UuidHelper; $this->payments->payment_uuid = $uuid->generate_uuid1(); $this->payments->lcard_id = $member_data->lcard_id; $this->payments->station_id = StaticContents::app_station_id(); $this->payments->trans_num = $data['trans_num']; // $this->payments->item_name = $data['item_name']; // $this->payments->item_code = $data['item_code']; $this->payments->amount = $data['amount']; $this->payments->points = 0; // cannot be known $this->payments->entry_type_code = $data['entry_type_code']; $this->payments->entry_type_desc = $data['entry_type_desc']; // $this->payments->quantity = 1; $this->payments->created_by = $member_data->lcard_id; $this->payments->paypal_id = $data['paypal_id']; $this->payments->other = $data['other']; $this->payments->status = 0; // details to be updated after successful payment from paypal $this->payments->payer_email = ''; $this->payments->payer_id = 0; $this->payments->business = ''; $this->payments->verify_sign = ''; $this->payments->receiver_email = ''; $this->payments->firstname = ''; $this->payments->lastname = ''; if($this->payments->save()) { $payment_id = $this->payments->payment_id; foreach ($data['items'] as $k => $i) { $this->items = new PaymentsItems(); $this->items->payment_id = $payment_id; $this->items->item_name = $i['item']; $this->items->quantity = $i['quantity']; $this->items->price = $i['price']; $this->items->created_at = date('Y-m-d H:i:s'); $this->items->save(); } return $payment_id; } else return false; } public function count_between($lcard_id, $from, $to) { $count = Payment::where('is_active',1) ->where('lcard_id',$lcard_id) ->where('paid_at','>=',$from) ->where('paid_at','<=',$to) ->count(); return $count; } public function count_trans_month() { $count = Payment::where('is_active',1) ->where('created_at','>=',date('Y-m-01').' 00:00:00') ->where('created_at','<=',date('Y-m-t').' 23:59:59') ->count(); return $count; } public function failed_transaction($paypal_id,$other) { $this->payments = Payment::where('paypal_id',$paypal_id) ->where('is_active',1) ->first(); if($this->payments->status != 1) { $this->payments->status = 2; $this->payments->other = serialize($other); if($this->payments->save()) return true; else return false; } } public function success_transaction($trans_num, $data) { $this->payments = Payment::where('trans_num',$trans_num) ->where('is_active',1) ->first(); $this->payments->status = 1; $this->payments->other = serialize($data['other']); $this->payments->firstname = $data['firstname']; $this->payments->lastname = $data['lastname']; $this->payments->payer_email = $data['payer_email']; $this->payments->receiver_email = $data['receiver_email']; $this->payments->paypal_trans_num = $data['paypal_trans_num']; $this->payments->paid_at = $data['paid_at']; if($this->payments->save()) return true; else return false; } public function cyware_synced($id, $points) { $this->payments = Payment::where('payment_id',$id) ->first(); $this->payments->cyware_synced = 1; $this->payments->points = $points; if($this->payments->save()) return true; else return false; } }