HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/comfama.sports-crowd.com/resources/views/coverages/editCoverages.blade.php
@extends('modules.head') @section('contenido')
@section('extra-css')

<style>
    #floating-panel {
        position: absolute;
        top: 50px;
        left: 25%;
        z-index: 5;
        background-color: #fff;
        padding: 5px;
        border: 1px solid #999;
        text-align: center;
        font-family: 'Roboto','sans-serif';
        line-height: 30px;
        padding-left: 10px;
    }
</style>
@endsection
<div id="floating-panel">
    <input onclick="removeLine();" type=button value="Borrar">
    <input onclick="updateCoverage({{$parameters}});" type=button value="Guardar">
    <input id="name-coverage" type="text" placeholder="Nombre de la cobertura...">
    <input type="number" class="form-control" name="cost_delivery" id="cost_delivery" placeholder="Costo del domicilio (Opcional)">
    <select id="city-coverage">
        @foreach ($cities as $c)
        @if ($c->id == $obj['city_id'])
        <option value="{{$c->id}}" selected>{{$c->name}}</option>
        @endif
        <option value="{{$c->id}}">{{$c->name}}</option>
        @endforeach
    </select>
</div>
<div style="position: absolute; top: 50px; bottom: 0; left: 0; right: 0; z-index: 0;">
    {!! Mapper::render() !!}
</div>
<script>
    var overlays = []; // Todo el poligono
    var mapLocal;
    function initMapa(map){
        mapLocal = map;
        var drawingManager = new google.maps.drawing.DrawingManager({
            drawingMode: google.maps.drawing.OverlayType.POLYGON,
            drawingControl: true,
            drawingControlOptions: {
                position: google.maps.ControlPosition.TOP_CENTER,
                drawingModes: ['polygon']
            }
        });
        drawingManager.setMap(map);

        var currentPolygons = window.atob("{{ $obj['coords'] }}"),
        polygon = null,
        d = null;

        currentPolygons = JSON.parse(currentPolygons);

        for(var i = 0; i < currentPolygons.length; i++){
            polygon = new google.maps.Polygon({
                map: map,
                paths: JSON.parse(currentPolygons[i]),
            });

            d = {
                overlay: polygon,
                coords: polygon.getPath().getArray()
            };
            overlays.push(d);
        }

        // Evento para guardar las lineas del poligono
        google.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) {
            var d = {
                overlay: event.overlay,
                coords: event.overlay.getPath().getArray()
            };
            overlays.push(d); // store reference to added overlay
        });

        $("#name-coverage").val('{{ $obj['name'] }}');
        $("#cost_delivery").val('{{ $obj['cost_delivery'] }}');
    }

    function removeLine() {
        var lastOverlay = overlays.pop();
        if (lastOverlay) lastOverlay.overlay.setMap(null);
    }

    function updateCoverage(parameters){
        if(overlays.length > 0 || !parameters.point_coverage){
            var name = $('#name-coverage').val();
            var cost_delivery = $('#cost_delivery').val();
            city_id = $('#city-coverage').val();

            if(!name){
                swal("Ok", "¡Por favor indica el nombre de la cobertura!", "warning");
                return;
            }

            if(!city_id){
                swal("Ok", "¡Por favor indica la ciudad de la cobertura!", "warning");
                return;
            }

            swal("Desea actualizar la cobertura ?",
            {
                icon: "success",
                buttons: {
                    Ok: 'Si',
                    cancel: 'No',
                }
            }).then((val) => {
                if(val == "Ok"){

                  var coords = [];
                  if (parameters.point_coverage) {
                    for(var i = 0; i < overlays.length; i++ ){
                      coords[i] = JSON.stringify(overlays[i].coords);
                    }
                  }

                    var data = {
                        name: name,
                        cost_delivery,
                        city_id: city_id,
                        coords: coords // Para serializar y guardar el array como texto plano en la BD
                    };
                    $.ajax({
                        url: "/coverages/" + {{$obj['id']}} + "/update",
                        type: "PUT",
                        contentType: 'application/json',
                        data: JSON.stringify(data),
                        headers: {
                            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
                            'Content-Type': 'application/json'
                        },
                        success: function (r) {
                          swal('Ok', r[0].message, 'success').then(function(){
                              window.location = '/coverages';
                          });
                        },
                        error: function(err){
                            swal('Ok', err, 'error');
                        }
                    });
                }
            });
        }
        else{
            swal("Ok", "!Indica al menos 1 poligono cerrado para continuar!", "warning");
        }
    }
</script>
@endsection