cardType = $cardType; } public function listing($params) { $pagination = ListHelper::validatePagination($params['page_size'],$params['page']); $list = LoyaltyCard::with(['personalDetails','codeVehicleOwn','codeCivilStatus','codeGender','codeCardType']); if($params['search'] != null) { // $list = $list->whereHas('personalDetails', function ($query) use ($params) { // $query->where('firstname', 'LIKE', '%'.$params['search'].'%'); // $query->orWhere('lastname', 'LIKE', '%'.$params['search'].'%'); // }) // ->orWhere(function($query) use ($params){ // $query->orWhere('card_number', 'LIKE', '%'.$params['search'].'%'); // }); $list = $list->where(function($list_or) use ($params){ $list_or->whereHas('personalDetails', function ($query) use ($params) { $query->where('firstname', 'LIKE', '%'.$params['search'].'%'); $query->orWhere('lastname', 'LIKE', '%'.$params['search'].'%'); }) ->orWhere(function($query) use ($params){ $query->orWhere('card_number', 'LIKE', '%'.$params['search'].'%'); }); }); } if($params['filter']) { $list->where(function($query) use ($params){ foreach($params['filter'] as $field => $value) { if($value != null) { if(is_array($value)) { foreach ($value as $v) { $v = $field == 'is_validated' ? StaticContents::member_status($v, true) : $v; $query->orWhere($field, $v); } } else { $value = $field == 'is_validated' ? StaticContents::member_status($value, true) : $value; $query->orWhere($field, $value); } } } }); } // query works if you put it in last $list = $list->where('loyalty_card.is_active','=',1) ->where('loyalty_card.is_locked', $params['locked']) ->where('cyware_synced',1); $sorting = $params['sorting']; if(count($sorting) > 0) { $list = $list->sort($sorting['field'],$sorting['sort_order']); } if($pagination == true){ return $list->paginate($params['page_size']); }else return $list->get(); } public function getAll() { $this->loyaltyCard = LoyaltyCard::all(); return $this->loyaltyCard; } public function getByField($data, $relationship = null) { if($relationship) { $this->loyaltyCard = LoyaltyCard::with($relationship); } else $this->loyaltyCard = new LoyaltyCard; if(count($data)) { foreach ($data as $field => $value) { $this->loyaltyCard = $this->loyaltyCard->where($field,$value); } } return $this->loyaltyCard->get(); } public function store($pd_id, $data, $deviceUUID = null, $cyware_synced = null) { $this->loyaltyCard = new LoyaltyCard; $uuid = new UuidHelper; $this->loyaltyCard->lcard_uuid = $uuid->generate_uuid1(); $this->loyaltyCard->pd_id = $pd_id; $this->loyaltyCard->card_number = $data->card_number; $this->loyaltyCard->pin = $data->pin; $this->loyaltyCard->birthdate = $data->birthdate; $this->loyaltyCard->mobile = strlen($data->mobile) == 12 ? $data->mobile : '63'.$data->mobile; $this->loyaltyCard->email = $data->email; // for card activation if(isset($data->deviceUUID) && $data->deviceUUID != null) $this->loyaltyCard->deviceUUID = $data->deviceUUID; // for card enrollment if($cyware_synced == 1) { // get card type id $cardtype = $this->cardType->getByField([ 'code' => $data->card_type_code, 'is_active' => 1 ]); $card_id = count($cardtype) ? $cardtype[0]['cardtype_id'] : 0; $this->loyaltyCard->cardtype_id = $card_id; $this->loyaltyCard->expiry_date = $data->expiry_date; $this->loyaltyCard->last_synchronized = date('Y-m-d H:i:s'); // $this->loyaltyCard->is_validated = 1; // $this->loyaltyCard->validation_dt = date('Y-m-d H:i:s'); if($deviceUUID != null) $this->loyaltyCard->deviceUUID = $deviceUUID; if($cyware_synced != null) $this->loyaltyCard->cyware_synced = $cyware_synced; } if ($this->loyaltyCard->save()) { return [ 'lcard_uuid' => $this->loyaltyCard->lcard_uuid, 'lcard_id' => $this->loyaltyCard->lcard_id, ]; } else { return false; } } public function getDetailsWhereIn($field,$value,$relationship = null) { if($relationship) { $details = LoyaltyCard::with($relationship) ->whereIn($field,$value)->get(); } else { $details = LoyaltyCard::whereIn($field,$value)->get(); } return $details->toArray(); } public function delete($uuid) { $currentUser = CurrentUserHelper::get_currentAdmin(); if(is_array($uuid)) { $this->loyaltyCard = LoyaltyCard::whereIn('lcard_uuid',$uuid) ->update([ 'is_active' => 0, 'updated_by' => $currentUser->admin_id ]); if($this->loyaltyCard) return true; else return false; } else { $this->loyaltyCard = LoyaltyCard::where('lcard_uuid',$uuid)->first(); $this->loyaltyCard->is_active = 0; $this->loyaltyCard->updated_by = $currentUser->id; if ($this->loyaltyCard->save()) return true; else return false; } } public function show($uuid,$relationship = null) { if($relationship) { $this->loyaltyCard = LoyaltyCard::with($relationship)->whereLcardUuid($uuid)->first(); } else $this->loyaltyCard = LoyaltyCard::whereLcardUuid($uuid)->first(); return $this->loyaltyCard; } public function activate_locked($uuid) { $this->loyaltyCard = LoyaltyCard::where('lcard_uuid',$uuid)->first(); $this->loyaltyCard->is_locked = 0; // $this->loyaltyCard->lock_code = ''; // $this->loyaltyCard->lock_dt = null; if ($this->loyaltyCard->save()) { return true; } else { return false; } } public function numberOfOTPAttempts($lcard_uuid) { $this->loyaltyCard = LoyaltyCard::with('otpAttempts') ->where('lcard_uuid',$lcard_uuid) ->numberOfOTPAttempts() ->first(); return $this->loyaltyCard; } public function lockMember($id,$lock_code) { $this->loyaltyCard = LoyaltyCard::where('lcard_id',$id)->first(); $this->loyaltyCard->is_locked = 1; $this->loyaltyCard->lock_code = $lock_code; $this->loyaltyCard->lock_dt = date('Y-m-d H:i:s'); if ($this->loyaltyCard->save()) { return true; } else { return false; } } public function validateMember($id) { $this->loyaltyCard = LoyaltyCard::where('lcard_id',$id)->first(); $this->loyaltyCard->is_validated = 1; $this->loyaltyCard->validation_dt = date('Y-m-d H:i:s'); if ($this->loyaltyCard->save()) { return true; } else { return false; } } public function update($request, $id) { $civil_status = $request->has('civilstatus_code') ? CodeCivilStatus::code($request->civilstatus_code)->first() : null; $vehicle_own = $request->has('vo_code') ? CodeVehicleOwn::code($request->vo_code)->first() : null; $fuel_type = $request->has('fueltype_code') ? CodeFuelType::code($request->fueltype_code)->first() : null; $gender = $request->has('gender_code') ? CodeGender::code($request->gender_code)->first() : null; $this->loyaltyCard = LoyaltyCard::where('lcard_id',$id)->first(); $this->loyaltyCard->mobile = strlen($request->mobile) == 12 ? $request->mobile : '63'.$request->mobile; $this->loyaltyCard->email = $request->email; // $this->loyaltyCard->city_id = $request->city_id; $this->loyaltyCard->city_name = $request->city; $this->loyaltyCard->civilstatus_id = $civil_status ? $civil_status->civilstatus_id : 0; $this->loyaltyCard->vo_id = $vehicle_own ? $vehicle_own->vo_id : 0; $this->loyaltyCard->fueltype_id = $fuel_type ? $fuel_type->fueltype_id : 0; $this->loyaltyCard->gender_id = $gender ? $gender->gender_id : 0; $this->loyaltyCard->updated_by = $id; if ($this->loyaltyCard->save()) { return true; } else { return false; } } public function setInactive($id) { $this->loyaltyCard = LoyaltyCard::where('lcard_id',$id)->first(); $this->loyaltyCard->is_validated = 0; return $this->loyaltyCard->save() ? true : false; } public function remove_deviceuuid($card_number, $deactivated = 0) { $this->loyaltyCard = LoyaltyCard::where('card_number',$card_number) ->where('is_active',1) ->first(); $this->loyaltyCard->deviceUUID = ""; $this->loyaltyCard->cyware_deactivated = $deactivated; return $this->loyaltyCard->save() ? true : false; } public function update_deviceuuid($lcard_id,$deviceUUID) { $this->loyaltyCard = LoyaltyCard::where('lcard_id',$lcard_id) ->first(); $this->loyaltyCard->deviceUUID = $deviceUUID; return $this->loyaltyCard->save() ? true : false; } public function sync_cyware($data) { // get card type id $cardtype = $this->cardType->getByField([ 'code' => $data->card_type_code, 'is_active' => 1 ]); $card_id = count($cardtype) ? $cardtype[0]['cardtype_id'] : 0; $this->loyaltyCard = LoyaltyCard::where('card_number',$data->card_number)->first(); $this->loyaltyCard->card_number = $data->card_number; $this->loyaltyCard->pin = $data->pin; $this->loyaltyCard->cardtype_id = $card_id; $this->loyaltyCard->expiry_date = $data->expiry_date; $this->loyaltyCard->birthdate = $data->birthdate; $this->loyaltyCard->mobile = strlen($data->mobile) == 12 ? $data->mobile : '63'.$data->mobile; $this->loyaltyCard->email = $data->email; $this->loyaltyCard->total_pts_earn = $data->total_pts_earn; $this->loyaltyCard->total_pts_redeem = $data->total_pts_redeem; $this->loyaltyCard->total_pts_bal = $data->total_pts_bal; $this->loyaltyCard->last_synchronized = date('Y-m-d H:i:s'); if ($this->loyaltyCard->save()) { return $this->loyaltyCard->pd_id; } else { return false; } } public function cyware_activate($lcard_id, $data) { // get card type id $cardtype = $this->cardType->getByField([ 'code' => $data->card_type_code, 'is_active' => 1 ]); $card_id = count($cardtype) ? $cardtype[0]['cardtype_id'] : 0; $this->loyaltyCard = LoyaltyCard::where('lcard_id',$lcard_id)->first(); $this->loyaltyCard->cardtype_id = $card_id; $this->loyaltyCard->expiry_date = $data->expiry_date; $this->loyaltyCard->last_synchronized = date('Y-m-d H:i:s'); $this->loyaltyCard->cyware_synced = 1; $this->loyaltyCard->is_locked = 0; $this->loyaltyCard->lock_code = ''; $this->loyaltyCard->lock_dt = null; if ($this->loyaltyCard->save()) { return true; } else { return false; } } public function update_non_cyware_synced($lcard_id, $data) { $this->loyaltyCard = LoyaltyCard::where('lcard_id',$lcard_id)->first(); $this->loyaltyCard->card_number = $data->card_number; $this->loyaltyCard->pin = $data->pin; $this->loyaltyCard->birthdate = $data->birthdate; $this->loyaltyCard->mobile = strlen($data->mobile) == 12 ? $data->mobile : '63'.$data->mobile; $this->loyaltyCard->email = $data->email; $this->loyaltyCard->last_synchronized = date('Y-m-d H:i:s'); if($data->deviceUUID != null) $this->loyaltyCard->deviceUUID = $data->deviceUUID; if ($this->loyaltyCard->save()) { return true; } else { return false; } } public function store_signup($pd_id, $data) { $this->loyaltyCard = new LoyaltyCard; $uuid = new UuidHelper; $this->loyaltyCard->lcard_uuid = $uuid->generate_uuid1(); $this->loyaltyCard->pd_id = $pd_id; $this->loyaltyCard->card_number = $data->card_number; $this->loyaltyCard->pin = $data->pin; $this->loyaltyCard->birthdate = $data->birthdate; $this->loyaltyCard->mobile = $data->mobile; $this->loyaltyCard->email = $data->email; $this->loyaltyCard->cardtype_id = $data->card_id; // $this->loyaltyCard->expiry_date = $data->expiry_date; $this->loyaltyCard->is_validated = 1; $this->loyaltyCard->validation_dt = date('Y-m-d H:i:s'); $this->loyaltyCard->cyware_synced = 1; $this->loyaltyCard->last_synchronized = date('Y-m-d H:i:s'); if ($this->loyaltyCard->save()) { return [ 'lcard_uuid' => $this->loyaltyCard->lcard_uuid, 'lcard_id' => $this->loyaltyCard->lcard_id, ]; } else { return false; } } }