Manual de Técnico
Manual de Técnico
Manual de Técnico
Sistema de BarberApp
Responsables:
Ficha: 1802785
2
INDICE
1. Introducción ...................................................................................4
2. Objetivos Generales y Específicos del Sistema .........................5
3. Normas, Políticas y Procedimientos ............................................6
4. Definición de las Reglas del Negocio Implementadas ...........7
5. Fundamentación de la Tecnología Utilizada ............................8
6. Descripción de los Actores del Sistema .....................................9
7. Especificación de Requisitos ..................................................... 10
8. Casos de uso ............................................................................... 12
9. Diagrama de casos de uso ....................................................... 32
10. Diagrama de Clases ................................................................ 32
11. Diagrama de secuencia ......................................................... 33
12. Descripción de algoritmos ...................................................... 35
13. Descripción de algoritmos (Interfaz) ................................... 117
14. Descripción de campos ........................................................ 123
15. Diccionario de datos ............................................................. 127
16. Modelo relacional .................................................................. 129
3
1. Introducción
4
2. Objetivos Generales y Específicos del Sistema
5
3. Normas, Políticas y Procedimientos
6
4. Definición de las Reglas del Negocio Implementadas
7
5. Fundamentación de la Tecnología Utilizada
Estilos de CSS
8
6. Descripción de los Actores del Sistema
Clientes
REQ-001: LOS NUEVOS USUARIOS QUE INGRESEN A LA
PÁGINA WEB SIN ESTAR REGISTRADOS PODRÁN CREAR LA
CUENTA BARBERMANIA
9
7. Especificación de Requisitos
Numero de
Descripción
requerimiento
Los nuevos usuarios que ingresen a la página web
REQ-001 sin estar registrados podrán crear la cuenta
barbermania
Se creará un logueo de perfil para guardar los
REQ-002
datos y de definir al usuario que ingresar
El Administrador será el único que podrá crear a
los perfiles de los barberos para mayor seguridad
REQ-003
en logueo
10
El cliente podrá calificar los cortes y promover el
REQ-012 corte con el sistema de likes
Información de Catalogación
Proyecto Sistema de Reservación BarberApp
11
Estado de
Versión 1.0 No aprobado
Desarrollo
Definición del Caso de Uso
Código REQ - 001
Nombre Registro de clientes
Objetivo Permitir el registro de nuevos clientes
Actores Cliente
Precondición Ninguna
Escenario
Principal El usuario visualiza el registro y completa los datos requeridos
2
(Documento, contraseña, nombre, teléfono, email)
2b Continua en el paso 2
2d Continua en el paso 2
Escenarios de
Excepción
Si el usuario ya está registrado con sus datos, cuando se registre de
1a
nuevo el sistema le informara que sus datos ya están registrados
8. Casos de uso
12
Información de Catalogación
Proyecto Sistema de Reservación BarberApp
Postcondición El usuario cliente podrá ingresar y validar sus datos al igual que el barbero
13
Información de Catalogación
Proyecto Sistema de Reservación BarberApp
Descripción El Administrador será el único que tendrá acceso a la función de crear las
cuentas para los nuevos barberos y así gestionar la cantidad de empleados.
Actores Administrador
3c Retorna al paso 1
Postcondición Los nuevos usuarios creados por el administrador tendrán acceso a las
opciones del barbero
14
Información de Catalogación
Proyecto Sistema de Reservación BarberApp
Actores Administrador
15
Información de Catalogación
Proyecto Sistema de Reservación BarberApp
Descripción Los usuarios registrados (cliente) podrán crear una reserva para un horario
futuro
Actores Cliente
16
Información de Catalogación
Proyecto Sistema de Reservación BarberApp
Actores Cliente
17
Información de Catalogación
Proyecto Sistema de Reservación BarberApp
Actores Cliente
18
Información de Catalogación
Descripción El cliente podrá visualizar los horarios de los barberos en que están
ocupados durante el día para que el cliente pueda saber a qué horas
podrá reservar
Actores Clientes
Información de Catalogación
19
Versión 1.0 Estado de No aprobado
Desarrollo
Objetivo Recuperar la contraseña del cliente por medio del correo electrónico
Actores Cliente
20
Información de Catalogación
Actores Cliente
2b El cliente no visualizara
21
Información de Catalogación
Descripción Los usuarios tendrán la opción de visualizar la galería para poder identificar
los diferentes cortes que ofrece la Barberia
Actores Usuarios
Precondición Ninguna
4 El usuario podrá visualizar los nuevos cortes que serán agregados por el
barbero
Escenarios de 1. Todos los usuarios podrán ver la galería de cortes, pero en caso de que
Excepción quieran calificar, el cliente solo tendrá la opción de calificar las fotos.
22
Información de Catalogación
Descripción El cliente podrá calificar los cortes y promover el corte con el sistema de
likes
Actores Cliente
23
Información de Catalogación
Descripción Los usuarios podrán visualizar los datos de los empleados de la Barberia
Actores Cliente
Precondición ninguna
Postcondición Los clientes podrán visualizar los datos e información de los barberos para
contactarlos y saber que barbero elegir durante la reserva.
24
Información de Catalogación
Actores Barberos
25
Postcondición El barbero tendrá las opciones agregar y eliminar las ofertas para que los
clientes estén enterados sobre las ofertas que brindara la Barberia
Información de Catalogación
Descripción Los barberos podrán agregar y eliminar los diferentes cortes en un formato,
Actores Barbero
2.1 El barbero ingresa los datos del nuevo corte como el Titulo, la imagen y la
descripción.
2.2 El barbero Presiona el botón de “Subir foto” para agregar la nueva imagen
26
Información de Catalogación
Objetivo Premiar a los clientes que tienen más concurrencia en las reservaciones
Actores Administrador
27
Información de Catalogación
Proyecto Sistema de Reservación BarberApp
Descripción El barbero podrá modificar los datos personales como la contraseña, nombre,
teléfono, correo electrónico, Facebook, Instagram y la foto de perfil, en caso de
que desee actualizar los datos
Actores Barbero
28
Información de Catalogación
Proyecto Sistema de Reservación BarberApp
Actores Cliente
29
Información de Catalogación
Proyecto Sistema de Reservación BarberApp
Actores Visitante
Precondición Ninguna
30
Información de Catalogación
Proyecto Sistema de Reservación BarberApp
Descripción El barbero podrá crear los nuevos cortes para aumentar la variedad de
cortes de cabello y al igual tendrá la opción de eliminar los cortes
Actores Barbero
31
9. Diagrama de casos de uso
32
11. Diagrama de secuencia
Login()
Subir imágenes()
Subir Oferta()
33
Actualizar información ()
34
12. Descripción de algoritmos
12.1. Ofertas
INTERFAZ
<link href=”css/ofertas.css”>,<link
href=”css/barra_menu.css”>= Es la unión del diseño de
la estructura de html en css.
<script src="js/jquery.min.js"></script> = Se utiliza para
llamar un Script para la función de la visualización de las
como un carrusel de imágenes.
$(window).load(function()
{$('.flexslider').flexslider({touch: true, slideshowSpeed:
3000,});}); = Se establece la diferencia de velocidad que
se necesita.
include('../controlador/controlador_direcciones.php'); =
Sirve para la llamar las funciones y elegir el tipo de
usuario a que pertenece.
if (!isset($_SESSION['usuario']) &&
!isset($_SESSION['barbero'])){ = Se utiliza para validar la
sesión en que está es de usuario.
35
include('ofertas2.php'); = se incluye la otra interfaz
include('../controlador/controlador_usuario.php'); = Trae
los datos del usuario y de los archivos que están como
las imágenes y descripciones.
$select=mostrarofertas(); = Se crea un variable y se le
asigna la funcion de controlador y llama las imágenes
de las ofertas.
while ($ila=$select->fetch_array()){ = se crea una while
que genere todo la funcion que trae los datos de las
imágenes y la descripcion y el Id. Y dentro de esto se
descomprime lo que trajo de la base de datos que
quedan guardados en la variable $ila.
$a=$ila['nombreofertas']; = Se le asigna el nombre de la
imagen a la variable “A”.
<img src='<?php echo $a; ?>'> = Se trae como url la
imagen guardada en la array de $ila.
36
<?php echo "<section class='flex-
caption'>"."<p>".$ila['ofertasid']."</p>"."</section>"; ?> = Se trae
el ID de las ofertas del array $ila.
echo ucfirst($ila['description']); ?> = Se le asigna la descripcion
que esta guarda en el array y se muestra.
MODELO
base de datos.
37
12.2. Agregar ofertas
38
INTERFAZ
Linea12
El formulario a donde tiene que llevar la información que es
controlador_barbero
Línea 14 Sirve para llevar una imagen
Línea 16 Campo para llenar un id de la oferta
Línea 20 Botón para enviar el formulario Controlador barbero
MODELO
Linea 3 y 6
Llama las conexiones correspondientes para insertar la oferta
Linea 15 y 18 Las isntancias para insertar la oferta
Linea 70 Pregunta si la omagen pesa mas dos de dos megas
Linea 71 Muestra un mensaje si pesa mas de dos megas
Linea 76 Se ingresa a una variable la ubicaion de donde se quiere el archivo
39
Linea 78 Le pone el nombre y la imagen
Linea 80 Pregunta y ejecuta si no se movio el arrchivo y se une la direccion y el
nombre de la imagen
Linea 81 a 82 Muestra un mensaje y luego redirige a la pagina subir ofertas
Linea 86 a 89 Se asignan el contenido de las variables al metodod set
Linea 91 Se envia a la clase crud_barbero a la funcion insertar_oferta
Linea 93 Pregunta si c es igul a si
Linea 94 Se envia a la pagina de ofertas
Linea 95 Si no Linea 97 Muestra el error Modelo barbero
CONTROLADOR
Linea 100
inicia la funcion linea 101 trae la conexión linea 103 a 106 se trae con el metodo get
108 a 111
Usando el metodo almacenado en la base de datos y se ejecuta
Linea 113
Se asigna una sg un si
Linea 116
Se asigna una sg un no
Linea 118
Retorna el resultado guardado en sg
40
Linea 9 a 21
Depednidendo de la sesion activa se mostara una barra del
controlador_barbero
Linea 35
Lugar donde se envia el numero del id
Linea 36
Sirve para enviar la informacion a controlador_barbero
MODELO
Línea 124
Es la función llamada Línea 126 se trae con el método get lo
41
127 trae la conexión de la base de datos línea 129 se genera
línea 136 cierra la conexión línea 138 a línea 141 se genera una
CONTROLADOR
Línea 2 y línea 6
Llama los archivos que se necesitan para manejar las
ofertas
Línea 12 y 18
Son las instancias que se necesitan para manejar las
ofertas
Línea 103
Se le asigna al método set la varible enviada de la
interfaz eliminaroferta
Línea 105
Con una variable Se llama a la función ubicada en la
clase crudbarber enviadoe la variable guardada con
el método set
42
Línea 107 Se verifica lo retornado si es igual a si
Linea 109 Si es correcto lo envía a la interfaz de ofertas
Línea 110 a 111 Si no es correcto muestra el error
12.4. Información
Info.php
include('../controlador/controlador_direcciones.php'); =
llama del controlador a controlador_direcciones.php el
cual trae las opciones disponibles para el usuario
if (!isset($_SESSION['usuario']) &&
(!isset($_SESSION['barbero']))){
$c=Visitante();
43
} = Se pregunta si la sesión es diferente a usuario o
if(isset($_SESSION['barbero'])) {
$b=BArbero();
} = Pregunta si la sesión es la de barbero y si es así se
inicia
if (isset($_SESSION['usuario'])){
$a=usuario();
} = Pregunta si la sesión es la de usuario y si es así se
inicia
include('../controlador/controlador_info.php'); = Incluye
base de datos
while ($ila=$sql1->fetch_array()) {
$a=$ila['imgbarbero'];
$ducumennt=$ila['documentobarber']
44
<textarea disabled class="task-name"> <?php echo $ila
['nombarber'] ;?> </textarea><br><br>
<?php
$_SESSION['barbero']==$ducumennt ) { echo'<a
class="modificar"
href="modificar_barbero.php">Modificar</a>';
45
<a
href="https://api.whatsapp.com/send?phone=+57<?php
echo $tel ?>" class="whatsapp" target="_blank"><i
class="fab fa-whatsapp"> : <?php echo $ila['telefono']
?></i></a>
include('footer.php')?>
</body>
<?php
require_once('../modelo/crud_info.php'); =
Cuando se necesita, se llama el crud
46
_usuario.php function traerinformacion(){ = Se inicializa la
función
?>
MODELO
select
CSS
47
12.5. Modificar barbero
INTERFAZ
MODELO CONTROLADOR
CSS
48
12.6. Galería
INTERFAZ
49
Error reporting (0)= quita cualquier error que se muestre o
pueda mostrar
Línea 11 linea 13
<link rel="stylesheet"> trae los estilos css para la pagina
Línea 14 a línea 19
Sirve para para señalar mas específicamente para el usuario
Línea 29 require_once('../controlador/controlador_galeria.php');
include('../controlador/controlador_direcciones.php'); permite
el usuario
generar la galería
50
55 a 57
Guarda lo traído
<h1> sirve para mostrar el nombre
<img> sirve para mostrar la imagen
<textarea> sirve para mostrar la descripción de la imagen
MODELO
CONTROLADOR
51
12.6.1. Agregar imágenes a galería
INTERFAZ
52
session_start();
$_SESSION['barbero'] == FALSE) {
$a=usuario();
}?>
<form action="../controlador/controlador_galeria.php"
method="post" enctype="multipart/form-data"> <div
class="titulo_galeria">
Titulo de la interfaz
53
</div>
<div class="tabla_ingreso">
</div>
</form>
MODELO
54
session_start(); Se inicia sesión if (isset($_POST['subefoto'])) { Si se
Directorio de la imagen
$dir="../galerria/galeria";
Imagen
move_uploaded_file($_FILES["imagen"]["tmp_name"],$dir.$image
Si se ha movido
$galer->setimagen($dir.$imagenes);
$galer->setnombreimagen($_POST['nombreimagen']);
$galer->setdescrpiccion($_POST['descripccion_de_imagen']);
$c=$crudgaler->insertarimg($galer);
($c=="si") { header('Location:../interfaz/insertar_o_elimi.php');
CONTROLADOR
$con;
$imggale=($gar->getimagen());
$imgnombre=($gar->getnombreimagen());
$imgdescripccion=($gar->getdescrpiccion());
$sg="si";
}else{
$sg="no";
56
Retorna el valor que este guardo e n $sg return $sg;
$insert->close();
$con ->close();
$selec2=mysqli_query($con,"select horainicio,horafin,
documentobarber ,fecha from reservaciones where
fecha=curdate();");
$rese=new reservaciones();
$b=BArbero();
(isset($_SESSION['usuario'])){
$a=usuario();
$revisarregistroprevio=$rese-
>revisar_reservaprevia($_SESSION['usuario']); }?>
59
h1 class="titulo">Deberá de llenar todos los campos para
realizar la reserva </h1>
<form action="../controlador/controlador_reserva.php"
method="post">
<select name='barbero'>
<option>Eligir</option>
<?php }?>
<select name='corte'>
<option>Elegir</option>
<?php }?>
60
<input type="date" placeholder="Elija una dia" title="Elija
la fecha" pattern="{1,50}" maxlength="1" name="fecha" require >
<button type="submit"
class="boton"name=registrarreserva>RESERVAR</button> Botón
'".$fechas['documentobarber']."'");
</tr>
<?php };?>
61
<?php include('footer.php')?>
Trae el footer que es la barra final de la pagina
MODELO
62
require_once('conexion.php'); require_once('Cliente.php');
require_once('barber.php'); require_once('reservasdao.php');} Si
__construct(){}
$documents=($reser->getdocumentobarbers());
$document=($reser->getdocumentocliente()); $cute=($reser-
>getidcorte());
$time=($reser->gethorainicio());
$timeend=($reser->gethorafin());
$fech=($reser->getfecha());
63
Selecciona de la base de datos el idcorte, preciocorte donde
sea igual al corte ingresado en el get
$registro2=mysqli_fetch_array($selec2);
$b=$registro2['idcorte'];
$c=$registro2['preciocorte'];
'<script>alert("fallo");
</script>';
$voy=mysqli_fetch_array($verifico);
$d=$voy['nivel'];
64
$d=$d+1;
$xpnivel=mysqli_query($con,"CALL
`otorgar_xp`('$c','$document','$d');");
$selec= mysqli_query(
$con,"SELECT`horainicio`,`horafin`,`fecha`,`documentobarber`
FROM
`reservaciones` where documentobarber='$doc' and
fecha='$fe' ORDER BY `reservaciones`.`horafin` ASC");
$confirmacion="correcto";
$b=$ila['horafin'];
$c=$ila['fecha'];
;window.history.go(-2);
$selec= (
"SELECT`horainicio`,`horafin`,`fecha`,`documentobarber` FROM
`reservaciones` where documentobarber='$doc' and
fecha='$fe' ORDER BY `reservaciones`.`horafin` ASC");
$confirmacion2="no_esta_registrada";
>fetch_array()) {
$a=$ila['horainicio'];
$b=$ila['horafin'];
$c=$ila['fecha'];
'<script> alert("esta hora choca con otra por favor inte con
otra"); window.history.go(-2);
66
Valida si la hora es mayor o igual y menor o igual, genera una
alerta para informar que esta hora ya esta ocupada return
$confirmacion2;
window.history.go(-2);
</scrip>'; exit;
eliminarantiguoregistro $verfificar=mysqli_query($con,'select
67
Si el nuevo de reservas es menor que 0
$select1=mysqli_query($con,'CALL `crearregistro`();');}
$resultado2;}
Retorna el resultado
header('location:../interfaz/FinalizacionReserva.php'); Llama la
$con;
68
Selecciona de la base de datos de la tabla reservaciones la
CONTROLADOR
require_once('../modelo/barber.php');
69
require_once('../modelo/reservasdao.php');
require_once('../modelo/crud_reservas.php');
require_once('../modelo/crud_reservas2.php');
require_once('../modelo/crud_usuario.php');
correcto if ($fechaatras=="correcto") {
70
$probar=$rese-
>validartiempo($_POST['hora'],$_POST['fecha'],$documentobarbe
ro);
$probar2=$rese-
>validartiempo2($_POST['hora'],$_POST['fecha'],$documentobarb
"no_esta_registrada") {
}
71
}else{
Si por algun motivo falla el window location se
ya ha pasado";
header("Location:../interfaz/FinalizacionReserva.php");
if (isset($_POST['eliminar_reserva'])) {
$elireser=$rese2->eliminarreserva($_SESSION['usuario']);
Si se genera la función eliminar reserva valida si la sesión
iniciada es la de usuario
function most_reser(){
$mostrar= new reservaciones();
$c=$mostrar->mostrarreserva($_SESSION['barbero']);
return $c;
most_bar(){
72
$mostrar= new reservaciones2(); $b=$mostrar-
73
74
<link rel="stylesheet" type="text/css"
href="css/eslosbarbera.css">
include('../controlador/controlador_direcciones.php');
require_once('../controlador/controlador_reserva.php'); Si es
&& !isset($_SESSION['barbero'])){
$c=Visitante();
75
if (isset($_SESSION['usuario'])){
$a=usuario();
$aa=most_reser();
$fechaactual= date("d",strtotime(date_default_timezone_get()));
= mysqli_fetch_array($aa)) {
$fecha_grabada = date("j",strtotime($consulta2['fecha']));
$fecha_grabada){
<div class='dia'>
Dias Proximos
echo "</div>";
}?>
76
En todo esto muestra si las diferentes reservaciones son de días
pasados, del día actual o de días próximos
CSS
CSS
77
12.11. Agregar Cortes
INTERFAZ
78
<link rel="stylesheet" type="text/css"
href="css/img2.css">
<center>
<form action="../controlador/controlador_barbero.php"
method="post" enctype="multipart/form-data">
controlador_barbero.php div
class="titulo_galeria">
</div>
Titulo de la interfaz
<div class="tabla_ingreso1">
MODELO
if (isset($_POST['subecorte'])) {
$cort->setnombrecor($_POST['nombredecorte']);
$cort->setpreciocorte($_POST['preciocorte']);
$c=$barbr->crearcorte($cort);
Crea el corte
CONTROLADOR
$documents=($cort->getdocumentos());
$cute=($cort->getnombrecor());
$buy=($cort->getpreciocorte());
80
$crearcorte="CALL`agregar_corte`('$documents','$cute','$buy')";
../interfaz/mostrarbarbero.php");
}else{
<form action="../controlador/controlador_barbero.php"
method="post" enctype="multipart/form-data">
<div class="titulo_galeria">
<h1>ELIMINAR CORTE</h1>
Titulo de la interfaz
</div>
<div class="tabla_ingreso2">
81
<option class='option'><?php echo$registr[0]; ?></option>
<?php }?>
</select>
MODELO
if (isset($_POST['eliminecorte'])) {
$cort->setnombrecor($_POST['corte']);
$c=$barbr->eliminarcorte($cort);
Se elimina el corte
CONTROLADOR
$con;
$documents=($cort->getdocumentos());
82
$cute=($cort->getnombrecor());
correctamente"; header("Location:
../interfaz/mostrarbarbero.php");
}else{
CSS
12.13. Sorteo)
83
INTERFAZ
Línea 40
Campo para poner el nivel del cliente con id search
Línea 41 para enviar la infromacion al sistema de sorteo.js el
onlick sirve para no enviar ningún campo vacio
Línea 47 a 48 Pone el nombre de nivel y el campo para mostrar
la información
Línea 51 a 52 Pone el nombre de documento y el campo para
mostrar la información
Línea 55 a 56 Pone el nombre de nombre y el campo para
mostrar la información
Línea 59 a 60 Pone el nombre de teléfono y el campo para
mostrar la información
Línea 64 Botón que lleva el numero para enviarlo a whatssap
Línea 67 a 68 Son el archivo de la librería de jquery
Es el archivo de Ajax que permite traer la información
MODELO
84
Línea 2 Traa el archivo donde se ubica la conexión
Línea 3 Se pone en una varible lo enviado en el
sistema_de_sortep.js Línea 4 a línea 6 se genera una
consulta de select para traer la información línea 8 se
envia la información a sistema de sorteo.js
CONTROLADOR
85
12.14. Añadir Barbero
INTERFAZ
86
<link rel="stylesheet" type="text/css"
href="css/barbero_new.css">
<script src="js/see-password.js"></script>
./../index.php");
87
Controlador de direcciones donde se situan las redirecciones
include('../controlador/controlador_direcciones.php'); Si es
&& !isset($_SESSION['barbero'])){
$c=Visitante();
$b=BArbero();
<form action="../controlador/controlador_barbero.php"
method="post" enctype="multipart/form-data">
<br><h5 class="texto">Documento</h5>
<h5 class="texto">Contraseña</h5>
<div class="mostrar">
<h5 class="texto">Nombre</h5>
<h5 class="texto">Edad</h5>
<h5 class="texto">Telefono</h5>
<h5 class="texto">Instagram</h5>
<h5 class="texto">Foto</h5>
89
MODELO
$document=($bar->getdocumento());
$name=($bar->getnombre());
$eda=($bar->getedad());
$telef=($bar->gettelefonos());
$corre=($bar->getcorreo_electronicos());
$face=($bar->getfacebook()); $insta=($bar->getinstagram());
utilizando,PASSWORD_DEFAULT
$pass=password_hash($bar-
>getcontrasenas(),PASSWORD_DEFAULT);
$imo=($bar->getimagenbarber());
$insert="CALL`crear_barbero`('$document',
'$name','$eda','$telef','$corre','$face','$insta','$pass','$imo')";
$sg="si";
90
Si es falso
}else{
$sg="no"; }
Cierra la conexión
$insert->close();
$con ->close();
CONTROLADOR
if (isset($_POST['registrarse'])) {
archivos de 2Mb";
#directori de la imagen
$dir="../imagennes/img";
$imagenes=$_FILES["imagen"]["name"]; Si no se ha movido la
imagen if(!
91
move_uploaded_file($_FILES["imagen"]["tmp_name"],$dir.$image
$bar->setdocumento($_POST['documento']);
$bar->setnombre($_POST['nombre']);
$bar->setedad($_POST['edad']);
$bar->settelefonos($_POST['telefono']);
$bar->setcorreo_electronicos($_POST['correo']);
$bar->setfacebook($_POST['facebook']);
$bar->setinstagram($_POST['instagram']);
$bar->setcontrasenas($_POST['contraseña']); $bar-
>setimagenbarber($dir.$imagenes);
($b);
CSS
12.15. Usuario
92
INTERFAZ
93
<a href="CuentaBarber.php">Cerrar Sesión <i class="fas fa-
power-off"></i></a> = Se hace un redireccionamiento al Loguin
para cerrar la sesión.
<img class="redme" src="img/perfil.png"><br>, <label><?php
echo
"Usuario"?></label><br><br> = Se muestran una imagen
definida previamente y el nombre de usuario.
<a href='reserva3.php'>Reservar Ahora!</a> = Se hace un
redireccionamiento a la página de reservas para crear la
reserva.
}else{ = En caso de que el los datos traidos sean diferente a
nulo.
<a href="CuentaBarber.php">Cerrar Sesión <i class="fas fa-
power-off"></i></a><br> = Se hace un redireccionamiento al
Loguin para cerrar la sesión.
<a href="modificar_usuario.php" class="editar"> Editar <i
class="fas fa-user-edit"></i></a><br> = Se hace un
redireccionamiento para editar los datos del usuario.
<a href="contrasena_usuario.php" class="editar2"> Cambiar
Contraseña <i class="fas fakey"></i></a> = Se hace un
redireccionamiento para cambiar la contraseña del usuario.
<img src="img/UserIcon.png"><br> = Desde la linea 183 a la 196
se traen los datos del usuario que esta en sesión como son el
nombre, el teleno y el email.
<form action="../controlador/controlador_reserva.php"
method="post"></form> = De la linea 206 a la 209 se crear un
formulario que al precionar un boton se eliminen la reserva
previa.
<label><?php echo $rowA['documentocliente'] ?></label> =
Desde la linea 214 a la 220 se traen datos del usuario en sesion
94
como el documento, el nombre de barbero, la fecha de
reserva y el nombre del corte
}else{ = En caso que los datos del usuario sobre la reserva sea
de la barberia o empresa.
MODELO
95
require_once('../modelo/crud_usuario.php'); = Se requiere las
funciones del crud_usuario ubicado en el modelo.
require_once('../modelo/Cliente.php'); = Se requiere los datos
cliente. function mostrar_datosss($dato){ = Se crea la funcion de
mostrar datos.
$crud=new CrudUsuario(); = Crea una variable y en ella crea
una nueva instancia de CrudUusario.
$datosusuario=$crud->usur_dato($dato); = Crea una variable y
le asigna la variable crud la funcion de usur_dato y como
entrada de datos utiliza la varible llamada “dato”. return
$datosusuario; = Retorna los datos de guardados en la variable
$datosusuario.
CSS
96
12.16. Usuario (barbero)
INTERFAZ
97
<script src="js/see-password.js"></script> = Funcion de java
script que permite mostra los campos de contraseña.
<a href="cuentaAdministrador.php" class="barbero">Entrar como
Barbero</a> = Redireccionamiento al Logeo del Barbero.
<form action="../controlador/controlador_ingreso.php"
method="post"> = Se crea el fomrulario que sera
redireccionado al ingreso en controlador por metodo post.
<input autofocus="" id="documento" class="inp" type="text"
name="documento" value="" autocomplete="off" required
pattern="[0-9]{5,15}" title="El numero de documento sin espacios,
ni puntos"> = Creacion del campo para guardar el
documento.
<div class="mostrar"><input type="password"
name="contraseña" id="password" value=""><button class="btn
btn-primary" type="button" onclick="mostrarContrasena()"><i
class="fas fa-eye"></i></button> = Creacion del campo para
guardar la contraseña.
<a class="inicio" href="../index.php">- Volver al
inicio</a><br><br> = Redireccionamiento para volver al inicio
de la pagina web.
<a class="inicio2" href="recuperar.php">- Olvide mi
contraseña</a><br> = Redireccimiento para el archivo de php
para “olvidar mi contraseña”.
<input class="boton" type="submit" name="entrar"
value="Ingresar"> = Boton el cual capturara los datos de
formulario y los enviara al controlador.
<a href="Registrarse.php">Registrar</a> = Redireccionamiento
que llevara al archivo de php de Registrar al usuario o cliente.
MODELO
98
session_start(); = Captura la sesión del usuario y la guarda.
require_once('../modelo/crud_usuario.php');
require_once('../modelo/Cliente.php'); = Requiere los datos y
funciones del modelo de crud_usuario y los datos del cliente class
CrudUsuario{ = Crea la clase de crudUsuario.
public function obtenerUsuario($nombre, $clave){ = Crea la
función de obtener los datos del usuario y como parámetros tiene
el documento y la contraseña.
$name=$nombre; $pass=$clave; = Asigna variables con los datos
enviados.
$select=buscar_clientes($name); = Crea una variable y le asigna
la función de buscar clientes y como parámetro el documento.
$usuario=new clientes (); = Crea una nueva instancia de la clase
$registro=mysqli_fetch_array($select); = convierte la variable que
contiene los datos del cliente en un array. if (!$registro) { = verifica
si encuentra los datos del cliente.
$usuario->setdocumentocliente(null); = Si no se encuentran los
datos se le asigna a la variable $usuario que el documento del
cliente sea igual a nulo. }else{ = Si por otro caso si se encuentran
los datos
99
if (password_verify($pass, $registro['contrasena'])) { = Verifica
que las contraseña sean correctas , si es correcta, asigna los
valores que trae desde la base de datos $usuario-
>setdocumentocliente($registro['documentocliente']); = Asigna
los datos al usuario como el documento.
$usuario->setnomcliente($registro['nombre']); = Asigna los datos
al usuario como el nombre
$usuario->setcontrasena($registro['contrasena']); = Asigna los
datos del usuario como la contraseña return $usuario; = Retorna
los datos en la variable usuario.
require_once('conexion.php'); = Requiere la conexión a la base
de datos
function buscar_clientes($name) {Crea la función de buscar los
clientes y como parámetro el nombre
global $con; = Se utiliza la variable para la conexión a la base de
datos.
$abc=mysqli_query($con,"CALL`buscar_cliente`('$name')"); = Se
crea una variable y se le asigna la llamada al procedimiento que
esta en la base de datos y como parámetro el nombre. return
$abc; = Retorna los datos de la variable abc.
CONTROLADOR
100
require_once('../modelo/crud_usuario.php'); = De la linea 3
hasta la linea 6 se requiere las funciones y datos del modelo.
session_start(); = Se captrua la sesion y se guarda.
$usuario=new clientes(); = Desde la linea 11 hasta la 13 se crean
las nuevas instancias de las clases necesarias.
}elseif (isset($_POST['entrar'])) { = verifica si la variable entrar está
definida
$usuario=$crud-
>obtenerUsuario($_POST['documento'],$_POST['contraseña']); = A
la variable usuario se le asigna la funcion de obtener usuario con
parametros del documento y la contraseña suminstrados
anteriormente.
if ($usuario->getdocumentocliente()!=NULL) { = Se verifica si los
datos que se consultaron estan en la base de datos.
$_SESSION['usuario']=$usuario->getdocumentocliente(); = si el
usuario se encuentra, crea la sesión de usuario header('Location:
../interfaz/index.php'); = envia a la página que simula la cuenta
else{ echo ' <script> alert("este usuario no existe");
window.history.go(-1); </script>'; = En caso de que los datos
consultados no estan en la base de datos mostrar un alerta en
javasript.
12.17. Usuario Administrador
INTERFAZ
101
con en progreso.
<link rel="stylesheet" type="text/css"
href="css/CuentaBarber.css"> = Hojas de estilo del archivo
CuentaAdministrador.php
<link rel="stylesheet" type="text/css" href="letras/css/all.min.css">
= Complemento para los iconos.
<script src="js/see-password.js"></script> = Funcion de java
script que permite mostra los campos de contraseña.
<form action="../controlador/controlador_ingreso.php"
method="post"> = Se crea el fomrulario que sera redireccionado
al ingreso en controlador por metodo post.
<input autofocus="" id="documento" class="inp" type="text"
name="documento" value="" autocomplete="off" required
pattern="[0-9]{5,15}" title="El numero de documento sin espacios,
ni puntos"> = Creacion del campo para guardar el documento.
<div class="mostrar"><input type="password" name="contraseña"
id="password" value=""><button class="btn btn-primary"
type="button" onclick="mostrarContrasena()"><i class="fas fa-
eye"></i></button> = Creacion del campo para guardar la
contraseña.
<a class="inicio" href="../index.php">- Volver al
inicio</a><br><br> = Redireccionamiento para volver al inicio
de la pagina web.
<input class="boton" type="submit" name="entrar"
value="Ingresar"> = Boton el cual capturara los datos de
formulario y los enviara al controlador.
MODELO
102
funcionesdeselect
103
$barbe->setdocumento( NULL); = Se le asigna a la variable
$barber el documento en nulo.
}else{ = En caso de que si encuentren los datos del barbero
if (password_verify($pass, $registrobarber[7])) { = Se verifica que
la contraseña que envio el usuario sea igual a la incriptada de la
base de datos.
$barbe->setdocumento( $registrobarber[0]); $barbe-
>setnombre( $registrobarber[1]); $barbe>setcontrasenas(
$registrobarber[7]); = Se asigna los valores deacuerdo al orden
del array return $barbe; = Se retorna los datos guardados en la
variable $barbe.
function buscar_barberos($name){ = Se crea la funcion de buscar
barberos y con parametro de name.
global $con; = Se utiliza la variable global para la conexión de la
base de datos.
$bcd=mysqli_query($con,"CALL`buscar_barbero`('$name')"); =
Se crea una varible y se le asigna la llamada de un
procedimiento a la base de datos y con parametro de name.
return $bcd; = Se retorna los resultados guardados en la variable
$bcd.
CONTROLADOR
require_once('../modelo/crud_usuario.php'); = De
la linea 3 hasta la linea 6 se requiere las funciones y
datos del modelo. session_start(); = Se captrua la
sesion y se guarda.
$usuario=new clientes(); = Desde la linea 11 hasta la 13
se crean las nuevas instancias de las clases necesarias.
104
session_start(); = Captura la sesión del usuario y la guarda.
require_once('../modelo/crud_usuario.php');
require_once('../modelo/Cliente.php'); = Requiere los datos y
funciones del modelo de crud_usuario y los datos del cliente class
CrudUsuario{ = Crea la clase elseif ($_POST['entrar2']) { = verifica
si la variable entrar2 está definida
$barbe=$barberr-
>obtenerbarbero($_POST['documento'],$_POST['contraseña']); =
Asigna a una varible la funcion de obtener barbero y como
parametro tiene el documento y la contraseña.
if($barbe->getdocumento()!=NULL){ = Verifica si los datos
recolectados de la base de datos son encontrados.
$_SESSION['barbero']=$barbe->getdocumento(); = Si es encontra
y comprados los datos se le asigna a la sesion del barbero el
documento del barbero para ingresar a la pagina web.
header('Location: ../interfaz/index.php'); = Es un
redireccionamiento con la sesion cargada.
}else{ = En caso de que lo datos no se encunetren o sean nulos
o no coincidan el sistema les mostrar un alerta de error.
echo ' <script> alert("este usuario no existe"); window.history.go(-
1); </script>'; = Se desplegara un mensaje de error de datos.
12.18. Registrar usuario
INTERFAZ
105
<link rel="stylesheet" type="text/css" href="css/registrarse.css"> =
Hoja de estilos de regisrarse.php
<link rel="stylesheet" type="text/css" href="letras/css/all.min.css">
= Complemento para los iconos
<script src="js/see-password.js"></script> = Funcion de Java
Script que permite ver las etiquetas de password a text
<form action="../controlador/controlador_ingreso.php"
method="post"> = Se crea el formulario para crear el usuario y
será redireccionado al controlador de ingreso.
<input class="inp" type="text" min='0' name="documento"
value="" required pattern="[09]{5,15}" title="El número de
documento sin espacios, ni puntos"> = Desde la línea23 hasta la
línea 57 crean campos para almacenar los nuevos datos y
enviarlos, los datos son el documento, el nombre, la contraseña,
el número telefónico y el correo electrónico.
106
<button name="registrarse" class="boton">Registrarse </button>
= Se utiliza el un botón y tiene con valor de guarda los datos del
formulario y encontrarlo con “registrarse” .
MODELO
107
$sumanumero+=$aletorio; = Crea un número aleatorio cada vez
que se crea un usuario.
$document=($usuario->getdocumentocliente()); = Desde la
línea 21 hasta la 26 Se crean las variables y se le asignan los datos
que se enviaron desde la interfaz utilizando el método get.
# pass aparte de recibirlo encripta la contraseña
utilizando,PASSWORD_DEFAULT
$pass=password_hash($usuario->getcontrasena(),
PASSWORD_DEFAULT); = Antes de asignarla se encripta la
contraseña para mayor seguridad en la base de datos.
$insert=("CALL
`crear_cliente`('$document','$name','$telef','$corre','$pass','$su
manumero')"); = Se prepara una inserción de datos if ($con ->
query($insert)==true) { = Se pregunta si los datos fueron
insertados. Si
$sg="si"; = Se guarda los resultados en una variable.
}else{ = En caso de que no se insertaron, los datos por conexión
a la base de datos o datos repetidos
$sg="no"; = Se guarda los resultados en una variable. return $sg;
CONTROLADOR
108
require_once('../modelo/crud_usuario.php'); = De la linea 3
hasta la linea 6 se requiere las funciones y datos del modelo.
session_start(); = Se captrua la sesion y se guarda.
$usuario=new clientes(); = Desde la linea 11 hasta la 13 se crean
las nuevas instancias de las clases necesarias.
if (isset($_POST['registrarse'])) { = Verifica si se seleciono la opción
de fue selecionada la de registrar usuario.
$usuario->setdocumentocliente(intval($_POST['documento'])); =
Desde la linea 23 a la linea 27 se asginas los nuevos valores traidos
desde el formulario mediante el metodo seter (set) , los datos el
documento, nombre, telefono, correo y contraseña.
$a=$crud->insertar($usuario); = Se crea una variable y se le
asigna la funcion de insertar datos y con parametros del array de
la variable $usuario. if ($a=="si") { = Se verifica si los datos
fueron insertados.
header('Location:../interfaz/index.php'); = se redireciona a la
interfaz principal y con el nuevo perfil y datos insertados
}else{ = en caso de que los datos esten repetidos o no se pueda
109
<link rel="shortcut icon" href="img/icono.ICO"/>
<link rel="stylesheet" type="text/css" href="css/recuperar.css"> =
Hoja de estilos del archivo recuperar.php
<form action="../controlador/controlador_usuario.php"
method="post"> = Se crea el formulario para enviar los datos al
controlador de usuario.
<input autofocus="" class="inp" required type="email"
name="correo_elec"> = Se crea el campo para rellenar con el
correo electrónico registrado en la base de datos.
<input class="boton" type="submit" name="correo"
value="Recuperar" /> = El botón redirige al formulario de los datos
al controlador.
MODELO
110
global $con; = Se utiliza la variable de conexión para la base de
datos.
$corre=($cli->getcorreo_electronico()); = Se crea una variable y
se le asigna la función de traer los datos del correo electrónico
enviados desde el controlador.
$insert=mysqli_query($con,"CALL`look_email`('$corre')"); = Se
crea el llamado del procedimiento a la base de datos. return
$insert; = Se retorna los datos en la variable $insert.
CONTROLADOR
111
$clibr =new CrudUsuario();
112
<link rel="stylesheet" type="text/css" href="css/contrasena.css">
<link rel="shortcut icon" href="img/icono.ICO"/> = Hoja de estilos
del archivo de recuperarcontra.php
<form action="../controlador/controlador_usuario.php"
method="post"><br> = Se crea un formulario para guardar los
datos se redireccionara a controlador de usuario por método
post.
<input
114
$cli->setdocumentocliente(intval($_POST['usuario'])); = Se asigna
a la variable el documento que se envió desde la interfaz.
$cli->setcontrasena($_POST['codigo']); = Se asigna el código a la
nueva variable que se envió desde la interfaz de recuperar
contraseña.
$cliente=$clibr->verificarcar el codigo($cli); = Se crea una nueva
variable y se le asigna la función de verificar el código y con
parámetro de la variable ($cli).
$ila=$cliente->fetch_array(); = Se crea una nueva variable y se le
asigna el contenido del array que trajo desde la base de datos.
if (($ila['documentocliente']!=NULL) and
($ila['clave_recuperacion']==$cli)){ = Se verifica si los el
documento del cliente se encuentra en la base de datos y si la
contraseña concuerda con la del registro de la base de datos.
session_start(); = Se inicia la sesión de usuario.
$_SESSION['usuario']=$ila['documentocliente']; = Se le asigna a la
sesión los datos del cliente.
header('Location: ../interfaz/contrasena_usuario.php'); =
Redireccionamiento a la de modificar contraseña con los datos
del cliente.
}else{ = En caso de que no se encuentre el documento o no
coincidan los datos ingresados como el código y el documento.
echo ‘<script> alert("Es codigo no coincide con el numero ");
window.history.go(-1); </script>'; = Se muestra un mensaje de
error de código
12.21. FOTTER
115
<link rel="stylesheet" type="text/css" href="css/estilos_footer.css">
= Hoja de estilos del footer.php
Require_once('../modelo/juaninfo.php'); = Se requieren los datos
de juan(administrador) desde el modelo
$ventepaca= new informacionpersonal(); = Se crea la instancia
de la clase de la información personal.
$sql=$ventepaca->mostrar(); = Se le asigna a la función mostrar
a la instancia y se guarda en la clase.
$ila=$sql->fetch_array(); = La variable $sql se convierte en array
y se guardan los datos en la variable nueva.
<footer>
<a href="https://api.whatsapp.com/send?phone=+57<?php
echo $ila['telefono']?>" target="_blank" class="wha"><i class="fab
fa-whatsapp"></i> : <?php echo $ila['telefono']; ?></a> =
Hipervínculo con el número telefónico del administrador de la
barberia.
<a
href="https://www.facebook.com/pages/Barbermania/75266152
4876540?nr"
target="_blank" class="facebook"><i class="fab fa-
facebook"></i>
@BarberMania_Colombia</a> = hipervínculo a la pagina oficial
de la Barberia en Facebook.
<a href="https://goo.gl/maps/A2hVt5gyxuEndNaG8"
target="_blank" class="dire"><i class="fas fa-map-marker-
alt"></i> Marsella,Cl. 20#11-2,Fusa,Cund</a> = Hipervínculo a la
dirección de la Barberia a través de Google maps
<a href="mailto:barbermania@gmail.com" target="_blank"
class="email"><i class="fas faenvelope"></i>
Barbermania@gmail.com</a> = Hipervínculo para enviar
mensajes al correo electrónico.
Modelo de juaninfo:
116
include('../modelo/conexion.php'); = Se incluye la conexión de la
base de datos.
class informacionpersonal{ = Se crea la clase.
public function mostrar(){ = Se crea la función de mostrar los
datos.
global $con; = Se utiliza la variable $con para la conexión de la
base de datos.
$select=mysqli_query($con,"CALL `datosjuan` "); = Se crea una
variable y se le asigna la llamada a un procedimiento de la base
de datos return $select; = Retorna los datos traídos en la variable
$select.
13.1.1. Ofertasdao
117
13.2. Subir ofertas
13.4. Información
118
13.4.1. Controlador información
13.6. Galeriadao
120
13.9.1. Registrar reserva
13.11. Usuario
121
13.12. Modificar info
13.14. Login
13.15. Registrarse
122
14. Descripción de campos
123
Nombre = Titulo de la imagen que se subirá
Descripción = Descripción opcional de la imagen que se subirá
Buscar = se selecciona el archivo que agregara a la galería
124
Documento = Numero identificador del barbero
Contraseña = Clave de cuenta BarberMania
Nombre = Nombre del barbero que se registrara
Edad = Edad del barbero
Teléfono = Numero de contacto del barbero
Correo electrónico = dirección de correo electrónico
Facebook = Nombre de Facebook del barbero
Instagram= Nombre de Instagram del barbero
Foto = Archivo que se selecciona como imagen de barbero
125
N° de documento = Numero de documento del usuario
Contraseña = Contraseña del usuario
126
15. Diccionario de datos
127
128
16. Modelo relacional
129