-
Notifications
You must be signed in to change notification settings - Fork 0
/
frmFeedback.cs
254 lines (227 loc) · 12.5 KB
/
frmFeedback.cs
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
using System;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
// Librerías para el envío de correos electrónicos.
using System.Net;
using System.Net.Mail;
namespace ProyectoFinal
{
public partial class frmFeedback : Form{
public frmFeedback(){
InitializeComponent();
}
// <---------------------------------------> //
// <---------- BOTONES / BUTTONS ----------> //
// <---------------------------------------> //
// <--- Botón "btnSendFeedback". ---> //
private void btnSendFeedback_Click(object sender, EventArgs e){
// Declaración de variables
/*
Los datos ingresados por el usuario en los textbox se asignarán a as variables correspondientes.
*/
string name = txtName.Text;
string lastname = txtLastName.Text;
string email = txtEmail.Text;
try{
Control ctrl = new Control(); // Creación de un objeto de la clase "Control".
/*
Declaración de una variable de tipo "string" que almacenará la respuesta generada por el método
"ctrRecoverPassword()".
*/
string errorMessage = ctrl.ctrlFeedback(name, lastname, email);
// MessageBox que se mostrará si se prresenta algún error.
if (errorMessage.Length > 0) MessageBox.Show(errorMessage, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
else{
// Llamada a los metodos que se encargan de enviar los emails.
EmailMessageAxolotl();
EmailMessageUser();
// MessageBox que se mostrará cuando el usuario llene los campos correctamente.
MessageBox.Show("Thank you for your feedback! :D \nThe information was sent successfully.", "Notice.", MessageBoxButtons.OK, MessageBoxIcon.Information);
Clear(); // Llamada al método que reinicia al Form.
}
}
/*
Este "catch" sólo se ejecutará si el usuario deja algún textbox vacío.
*/
catch (Exception ex){
// MessageBox a mostrar.
MessageBox.Show(ex.Message, "Notice", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
// <--------------------------------------> //
// <---------- EVENTOS / EVENTS ----------> //
// <--------------------------------------> //
// <--- Evento #1: "KeyPress". ---> //
/*
Este evento se programó para que en el textbox correspondiente sólo sea válido el
escribir letras y espacios en blanco.
*/
private void txtName_KeyPress(object sender, KeyPressEventArgs e){
if (Char.IsLetter(e.KeyChar)){
lblName.ForeColor = Color.FromArgb(0, 0, 0); // Cambio de color a "Negro".
label1.ForeColor = Color.FromArgb(0, 0, 0); // Cambio de color a "Negro".
e.Handled = false;
}
else if (Char.IsControl(e.KeyChar)){
lblName.ForeColor = Color.FromArgb(0, 0, 0); // Cambio de color a "Negro".
label1.ForeColor = Color.FromArgb(0, 0, 0); // Cambio de color a "Negro".
e.Handled = false;
}
else if (Char.IsSeparator(e.KeyChar)){
lblName.ForeColor = Color.FromArgb(0, 0, 0); // Cambio de color a "Negro".
label1.ForeColor = Color.FromArgb(0, 0, 0); // Cambio de color a "Negro".
e.Handled = false;
}
else{
lblName.ForeColor = Color.FromArgb(220, 12, 12); // Cambio de color a "Rojo".
label1.ForeColor = Color.FromArgb(220, 12, 12); // Cambio de color a "Rojo".
e.Handled = true;
}
}
// <--- Evento #2: "KeyPress". ---> //
/*
Este evento se programó para que en el textbox correspondiente sólo sea válido el
escribir letras y espacios en blanco.
*/
private void txtLastName_KeyPress(object sender, KeyPressEventArgs e){
if (Char.IsLetter(e.KeyChar)){
lblLastName.ForeColor = Color.FromArgb(0, 0, 0); // Cambio de color a "Negro".
label2.ForeColor = Color.FromArgb(0, 0, 0); // Cambio de color a "Negro".
e.Handled = false;
}
else if (Char.IsControl(e.KeyChar)){
lblLastName.ForeColor = Color.FromArgb(0, 0, 0); // Cambio de color a "Negro".
label2.ForeColor = Color.FromArgb(0, 0, 0); // Cambio de color a "Negro".
e.Handled = false;
}
else if (Char.IsSeparator(e.KeyChar)){
lblLastName.ForeColor = Color.FromArgb(0, 0, 0); // Cambio de color a "Negro".
label2.ForeColor = Color.FromArgb(0, 0, 0); // Cambio de color a "Negro".
e.Handled = false;
}
else{
lblLastName.ForeColor = Color.FromArgb(220, 12, 12); // Cambio de color a "Rojo".
label2.ForeColor = Color.FromArgb(220, 12, 12); // Cambio de color a "Rojo".
e.Handled = true;
}
}
// <--- Evento #3: "TextChanged". ---> //
/*
Este evento se programó para que en el texbox de nombre "txtEmail" no puedan
escribirse caracteres especiales o números.
*/
private void txtEmail_TextChanged(object sender, EventArgs e){
// Por cada Valor insertado en "txtEmail", se obtendrá un byte en "Código ASCII".
foreach (char Letter in Encoding.ASCII.GetBytes(txtEmail.Text))
/*
Condición que sólo se activará sí y sólo sí el valor que se escriba en el textbox
no se encuentra en el rango de valores entre el [48 - 57, 64, 65 - 90, 96 - 122]
en "Código ASCII".
*/
if (Letter < 46 || Letter > 46 && Letter < 48 || Letter > 57 && Letter < 64 || Letter > 64 && Letter < 65 || Letter > 95 && Letter < 96 || Letter > 122){
lblEmail.ForeColor = Color.FromArgb(220, 12, 12); // Cambio de color a "Rojo".
label3.ForeColor = Color.FromArgb(220, 12, 12); // Cambio de color a "Rojo".
// txtEmail.Text = ""; // Se vacía el textbox.
}
else{
lblEmail.ForeColor = Color.FromArgb(0, 0, 0); // Cambio de color a "Negro".
label3.ForeColor = Color.FromArgb(0, 0, 0); // Cambio de color a "Negro".
}
}
// <---------------------------------------> //
// <---------- MÉTODOS / METHODS ----------> //
// <---------------------------------------> //
// <--- Método #1: "SelectedOptions". ---> //
/*
Este método se programó para imrpimir un mensaje dependiendo del "radiobutton" que
el usuario haya seleccionado.
*/
private string SelectedOptions(){
// Declaración de una variable donde se almacenará la respuesta correspondiente al "radiobutton" seleccionado.
string answer = "";
// Condiciones que regresarán el mensaje que corresponde a cada radiobutton.
if (radiobtnExcellent.Checked) answer = "Excellent.";
else if (radiobtnGood.Checked) answer = "Good";
else if (radiobtnAverage.Checked) answer = "Average";
else if (radiobtnPoor.Checked) answer = "Poor";
else if (radiobtnWorst.Checked) answer = "Worst.";
return answer; // Retorno de valor.
}
// <--- Método #2: "Comment". ---> //
/*
Este método se declaró para verificar si el usuario insertó un comentario para
el feedback o no.
*/
string Comment(){
/*
Declaración de una variable que almacenará un mensaje dependiendo de lo que haya
decidido el usuario.
*/
string comment = "";
// Condición que sólo se activará si y sólo sí el usuario no insertó un comentario.
if (string.IsNullOrEmpty(txtComments.Text)) comment = "No additional comments.";
else comment = txtComments.Text;
return comment; // Retorno de valor.
}
// <--- Método #3: Reiniciar Form a su estado original. ---> //
private void Clear(){
// Se reinician los textbox.
txtName.Clear();
txtLastName.Clear();
txtEmail.Clear();
txtComments.Clear();
// Se reinician los radiobuttons.
radiobtnExcellent.Checked = false;
radiobtnGood.Checked = false;
radiobtnAverage.Checked = false;
radiobtnPoor.Checked = false;
radiobtnWorst.Checked = false;
}
// <--- Método #4: Envío de Email de las respuestas del Feedback a "axolotlagendahelpusers". ---> //
private void EmailMessageAxolotl(){
// Se crea un objeto de la clase "MailMessage".
MailMessage msg = new MailMessage();
// Se crea un objeto de la clase "Smtp". Dentro de los paréntesis se escribe el "smtp" correspondiente a la compañía de correo.
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
// Bloque de instrucciones para datos y cuerpo del correo electrónico.
msg.To.Add("axolotlteam.helpusers@gmail.com"); // Correo que va a recibir el "Feedback".
// Correo quien envía el Feedback.
msg.From = new MailAddress(txtEmail.Text, Session.name + "'s" + " Feedback", Encoding.UTF8);
msg.Subject = "FEEDBACK AXOLOTL AGENDA."; // "Asunto" del correo.
// Cuerpo del correo.
msg.Body = "The feedback data are as follows:" +
"\n- User name: " + txtName.Text +
"\n- User Last name: " + txtLastName.Text +
"\n- App Rating: " + SelectedOptions() +
"\n- Comment from user: " + Comment();
// Este bloque de código servirá para dar credenciales al correo electrónico del usuario.
SmtpServer.Port = 587; // Puerto.
SmtpServer.EnableSsl = true; // Habilitar "uso de aplicaciones poco seguras" para el correo del usuario.
// Asignación de credenciales para el correo del usuario. Se pide el correo y contraseña del mismo.
SmtpServer.Credentials = new NetworkCredential("Axolotlteam.helpusers@gmail.com", "kueuhrvtvfjefufs");
SmtpServer.Send(msg); // ".Send() es el método que permitirá mandar el mensaje.
}
// <--- Método #5: Envío de Email de la copia de las respuestas del feedback al correo del usuario. ---> //
private void EmailMessageUser(){
// Se crea un objeto de la clase "MailMessage".
MailMessage mail = new MailMessage();
// Se crea un objeto de la clase "Smtp". Dentro de los paréntesis se escribe el "smtp" correspondiente a la compañía de correo.
SmtpClient SmtpServerCopy = new SmtpClient("smtp.gmail.com");
mail.To.Add(txtEmail.Text); // Correo que va a recibir la copia del "Feedback".
mail.From = new MailAddress("axolotlagenda.helpusers@gmail.com", "Axolotl Agenda");
mail.Subject = "COPY OF FEEDBACK AXOLOTL AGENDA."; // "Asunto" del correo.
// Cuerpo del correo.
mail.Body = "Thank you for your feedback!" + "\nThe Feedback data you recorded is as follows:" +
"\n- Your name: " + txtName.Text +
"\n- Your last name: " + txtLastName.Text +
"\n- Your App rating: " + SelectedOptions() +
"\n- Your comments: " + Comment();
SmtpServerCopy.Port = 587; // Puerto.
SmtpServerCopy.EnableSsl = true; // Habilitar "uso de aplicaciones poco seguras" para el correo del usuario.
// Asignación de credenciales del correo de soporte. Se pide el correo y contraseña del mismo.
SmtpServerCopy.Credentials = new NetworkCredential("Axolotlteam.helpusers@gmail.com", "kueuhrvtvfjefufs");
SmtpServerCopy.Send(mail); // ".Send() es el método que permitirá mandar el mensaje.
}
}
}