Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
namespace Faker\Provider\en_ZA;
4
 
5
class PhoneNumber extends \Faker\Provider\PhoneNumber
6
{
7
    protected static $formats = [
8
        '+27({{areaCode}})#######',
9
        '+27{{areaCode}}#######',
10
        '0{{areaCode}}#######',
11
        '0{{areaCode}} ### ####',
12
        '0{{areaCode}}-###-####',
13
    ];
14
 
15
    protected static $cellphoneFormats = [
16
        '+27{{cellphoneCode}}#######',
17
        '0{{cellphoneCode}}#######',
18
        '0{{cellphoneCode}} ### ####',
19
        '0{{cellphoneCode}}-###-####',
20
    ];
21
 
22
    protected static $specialFormats = [
23
        '{{specialCode}}#######',
24
        '{{specialCode}} ### ####',
25
        '{{specialCode}}-###-####',
26
        '({{specialCode}})###-####',
27
    ];
28
 
29
    protected static $tollFreeAreaCodes = [
30
        '0800', '0860', '0861', '0862',
31
    ];
32
 
33
    /**
34
     * @see https://en.wikipedia.org/wiki/Telephone_numbers_in_South_Africa
35
     */
36
    public static function areaCode()
37
    {
38
        $digits[] = self::numberBetween(1, 5);
39
 
40
        switch ($digits[0]) {
41
            case 1:
42
                $digits[] = self::numberBetween(1, 8);
43
 
44
                break;
45
 
46
            case 2:
47
                $number = self::numberBetween(1, 8);
48
                $digits[] = in_array($number, [5, 6], false) ? $number + 2 : $number;
49
 
50
                break;
51
 
52
            case 3:
53
                $number = self::numberBetween(1, 8);
54
                $digits[] = in_array($number, [7, 8], false) ? $number - 2 : $number;
55
 
56
                break;
57
 
58
            case 4:
59
                $digits[] = self::numberBetween(1, 9);
60
 
61
                break;
62
 
63
            case 5:
64
                $number = self::numberBetween(1, 8);
65
                $digits[] = in_array($number, [2, 5], false) ? $number + 2 : $number;
66
 
67
                break;
68
        }
69
 
70
        return implode('', $digits);
71
    }
72
 
73
    public static function cellphoneCode()
74
    {
75
        $digits[] = self::numberBetween(6, 8);
76
 
77
        switch ($digits[0]) {
78
            case 6:
79
                $digits[] = self::numberBetween(0, 2);
80
 
81
                break;
82
 
83
            case 7:
84
                $number = self::numberBetween(1, 9);
85
                $digits[] = in_array($number, [5, 7], false) ? $number + 1 : $number;
86
 
87
                break;
88
 
89
            case 8:
90
                $digits[] = self::numberBetween(1, 9);
91
 
92
                break;
93
        }
94
 
95
        return implode('', $digits);
96
    }
97
 
98
    public static function specialCode()
99
    {
100
        return static::randomElement(static::$tollFreeAreaCodes);
101
    }
102
 
103
    public function mobileNumber()
104
    {
105
        $format = static::randomElement(static::$cellphoneFormats);
106
 
107
        return self::numerify($this->generator->parse($format));
108
    }
109
 
110
    public function tollFreeNumber()
111
    {
112
        $format = static::randomElement(static::$specialFormats);
113
 
114
        return self::numerify($this->generator->parse($format));
115
    }
116
}