· 6 years ago · Feb 26, 2020, 11:26 AM
1public function getEventDetails($bid = 0)
2 {
3 $response['status'] = false;
4 $this->loadModel('ScoreType');
5 $response['ScoreType'] = $this->ScoreType->find('all');
6 if ($bid>0 || $this->request->is('post')) {
7 if ($bid>0) {
8 $bookingId = $bid;
9 } else {
10 $bookingId = $this->request->data['booking_id'];
11 }
12 if (isset($bookingId)) {
13
14 if(isset($this->request->data['class_type_id'])){
15 if($this->request->data['class_type_id']==9){
16 if(isset($this->request->data['is_payment_history'])){
17 //this is the case when API is getting called from transaction history.
18 $bookingDetails = $this->User->Club->ClubBookingSession->find('first',array('conditions' => array(
19 'ClubBookingSession.tournament_class_id' => $bookingId,
20 )));
21 }else{
22 $bookingDetails = $this->User->Club->ClubBookingSession->findById($bookingId);
23 }
24 $existingBooking = $bookingDetails;
25 $existingBooking['ClubBooking'] = $bookingDetails['ClubBookingSession'];
26 }elseif($this->request->data['class_type_id']==6){
27 $bookingDetails = $this->User->Club->ClubBookingSession->findById($bookingId);
28 $existingBooking = $bookingDetails;
29 $existingBooking['ClubBooking'] = $bookingDetails['ClubBookingSession'];
30 }else{
31 $existingBooking = $this->User->Club->ClubBooking->findById($bookingId);
32 }
33 }else
34 {
35 $existingBooking = $this->User->Club->ClubBooking->findById($bookingId);
36 }
37 if($existingBooking['ClubBooking']){
38 $this->request->data['class_type_id']=$existingBooking['ClubBooking']['class_type_id'];
39 }
40 if ($existingBooking['ClubBooking']['booked_first_name']!='') {
41 $existingBooking['ClubBooking']['booker_name'] = $existingBooking['ClubBooking']['booked_first_name']." ".$existingBooking['ClubBooking']['booked_last_name'];
42 } else {
43 $bookerInfo = $this->User->Player->findByUserId($existingBooking['ClubBooking']['user_id']);
44 if (!empty($bookerInfo)) {
45 $existingBooking['ClubBooking']['booker_name'] = $bookerInfo['Player']['first_name']." ".$bookerInfo['Player']['last_name'];
46 } else {
47 $existingBooking['ClubBooking']['booker_name'] = '';
48 }
49 }
50
51 if (!empty($existingBooking)) {
52 $day = date("D", strtotime($existingBooking['ClubBooking']['book_end_time']));
53 $conditions = array();
54 $conditions['Transaction.payment_status'] = 1;
55 $conditions['Transaction.club_booking_id'] = $bookingId;
56 if(isset($this->request->data['user_id'])){
57 $conditions['Transaction.user_id'] = $this->request->data['user_id'];
58 }
59 if($existingBooking['ClubBooking']['class_type_id']==6){
60 $conditions['Transaction.booking_type'] = 2;
61 }else{
62 $conditions['Transaction.booking_type'] = 1;
63 }
64
65 // This is only for recurring class
66 if($existingBooking['ClubBooking']['class_type_id']==6 && $existingBooking['ClubBooking']['is_recurring_class'] == 1) {
67 $conditions = [];
68 $conditions['Transaction.payment_status'] = 1;
69 $conditions['Transaction.club_booking_id'] = $existingBooking['ClubBooking']['recurring_class_id'];
70 if(isset($this->request->data['user_id'])){
71 $conditions['Transaction.user_id'] = $this->request->data['user_id'];
72 }
73 $conditions['Transaction.booking_type'] = 3;
74 }
75 // This is only for tournamnet class
76 if($existingBooking['ClubBooking']['class_type_id']==9) {
77 $conditions = [];
78 $conditions['Transaction.payment_status'] = 1;
79 $conditions['Transaction.club_booking_id'] = $existingBooking['ClubBooking']['tournament_class_id'];
80 $conditions['Transaction.booking_type'] = 4;
81 if(isset($this->request->data['user_id'])){
82 $conditions['Transaction.user_id'] = $this->request->data['user_id'];
83 }
84 }
85 //print_r($conditions);
86 $transaction = $this->User->Club->ClubBooking->Transaction->find('first', array(
87 'conditions' => $conditions,
88 'order' => array('Transaction.id DESC')
89 ));
90 $clubDetails = $this->User->Club->findById($existingBooking['ClubBooking']['club_id']);
91 $clubTimezoneOffset = $this->Common->getClubTimezoneOffset($clubDetails['Timezone']['id']);
92 $booking_start_time = date("H:i:s", strtotime($existingBooking['ClubBooking']['book_start_time']));
93 $booking_end_time = date("H:i:s", strtotime($existingBooking['ClubBooking']['book_end_time']));
94 $cdate = strtotime(date("Y-m-d H:i:s", strtotime($existingBooking['ClubBooking']['book_start_time']))) + ($clubTimezoneOffset*60);
95 $booking_day = strtoupper(date("D", $cdate));
96 $cdate = explode(" ", date("Y-m-d H:i:s", $cdate));
97 $booking_date = $cdate[0];
98 $booking_start_time = $cdate[1];
99 $cdate = strtotime(date("Y-m-d H:i:s", strtotime($existingBooking['ClubBooking']['book_end_time']))) + ($clubTimezoneOffset*60);
100 $cdate = explode(" ", date("Y-m-d H:i:s", $cdate));
101 $booking_end_time = $cdate[1];
102 $coachAvailableHours = $this->User->Coach->CoachAvailableHour->find("first", array("conditions" => array(
103 'CoachAvailableHour.day' => $day,
104 'CoachAvailableHour.start_time <= ' => $booking_start_time,
105 'CoachAvailableHour.end_time >= ' => $booking_end_time,
106 'CoachAvailableHour.club_id' => $existingBooking['ClubBooking']['club_id'],
107 'CoachAvailableHour.coach_id' => $existingBooking['ClubBooking']['coach_id']
108 )));
109 $t1 = strtotime($existingBooking['ClubBooking']['book_start_time']);
110 $t2 = strtotime($existingBooking['ClubBooking']['book_end_time']);
111 $differenceInSeconds = $t2 - $t1;
112 $differenceInHours = $differenceInSeconds / 3600;
113 $existingBooking['ClubBooking']['total_coach_hours'] = $differenceInHours;
114
115 if (!empty($coachAvailableHours)) {
116 $existingBooking['CoachAvailableHour'] = $coachAvailableHours['CoachAvailableHour'];
117 } else {
118 $existingBooking['CoachAvailableHour'] = array();
119 }
120
121 if (!empty($transaction)) {
122 $transaction['Transaction']['cardType'] = strtolower($transaction['Transaction']['card_type']);
123 $existingBooking['Transaction'] = $transaction['Transaction'];
124 } elseif (!empty($existingBooking['Transaction'])) {
125 $existingBooking['Transaction'] = $existingBooking['Transaction'][0];
126 } else {
127 $existingBooking['Transaction']['cardType'] = 'NA';
128 $existingBooking['Transaction']['cardNumber'] = 'NA';
129 $existingBooking['Transaction']['cardName'] = 'NA';
130 }
131
132 // Make amount zero id transaction method is Sponsored
133 if(isset($existingBooking['Transaction']['card_name'])){
134 if(strtolower($existingBooking['Transaction']['card_name']) == strtolower('Sponsored')){
135 $existingBooking['Transaction']['amount'] = 0.0;
136 }
137 }
138
139
140 $this->loadModel('Team');
141
142 $teamPlayer = array();
143 if ($existingBooking['ClubBooking']['team_number'] > 0) {
144 $teamPlayers = $this->Team->findAllByTeamNumber($existingBooking['ClubBooking']['team_number'],array(),array('Team.id'=>'desc'));
145 $cdate = date("Y-m-d");
146 $ctime = date("Y-m-d");
147 foreach ($teamPlayers as $k => $team) {
148 // $lastMatchActivity = $this->lastMatchActivity($team['Team']['player_id'], $existingBooking['ClubBooking']['club_id']);
149 /*$playerlastActivity = $this->User->MatchHistory->find("first", array("conditions" => array(
150 'FIND_IN_SET(' . $team['Team']['player_id'] . ' ,MatchHistory.opponent)'
151 ), 'order' => array('MatchHistory.date_played DESC')));*/
152 $teamPlayer[$k] = $team;
153 $teamPlayer[$k]['LastActivity']['MatchHistory']['date_played'] = '';
154 }
155 }
156 $playerInfo = [];
157 $this->User->Player->recursive = 0;
158 if ($existingBooking['ClubBooking']['booked_email']!='' && $existingBooking['ClubBooking']['is_app']==2) {
159 $playerInfo = $this->User->findByEmail($existingBooking['ClubBooking']['booked_email']);
160 if(!empty($playerInfo)){
161 $playerInfo = $this->User->Player->findByUserId($playerInfo['User']['id']);
162 }
163 } else {
164 if($existingBooking['User']['id'] != 0){
165 $userInfo = $this->User->findById($existingBooking['User']['id']);
166 if ($userInfo['User']['role_id']==1) {
167 $playerInfo = $this->User->Player->findByUserId($userInfo['User']['id']);
168 } else {
169 $playerInfo = $this->User->Club->findByUserId($userInfo['User']['id']);
170 }
171 }
172 }
173
174 $cdate = date("Y-m-d");
175 $ctime = date("H:i:s");
176 $cdatetime = date("Y-m-d H:i:s");
177 /*if(isset($this->request->data['timezone_offset'])){
178 $cdate1 = strtotime(date("Y-m-d H:i:s")) + ($this->request->data['timezone_offset']*60);
179 $cdate1 = explode(" ", date("Y-m-d H:i:s", $cdate1));
180 $cdate = $cdate1[0];
181 $ctime = $cdate1[1];
182 }*/
183 if($existingBooking['ClubBooking']['book_start_time']>$cdatetime){
184 $existingBooking['ClubBooking']['can_delete'] = 1;
185 }else{
186 $existingBooking['ClubBooking']['can_delete'] = 0;
187 }
188 //$playerInfo = $this->User->Player->findByUserId($existingBooking['User']['id']);
189 if ($existingBooking['ClubBooking']['class_type_id'] == 6) {
190 $this->loadModel('JoinGroupClass');
191 $teamPlayers = $this->JoinGroupClass->find('all',array('conditions'=>array('JoinGroupClass.status<>2','JoinGroupClass.club_booking_session_id'=>$existingBooking['ClubBooking']['id'])));
192 $teamPlayer = array();
193 foreach ($teamPlayers as $k => $team) {
194 $teamPlayer[$k] = $team;
195 }
196 if($existingBooking['ClubBooking']['is_recurring_class'] == 1){
197 // load recurring class schedule
198 $this->loadModel('RecurringClass');
199 $this->loadModel('RecurringClassSchedule');
200 $current_date_time = date("Y-m-d H:i:s");
201 $currentRecurringClass = $this->RecurringClass->findById($existingBooking['ClubBooking']['recurring_class_id']);
202 if(!empty($currentRecurringClass)){
203 //Add class type and category data
204 $this->loadModel('RecurringClassCategory');
205 $RecurringClassCategoryData = $this->RecurringClassCategory->find('first', array(
206 'conditions' => array(
207 'RecurringClassCategory.id' => $existingBooking['RecurringClass']['recurring_class_category_id'],
208 ),
209 ));
210
211 if(!empty($RecurringClassCategoryData)){
212 $existingBooking['RecurringClassCategory'] = $RecurringClassCategoryData['RecurringClassCategory'];
213 $existingBooking['RecurringClassType'] = $RecurringClassCategoryData['RecurringClassType'];
214
215 }else{
216 $existingBooking['RecurringClassCategory'] = array();
217 $existingBooking['RecurringClassType'] = array();
218 }
219 $recConditions = array('RecurringClassSchedule.recurring_class_id'=>$existingBooking['ClubBookingSession']['recurring_class_id'],
220 'RecurringClassSchedule.is_cancelled'=>0,
221 'RecurringClassSchedule.end_date_time >=' => $current_date_time,
222 'DATE(RecurringClassSchedule.end_date_time) <=' => $existingBooking['RecurringClass']['end_date']);
223 $RecurringClassSchedules = $this->RecurringClass->RecurringClassSchedule->find('all', array(
224 'conditions' => $recConditions,
225 'group' => array('RecurringClassSchedule.book_day'),
226 'order' => array('DAYOFWEEK(RecurringClassSchedule.start_date_time) ASC')
227 ));
228 // find elapsed day/schedule of the recurring class
229 $recConditions = array('RecurringClassSchedule.recurring_class_id'=>$existingBooking['ClubBookingSession']['recurring_class_id'],
230 'RecurringClassSchedule.is_cancelled'=>0,'RecurringClassSchedule.start_date_time <=' => $current_date_time);
231
232 $recurringClassElapsedClasses = $this->RecurringClass->RecurringClassSchedule->find('all', array(
233 'conditions' => $recConditions,
234 'order' => array('RecurringClassSchedule.start_date_time ASC')
235 ));
236 // retrieve list of all classes
237 $recConditions = array('RecurringClassSchedule.recurring_class_id'=>$existingBooking['ClubBookingSession']['recurring_class_id'],
238 'RecurringClassSchedule.is_cancelled'=>0,'RecurringClassSchedule.end_date_time >' => $current_date_time);
239 $upcomingRecurringClassSchedules = $this->RecurringClass->RecurringClassSchedule->find('all', array(
240 'conditions' => $recConditions,
241 'order' => array('RecurringClassSchedule.start_date_time ASC')
242 ));
243 $existingBooking['RecurringClassElapsedClasses']=count($recurringClassElapsedClasses);
244 $existingBooking['RecurringClassDays'] = $RecurringClassSchedules;
245 $existingBooking['UpcomingRecurringClasses'] = $upcomingRecurringClassSchedules;
246 // check player join status
247 $playerJoinedToRc = [];
248 if(isset($this->request->data['user_id'])){
249 $playerJoinedToRc=$this->RecurringClass->RecurringClassJoinedPlayer->find('all',
250 array(
251 'conditions' => array(
252 'RecurringClassJoinedPlayer.user_id' => $this->request->data['user_id'],
253 'RecurringClassJoinedPlayer.recurring_class_id' => $existingBooking['ClubBooking']['recurring_class_id'],
254 )
255 ));
256 }
257 if(!empty($playerJoinedToRc)){
258 // find all the joined reurring schedules
259 $this->loadModel('RecurringClassJoinedPlayerSchedule');
260 $joinedSchedules = $this->RecurringClassJoinedPlayerSchedule->find('all',array('conditions'=>array('RecurringClassJoinedPlayerSchedule.user_id'=>$this->request->data['user_id'],'RecurringClassJoinedPlayerSchedule.recurring_class_id'=>$existingBooking['ClubBooking']['recurring_class_id'])));
261 $joinedScheduleIds = array();
262 $cancelledScheduleIds =array();
263 foreach ($joinedSchedules as $schedule) {
264 if($schedule['RecurringClassJoinedPlayerSchedule']['status']==2) $cancelledScheduleIds[]=(int) $schedule['RecurringClassJoinedPlayerSchedule']['recurring_class_schedule_id'];
265 if($schedule['RecurringClassJoinedPlayerSchedule']['status']==1) $joinedScheduleIds[]=(int) $schedule['RecurringClassJoinedPlayerSchedule']['recurring_class_schedule_id'];
266 }
267 if(empty($joinedScheduleIds)) $joinedScheduleIds=[0];
268 if(empty($cancelledScheduleIds)) $cancelledScheduleIds=[0];
269 // pr($joinedSchedules);
270 //pr($joinedScheduleIds);
271 //pr($cancelledScheduleIds);
272 // $joinedScheduleIds = "(".implode(",",$joinedScheduleIds).")";
273 // $cancelledScheduleIds = "(".implode(",",$cancelledScheduleIds).")";
274
275 // find elapsed day/schedule of the recurring class
276 $recConditions = array('RecurringClassSchedule.recurring_class_id'=>$existingBooking['ClubBookingSession']['recurring_class_id'],
277 'RecurringClassSchedule.is_cancelled'=>0,'RecurringClassSchedule.start_date_time <=' => $current_date_time,'RecurringClassSchedule.id IN'=>$joinedScheduleIds);
278
279 $recurringClassElapsedClasses = $this->RecurringClass->RecurringClassSchedule->find('all', array(
280 'conditions' => $recConditions,
281 'order' => array('RecurringClassSchedule.start_date_time ASC')
282 ));
283
284 // retrieve list of all classes
285 $recConditions = array('RecurringClassSchedule.recurring_class_id'=>$existingBooking['ClubBookingSession']['recurring_class_id'],
286 'RecurringClassSchedule.is_cancelled'=>0,'RecurringClassSchedule.start_date_time >' => $current_date_time,'RecurringClassSchedule.id'=>$joinedScheduleIds);
287
288 $upcomingRecurringClassSchedules = $this->RecurringClass->RecurringClassSchedule->find('all', array(
289 'conditions' => $recConditions,
290 'order' => array('RecurringClassSchedule.start_date_time ASC')
291 ));
292
293 // retrieve list of all cancelled classes
294 $recConditions = array('RecurringClassSchedule.recurring_class_id'=>$existingBooking['ClubBookingSession']['recurring_class_id'],
295 'RecurringClassSchedule.is_cancelled'=>0,'RecurringClassSchedule.id'=>$cancelledScheduleIds);
296
297 $cancelledRecurringClassSchedules = $this->RecurringClass->RecurringClassSchedule->find('all', array(
298 'conditions' => $recConditions,
299 'order' => array('RecurringClassSchedule.start_date_time ASC')
300 ));
301
302 //Added joinedplayer counter for gievn schele id
303 $joinedPlayerCounter = 0;
304 $class_book_day = '';
305 if(!is_null($existingBooking['ClubBooking']['recurring_class_schedule_id'])){
306 $joinedPlayerCounter= $this->RecurringClassJoinedPlayerSchedule->find('count',
307 array('conditions'=>
308 array('RecurringClassJoinedPlayerSchedule.recurring_class_schedule_id'=>$existingBooking['ClubBooking']['recurring_class_schedule_id'],
309 'RecurringClassJoinedPlayerSchedule.status'=>1)
310 ));
311 $RecurringClassScheduleData= $this->RecurringClassSchedule->find('first',
312 array('conditions'=>array('RecurringClassSchedule.id'=>$existingBooking['ClubBooking']['recurring_class_schedule_id']),
313 'fields' => array('RecurringClassSchedule.book_day')
314 ));
315 $class_book_day = $RecurringClassScheduleData['RecurringClassSchedule']['book_day'];
316 }
317 $playerJoinedToRc = Hash::extract($playerJoinedToRc,'{n}.RecurringClassJoinedPlayer');
318 $existingBooking['JoinedPackage'] = $playerJoinedToRc[0]['package_type'];
319 $existingBooking['UpcomingUserRecurringClasses']=$upcomingRecurringClassSchedules;
320 $existingBooking['ElapsedUserRecurringClasses']=$recurringClassElapsedClasses;
321 $existingBooking['RecurringClassUserCancelledCount'] = count($cancelledRecurringClassSchedules);
322 $existingBooking['RecurringClassUserJoinInfo'] =$playerJoinedToRc;
323 $existingBooking['CustomClassFullPrice'] = $currentRecurringClass['RecurringClass']['total_classes'] * $currentRecurringClass['RecurringClass']['cp_cr_per_person'];
324 $existingBooking['ClubBooking']['joinedPlayerCounter'] = $joinedPlayerCounter;
325 $existingBooking['ClubBooking']['class_book_day'] = $class_book_day;
326 }
327 }
328
329 }
330 }
331 $existingBooking['Team'] = $teamPlayer;
332 $existingBooking['UserDetail'] = $playerInfo;
333 $response['status'] = true;
334 if(isset( $this->request->data['user_id'])){
335 $this->loadModel('Player');
336 $playerDataForReview = $this->Player->findByUserId($this->request->data['user_id']);
337 //echo json_encode($playerDataForReview);die;
338 $loginUserId = $playerDataForReview['Player']['id'];
339 }else{
340 $loginUserId = 0;
341 }
342 //Check for given review by club
343 $this->loadModel('ClubReview');
344 $clubReviewCounter = $this->ClubReview->find('count',array('conditions'=>array('ClubReview.club_id' => $existingBooking['Club']['id'],
345 'ClubReview.player_id' => $loginUserId,
346 'ClubReview.booking_id' => $bookingId)));
347 if($clubReviewCounter){
348 $existingBooking['Club']['reviewGiven'] = true;
349 }else{
350 $existingBooking['Club']['reviewGiven'] = false;
351 }
352
353 //Check for given review by coach
354 $this->loadModel('CoachReview');
355 $coachReviewCounter = $this->CoachReview->find('count',array('conditions'=>array('CoachReview.coach_id' => $existingBooking['Coach']['id'],
356 'CoachReview.player_id' => $loginUserId,
357 'CoachReview.booking_id' => $bookingId)));
358 if($coachReviewCounter){
359 $existingBooking['Coach']['reviewGiven'] = true;
360 }else{
361 $existingBooking['Coach']['reviewGiven'] = false;
362 }
363
364 //Check for given review by Players
365 $this->loadModel('PlayerReview');
366 if(!empty($existingBooking['Team'])){
367 foreach ($existingBooking['Team'] as $key => $teamData) {
368 $playerReviewCounter = $this->PlayerReview->find('count',array('conditions'=>array('PlayerReview.sender_player_id' => $loginUserId,
369 'PlayerReview.receiver_player_id' => $teamData['Player']['id'],
370 'PlayerReview.booking_id' => $bookingId)));
371 if($playerReviewCounter){
372 $existingBooking['Team'][$key]['Player']['reviewGiven'] = true;
373 }else{
374 $existingBooking['Team'][$key]['Player']['reviewGiven'] = false;
375 }
376 }
377 }
378
379 $response['data'] = $existingBooking;
380
381
382 // load court type data into exsiting courts object
383 $this->loadModel('CourtSurface');
384 $courtSurface=$this->CourtSurface->findById($existingBooking['Court']['court_surface_id']);
385 if(!empty($courtSurface)){
386 $response['data']['Court']['surface_type']=$courtSurface['CourtSurface']['name'];
387 }else{
388 $response['data']['Court']['surface_type']=[];
389 }
390
391 $response['data']['bookerInfo'] = $this->User->findByEmail($existingBooking['ClubBooking']['booked_email']);
392 $array = array(
393 'court_id' => $existingBooking['ClubBooking']['court_id'],
394 'class_type_id' => $existingBooking['ClubBooking']['class_type_id'],
395 'coach_id' => $existingBooking['ClubBooking']['coach_id'],
396 'no_player' => $existingBooking['ClubBooking']['no_player'],
397 'start_time' => $existingBooking['ClubBooking']['book_start_time'],
398 'end_time' => $existingBooking['ClubBooking']['book_end_time']
399 );
400
401 //don't calculate price id it's blocked coach or court
402 if(!($existingBooking['ClubBooking']['class_type_id'] == 10)){
403 $feesArray = $this->calculatePrice($array);
404 }else{
405 $feesArray = [];
406 }
407
408 // if ($existingBooking['ClubBooking']['promo_code'] != '') {
409 // $this->loadModel('Promotion');
410 // $promo = $this->Promotion->findByName($existingBooking['ClubBooking']['promo_code']);
411
412 // $promoArray = array(
413 // 'fees_array' => $feesArray,
414 // 'promotion_id' => $promo['Promotion']['id']
415 // );
416 // $promoPrice = $this->calculatePromoPrice($promoArray);
417 // $response['feesArray'] = $feesArray;
418 // $response['promoPrice'] = $promoPrice;
419 // } else {
420 // $response['feesArray'] = $feesArray;
421 // $response['promoPrice'] = 0;
422 // }
423
424
425
426 $promocondition = [];
427 if(isset( $this->request->data['user_id'])){
428 $promocondition['user_id'] = $this->request->data['user_id'];
429 }
430 if($this->request->data['class_type_id']==6 ){
431 $promocondition['club_booking_id'] = $existingBooking['ClubBooking']['id'];
432 if($existingBooking['ClubBooking']['is_recurring_class'] == 1){
433 $promocondition['club_booking_id'] = $existingBooking['ClubBooking']['recurring_class_id'];
434 $promocondition['booking_type'] = 2;
435 }else{
436 $promocondition['booking_type'] = 1;
437
438 }
439 }else{
440 $promocondition['booking_type'] = 0;
441 $promocondition['club_booking_id'] = $existingBooking['ClubBooking']['id'];
442 }
443
444 $this->loadModel('PromotionUses');
445 $promo = $this->PromotionUses->find('first',array('conditions'=>$promocondition));
446 if(!empty($promo)){
447 $response['feesArray'] = $feesArray;
448 $response['promoPrice'] = $promo['PromotionUses']['promo_value'];
449 $response['promoType'] = $promo['PromotionUses']['promo_type'];
450 }else{
451 $response['feesArray'] = $feesArray;
452 $response['promoPrice'] = 0;
453 $response['promoType'] = 0;
454 }
455
456
457
458
459 if (isset($this->request->data['coach_id']) && $this->request->data['coach_id']!='') {
460 $coachDetails = $this->User->Coach->findById($this->request->data['coach_id']);
461 $response['Coach'] = $coachDetails['Coach'];
462 } else {
463 $response['Coach'] = array('name'=>'');
464 }
465 if (isset($this->request->data['sub_coach_id']) && $this->request->data['sub_coach_id']!='') {
466 $coachDetails = $this->User->Coach->findById($this->request->data['sub_coach_id']);
467 $response['SubCoach'] = $coachDetails['Coach'];
468 } else {
469 $response['SubCoach'] = array('name'=>'');
470 }
471 if (isset($this->request->data['start_hours']) && isset($this->request->data['start_minutes'])) {
472 $start_time = date("Y-m-d H:i:s", strtotime($this->request->data['book_start_date']." ".$this->request->data['start_hours'] . ":" . $this->request->data['start_minutes'] . ":00"));
473 $response['StartTime'] = $start_time;
474 }
475 if (isset($this->request->data['end_hours']) && isset($this->request->data['end_minutes'])) {
476 $end_time = date("Y-m-d H:i:s", strtotime($this->request->data['book_end_date']." ".$this->request->data['end_hours'] . ":" . $this->request->data['end_minutes'] . ":00"));
477 $response['EndTime'] = $end_time;
478 }
479 if (isset($this->request->data['court_id'])) {
480 $courtDetails = $this->User->Club->Court->findById($this->request->data['court_id']);
481 $response['Court'] = $courtDetails['Court'];
482 }
483 if (isset($this->request->data['team_number']) && $this->request->data['team_number']>0) {
484 $classTypeId = 2;
485 $this->loadModel('Team');
486 $totalTeam = $this->Team->find('count', array('conditions' => array(
487 'Team.team_number' => $this->request->data['team_number']
488 )));
489 if (isset($this->request->data['coach_id']) && $this->request->data['coach_id']>0 && $this->request->data['coach_id']!='') {
490 $coachId = $this->request->data['coach_id'];
491 } else {
492 $coachId = '';
493 }
494 if ($coachId != '' && ($totalTeam == 1)) {
495 $classTypeId = 1;
496 } elseif ($coachId != '' && ($totalTeam > 1)) {
497 $classTypeId = 7;
498 } elseif ($coachId == '' && ($totalTeam > 1)) {
499 $classTypeId = 2;
500 } elseif ($coachId == '' && ($totalTeam == 1)) {
501 $classTypeId = 5;
502 }
503 $this->loadModel('ClassType');
504 $classTypeDetails = $this->ClassType->findById($classTypeId);
505 $response['ClassType'] = $classTypeDetails['ClassType'];
506 } else {
507 $response['ClassType'] = array('name'=>'');
508 }
509
510
511
512 if(isset($this->request->data['match_results']) || ($existingBooking['ClubBooking']['class_type_id'] !=6 && $existingBooking['ClubBooking']['class_type_id'] !=9 && $existingBooking['ClubBooking']['coach_id']<1 && $existingBooking['ClubBooking']['no_player']>1)){
513 $resultResponse = $this->getMatchScore($bookingId);
514 //pr($resultResponse); die;
515 $response['data']['MatchResults']= $resultResponse['scores'];
516 $response['data']['ResultsApproved']=false;
517 $isApproved=$resultResponse['is_approved'];
518 if(isset($resultResponse['oldResult'])) $response['data']['OldResults']= $resultResponse['oldResult'];
519 if(count($resultResponse['scores'])>=1)
520 {
521 $response['data']['MatchResults']= $resultResponse['scores'];
522 $response['data']['ResultsApproved']=$isApproved;
523 }
524 $this->loadModel('MatchGroup');
525 $matchGroup = $this->MatchGroup->find('all',array(
526 'conditions'=>array('booking_id'=>$bookingId),
527 'order' => array('MatchGroup.id ASC'),
528
529 ));
530 $matchGroups =[];
531 foreach($matchGroup as $group){
532 $group['MatchGroup']['Player']= $group['Player'];
533 $matchGroups[$group['MatchGroup']['group']][]=$group['MatchGroup'];
534 }
535 if(!empty($matchGroups)){
536 $response['data']['MatchGroups']= $matchGroups;
537 }else{
538 $response['data']['MatchGroups']= [];
539 }
540 if(isset($this->request->data['user_id'])){
541 // find feedback if the request is from app
542 //Add player's feedback for this match
543 $this->loadModel('PlayerFeedback');
544 $playerInfo = $this->User->Player->findByUserId($this->request->data['user_id']);
545 $PlayerFeedbacks = $this->PlayerFeedback->findByClubBookingIdAndPlayerId($bookingId,$playerInfo['Player']['id']);
546 $PlayerFeedbacks= Hash::extract($PlayerFeedbacks,'PlayerFeedback');
547 if(!empty($PlayerFeedbacks)){
548 $response['data']['PlayerFeedback']= $PlayerFeedbacks;
549 }
550 }else
551 {
552 // set everything to empty
553 }
554 }
555 $response['data']['canViewRating']=false;
556 $response['data']['canRateClub']=true;
557 if(isset($this->request->data['user_id'])){
558 // get player's coach rating for the booking
559 $bookingType = $existingBooking['ClubBooking']['class_type_id']!=6?1:2;
560 $bookingId = (int) $existingBooking['ClubBooking']['id'];
561 // fetch user player id
562 $userPlayer = $this->User->Player->findByUserId($this->request->data['user_id']);
563 $this->loadModel('PlayerFeedback');
564 $feedBack = $this->PlayerFeedback->find('first',array('conditions'=>array('PlayerFeedback.club_booking_id'=>$bookingId,'PlayerFeedback.booking_table'=>$bookingType,'PlayerFeedback.player_id'=>$userPlayer['Player']['id'])));
565 if(!empty($feedBack)){
566 $response['data']['canViewRating']=true;
567 }
568 // get player's club review
569 $this->loadModel('Review');
570 $review = $this->Review->find('first',array('conditions'=>array('Review.provider_id'=>$this->request->data['user_id'],'Review.booking_id'=>$existingBooking['ClubBooking']['id'],'Review.booking_table'=>$bookingType,'Review.receiver_id'=>$existingBooking['ClubBooking']['club_id'])));
571 if(!empty($review)){
572 $response['data']['canRateClub']=false;
573 }
574 //if the tournament_type is double then add partner detail for the logged in user's pair.
575 if(isset($response['data']['Tournament'])){
576 if($response['data']['Tournament']['tournament_type'] == 2){
577 $this->loadModel("JoinGroupClass");
578 //search join group class data for Partner when partne is logged in app
579 $dataOfJoinGroupClass = $this->JoinGroupClass->find('first',array('conditions'=>array('JoinGroupClass.tournament_class_id'=>$response['data']['Tournament']['id'],'JoinGroupClass.partner_id'=>$userPlayer['Player']['id'])));
580
581 if(empty($dataOfJoinGroupClass)){
582 for ($i=0; $i < sizeof($response['data']['JoinGroupClass']) ; $i++) {
583 if($response['data']['JoinGroupClass'][$i]['player_id'] == $userPlayer['Player']['id']){
584 $dataOfJoinGroupClass = array($response['data']['JoinGroupClass'][$i]);
585 }
586 }
587 }else{
588 $dataOfJoinGroupClass = array($dataOfJoinGroupClass['JoinGroupClass']);
589 }
590 if(!empty($dataOfJoinGroupClass)){
591 $bookerPlayer = $this->User->Player->findById($dataOfJoinGroupClass[0]['player_id']);
592 $partnerPlayer = $this->User->Player->findById($dataOfJoinGroupClass[0]['partner_id']);
593 if(!empty($partnerPlayer)){
594 $response['data']['partnerPlayer']=$partnerPlayer['Player'];
595 }else{
596 $response['data']['partnerPlayer']=array();
597 }
598 if(!empty($bookerPlayer)){
599 $response['data']['bookerPlayer']=$bookerPlayer['Player'];
600 }else{
601 $response['data']['bookerPlayer']=array();
602 }
603 }
604 }
605 }
606
607 }
608 if(isset($existingBooking['ClubBooking']['club_id'])){
609 $this->loadModel('Setting');
610 $club_general_settings = $this->Setting->findByClubId($existingBooking['ClubBooking']['club_id']);
611 $response['data']['Setting'] = $club_general_settings['Setting'];
612 }
613 if(isset($this->request->data['user_id']) && isset($existingBooking['ClubBooking']['club_id'])){
614 $this->loadModel('PlayerClubMembership');
615 $playerInfo= $this->User->Player->findByUserId($this->request->data['user_id']);
616 $clubMember = $this->PlayerClubMembership->find('first', array('conditions' => array(
617 'PlayerClubMembership.player_id' => $playerInfo['Player']['id'],
618 'PlayerClubMembership.club_id' => $existingBooking['ClubBooking']['club_id'],
619 'PlayerClubMembership.status' => 1
620 )));
621 if(empty($clubMember)){
622 $response['data']['is_club_member'] = 0;
623 }else{
624 $response['data']['is_club_member'] = 1;
625 }
626 }
627 }
628 } else {
629 $response['status'] = false;
630 $response['message'] = 'cannot get booking details!';
631 }
632 } else {
633 $response['status'] = false;
634 $response['message'] = 'Invalid request';
635 }
636 if ($bid>0) {
637 return $response;
638 } else {
639 echo json_encode($response);
640 }
641 }