(function (app) {
    app
        .controller('detalleReunionController', function ($scope, $http, $rootScope, SweetAlert, spsservice, $uibModal, id, $location) {

         

            var getList = spsservice.get_type('lists/getbytitle', 'Reuniones', "/Items?$select=GestionadaLeyLobby,Id,Title,lugar,fecha_x0020_reunion,EstadoReunion&$filter=Id eq " + id);
            getList.then(function (resp_sup) {
                if (resp_sup.d.results.length > 0) {
                    $rootScope.reunion = resp_sup.d.results[0];
                    $rootScope.reunion.fecha_x0020_reunion = new Date($rootScope.reunion.fecha_x0020_reunion);
                }

            });

            $scope.obtenerTemas = function (idReunion) {
                var getList = spsservice.get_type('lists/getbytitle', 'Temas', "/Items?$select=Id,tema,observacion&$filter=reunionId eq " + idReunion);
                getList.then(function (resp_sup) {
                    $scope.temasReunion = resp_sup.d.results;
                });
            }            
            // hacer filtro para cargar funcionarios y asistentes en un solo arreglo
            $scope.obtenerAsistentes = function (idReunion) {
                debugger;
                var getList = spsservice.get_type('lists/getbytitle', 'Asistentes', "/Items?$select=TipoAsistente,Id,nombre,cargo,gerencia,ffpp&$filter=reunionesId eq " + idReunion);
                getList.then(function (resp_sup) {
                    $scope.asistentes_ = resp_sup.d.results;
                    // $rootScope.parametros = resp.d.results;
                    $scope.asistentes = $scope.asistentes_.filter(x => x.TipoAsistente == 'Asistente');
                    $scope.funcionarios = $scope.asistentes_.filter(x => x.TipoAsistente == 'Funcionario');
                  
                });
            }

            $scope.obtenerTemas(id);
            $scope.obtenerAsistentes(id);



            //Agregar tema
            $scope.agregarTemas = function (ID) {
                $rootScope.refreshToken();
                SweetAlert.swal({
                        title: "¿Está seguro de agregar el tema?",
                        text: "No se puede revertir esta operación. No debe actualizar la página hasta que el proceso haya finalizado.",
                        type: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#16AB39",
                        confirmButtonText: "Si, agregar tema!",
                        cancelButtonText: "Salir",
                        closeOnConfirm: true
                    },
                    function (isConfirm) {
                        if (isConfirm) {
                            var url = "lists/getbytitle('Temas')/items";
                            var data = {
                                '__metadata': {
                                    'type': 'SP.Data.TemasListItem'
                                },
                                'tema': $scope.temaAgregado,
                                'observacion': $scope.observacion,
                                'reunionId': ID
                            };
                            var grabarTemas = spsservice.post_data(url, data);
                            grabarTemas.then(function (rGrabarTemasPost) {
                                if (rGrabarTemasPost.d != null) {
                                    SweetAlert.swal("Tema agregado", "", "success");

                                    var getList = spsservice.get_type('lists/getbytitle', 'Temas', "/Items?$select=tema,observacion&$filter=reunionId eq " + id);
                                    getList.then(function (resp_sup) {
                                        if (resp_sup.d.results.length > 0) {
                                            $scope.temasReunion = resp_sup.d.results;
                                        }
                                    });
                                    $scope.temaAgregado = ""
                                    $scope.observacion = ""
                                }
                            });
                        }
                    });
            }

            //Agregar asistente
            $scope.agregarAsistentes = function (ID) {
                $rootScope.refreshToken();
                SweetAlert.swal({
                        title: "¿Está seguro de agregar el asistente?",
                        text: "No se puede revertir esta operación. No debe actualizar la página hasta que el proceso haya finalizado.",
                        type: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#16AB39",
                        confirmButtonText: "Si, agregar asistente!",
                        cancelButtonText: "Salir",
                        closeOnConfirm: true
                    },
                    function (isConfirm) {
                        if (isConfirm) {
                            var url = "lists/getbytitle('Asistentes')/items";
                            var data = {
                                '__metadata': {
                                    'type': 'SP.Data.AsistentesListItem'
                                },
                                'nombre': $scope.nombreAsistente,
                                'cargo': $scope.cargoAsistente,
                                'gerencia': $scope.gerenciaAsistente,
                                'reunionesId': ID,
                                'TipoAsistente': "Asistente"
                            };
                            var grabarAsistentes = spsservice.post_data(url, data);
                            grabarAsistentes.then(function (rGrabarAsistentes) {
                                if (rGrabarAsistentes.d != null) {
                                    SweetAlert.swal("Asistente agregado", "", "success");

                                    var getList = spsservice.get_type('lists/getbytitle', 'Asistentes', "/Items?$select=Id,nombre,cargo,gerencia,TipoAsistente&$filter=reunionesId eq " + id + " and TipoAsistente eq 'Asistente'");
                                    getList.then(function (resp_sup) {
                                        if (resp_sup.d.results.length > 0) {
                                            $scope.asistentes = resp_sup.d.results;
                                        }
                                    });
                                    $scope.nombreAsistente = ""
                                    $scope.cargoAsistente = ""
                                    $scope.gerenciaAsistente = ""
                                }
                            })
                        }
                    });
            }

            //Agregar asistente fucnionario público
            $scope.agregarFfpp = function (ID) {
                $rootScope.refreshToken();
                SweetAlert.swal({
                        title: "¿Está seguro de agregar el funcionario?",
                        text: "No se puede revertir esta operación. No debe actualizar la página hasta que el proceso haya finalizado.",
                        type: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#16AB39",
                        confirmButtonText: "Si, de agregar el funcionario!",
                        cancelButtonText: "Salir",
                        closeOnConfirm: true
                    },
                    function (isConfirm) {
                        if (isConfirm) {

                            var url = "lists/getbytitle('Asistentes')/items";
                            var data = {
                                '__metadata': {
                                    'type': 'SP.Data.AsistentesListItem'
                                },
                                'nombre': $scope.nombreffpp,
                                'cargo': $scope.cargoffpp,
                                'ffpp': $scope.ffpp,
                                'reunionesId': ID,
                                'TipoAsistente': "Funcionario"
                            };
                            var grabarFfpp = spsservice.post_data(url, data);
                            grabarFfpp.then(function (rGrabarFfpp) {
                                if (rGrabarFfpp.d != null) {
                                    SweetAlert.swal("Funcionario agregado", "", "success");

                                    var getList = spsservice.get_type('lists/getbytitle', 'Asistentes', "/Items?$select=Id,nombre,cargo,ffpp,TipoAsistente&$filter=reunionesId eq " + id + " and TipoAsistente eq 'Funcionario'");
                                    getList.then(function (resp_sup) {
                                        if (resp_sup.d.results.length > 0) {
                                            $scope.funcionarios = resp_sup.d.results;
                                        }
                                    });
                                    $scope.nombreffpp = ""
                                    $scope.cargoffpp = ""
                                    $scope.ffpp = ""
                                }
                            })
                        }
                    });
            }

            $scope.eliminarTemas = function (ID) {
                $rootScope.refreshToken();
                SweetAlert.swal({
                        title: "¿Está seguro de eliminar el tema?",
                        text: "No se puede revertir esta operación. No debe actualizar la página hasta que el proceso haya finalizado.",
                        type: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#16AB39",
                        confirmButtonText: "Si, eliminar el tema!",
                        cancelButtonText: "Salir",
                        closeOnConfirm: true
                    },
                    function (isConfirm) {
                        if (isConfirm) {
                            debugger;
                            var url = "lists/getbytitle('Temas')/items(" + ID + ")";
                            var eliminaTema = spsservice.delete_data(url);
                            eliminaTema.then(function (rEliminaTema) {
                                $scope.obtenerTemas(id);
                                SweetAlert.swal("Tema eliminado", "", "success");
                            })
                        }
                    });
            }

            $scope.eliminarAsistentes = function (ID) {
                $rootScope.refreshToken();
                SweetAlert.swal({
                        title: "¿Está seguro de eliminar el asistente?",
                        text: "No se puede revertir esta operación. No debe actualizar la página hasta que el proceso haya finalizado.",
                        type: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#16AB39",
                        confirmButtonText: "Si, eliminar el asistente!",
                        cancelButtonText: "Salir",
                        closeOnConfirm: true
                    },
                    function (isConfirm) {
                        if (isConfirm) {
                            debugger;
                            var url = "lists/getbytitle('Asistentes')/items(" + ID + ")";
                            var eliminaAsistente = spsservice.delete_data(url);
                            eliminaAsistente.then(function (rEliminaAsistente) {
                                $scope.obtenerAsistentes(id);
                                SweetAlert.swal("Asistente eliminado", "", "success");
                            })
                        }
                    });
            }

            $scope.eliminarFuncionarios = function (ID) {
                $rootScope.refreshToken();
                SweetAlert.swal({
                        title: "¿Está seguro de eliminar el funcionario?",
                        text: "No se puede revertir esta operación. No debe actualizar la página hasta que el proceso haya finalizado.",
                        type: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#16AB39",
                        confirmButtonText: "Si, eliminar el funcionario!",
                        cancelButtonText: "Salir",
                        closeOnConfirm: true
                    },
                    function (isConfirm) {
                        if (isConfirm) {
                            debugger;
                            var url = "lists/getbytitle('Asistentes')/items(" + ID + ")";
                            var eliminaFuncionario = spsservice.delete_data(url);
                            eliminaFuncionario.then(function (rEliminaFuncionario) {
                                $scope.obtenerAsistentes(id);
                                SweetAlert.swal("Funcionario eliminado", "", "success");
                            })
                        }
                    });
            }

            $scope.confirmarReunion = function (ID) {
                $rootScope.refreshToken();
                SweetAlert.swal({
                        title: "¿Está seguro de confirmar la reunión?",
                        text: "No se puede revertir esta operación. No debe actualizar la página hasta que el proceso haya finalizado.",
                        type: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#16AB39",
                        confirmButtonText: "Si, confirmar la reunión!",
                        cancelButtonText: "Salir",
                        closeOnConfirm: true
                    },
                    function (isConfirm) {
                        if (isConfirm) {

                            var url = "lists/getbytitle('Reuniones')/items(" + id + ")";
                            var data = {
                                '__metadata': {
                                    'type': 'SP.Data.ReunionesListItem'
                                },
                                'EstadoReunion': "Confirmada"
                            };
                            var cambiarConfirmarReunion = spsservice.put_data(url, data);
                            cambiarConfirmarReunion.then(function (rCambiarConfirmarReunion) {
                                var getList = spsservice.get_type('lists/getbytitle', 'Reuniones', "/Items?$select=Id,Title,lugar,fecha_x0020_reunion,EstadoReunion&$filter=Id eq " + id);
                                getList.then(function (resp_sup) {
                                    if (resp_sup.d.results.length > 0) {
                                        $rootScope.reunion = resp_sup.d.results[0];
                                    }
                                });
                                SweetAlert.swal("Reunión confirmada", "", "success");
                            })
                        }
                    });

            }

            $scope.eliminarReunion = function () {
                $rootScope.refreshToken();
                SweetAlert.swal({
                        title: "¿Está seguro de eliminar el borrador?",
                        text: "No se puede revertir esta operación. No debe actualizar la página hasta que el proceso haya finalizado.",
                        type: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#16AB39",
                        confirmButtonText: "Si, eliminar el borrador!",
                        cancelButtonText: "Salir",
                        closeOnConfirm: true
                    },
                    function (isConfirm) {
                        if (isConfirm) {

                            for (let index = 0; index < $scope.asistentes_.length; index++) {
                                var urlAsistente = "lists/getbytitle('Asistentes')/items(" + $scope.asistentes_[index].ID + ")";
                                spsservice.delete_data(urlAsistente);
                            }
                            var url = "lists/getbytitle('Reuniones')/items(" + id + ")";
                            var eliminarReunionBorrador = spsservice.delete_data(url);
                            eliminarReunionBorrador.then(function (rEliminarReunionBorrador) {
                                setTimeout(function () {
                                    $location.path('/');
                                    SweetAlert.swal("Borrador eliminado", "", "success");
                                }, 3000);

                            })

                        }
                    });
            }

            $scope.modificarReunion = function () {
                $rootScope.refreshToken();
                SweetAlert.swal({
                        title: "¿Está seguro de modificar el borrador?",
                        text: "No se puede revertir esta operación. No debe actualizar la página hasta que el proceso haya finalizado.",
                        type: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#16AB39",
                        confirmButtonText: "Si, modificar el borrador!",
                        cancelButtonText: "Salir",
                        closeOnConfirm: true
                    },
                    function (isConfirm) {
                        if (isConfirm) {
                            var url = "lists/getbytitle('Reuniones')/items(" + id + ")";
                            var data = {
                                '__metadata': {
                                    'type': 'SP.Data.ReunionesListItem'
                                },
                                'Title': $rootScope.reunion.Title,
                                'fecha_x0020_reunion': $rootScope.reunion.fecha_x0020_reunion,
                                'lugar': $rootScope.reunion.lugar,
                                'GestionadaLeyLobby': $rootScope.reunion.GestionadaLeyLobby
                            };
                            var modificarReunion = spsservice.put_data(url, data);
                            modificarReunion.then(function (rModificarReunion) {
                                SweetAlert.swal("Reunión modificada", "", "success");
                            });
                        }
                    });
            }
        });

}(angular.module('spsmodule')));