-Modificacion en sistema : Se agrega rut en el sistema

parent a2f756a1
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DRIVER=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
MEMCACHED_HOST=127.0.0.1
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
* text=auto
*.css linguist-vendored
*.scss linguist-vendored
*.js linguist-vendored
CHANGELOG.md export-ignore
/node_modules
/public/hot
/public/storage
/storage/*.key
/vendor
.env
.env.backup
.phpunit.result.cache
docker-compose.override.yml
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
/.idea
/.vscode
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
<?php
namespace App\Http\Controllers;
use App\Consts\AppVersion;
use App\Repositories\InstallerRepository;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class InstallerController extends Controller
{
protected $installer;
public function __construct(InstallerRepository $installer)
{
$this->installer = $installer;
}
public function index(Request $request)
{
if ($request->getSchemeAndHttpHost() . '/' . $request->route()->uri == $request->url()) $sub_directory = 'false';
else $sub_directory = 'true';
return view('vendor.installer.installer', ['sub_directory' => $sub_directory, 'app_version' => AppVersion::VERSION, 'timezones' => json_encode(timezone_identifiers_list()), 'host' => str_replace("install", "", $request->url())]);
}
public function requirements()
{
$phpSupportInfo = $this->installer->checkPHPversion(
config('installer.core.minPhpVersion')
);
$requirements = $this->installer->check(
config('installer.requirements')
);
$html = view('vendor.installer.requirements', compact('requirements', 'phpSupportInfo'))->render();
$status = false;
if (!isset($requirements['errors']) && $phpSupportInfo['supported']) {
$status = true;
}
return response()->json(['html' => $html, 'status' => $status]);
}
public function permissions()
{
$permissions = $this->installer->checkPermission(
config('installer.permissions')
);
$html = view('vendor.installer.permissions', compact('permissions'))->render();
$status = false;
if (!isset($permissions['errors'])) $status = true;
return response()->json(['html' => $html, 'status' => $status]);
}
public function environmentWizard()
{
$envConfig = $this->installer->getEnvContent();
return view('vendor.installer.environment-wizard', compact('envConfig'));
}
public function saveWizard(Request $request)
{
$data = $request->all();
$rules = config('installer.environment.form.rules');
try {
$request->validate($rules);
$this->validateCustomerData($data['customer_details']);
$app_url = str_replace("environment/save", "", $request->url());
$res = $this->installer->saveFileWizard($request->all(), $app_url);
$data['customer_details']['host'] = $app_url;
$same_directory = false;
if ($request->getSchemeAndHttpHost() . '/' . $request->route()->uri == $request->url()) $same_directory = true;
if ($res['results']) {
$outputLog = $this->installer->migrateAndSeed();
if ($outputLog['message'] == 'error') return response()->json(['status_code' => 500, 'errors' => $outputLog['status']]);
$final = $this->installer->finish($same_directory, $data['customer_details'], $data['app_timezone']);
} else return response()->json(['status_code' => 500, 'errors' => $res['message']]);
} catch (\Exception $e) {
if ($e instanceof \Illuminate\Validation\ValidationException) {
$errors = $e->errors();
return response()->json(['status_code' => 422, 'errors' => $errors,]);
}
return response()->json(['status_code' => 500, 'errors' => 'something went wrong']);
}
return response()->json(['status_code' => 200, 'dbOutputLog' => $outputLog['dbOutputLog'], 'final' => $final]);
}
public function testDBConnection(Request $request)
{
try {
$request->validate([
'database_connection' => 'required',
'database_hostname' => 'required',
'database_port' => 'required',
'database_name' => 'required',
'database_user_name' => 'required',
'database_password' => 'nullable'
]);
$database = config('database.connections.' . $request->database_connection);
$database["host"] = $request->database_hostname;
$database["port"] = $request->database_port;
$database["database"] = $request->database_name;
$database["username"] = $request->database_user_name;
$database["password"] = $request->database_password;
config(['database.connections.test_connection' => $database]);
DB::connection('test_connection')->getPdo();
} catch (\Exception $e) {
if ($e instanceof \Illuminate\Validation\ValidationException) {
$errors = $e->errors();
return response()->json(['status_code' => 422, 'errors' => $errors, 'message' => 'something went wrong']);
}
return response()->json(['status_code' => 500, 'errors' => null, 'message' => 'connection does not exists']);
}
return response()->json(['status_code' => 200, 'data' => null, 'message' => 'success']);
}
public function validateCustomerData($data)
{
validator($data, [
'purchase_code' => 'bail|required',
'name' => 'bail|required',
'company_name' => 'bail|required',
'email' => 'email|bail|required',
'phone' => 'bail|required',
'city' => 'bail|required',
'country' => 'bail|required',
'username' => 'bail|required',
])->validate();
}
}
......@@ -81,6 +81,8 @@ class ServiceController extends Controller
'email_required' => 'nullable',
'ask_phone' => 'required',
'phone_required' => 'nullable',
'ask_rut' => 'required',
'rut_required' => 'nullable',
]);
DB::beginTransaction();
try {
......@@ -152,6 +154,8 @@ class ServiceController extends Controller
'email_required' => 'nullable',
'ask_phone' => 'required',
'phone_required' => 'nullable',
'ask_rut' => 'required',
'rut_required' => 'nullable',
]);
DB::beginTransaction();
try {
......
......@@ -10,7 +10,7 @@ class Queue extends Model
{
use HasFactory;
protected $fillable = [
'service_id','number','called','letter','reference_no','phone','email','name','position'
'service_id','number','called','letter','reference_no','phone','email','name','position', 'rut'
];
protected $appends = ['formated_date','token_number'];
......
......@@ -9,7 +9,7 @@ class Service extends Model
{
use HasFactory;
protected $fillable = [
'name','letter','start_number','status','sms_enabled','optin_message_enabled','call_message_enabled','noshow_message_enabled','completed_message_enabled','optin_message_format','call_message_format','noshow_message_format','completed_message_format','ask_name','name_required','ask_email','email_required','ask_phone','phone_required','status_message_enabled','status_message_format','status_message_positions'
'name','letter','start_number','status','sms_enabled','optin_message_enabled','call_message_enabled','noshow_message_enabled','completed_message_enabled','optin_message_format','call_message_format','noshow_message_format','completed_message_format','ask_name','name_required','ask_email','email_required','ask_phone','phone_required','status_message_enabled','status_message_format','status_message_positions, ask_rut, rut_required'
];
......
......@@ -8,7 +8,7 @@ use Illuminate\Support\Facades\Storage;
class Setting extends Model
{
protected $fillable = [
'language_id', 'name', 'address', 'email', 'phone', 'location', 'display_notification', 'display_font_size', 'display_font_color', 'logo', 'timezone', 'sms_url', 'sms_enabled', 'installed'
'language_id', 'name', 'address', 'email', 'phone', 'location', 'display_notification', 'display_font_size', 'display_font_color', 'logo', 'timezone', 'sms_url', 'sms_enabled', 'installed','rut'
];
protected $appends = ['logo_url'];
......
This diff is collapsed.
......@@ -47,6 +47,8 @@ class ServiceRepository
'name_required' => $data['ask_name'] == 1 ? $data['name_required'] : false,
'ask_email' => $data['ask_email'],
'email_required' => $data['ask_email'] == 1 ? $data['email_required'] : false,
'ask_rut' => $data['ask_rut'],
'rut_required' => $data['ask_rut'] == 1 ? $data['rut_required'] : false
]);
return $service;
}
......@@ -75,6 +77,8 @@ class ServiceRepository
$service->email_required = ($data['ask_email'] == 1) ? $data['email_required'] : false;
$service->ask_phone = $data['ask_phone'];
$service->phone_required = ($data['ask_phone'] == 1) ? $data['phone_required'] : false;
$service->ask_rut = $data['ask_rut'];
$service->rut_required = ($data['ask_rut'] == 1) ? $data['rut_required'] : false;
$service->save();
return $service;
}
......
......@@ -25,6 +25,7 @@ class TokenRepository
'name' => ($is_details && $service->ask_name == 1) ? $data['name'] : null,
'email' => ($is_details && $service->ask_email == 1) ? $data['email'] : null,
'phone' => ($is_details && $service->ask_phone == 1) ? $data['phone'] : null,
'rut' => ($is_details && $service->ask_rut == 1) ? $data['rut'] : null,
'position' => $this->customerWaiting($service) + 1
]);
return $queue;
......
<?php
return [
/*
|--------------------------------------------------------------------------
| Server Requirements
|--------------------------------------------------------------------------
|
| This is the default Laravel server requirements, you can add as many
| as your application require, we check if the extension is enabled
| by looping through the array and run "extension_loaded" on it.
|
*/
'core' => [
'minPhpVersion' => '7.3.0',
],
'final' => [
'key' => true,
'publish' => false,
],
'requirements' => [
'php' => [
'openssl',
'pdo',
'mbstring',
'tokenizer',
'JSON',
'cURL',
'bcmath',
'ctype',
'fileinfo',
'xml',
],
'apache' => [
'mod_rewrite',
],
],
/*
|--------------------------------------------------------------------------
| Folders Permissions
|--------------------------------------------------------------------------
|
| This is the default Laravel folders permissions, if your application
| requires more permissions just add them to the array list bellow.
|
*/
'permissions' => [
'storage/framework/' => '775',
'storage/app/' => '775',
'storage/logs/' => '775',
'bootstrap/cache/' => '775',
],
/*
|--------------------------------------------------------------------------
| Environment Form Wizard Validation Rules & Messages
|--------------------------------------------------------------------------
|
| This are the default form field validation rules. Available Rules:
| https://laravel.com/docs/5.4/validation#available-validation-rules
|
*/
'environment' => [
'form' => [
'rules' => [
'app_name' => 'required|string|max:50',
'database_connection' => 'required|string|max:50',
'database_hostname' => 'required|string|max:50',
'database_port' => 'required|numeric',
'database_name' => 'required|string|max:50',
'database_username' => 'required|string|max:50',
'database_password' => 'nullable|string|max:50',
'customer_details' => 'required',
'app_timezone' => 'required'
],
],
],
/*
|--------------------------------------------------------------------------
| Installed Middleware Options
|--------------------------------------------------------------------------
| Different available status switch configuration for the
| canInstall middleware located in `canInstall.php`.
|
*/
'installed' => [
'redirectOptions' => [
'route' => [
'name' => 'welcome',
'data' => [],
],
'abort' => [
'type' => '404',
],
'dump' => [
'data' => 'Dumping a not found message.',
],
],
],
/*
|--------------------------------------------------------------------------
| Selected Installed Middleware Option
|--------------------------------------------------------------------------
| The selected option fo what happens when an installer instance has been
| Default output is to `/resources/views/error/404.blade.php` if none.
| The available middleware options include:
| route, abort, dump, 404, default, ''
|
*/
'installedAlreadyAction' => '',
/*
|--------------------------------------------------------------------------
| Updater Enabled
|--------------------------------------------------------------------------
| Can the application run the '/update' route with the migrations.
| The default option is set to False if none is present.
| Boolean value
|
*/
'updaterEnabled' => 'true',
];
......@@ -70,6 +70,8 @@ return [
'Email is required' => 'Email is required',
'Ask Phone For Token' => 'Ask Phone For Token',
'Phone is required' => 'Phone is required',
'Ask Rut For Token' => 'Ask Rut For Token',
'Rut is required' => 'Rut is required',
'Optin Message' => 'Optin Message',
'Optin Message Format' => 'Optin Message Format',
'Call Message' => 'Call Message',
......@@ -153,6 +155,7 @@ return [
],
'settings' => [
'company settings' => 'Company Settings',
'rut' => 'Rut',
'name' => 'Name',
'email' => 'Email',
'address' => 'Address',
......
......@@ -70,6 +70,8 @@ return [
'Email is required' => 'correo electronico es requerido',
'Ask Phone For Token' => 'Pedir token al teléfono',
'Phone is required' => 'Se requiere teléfono',
'Ask Rut For Token' => 'Pedir token al rut',
'Rut is required' => 'Se requiere rut',
'Optin Message' => 'Mensaje de suscripción',
'Optin Message Format' => 'Formato de mensaje de opción',
'Call Message' => 'Mensaje de llamada',
......@@ -157,6 +159,7 @@ return [
'company settings' => 'Configuración de la empresa',
'name' => 'Nombre',
'email' => 'Correo electrónico',
'rut' => 'Rut',
'address' => 'Habla a',
'phone' => 'Teléfono',
'location' => 'Ubicación',
......
......@@ -58,6 +58,13 @@
<label for="email">{{__('messages.settings.email')}}</label>
<div class="email">
</div>
</div>
<div class="input-field col s4" id="rut_tab">
<input id="rut" name="rut" type="text" value="" data-error=".rut">
<label for="rut">{{__('messages.settings.rut')}}</label>
<div class="rut">
</div>
</div>
</div>
......@@ -88,7 +95,9 @@
if (value.ask_name == 1) $('#name_tab').show();
else $('#name_tab').hide();
if (value.ask_phone == 1) $('#phone_tab').show();
else $('#phone_tab').hide()
else $('#phone_tab').hide();
if (value.ask_rut == 1) $('#rut_tab').show();
else $('#rut_tab').hide();
service = value;
$('#modal_button').removeAttr('disabled');
$('#modal1').modal('open');
......@@ -122,6 +131,11 @@
},
number: true
},
rut: {
required: function(element) {
return service.rut_required == "1";
},
},
},
errorElement: 'div',
errorPlacement: function(error, element) {
......@@ -140,6 +154,7 @@
name: $('#name').val(),
email: $('#email').val(),
phone: $('#phone').val(),
rut: $('#rut').val(),
with_details: true
}
createToken(data);
......@@ -159,6 +174,7 @@
$('#phone').val(null);
$('#email').val(null);
$('#name').val(null);
$('#rut').val(null);
let html = `
<p style="font-size: 15px; font-weight: bold; margin-top:-15px;">` + response.settings.name + `,` + response.settings.location + `
</p>
......@@ -175,7 +191,7 @@
$('#printarea').html(html);
$('body').addClass('loaded');
window.print();
} else if (response.status_code == 422 && response.errors && (response.errors['name'] || response.errors['email'] || response.errors['phone'])) {
} else if (response.status_code == 422 && response.errors && (response.errors['name'] || response.errors['email'] || response.errors['phone'] || response.errors['rut'])) {
$('#modal_button').removeAttr('disabled');
if (response.errors['name'] && response.errors['name'][0]) {
$('.name').html('<span class="text-danger errbk">' + response.errors['name'][0] + '</span>')
......@@ -186,12 +202,16 @@
if (response.errors['phone'] && response.errors['phone'][0]) {
$('.phone').html('<span class="text-danger errbk">' + response.errors['phone'][0] + '</span>')
}
if (response.errors['rut'] && response.errors['rut'][0]) {
$('.rut').html('<span class="text-danger errbk">' + response.errors['rut'][0] + '</span>')
}
$('body').addClass('loaded');
} else {
$('#modal1').modal('close');
$('#phone').val(null);
$('#email').val(null);
$('#name').val(null);
$('#rut').val(null);
$('body').addClass('loaded');
M.toast({
html: 'something went wrong',
......
......@@ -131,6 +131,31 @@
@endif
</div>
</div>
<div class="row form_align">
<div class="input-field col s3">
<select name="ask_rut" id="ask_rut" data-error=".ask_rut" onchange="enableRequired()">
<option value="0" selected>No</option>
<option value="1">Yes</option>
</select>
<label>{{__('messages.service_page.Ask Rut For Token')}}</label>
<div class="ask_rut">
@if ($errors->has('ask_rut'))
<span class="text-danger errbk">{{ $errors->first('ask_rut') }}</span>
@endif
</div>
</div>
<div class="input-field col s3">
<select name="rut_required" id="rut_required" data-error=".rut_required">
<option value="0" selected>No</option>
<option value="1">Yes</option>
</select>
<label>{{__('messages.service_page.Rut is required')}}</label>
<div class="rut_required">
@if ($errors->has('rut_required'))
<span class="text-danger errbk">{{ $errors->first('rut_required') }}</span>
@endif
</div>
</div>
@if($settings->sms_enabled)
<div class="input-field col s6">
<select name="sms" id="sms" data-error=".sms" onchange="changeSMS()">
......@@ -449,6 +474,12 @@
$('#email_required').val(0);
$('#email_required').prop('disabled', true);
}
if($('#ask_rut').val() == 1){
$('#rut_required').prop('disabled', false);
}else{
$('#rut_required').val(0);
$('#rut_required').prop('disabled', true);
}
if ($('#ask_phone').val() == 1) {
$('#phone_required,#sms').prop('disabled', false);
} else {
......
......@@ -131,6 +131,34 @@
@endif
</div>
</div>
<!---
Se añade configuracion de rut
!-->
<div class="row form_align">
<div class="input-field col s3">
<select name="ask_rut" id="ask_rut" data-error=".ask_rut" onchange="enableRequired()">
<option value="0" @if($service->ask_rut==0) selected @endif>No</option>
<option value="1" @if($service->ask_rut==1) selected @endif>Yes</option>
</select>
<label>{{__('messages.service_page.Ask Rut For Token')}}</label>
<div class="ask_rut">
@if ($errors->has('ask_rut'))
<span class="text-danger errbk">{{ $errors->first('ask_rut') }}</span>
@endif
</div>
</div>
<div class="input-field col s3">
<select name="rut_required" id="rut_required" data-error=".rut_required">
<option value="0" @if($service->rut_required==0) selected @endif>No</option>
<option value="1" @if($service->rut_required==1) selected @endif>Yes</option>
</select>
<label>{{__('messages.service_page.Rut is required')}}</label>
<div class="rut_required">
@if ($errors->has('rut_required'))
<span class="text-danger errbk">{{ $errors->first('rut_required') }}</span>
@endif
</div>
</div>
@if($settings->sms_enabled)
<div class="input-field col s6">
<select name="sms" id="sms" data-error=".sms" onchange="changeSMS()">
......@@ -455,6 +483,8 @@
}
if ($('#ask_phone').val() == 1) {
$('#phone_required,#sms').prop('disabled', false);
}if($('#ask_rut').val() == 1){
$('#rut_required').prop('disabled', false);
} else {
$('#sms,#phone_required').val(0);
$('#phone_required,#sms').prop('disabled', true);
......
<?php
\ No newline at end of file
use App\Http\Controllers\InstallerController;
use Illuminate\Support\Facades\Route;
Route::get('/install', [InstallerController::class, 'index'])->name('install');
Route::get('/requirements', [InstallerController::class, 'requirements'])->name('requirements');
Route::get('/permissions', [InstallerController::class, 'permissions'])->name('permissions');
Route::get('/environment', [InstallerController::class, 'environmentWizard'])->name('environment');
Route::post('/test-connection', [InstallerController::class, 'testDBConnection'])->name('test-connection');
Route::post('/environment/save', [InstallerController::class, 'saveWizard'])->name('set-env');
{"tokens_for_call":[{"id":5,"service_id":1,"number":1,"called":0,"reference_no":"YX0CqzUH5","letter":"TO","name":null,"email":null,"phone":null,"rut":null,"position":1,"created_at":"2022-12-20T18:28:00.000000Z","updated_at":"2022-12-20T18:28:00.000000Z","formated_date":"20-December-2022","token_number":"TO-1"},{"id":6,"service_id":1,"number":2,"called":0,"reference_no":"iF52pedUN","letter":"TO","name":null,"email":null,"phone":null,"rut":null,"position":2,"created_at":"2022-12-20T18:28:06.000000Z","updated_at":"2022-12-20T18:28:06.000000Z","formated_date":"20-December-2022","token_number":"TO-2"},{"id":7,"service_id":1,"number":3,"called":0,"reference_no":"JWKbyP6KF","letter":"TO","name":null,"email":null,"phone":null,"rut":null,"position":3,"created_at":"2022-12-20T18:28:32.000000Z","updated_at":"2022-12-20T18:28:32.000000Z","formated_date":"20-December-2022","token_number":"TO-3"}],"called_tokens":[]}
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment