Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
22 changes: 22 additions & 0 deletions docRb.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Video DEMO en este enlace:
## https://www.youtube.com/watch?v=LgiEzr2uSEg

* Instale el componente de PHP Mailer ejecutando la siguiente línea de comando desde el directorio de proyecto:
composer require phpmailer/phpmailer
cree un correo de Gmail para fines de este test y configure el host stm de Gmail.
* Cree la aplicación según los requerimiento con PHP puro (sin framework), MySql y las librerías de jQuery, Bootstrap.
* En la carpeta del proyecto encontraran la siguiente estructura:
a) una carpeta App donde encontraran:
-el archivo controllerList.php quien se encarga de cargar la tabla que se muestra en la aplicación con los datos que se encuentran cargados en la base de datos.
-el archivo controllerLoad.php se encarga de todo lo referente al proceso de cargar el CSV procesarlo, subir al servidor, eliminar líneas vacías, controlar códigos duplicados, respetar los caracteres especiales que pueden haber dentro de la descripción de cada código y todos los controles requeridos para luego guardar en la base de datos.
– el archivo Load contiene la vista de la tabla de códigos con su buscador.
-el archivo login.php se encarga de la verificación y el acceso a la aplicación.
-el archivo logout.php se encarga de destruir la sesión y redireccionar a login de la aplicación.
-el archivo controllerMail.php se encarga de enviar un correo (al usuario conectado, es decir al correo de la sesión) con los datos generados luego de procesar el CSV
b) En la carpeta dataBase encontraran:
-el archivo conf.php el cual contiene los datos para conectarse a la base de datos.
-el archivo connec.php donde se hace la conexión a la base de datos con PDO.
-el archivo SQL.
c) En la carpeta js encontraran el archivo internal.js el cual contiene todo el código jquery y Ajax utilizado en la aplicación
d) En la carpeta script_newUser esta el script para crear usuarios desde el terminal.

38 changes: 38 additions & 0 deletions phpTest_20/.vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch built-in server and debug",
"type": "php",
"request": "launch",
"runtimeArgs": [
"-S",
"localhost:8000",
"-t",
"."
],
"port": 9003,
"serverReadyAction": {
"action": "openExternally"
}
},
{
"name": "Debug current script in console",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"externalConsole": false,
"port": 9003
},
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003
}
]
}
Binary file added phpTest_20/Composer-Setup.exe
Binary file not shown.
18 changes: 18 additions & 0 deletions phpTest_20/app/controllerList.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?php
require_once "../dataBase/connec.php";

$sqlHome = "SELECT * FROM cpt";
$queryHome = $pdo -> prepare($sqlHome);
$queryHome -> execute();
$resultsHome = $queryHome -> fetchAll(PDO::FETCH_OBJ);

if($queryHome -> rowCount() > 0) {
foreach($resultsHome as $resultHome) {
$reg['data'][]=$resultHome;
}

}
echo json_encode($reg);


?>
42 changes: 42 additions & 0 deletions phpTest_20/app/controllerLoad.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<?php
require_once "../dataBase/connec.php";

if (!file_exists('csvFile')) {
$i=0;
mkdir('csvFile', 0777);
}
$path='csvFile/'.$_FILES['file']['name'];
move_uploaded_file($_FILES['file']['tmp_name'], $path);

if ($_FILES['file']['tmp_name']){
$counOrg=0;
$counSave=0;
$fileCsv = array_map("str_getcsv", file($path));
foreach ($fileCsv as $row2) {$counOrg++;}
$head = array_shift($fileCsv);
$filter = array_filter($fileCsv, 'strlen');
$fileCsv = array_map('array_filter', $fileCsv);
$fileCsv = array_filter($fileCsv);

foreach ($fileCsv as $row) {
$code = $row[0];
$des = $row[1];
$sqlExis = "SELECT * FROM cpt WHERE code='".$code."'";
$queryExis = $pdo -> prepare($sqlExis);
$queryExis -> execute();
$exis = $queryExis -> fetchAll(PDO::FETCH_OBJ);

if($queryExis -> rowCount() == 0) {
$sql = "INSERT INTO cpt (id, code, description) VALUES (NULL, '".$code."', '".$des."')";
$query = $pdo -> prepare($sql);
$query -> execute();
$counSave = $query->rowCount();
$counSave2+=$counSave;
}
}

echo "Quantity of Items original file: ".$counOrg. "<br>". "Number of Registered Items: ".$counSave2;
}


?>
43 changes: 43 additions & 0 deletions phpTest_20/app/controllerMail.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?php
session_start();
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

require "controllerLoad.php";
require 'vendor\autoload.php';


$mail = new PHPMailer(true);

$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);

//Server settings
$mail->SMTPDebug = 0;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = 'ruthtest81@gmail.com';
$mail->Password = '123456T!';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port = 465;

//Recipients
$mail->setFrom('ruthtest81@gmail.com', 'Mailer');
$mail->addAddress($_SESSION['userLog'], '');

//Content
$mail->isHTML(true);
$mail->Subject = 'Report from PHP test';
$mail->Body = 'You have just processed a CSV file in the application:<br><b>'.$_POST['body'].'</b>';

$mail->send();


?>
Loading