GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Passed
Push — master ( 1527b5...1d156a )
by Oleg
02:42
created

  A

Complexity

Conditions 1
Paths 1

Size

Total Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 1
dl 0
loc 12
rs 9.8666
c 0
b 0
f 0
1
<?php
2
namespace Route4Me;
3
4
use Route4Me\Common;
5
use Route4Me\Enum\Endpoint;
6
7
class AddressBookLocation extends Common
8
{
9
    public $address_id;
10
    public $address_group;
11
    public $address_alias;
12
    public $address_1;
13
    public $address_2;
14
    public $first_name;
15
    public $last_name;
16
    public $address_email;
17
    public $address_phone_number;
18
    public $address_city;
19
    public $address_state_id;
20
    public $address_country_id;
21
    public $address_zip;
22
    public $cached_lat;
23
    public $cached_lng;
24
    public $curbside_lat;
25
    public $curbside_lng;
26
    public $color;
27
    public $address_custom_data;
28
    public $schedule;
29
    
30
    public $created_timestamp;
31
    public $member_id;
32
    public $schedule_blacklist;
33
    public $in_route_count;
34
    public $last_visited_timestamp;
35
    public $last_routed_timestamp;
36
    public $local_time_window_start;
37
    public $local_time_window_end;
38
    public $local_time_window_start_2;
39
    public $local_time_window_end_2;
40
    public $service_time;
41
    public $local_timezone_string;
42
    public $address_icon;
43
    public $address_stop_type;
44
    public $address_cube;
45
    public $address_pieces;
46
    public $address_reference_no;
47
    public $address_revenue;
48
    public $address_weight;
49
    public $address_priority;
50
    public $address_customer_po;
51
    
52
    public static function fromArray(array $params)
53
    {
54
        $addressbooklocation = new AddressBookLocation();
55
        
56
        foreach ($params as $key => $value) {
57
            if (property_exists($addressbooklocation, $key)) {
58
                $addressbooklocation->{$key} = $value;
59
            }
60
        }
61
        
62
        return $addressbooklocation;
63
    }
64
    
65
    
66
    
67 View Code Duplication
    public static function getAddressBookLocation($addressId)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
68
    {
69
        $ablocations = Route4Me::makeRequst(array(
70
            'url'    => Endpoint::ADDRESS_BOOK_V4,
71
            'method' => 'GET',
72
            'query'  => array(
73
                'query' => $addressId,
74
                'limit' => 30
75
            )
76
        ));
77
78
        return $ablocations;
79
    }
80
    
81 View Code Duplication
    public static function searchAddressBookLocations($params)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
82
    {
83
        $allQueryFields = array('display', 'query', 'fields', 'limit', 'offset');
84
        
85
        $result = Route4Me::makeRequst(array(
86
            'url'    => Endpoint::ADDRESS_BOOK_V4,
87
            'method' => 'GET',
88
            'query'  => Route4Me::generateRequestParameters($allQueryFields, $params)
89
        ));
90
91
        return $result;
92
    }
93
    
94 View Code Duplication
    public static function getAddressBookLocations($params)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
95
    {
96
        $allQueryFields = array('limit', 'offset', 'address_id');
97
        
98
        $ablocations = Route4Me::makeRequst(array(
99
            'url'    => Endpoint::ADDRESS_BOOK_V4,
100
            'method' => 'GET',
101
            'query'  => Route4Me::generateRequestParameters($allQueryFields, $params)
102
        ));
103
104
        return $ablocations;
105
    }
106
    
107
    public static function getRandomAddressBookLocation($params)
108
    {
109
        $ablocations = self::getAddressBookLocations($params);
110
        
111
        if (isset($ablocations["results"])) {
112
            $locationsSize = sizeof($ablocations["results"]);
113
            
114
            if ($locationsSize>0) {
115
                $randomLocationIndex = rand(0, $locationsSize - 1);
116
                return $ablocations["results"][$randomLocationIndex];
117
            } 
118
        } 
119
120
        return null;
121
    }
122
    
123
    /**
124
     * @param AddressBookLocation $params
125
    */
126 View Code Duplication
    public static function addAdressBookLocation($params)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
127
    {
128
        $allBodyFields = Route4Me::getObjectProperties(new AddressBookLocation(), array('address_id', 'in_route_count'));
129
        
130
        $response = Route4Me::makeRequst(array(
131
            'url'    => Endpoint::ADDRESS_BOOK_V4,
132
            'method' => 'POST',
133
            'body'   => Route4Me::generateRequestParameters($allBodyFields, $params)
134
        ));
135
136
        return $response;
137
    }
138
    
139 View Code Duplication
    public function deleteAdressBookLocation($address_ids)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
140
    {
141
        $result = Route4Me::makeRequst(array(
142
            'url'    => Endpoint::ADDRESS_BOOK_V4,
143
            'method' => 'DELETEARRAY',
144
            'query'  => array(
145
                'address_ids' => $address_ids
146
            )
147
        ));
148
149
        return $result;
150
    }
151
    
152
    public function updateAdressBookLocation($params)
153
    {
154
        $allBodyFields = Route4Me::getObjectProperties(new AddressBookLocation(), array('in_route_count'));
155
156
        $response = Route4Me::makeRequst(array(
157
            'url'    => Endpoint::ADDRESS_BOOK_V4,
158
            'method' => 'PUT',
159
            'body'   => Route4Me::generateRequestParameters($allBodyFields, $params)
160
        ));
161
162
        return $response;
163
    }
164
        
165
    public static function validateScheduleMode($scheduleMode)
166
    {
167
        $schedMmodes = array("daily", "weekly", "monthly", "annually");
168
        
169
        if (in_array($scheduleMode, $schedMmodes)) {
170
            return TRUE; 
171
        } else {
172
            return FALSE;
173
        }
174
    }
175
    
176
    public static function validateScheduleEnable($scheduleEnabled)
177
    {
178
        $schedEnables = array(TRUE, FALSE);
179
        
180
        if (in_array($scheduleEnabled, $schedEnables)) {
181
            return TRUE;
182
        } else {
183
            return FALSE;
184
        }
185
    }
186
    
187
    public static function validateScheduleEvery($scheduleEvery)
188
    {
189
        if (is_numeric($scheduleEvery)) {
190
            return TRUE;
191
        } else {
192
            return FALSE;
193
        }
194
    }
195
    
196 View Code Duplication
    public static function validateScheduleWeekDays($scheduleWeekDays)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
197
    {
198
        $weekdays = explode(',', $scheduleWeekDays);
199
        
200
        if (sizeof($weekdays)<1) return FALSE;
201
        
202
        $isValid = TRUE;
203
        
204
        for ($i=0; $i<sizeof($weekdays); $i++) { 
0 ignored issues
show
Performance Best Practice introduced by
It seems like you are calling the size function sizeof() as part of the test condition. You might want to compute the size beforehand, and not on each iteration.

If the size of the collection does not change during the iteration, it is generally a good practice to compute it beforehand, and not on each iteration:

for ($i=0; $i<count($array); $i++) { // calls count() on each iteration
}

// Better
for ($i=0, $c=count($array); $i<$c; $i++) { // calls count() just once
}
Loading history...
205
            if (is_numeric($weekdays[$i])) {
206
                $wday = intval($weekdays[$i]);
207
                if ($wday<1 || $wday>7) $isValid = FALSE;
208
            } else {
209
                $isValid = FALSE;
210
            }
211
        }
212
        
213
        return $isValid;
214
    }
215
    
216
    public static function validateScheduleMonthlyMode($scheduleMonthlyMode)
217
    {
218
        $schedMonthlyMmodes = array("dates", "nth");
219
        
220
        if (in_array($scheduleMonthlyMode, $schedMonthlyMmodes)) {
221
            return TRUE;
222
        } else {
223
            return FALSE;
224
        }
225
    }
226
    
227 View Code Duplication
    public static function validateScheduleMonthlyDates($scheduleMonthlyDates)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
228
    {
229
        $monthlyDates = explode(',', $scheduleMonthlyDates);
230
        
231
        if (sizeof($monthlyDates) <1) return FALSE;
232
        
233
        $isValid = TRUE;
234
        
235
        for ($i=0; $i < sizeof($monthlyDates); $i++) { 
0 ignored issues
show
Performance Best Practice introduced by
It seems like you are calling the size function sizeof() as part of the test condition. You might want to compute the size beforehand, and not on each iteration.

If the size of the collection does not change during the iteration, it is generally a good practice to compute it beforehand, and not on each iteration:

for ($i=0; $i<count($array); $i++) { // calls count() on each iteration
}

// Better
for ($i=0, $c=count($array); $i<$c; $i++) { // calls count() just once
}
Loading history...
236
            if (is_numeric($monthlyDates[$i])) {
237
                $mday = intval($monthlyDates[$i]);
238
                if ($mday <1 || $mday > 31) $isValid = FALSE;
239
            } else {
240
                $isValid = FALSE;
241
            }
242
        }
243
244
        return $isValid;
245
    }
246
    
247
    public static function validateScheduleNthN($scheduleNthN)
248
    {
249
        if (!is_numeric($scheduleNthN)) return FALSE;
250
        
251
        $schedNthNs = array(1, 2, 3, 4, 5, -1);
252
        
253
        if (in_array($scheduleNthN, $schedNthNs)) {
254
            return TRUE;
255
        } else {
256
            return FALSE;
257
        }
258
    }
259
    
260
    public static function validateScheduleNthWhat($scheduleNthWhat)
261
    {
262
        if (!is_numeric($scheduleNthWhat)) return FALSE;
263
        
264
        $schedNthWhats = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
265
        
266
        if (in_array($scheduleNthWhat, $schedNthWhats)) {
267
            return TRUE;
268
        } else {
269
            return FALSE;
270
        }
271
    }
272
    
273
    /** Function adds the locations (with/without schedule) from the CSV file. 
274
     * $csvFileHandle - a file handler.
275
     * Returns array $results which contains two arrays: fail and succes.
276
     */
277
    public function addLocationsFromCsvFile($csvFileHandle, $locationsFieldsMapping)
278
    {
279
        $max_line_length = 512;
280
        $delemietr = ',';
281
        
282
        $results = array();
283
        $results['fail'] = array();
284
        $results['success'] = array();
285
        
286
        $columns = fgetcsv($csvFileHandle, $max_line_length, $delemietr);
287
        
288
        $addressBookFields = Route4Me::getObjectProperties(new AddressBookLocation(), array('address_id', 'in_route_count'));
289
290
        if (empty($columns)) {
291
            array_push($results['fail'], 'Empty CSV table');
292
            return ($results);
293
        }
294
295
        $iRow = 1;
296
        
297
        while (($rows = fgetcsv($csvFileHandle, $max_line_length, $delemietr))!==false) {
298
            if (!isset($rows[$locationsFieldsMapping['cached_lat']]) || !isset($rows[$locationsFieldsMapping['cached_lng']]) 
299
                  || !isset($rows[$locationsFieldsMapping['address_1']]) || array(null)==$rows) {
300
                continue;
301
            }
302
                      
303
            $curSchedule = "";
304
            $mode = "";
305
            
306
            $failCount = sizeof($results['fail']); 
307
            
308 View Code Duplication
            if (isset($rows[$locationsFieldsMapping['schedule_mode']])) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
309
                if ($this->validateScheduleMode($rows[$locationsFieldsMapping['schedule_mode']])) {
310
                    $curSchedule = '"mode":"'.$rows[$locationsFieldsMapping['schedule_mode']].'",'; 
311
                    $mode = $rows[$locationsFieldsMapping['schedule_mode']];
312
                } else {
313
                    array_push($results['fail'], "$iRow --> Wrong schedule mode parameter"); 
314
                }
315
            } else {
316
                array_push($results['fail'], "$iRow --> The schedule mode parameter is not set"); 
317
            }
318
            
319
            if (isset($rows[$locationsFieldsMapping['schedule_enabled']])) {
320
                if ($this->validateScheduleEnable($rows[$locationsFieldsMapping['schedule_enabled']])) { 
321
                    $curSchedule .= '"enabled":'.$rows[$locationsFieldsMapping['schedule_enabled']].',';
322
                } else {
323
                    array_push($results['fail'], "$iRow --> The schedule enabled parameter is not set ");  
324
                }
325
            }
326
            
327
            if (isset($rows[$locationsFieldsMapping['schedule_every']])) {
328
                if ($this->validateScheduleEvery($rows[$locationsFieldsMapping['schedule_every']])) {
329
                    $curSchedule.='"'.$mode.'":{'.'"every":'.$rows[$locationsFieldsMapping['schedule_every']].','; 
330
                    if ($mode=='daily') {
331
                        $curSchedule = trim($curSchedule,',');
332
                        $curSchedule.='}';
333
                    }
334
                } else {
335
                    array_push($results['fail'], "$iRow --> The parameter sched_every is not set"); 
336
                }
337
            }
338
            
339
            if ($mode!='daily') {
340
                switch ($mode) {
341
                    case 'weekly':
342 View Code Duplication
                        if (isset($rows[$locationsFieldsMapping['schedule_weekdays']])) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
343
                            if ($this->validateScheduleWeekDays($rows[$locationsFieldsMapping['schedule_weekdays']])) {
344
                                 $curSchedule .= '"weekdays":['.$rows[$locationsFieldsMapping['schedule_weekdays']].']}';
345
                            } else {
346
                                array_push($results['fail'], "$iRow --> Wrong weekdays"); 
347
                            }
348
                        } else {
349
                            array_push($results['fail'], "$iRow --> The parameters sched_weekdays is not set"); 
350
                        }
351
                        break;
352
                    case 'monthly':
353
                        $monthlyMode = "";
354 View Code Duplication
                        if (isset($rows[$locationsFieldsMapping['monthly_mode']])) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
355
                            if ($this->validateScheduleMonthlyMode($rows[$locationsFieldsMapping['monthly_mode']])) {
356
                                 $monthlyMode = $rows[$locationsFieldsMapping['monthly_mode']];
357
                                 $curSchedule .= '"mode": "'.$rows[$locationsFieldsMapping['monthly_mode']].'",';
358
                            } else {
359
                                array_push($results['fail'], "$iRow --> Wrong monthly mode"); 
360
                            }
361
                        } else {
362
                            array_push($results['fail'], "$iRow --> The parameter sched_monthly_mode is not set"); 
363
                        }
364
                        
365
                        if ($monthlyMode!="") {
366
                            switch ($monthlyMode) {
367
                                case 'dates':
368
                                    if (isset($rows[$locationsFieldsMapping['monthly_dates']])) {
369
                                        if ($this->validateScheduleMonthlyDates($rows[$locationsFieldsMapping['monthly_dates']])) {
370
                                             $curSchedule .= '"dates":['.$rows[$locationsFieldsMapping['monthly_dates']].']}';
371
                                        } else {
372
                                            array_push($results['fail'], "$iRow --> Wrong monthly dates"); 
373
                                        }
374
                                    }
375
                                    break;
376
                                case 'nth':
377 View Code Duplication
                                    if (isset($rows[$locationsFieldsMapping['monthly_nth_n']])) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
378
                                        if ($this->validateScheduleNthN($rows[$locationsFieldsMapping['monthly_nth_n']])) {
379
                                             $curSchedule .= '"nth":{"n":'.$rows[$locationsFieldsMapping['monthly_nth_n']].',';
380
                                        } else {
381
                                            array_push($results['fail'], "$iRow --> Wrong parameter sched_nth_n"); 
382
                                        }
383
                                    } else {
384
                                        array_push($results['fail'], "$iRow --> The parameter sched_nth_n is not set"); 
385
                                    }
386
                                    
387 View Code Duplication
                                    if ($curSchedule!="") {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
388
                                        if (isset($rows[$locationsFieldsMapping['monthly_nth_wwhat']])) {
389
                                            if ($this->validateScheduleNthWhat($rows[$locationsFieldsMapping['monthly_nth_wwhat']])) {
390
                                                 $curSchedule .= '"what":'.$rows[$locationsFieldsMapping['monthly_nth_wwhat']].'}}';
391
                                            } else {
392
                                                array_push($results['fail'], "$iRow --> Wrong parameter sched_nth_what"); 
393
                                            }
394
                                        } else {
395
                                            array_push($results['fail'], "$iRow --> The parameter sched_nth_what is not set"); 
396
                                        }
397
                                    }
398
                                    break;
399
                            }
400
                        }
401
                        break;
402
                    default:
403
                        $curSchedule = "";
404
                        break;
405
                }
406
            }
407
408
            if (sizeof($results['fail'])>$failCount) {
409
                $curSchedule = "";
410
            }
411
412
            if (($mode=='daily' || $mode=='weekly' || $mode=='monthy') && $curSchedule=="") {
413
                $iRow++; 
414
                continue;
415
            }
416
            
417
            $curSchedule = strtolower($curSchedule);
418
            
419
            $curSchedule = '[{'.$curSchedule.'}]';
420
421
            $oSchedule = json_decode($curSchedule,TRUE);
0 ignored issues
show
Unused Code introduced by
$oSchedule is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
422
            
423
            $parametersArray = array();
424
            
425
            foreach ($addressBookFields as $addressBookField) {
426
                if (isset($locationsFieldsMapping[$addressBookField])) {
427
                    $parametersArray[$addressBookField] = $rows[$locationsFieldsMapping[$addressBookField]];
428
                }
429
            }
430
            
431
            $AdressBookLocationParameters = AddressBookLocation::fromArray($parametersArray);
432
            
433
            $abContacts = new AddressBookLocation();
434
435
            $abcResults = $abContacts->addAdressBookLocation($AdressBookLocationParameters); //temporarry
436
            
437
            array_push($results['success'], "The schedule location with address_id = ".strval($abcResults["address_id"])." added successfuly.");
438
        }
439
440
        return $results;
441
    }
442
443
 }
444