-
Notifications
You must be signed in to change notification settings - Fork 0
/
script.js
107 lines (94 loc) · 3.6 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
// Iniciar aplicação
const app = angular.module('app', []);
// Controlador principal
app.controller('MainController', function($scope, $http, $httpParamSerializerJQLike) {
// Valores iniciais
$scope.participantes = [];
$scope.nome = '';
$scope.email = '';
$scope.sorteio = '';
$scope.status = 'Realizar sorteio';
$scope.disabled = false;
/**
* Adiciona um participante na lista.
*/
$scope.adicionarParticipante = function() {
// Obtém os dados
let nome = $scope.nome.trim();
let email = $scope.email.trim().toLowerCase();
// Valida os dados
if(!nome.length || !email.length) return alert('Insira o nome e e-mail do participante!');
if(!/\S+@\S+\.\S+/.test(email)) return alert('Insira um e-mail válido!');
if($scope.participantes.some(p => p.email == email)) return alert('Este e-mail já está sendo usado por outro participante!');
// Adiciona na lista de participantes
$scope.participantes.push({
nome: nome,
email: email
});
// Limpa os campos
$scope.nome = '';
$scope.email = '';
}
/**
* Remove um participante da lista.
*/
$scope.removerParticipante = function(key) {
$scope.participantes.splice(key, 1);
}
/**
* Limpa a lista de participantes.
*/
$scope.limparParticipantes = function() {
if(!$scope.participantes.length) return;
if(confirm('Limpar todos os participantes?')) {
$scope.participantes = [];
$scope.nome = '';
$scope.email = '';
}
}
/**
* Adiciona participante ao pressionar a tecla ENTER.
*/
$scope.enter = function(event) {
if(event.keyCode === 13) $scope.adicionarParticipante();
}
/**
* Faz requisição ao script de sorteio passando os dados.
*/
$scope.realizarSorteio = function() {
// Valida informações
if($scope.participantes.length < 3) return alert('Adicione pelo menos 3 participantes!');
if(!$scope.sorteio.trim().length) return alert('Especifique o nome do sorteio!');
// Realiza sorteio
if(confirm('Confirma todos os dados para realizar o sorteio?')) {
$scope.status = 'Aguarde...';
$scope.disabled = true;
$http({
method: 'POST',
url: 'sortear.php',
data: $httpParamSerializerJQLike({
participantes: $scope.participantes,
nome: $scope.sorteio.trim()
}),
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
}).then(response => {
if(response?.data == 'Sucesso!') {
$scope.status = 'Sorteio realizado!';
alert('Sorteio realizado com sucesso!\nParticipantes, verifiquem suas caixas de e-mail.');
} else {
$scope.status = 'Realizar sorteio';
$scope.disabled = false;
alert('Ocorreu um erro ao realizar o sorteio!\nPor favor, tente novamente.');
console.log(response);
}
}, error => {
$scope.status = 'Realizar sorteio';
$scope.disabled = false;
alert('Ocorreu um erro ao realizar o sorteio!\nPor favor, tente novamente.');
console.log(error);
});
}
}
});