1. PHP / Говнокод #26370

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    public function cutPoly($business_id)
        {
            $done = [];
            $red = Isochrone::where('business_id', $business_id)->where('color', 'red')->selectRaw('id, color, ST_AsText(path) as p_path')->get()->first();
            $blue = Isochrone::where('business_id', $business_id)->where('color', 'blue')->selectRaw('id, color, ST_AsText(path) as p_path')->get()->first();
            $green = Isochrone::where('business_id', $business_id)->where('color', 'green')->selectRaw('id, color, ST_AsText(path) as p_path')->get()->first();
            if ($red && $blue) {
                if (!$red['p_path'] || !$blue['p_path']) {
                    $done['red'] = 'already';
                } else {
                    $isoString = 'POLYGON((';
                    $blue_path = $blue['p_path'];
                    $red_path = $red['p_path'];
                    if (!array_key_exists('lat', $blue['p_path'][0])) {
                        $blue_path = $blue['p_path'][0];
                    }
                    if (!array_key_exists('lat', $red['p_path'][0])) {
                        $red_path = $red['p_path'][0];
                    }
                    $isoString .= implode(',', array_map(function ($entry) {
                            return $entry['lat'] . ' ' . $entry['lng'];
                        }, $red_path))
                    . '),('.
                        implode(',', array_map(function ($entry) {
                            return $entry['lat'] . ' ' . $entry['lng'];
                        }, $blue_path))
                        .'))';
                    Isochrone::where('business_id', $business_id)->where('color', 'red')->update(['path' => \DB::raw("ST_GeomFromText('$isoString')")]);
                    $done['red'] = 'ok';
                }
            } else if ($red && $green) {
                if (!$red['p_path'] || !$green['p_path']) {
                    $done['red'] = 'already';
                } else {
                    $isoString = 'POLYGON((';
                    $green_path = $green['p_path'];
                    $red_path = $red['p_path'];
                    if (!array_key_exists('lat', $green['p_path'][0])) {
                        $green_path = $green['p_path'][0];
                    }
                    if (!array_key_exists('lat', $red['p_path'][0])) {
                        $red_path = $red['p_path'][0];
                    }
                    $isoString .= implode(',', array_map(function ($entry) {
                            return $entry['lat'] . ' ' . $entry['lng'];
                        }, $red_path))
                    . '),('.
                        implode(',', array_map(function ($entry) {
                            return $entry['lat'] . ' ' . $entry['lng'];
                        }, $green_path))
                        .'))';
                    Isochrone::where('business_id', $business_id)->where('color', 'red')->update(['path' => \DB::raw("ST_GeomFromText('$isoString')")]);
                    $done['red'] = 'ok green';
                }
            }
            if ($blue && $green) {
                if (!$blue['p_path'] || !$green['p_path']) {
                    $done['blue'] = 'already';
                } else {
                    $isoString = 'POLYGON((';
                    $green_path = $green['p_path'];
                    $blue_path = $blue['p_path'];
                    if (!array_key_exists('lat', $green['p_path'][0])) {
                        $green_path = $green['p_path'][0];
                    }
                    if (!array_key_exists('lat', $blue['p_path'][0])) {
                        $blue_path = $blue['p_path'][0];
                    }
                    $isoString .= implode(',', array_map(function ($entry) {
                            return $entry['lat'] . ' ' . $entry['lng'];
                        }, $blue_path))
                    . '),('.
                        implode(',', array_map(function ($entry) {
                            return $entry['lat'] . ' ' . $entry['lng'];
                        }, $green_path))
                        .'))';
                    Isochrone::where('business_id', $business_id)->where('color', 'blue')->update(['path' => \DB::raw("ST_GeomFromText('$isoString')")]);
                    $done['blue'] = 'ok';
                }
            }
            return $done;
        }

    Он же через час - три дня будет разбиратся что написал

    Запостил: websbkinfo, 21 Января 2020

    Комментарии (4) RSS

    Добавить комментарий