Files
Business-credit-asistant/app/Http/Controllers/DebugController.php
2026-06-29 13:00:18 +06:00

1742 lines
81 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Services\CreditReportService;
use App\Utility\createDirZip;
use App\Utility\Email;
use App\Utility\PdfWriter;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\File;
class DebugController extends Controller
{
private $pdfObj = null;
private $message;
private $code;
private $data;
public function __construct()
{
$this->message = 'Fail';
$this->code = config('constant.API_FAILED_CODE');
$this->data=[];
}
public function generatepdf(Request $req) {
$logData['action'] = 'GENERATE LETTER';
$time = config('constant.MAX_TIME_LIMIT') ?? 60;
set_time_limit($time);
$universal = array();
$pdf_layout_array = [
'1' => 'lg-pdf',
'2' => 'lg-pdf',
'3' => 'lg-pdf',
'4' => 'lg-pdf',
'5' => 'lg-pdf',
'6' => 'lg-pdf2',
'7' => 'lg-pdf2',
'8' => 'lg-pdf2',
'9' => 'lg-pdf2',
'10' => 'lg-pdf2',
'11' => 'lg-pdf2',
'12' => 'lg-pdf2',
'13' => 'lg-pdf2',
'14' => 'lg-pdf2',
'15' => 'lg-pdf2',
'16' => 'lg-pdf2',
'17' => 'lg-pdf2',
'18' => 'lg-pdf',
'19' => 'lg-pdf2',
'20' => 'lg-pdf2',
'21' => 'lg-pdf2',
'22' => 'lg-pdf2',
'23' => 'lg-pdf2',
'24' => 'lg-pdf2',
'26' => 'lg-pdf2',
'27' => 'lg-pdf2',
'28' => 'lg-pdf2',
'29' => 'lg-pdf2',
'30' => 'lg-pdf2',
'31' => 'lg-pdf2',
'32' => 'lg-pdf2',
'33' => 'lg-pdf2',
'34' => 'lg-pdf2',
'35' => 'lg-pdf2',
'36' => 'lg-pdf2',
'37' => 'lg-pdf2',
'38' => 'lg-pdf2',
'39' => 'lg-pdf2',
'40' => 'lg-pdf2',
'41' => 'lg-pdf2',
'42' => 'lg-pdf2',
'43' => 'lg-pdf2',
'44' => 'lg-pdf2',
'45' => 'lg-pdf2',
'46' => 'lg-pdf2',
'47' => 'lg-pdf2',
'48' => 'lg-pdf2',
'49' => 'lg-pdf2',
'50' => 'lg-pdf2',
'51' => 'lg-pdf2',
'52' => 'lg-pdf2',
'53' => 'lg-pdf2',
'54' => 'lg-pdf2',
'55' => 'lg-pdf2',
'56' => 'lg-pdf2',
'57' => 'lg-pdf2',
'58' => 'lg-pdf2',
'59' => 'lg-pdf2',
'60' => 'lg-pdf2',
'61' => 'lg-pdf2',
'62' => 'lg-pdf2',
'63' => 'lg-pdf2',
'64' => 'lg-pdf2',
'65' => 'lg-pdf2',
'66' => 'lg-pdf2',
'67' => 'lg-pdf2',
'68' => 'lg-pdf2',
'69' => 'lg-pdf2',
'70' => 'lg-pdf2',
'71' => 'lg-pdf2',
'72' => 'lg-pdf2',
];
$request = $req->all();
$auth_user = auth()->user();
$client_id = $auth_user->id;
$request['client_email'] = "";
$logData['email'] = $auth_user->email;
$type_name = '';
$current_html_content = $request['current_html_content'];
if (empty($id)) {
$id = isset($request['letter_id']) ? $request['letter_id'] : null;
}
$fileTypeString = "";
if (!empty($selectedLetterTypes)) {
foreach ($selectedLetterTypes as $type) {
if (!empty($fileTypeString) && $fileTypeString != "_") {
$fileTypeString .= "_" . $lettesTypes->{$type};
} else {
$fileTypeString = $lettesTypes->{$type};
}
}
}
$universal['today'] = $request['today'];
$universal['cr_resource'] = $request['cr_resource'];
$universal['name'] = $request['name'];
$universal['address'] = $request['address'];
$universal['dob'] = trim($request['dob']);
$ssn = $auth_user->ssn;
$universal['ssn'] = substr($ssn, -4); // get only last 4 digits of ssn.
$universal['p_tracking_number'] = $request['p_tracking_number'];
$destinations = array();
$additional_destionations1 = [];
$additional_destionations2 = [];
$EXP_1 = "EXPERIAN PO BOX 9701, ALLEN, TX 75013";
$EXP_2 = "EXPERIAN PO BOX 4500, ALLEN, TX 75013";
$EQF_1 = "EQUIFAX PO Box740256, ATLANTA,GA 30374-0256";
$EQF_2 = "EQUIFAX PO Box740241, ATLANTA,GA 30374-0241";
$TRANS_1 = "Trans Union PO Box 2000, CHESTER, PA 19016-2000";;
$TRANS_2 = "Trans Union PO Box 1000, CHESTER, PA 19022-1000";
$TRANS_3 = "Trans Union PO Box 2000, CHESTER, PA 19022-2000";
$destinations[] = $EXP_1;
$destinations[] = $EXP_2;
$destinations[] = $EQF_1;
$destinations[] = $EQF_2;
$destinations[] = $TRANS_1;
$destinations[] = $TRANS_2;
$destinations[] = $TRANS_3;
$additional_destionations1[$EXP_1] = "Attn Darryl Gibson,<br/>Esq. (or acting/current Group General Counsel),<br/>Experian Information Solutions, Inc.,<br/>475 Anton Blvd.,<br/> Costa Mesa, CA 92626";
$additional_destionations1[$EXP_2] = "Attn Darryl Gibson,<br/>Esq. (or acting/current Group General Counsel),<br/>Experian Information Solutions, Inc.,<br/>475 Anton Blvd.,<br/> Costa Mesa, CA 92626";
$additional_destionations2[$EXP_1] = "Experian POB 9701, ATTN Consumer Fraud Department, Allen, TX 75013";
$additional_destionations2[$EXP_2] = "Experian POB 9701, ATTN Consumer Fraud Department, Allen, TX 75013";
$additional_destionations1[$EQF_1] = "ATTN John J. Kelley, III,<br/>Esq. (or acting/current CHIEF LEGAL OFFICER),<br/>Equifax Information services LLC.<br/>1550 Peachtree Street, N.W.,<br/>ATLANTA, GA 30309";
$additional_destionations1[$EQF_2] = "ATTN John J. Kelley, III,<br/>Esq. (or acting/current CHIEF LEGAL OFFICER),<br/>Equifax Information services LLC.<br/>1550 Peachtree Street, N.W.,<br/>ATLANTA, GA 30309";
$additional_destionations2[$EQF_1] = "EQUIFAX , ATTN FRAUD DEPARTMENT,POB 740256, ATLANTA, GA 30374-0256";
$additional_destionations2[$EQF_2] = "EQUIFAX , ATTN FRAUD DEPARTMENT,POB 740256, ATLANTA, GA 30374-0256";
$additional_destionations1[$TRANS_1] = "Attn: john Blenke ,<br/>Esq. (acting or current EVP and GENERAL COUNSEL),<br/>Transunion LLC,<br/>555 W. Adams Street,<br/>CHICAGO, IL";
$additional_destionations1[$TRANS_2] = "Attn: john Blenke ,<br/>Esq. (acting or current EVP and GENERAL COUNSEL),<br/>Transunion LLC,<br/>555 W. Adams Street,<br/>CHICAGO, IL";
$additional_destionations1[$TRANS_3] = "Attn: john Blenke ,<br/>Esq. (acting or current EVP and GENERAL COUNSEL),<br/>Transunion LLC,<br/>555 W. Adams Street,<br/>CHICAGO, IL";
$additional_destionations2[$TRANS_1] = "Trans Union, Attn FRAUD DEPARTMENT, POB 2000, Chester , PA 19016-2000";
$additional_destionations2[$TRANS_2] = "Trans Union, Attn FRAUD DEPARTMENT, POB 2000, Chester , PA 19016-2000";
$additional_destionations2[$TRANS_3] = "Trans Union, Attn FRAUD DEPARTMENT, POB 2000, Chester , PA 19016-2000";
/*$destinations[] = "EXPERIAN PO BOX 9701, ALLEN, TX 75013";
$destinations[] = "EXPERIAN PO BOX 4500, ALLEN, TX 75013";
$destinations[] = "EQUIFAX PO Box740256, ATLANTA,GA 30374-0256";
$destinations[] = "EQUIFAX PO Box740241, ATLANTA,GA 30374-0241";
$destinations[] = "Trans Union PO Box 2000, CHESTER, PA 19016-2000";
$destinations[] = "Trans Union PO Box 1000, CHESTER, PA 19022-1000";
$destinations[] = "Trans Union PO Box 2000, CHESTER, PA 19022-2000";*/
$destinations[] = "INNOVIS PO Box 1640, Pittsburgh, PA 15230-1640";
$destinations[] = "Innovis Consumer Assistance PO Box 530088, Atlanta, GA 30353-0088";
$destinations[] = "LexisNexis PO Box 105108, Atlanta, GA 30348";
$destinations[] = "SageStream, LLC, LexisNexis Risk Solutions Consumer Center P. O. Box 105108. Atlanta, Georgia 30348-5108";
$destinations[] = "Chex Systems ATTN: Consumer Relations, 7805 Hudson Rd., Ste. 100, Woodbury, MN 55125";
$destinations[] = "(US RESIDENTS) MIB Inc 50 Braintree Hill Park, Suite 400, Braintree, MA 02184-8734";
$destinations[] = "(CANADIAN RESIDENTS) MIB Inc 330 university Avenue, Suite 501, Toronto, Canada M5G 1R7";
$destinations[] = "FactorTrust PO Box 3653,Alpharhetta, GA 30023";
$info_item = $request['info_item'];
$data = array(); //main data array
$files = array();
$excludes = array();
if (isset($request['info_item']['file']))
$files = $request['info_item']['file'];
if (isset($request['info_item']['exclude']))
$excludes = $request['info_item']['exclude'];
$univ_dest = $request['destination'];
$content_image = array();
$img_bottom = array();
$excluded_array_keys = [];
$letterImagesDirectory = "/epicvelocity/letters/account";
$letterAttachmentDirectory = "/epicvelocity/letters/attachment";
$letterImagesDirectory = storage_path($letterImagesDirectory);
$letterAttachmentDirectory = storage_path($letterAttachmentDirectory);
if ($request['action'] == 'new') {
// for new upload file in account part
if (!empty($request['letter_image_file'])) {
$target_file = $letterImagesDirectory . '/' . $auth_user->id;
if (!is_dir($target_file)) {
mkdir($target_file, 0777, true);
}
$image_count = 0;
foreach ($request['letter_image_file'] as $keyf => $image) {
if (!in_array($keyf, $excluded_array_keys)) {
if (!empty($image)) {
$image_count++;
$temp = $auth_user->id . "_" . $image_count . time() . ".jpg";
$dataImg = str_replace('data:image/jpeg;base64,', '', $image);
$dataImg = base64_decode($dataImg);
$targeted_file = $target_file . "/" . $temp;
file_put_contents($targeted_file, $dataImg);
$this->filePermissionSet($targeted_file);
$content_image[$keyf] = $auth_user->id . "/" . $temp;
}
}
}
}
//dd($request['attach_image_file']);
// for existing file in attachment part
if (!empty($request['attach_image_file'])) {
$target_file_attachment = ltrim($letterAttachmentDirectory,"/") . '/' . $auth_user->id;
if (!is_dir($target_file_attachment)) {
// mkdir($target_file_attachment, 0777, true);
}
$attach_count = 0;
//dd($request['attach_image_file'],count($request['attach_image_file']));
foreach ($request['attach_image_file'] as $keyf_attach => $attach) {
$isUploadMedia = $request['isUploadMedia'][$keyf_attach];
if (!in_array($keyf_attach, $excluded_array_keys)) {
if (!empty($attach)) {
$attach_count++;
$temp = $auth_user->id . "_" . $attach_count . time() . ".jpg";
$targeted_attach_file = $target_file_attachment . "/" . $temp;
//dd(getPublicFile($attach),$attach);
if ($isUploadMedia == 1) {
// copy(ltrim($attach,"/"), $targeted_attach_file);
//$img_bottom[$keyf_attach] = $attach;
// $image_src = getPublicFile($attach);
$image_src = getPublicImageFile($attach);
$img_bottom[$keyf_attach] = '<img style="width: 100%;margin-top: 20px" src="'.$image_src.'" >';
//$img_bottom[$keyf_attach] = "";
} else {
/*dd($attach);
$dataImg = str_replace('data:image/jpeg;base64,', '', $attach);
$dataImg = base64_decode($dataImg);
file_put_contents($targeted_attach_file, $dataImg);
$this->filePermissionSet($targeted_attach_file);*/
$img_bottom[$keyf_attach] = '<img src="'.$attach.'" style="width:100%;margin-top: 20px" />';
}
//$img_bottom[$keyf_attach] = $this->Auth->user('id') . "/" . $temp;
//$img_bottom[$keyf_attach] = $this->Auth->user('id') . "/" . $temp;
}
}
}
}
}
else if ($request['action'] == 'edit' || $request['action'] == 'create_new') {
// for account part
if (!empty($request['isImageChange'])) {
$target_file = $letterImagesDirectory . '/' . $this->Auth->user('id');
if (!is_dir($target_file)) {
mkdir($target_file, 0777, true);
}
$image_count = 0;
foreach ($request['isImageChange'] as $imageFileKey => $value) {
$image = $request['letter_image_file'][$imageFileKey];
$oldImage = $request['oldImage'][$imageFileKey];
if (!in_array($imageFileKey, $excluded_array_keys)) {
if ($value == 2) { // 2 for new upload Image
if (!empty($image)) {
unlink($letterImagesDirectory . '/' . $oldImage);
$image_count++;
$temp = $this->Auth->user('id') . "_" . $image_count . time() . ".jpg";
$dataImg = str_replace('data:image/jpeg;base64,', '', $image);
$dataImg = base64_decode($dataImg);
$targeted_file = $target_file . "/" . $temp;
file_put_contents($targeted_file, $dataImg);
$this->filePermissionSet($targeted_file);
$content_image[$imageFileKey] = $this->Auth->user('id') . "/" . $temp;
}
} else if ($value == 1) { // 1 for remove image
unlink($letterImagesDirectory . '/' . $oldImage);
} else if ($value == 0) {
$content_image[$imageFileKey] = $image;
}
}
}
}
// for attachment part
if (!empty($request['isAttImageChange'])) {
$target_file = $letterAttachmentDirectory . '/' . $this->Auth->user('id');
if (!is_dir($target_file)) {
mkdir($target_file, 0777, true);
}
$image_att_count = 0;
foreach ($request['isAttImageChange'] as $imageAttFileKey => $value_attach) {
$image_att = $request['attach_image_file'][$imageAttFileKey];
$oldImage_att = $request['oldAttImage'][$imageAttFileKey];
if (!in_array($imageAttFileKey, $excluded_array_keys)) {
if ($value_attach == 2) { // 2 for new upload Image
if (!empty($image_att)) {
unlink($letterAttachmentDirectory . '/' . $oldImage_att);
$image_att_count++;
$temp = $this->Auth->user('id') . "_" . $image_att_count . time() . ".jpg";
$dataImg = str_replace('data:image/jpeg;base64,', '', $image_att);
$dataImg = base64_decode($dataImg);
$targeted_file = $target_file . "/" . $temp;
file_put_contents($targeted_file, $dataImg);
$this->filePermissionSet($targeted_file);
$img_bottom[$imageAttFileKey] = $this->Auth->user('id') . "/" . $temp;
}
} else if ($value_attach == 1) { // 1 for remove image
unlink($letterAttachmentDirectory . '/' . $oldImage_att);
} else if ($value_attach == 0) {
$img_bottom[$imageAttFileKey] = $oldImage_att;
}
}
}
}
}
$db_content_image = $content_image;
//dd($db_content_image);
if (!isset($request['info_item'])) {
//flash('No Content Box added');
//return $this->redirect($this->referer());
return back()->with('error','No Content Box added');
}
$info_item['dest'] = array_values($info_item['dest']);
$final_content_image = [];
$new_dest_content_assoc = [];
if (!empty($info_item['dest'])) {
foreach ($info_item['dest'] as $dest_key => $dest) {
if (!empty($dest)) {
foreach ($dest as $current_dest) {
if (!empty($current_dest) && $current_dest != 1) {
$new_dest_content_assoc[$current_dest][] = $info_item['content'][$dest_key];
}
}
}
}
}
if (!isset($request['bureau_only']) && !isset($request['df_only'])){
$request['bureau_only'] = 1;
$request['df_only'] = 1;
}
if (isset($request['bureau_only'])) {
foreach ($info_item['template'] as $key => $value) {
if (array_key_exists($key, $excludes))
continue;
$data[$value]['type'] = 'bureau';
$data[$value]['template'][] = $value;
$data[$value]['wave'][] = $info_item['wave'][$key];
$data[$value]['letter_type'][] = $info_item['letter_type'][$key];
if(isset($info_item['content'][$key])) {
$data[$value]['content'][] = $info_item['content'][$key];
}
$a1 = array();
if (isset($info_item['dest'][$key])) {
foreach ($info_item['dest'][$key] as $key2 => $value2) {
if (in_array($value2, $destinations)) {
$a1[] = $value2;
}
}
}
if (isset($univ_dest)) {
$a1 = array_merge($a1, $univ_dest);
}
$data[$value]['dest'][] = array_filter(array_unique($a1));
if (array_key_exists($key, $files)) {
$data[$value]['file'][] = $files[$key];
$final_content_image[$value][] = $content_image[$key];
}
if (array_key_exists($key, $request['letter_image_file']))
$data[$value]['letter_image_file'][] = $request['letter_image_file'][$key];
}
}
$key_index = 400;
if (isset($request['df_only'])) {
foreach ($info_item['template_df'] as $key => $value) {
if (empty(trim($value)))
continue;
if (array_key_exists($key, $excludes)) {
continue;
}
$template_id = explode('_', $value);
$template_id = $template_id[1];
$data[$key_index]['type'] = 'creditor';
$data[$key_index]['template'][] = $value;
$data[$key_index]['wave'][] = $info_item['wave'][$key];
$data[$key_index]['letter_type'][] = $info_item['letter_type'][$key];
$data[$key_index]['content'][] = $info_item['content'][$key];
$a1 = array();
if (isset($info_item['dest'][$key])) {
foreach ($info_item['dest'][$key] as $key2 => $value2) {
if (empty(trim($value)))
continue;
if (!in_array($value2, $destinations)) {
$a1[] = $value2;
}
}
}
$data[$key_index]['dest'][] = array_filter($a1);
if (array_key_exists($key, $files)) {
$data[$key_index]['file'][] = $files[$key];
$final_content_image[$key_index][] = $content_image[$key];
}
if (array_key_exists($key, $request['letter_image_file']))
$data[$key_index]['letter_image_file'][] = $request['letter_image_file'][$key];
$key_index ++;
}
}
//dd($data);
$dest = array();
//$_SERVER['DOCUMENT_ROOT']
//$destinationPath = $_SERVER['DOCUMENT_ROOT']. "/webroot/epicvelocity/letters"; // for production server
$destinationPath = storage_path('app/public/resources/epicvelocity/letters'); // for localhost
if (!is_dir($destinationPath)) {
mkdir($destinationPath, 0777, true);
}
$folder_name = $destinationPath . '/' . $auth_user->id . "_" . time() . '-' . mt_rand(00000, 999999);
try {
if (!is_dir($folder_name)) {
mkdir($folder_name, 0777, true);
}
} catch (Exception $e) {
Log::error($e);
}
//array for bottom images.
$img_bottom_clients = array();
if (isset($request['identity_proof_file']) && !empty($request['identity_proof_file']))
$img_bottom_clients[] = $request['identity_proof_file'];
if (isset($reques['ssn_proof_file']) && !empty($reques['ssn_proof_file']))
$img_bottom_clients[] = $reques['ssn_proof_file'];
if (isset($request['address_proof_file']) && !empty($request['address_proof_file']))
$img_bottom_clients[] = $request['address_proof_file'];
if (isset($request['other_file']) && !empty($request['other_file']))
$img_bottom_clients[] = $request['other_file'];
$count = 1;
$cb_item_per_letter = 1;
$num_of_inquiry = 1;
if (isset($request['num_of_account']) && !empty($request['num_of_account'])) {
$cb_item_per_letter = $request['num_of_account'];
}
if (isset($request['num_of_inquiry']) && !empty($request['num_of_inquiry'])) {
$num_of_inquiry = $request['num_of_inquiry'];
}
$dfAddressAssocPDF = []; // Data Furnisher Address & file assoc initialization
foreach ($data as $key => $value) {
$data[$key]['dest'] = array_unique($this->array_flatten($data[$key]['dest']));
$temp_id = $data[$key]['template'][0];
$temp_name = explode('_', $data[$key]['template'][0]);
$template_type = explode('-', $temp_name[0]);
$template_type = $template_type[0];
if ($template_type == 'INQ') {
$cb_item_per_letter = $num_of_inquiry;
}
if ($temp_name[1] == '40') {
//continue;
}
$view_name = 'lg/pdf/' . $temp_name[1];
// image_content
$final_image_acc = [];
if (!empty($final_content_image[$key])) {
foreach ($final_content_image[$key] as $keyfile => $valuef) {
if (!empty($valuef)) {
$final_image_acc[] = $valuef;
}
}
}
$content_image = $final_image_acc;
// image_content
$header_content = '';
if ($temp_name[1] == 52) {
$header_content = "<p><strong><u>Notice of Intent to Sue </u></strong></p>
<p><u>(if you fail to act accordingly in response to this again applied </u><strong>CONSUMER DECLARATION of CHECK of CERTIFIED COMPLIANT and PHYSICALLY VERIFIABLE REPORTED INFORMATION with DEMAND to remove DEFICIENCIES! </strong></p>";
}
$total_destination_selected = count($data[$key]['dest']);
$testData = [];
foreach ($data[$key]['dest'] as $key2 => $value2) {
$current_destination_name = $this->getDestinationByAddress($value2);
if ($value2 == '' || $value2 == 1) {
continue;
}
if (count($data[$key]['content']) > $cb_item_per_letter) {
$content = array_chunk($data[$key]['content'], $cb_item_per_letter);
foreach ($content as $key3 => $value3) {
if (in_array($value2, $destinations)) {
if (isset($request['include_bureau_image'])) {
$fina_data = array('content' => $value3, 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => $img_bottom, 'img_bottom_clients' => $img_bottom_clients);
} else {
$fina_data = array('content' => $value3, 'destination' => $value2, 'universal' => $universal, 'content_image' => array(), 'img_bottom' => array(), 'img_bottom_clients' => array());
}
} else {
if (isset($request['include_creditor_image'])) {
$fina_data = array('content' => $value3, 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => $img_bottom, 'img_bottom_clients' => $img_bottom_clients);
} else {
$fina_data = array('content' => $value3, 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => array(), 'img_bottom_clients' => array());
//$test_content[] = ['df-content' => $fina_data['content']];
}
}
$html = '';
$content = $fina_data['content'];
$destination = $fina_data['destination'];
$avail_content = $new_dest_content_assoc[$value2] ?? "";
$content_image = $fina_data['content_image'];
$img_bottom = $fina_data['img_bottom'];
// $img_bottom = [];
$img_bottom_clients = $fina_data['img_bottom_clients'];
$html = view($view_name,
compact(
'universal',
'fina_data',
'content',
'header_content',
'additional_destionations1',
'additional_destionations2',
'destination',
'avail_content',
'content_image',
'img_bottom',
'img_bottom_clients'
)
)->render();
$html = $this->removeGreenText($html);
//echo $html;exit;
$test_content[$key] = ['content' => array_keys($content), 'pdf' => $view_name];
$name2 = (explode(' ', $value2));
$client_name = str_replace(" ", "-", $request['name']);
if(!empty($client_name)){
$client_name = rtrim($client_name,",");
}
$date_time = time();
$file_name = $count . '_' . $client_name . '_' . $temp_name[0] . '_' . str_replace('/', '', $name2[0]) . '_' . $date_time . '.pdf'; //build name of pdf file
$count++;
$global_html[$value2] = ['html' => $html, 'destination_name' => $current_destination_name, 'file_name' => $file_name];
$global_destination_html[$current_destination_name] = $html;
$this->generateCurrentPDF($html, $folder_name . '/' . $file_name,$file_name);
if (!in_array($value2, $destinations)) {
$dfAddressAssocPDF[$folder_name . '/' . $file_name] = $value2;
}
}
} else {
if (in_array($value2, $destinations)) {
if (isset($request['include_bureau_image'])) {
$fina_data = array('content' => $data[$key]['content'], 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => $img_bottom, 'img_bottom_clients' => $img_bottom_clients);
} else {
$fina_data = array('content' => $data[$key]['content'], 'destination' => $value2, 'universal' => $universal, 'content_image' => array(), 'img_bottom' => array(), 'img_bottom_clients' => array());
}
} else {
if (isset($request['include_creditor_image'])) {
$fina_data = array('content' => $data[$key]['content'], 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => $img_bottom, 'img_bottom_clients' => $img_bottom_clients);
} else {
$fina_data = array('content' => $data[$key]['content'], 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => array(), 'img_bottom_clients' => array());
}
}
$testData[] = $temp_name[1];
$html = '';
$content = $fina_data['content'];
$destination = $fina_data['destination'];
$avail_content = $new_dest_content_assoc[$value2] ?? "";
$content_image = $fina_data['content_image'];
$img_bottom = $fina_data['img_bottom'];
// $img_bottom = [];
$img_bottom_clients = $fina_data['img_bottom_clients'];
$html = view($view_name,
compact(
'universal',
'fina_data',
'content',
'header_content',
'additional_destionations1',
'additional_destionations2',
'destination',
'avail_content',
'content_image',
'img_bottom',
'img_bottom_clients'
)
)->render();
$html = $this->removeGreenText($html);
//echo $html;exit;
$test_content[$key] = ['content' => array_keys($content), 'pdf' => $view_name];
$name2 = (explode(' ', $value2));
$client_name = str_replace(" ", "-", $request['name']);
if(!empty($client_name)){
$client_name = rtrim($client_name,",");
}
$date_time = time();
$file_name = $count . '_' . $client_name . '_' . $temp_name[0] . '_' . str_replace('/', '', $name2[0]) . '_' . $date_time . '.pdf'; //build name of pdf file
$count++;
$global_html[$value2] = ['html' => $html, 'destination_name' => $current_destination_name, 'file_name' => $file_name];
$global_destination_html[$current_destination_name] = $html;
$this->generateCurrentPDF($html, $folder_name . '/' . $file_name,$file_name);
if (!in_array($value2, $destinations)) {
$dfAddressAssocPDF[$folder_name . '/' . $file_name] = $value2; //['address'=>$value2,'pdf'=> $file_name];
}
}
}
}
$zip_file_name = $auth_user->id . "_" . time() . 'evlg-pdf.zip';
$path = $folder_name;
$zip_file = $destinationPath . '/' . $zip_file_name;
$createZip = new createDirZip();
$createZip->testZip($path, $zip_file);
if (!file_exists($zip_file)){
$this->Flash->error('No Letter generated.');
}
if (file_exists($zip_file)) {
File::deleteDirectory($path);
$json_content_image = "";
$json_bottom_image = "";
$is_df_only = 0;
$is_bureau_only = 0;
$is_include_creditor_image = 0;
$is_include_bureau_image = 0;
$is_audit_only = 0;
if (isset($request['df_only'])) {
$is_df_only = $request['df_only'];
}
if (isset($request['bureau_only'])) {
$is_bureau_only = $request['bureau_only'];
}
if (isset($request['include_bureau_image'])) {
$is_include_bureau_image = $request['include_bureau_image'];
}
if (isset($request['include_creditor_image'])) {
$is_include_creditor_image = $request['include_creditor_image'];
}
if (isset($request['audit_only'])) {
$is_audit_only = $request['audit_only'];
}
$epic_personal_info['client_name'] = $request['name'];
$epic_personal_info['address'] = $request['address'];
$download_type= $request['download_type'];
if($download_type==1)
{
$type_name = 'Download';
appLog($logData);
PdfWriter::pdfDownload($zip_file);
}
else if ($download_type == 2) {
$type_name = 'Email';
$data['email'] = $auth_user->email;
$data['email_body'] = "Please find your generated letter";
$data['email_subject'] = "Credit Counsel Elite Letters";
$from = null;
//$this->sendRTGEmail($data, $zip_file);
$fileSize = filesize($zip_file)/1024/1024;
if($fileSize < 25) {
(new Email())->send($data, $data['email_subject'], $from, $zip_file, 'email.letter', $data['email']);
//$this->pdfDownload($zip_file);
$response['message'] = "Your Letters has been sent to your email.";
}else{
$response['message'] = "Email can not sent for exceed maximum attachment file size.";
}
echo json_encode($response);
exit;
// $this->pdfDownload($zip_file);
}
else if($download_type == 3) {
$request['folder_name'] = $folder_name;
$this->storePdfLetters($request['client_id'],$letterExtraEntity->letter_id,2,$zip_file,$request);
} else {
$conn = $this->conn;
if (isset($request['download_category']) && $request['download_category'] > 0) {
$dropdown_category_id = $request['download_category'];
$other_data['letter_stream_html'] = $global_html;
$other_data['letter_stream_dest_html'] = $global_destination_html;
$other_data['letters_directory_info'] = $folder_name;
$other_data['client_id'] = $request['client_id'];
$other_data['client_name'] = $request['name'];
$other_data['DF'] = $dfAddressAssocPDF;
$other_data['set_automation'] = $request['set_automation'];
$other_data['sertg_id'] = $letterExtraEntity->letter_id;
$response = "Your file will send with due time.";
if($request['automation_type'] != 4){
$response = $this->sendToClient($conn, $dropdown_category_id, $zip_file, "", array(), $other_data);
}
} else if (isset($request['formaction']) && $request['formaction'] == 'ajax') {
$response = ['status' => 1];
}
$this->deleteGeneratedPdfWithDir($folder_name);
@unlink($zip_file);
echo json_encode($response);
exit;
}
} else {
if ($this->request->is('ajax')) {
echo json_encode('There was no file generated to send.');
exit;
}
$this->Flash->error('No Letter generated.');
}
$logData['type'] = $type_name;
appLog($logData);
$this->deleteGeneratedPdfWithDir($folder_name);
//return $this->redirect($this->referer());
}
public function getGeneratedPdf(Request $req) {
$logData['action'] = 'TOTAL PDF COUNT';
$time = config('constant.MAX_TIME_LIMIT') ?? 60;
set_time_limit($time);
$response['message'] = "We apologize but you have reached your capacity of letters to challenge at one time. Please Review your accounts again and re process.";
$response['status'] = false;
$universal = array();
$pdf_layout_array = [
'1' => 'lg-pdf',
'2' => 'lg-pdf',
'3' => 'lg-pdf',
'4' => 'lg-pdf',
'5' => 'lg-pdf',
'6' => 'lg-pdf2',
'7' => 'lg-pdf2',
'8' => 'lg-pdf2',
'9' => 'lg-pdf2',
'10' => 'lg-pdf2',
'11' => 'lg-pdf2',
'12' => 'lg-pdf2',
'13' => 'lg-pdf2',
'14' => 'lg-pdf2',
'15' => 'lg-pdf2',
'16' => 'lg-pdf2',
'17' => 'lg-pdf2',
'18' => 'lg-pdf',
'19' => 'lg-pdf2',
'20' => 'lg-pdf2',
'21' => 'lg-pdf2',
'22' => 'lg-pdf2',
'23' => 'lg-pdf2',
'24' => 'lg-pdf2',
'26' => 'lg-pdf2',
'27' => 'lg-pdf2',
'28' => 'lg-pdf2',
'29' => 'lg-pdf2',
'30' => 'lg-pdf2',
'31' => 'lg-pdf2',
'32' => 'lg-pdf2',
'33' => 'lg-pdf2',
'34' => 'lg-pdf2',
'35' => 'lg-pdf2',
'36' => 'lg-pdf2',
'37' => 'lg-pdf2',
'38' => 'lg-pdf2',
'39' => 'lg-pdf2',
'40' => 'lg-pdf2',
'41' => 'lg-pdf2',
'42' => 'lg-pdf2',
'43' => 'lg-pdf2',
'44' => 'lg-pdf2',
'45' => 'lg-pdf2',
'46' => 'lg-pdf2',
'47' => 'lg-pdf2',
'48' => 'lg-pdf2',
'49' => 'lg-pdf2',
'50' => 'lg-pdf2',
'51' => 'lg-pdf2',
'52' => 'lg-pdf2',
'53' => 'lg-pdf2',
'54' => 'lg-pdf2',
'55' => 'lg-pdf2',
'56' => 'lg-pdf2',
'57' => 'lg-pdf2',
'58' => 'lg-pdf2',
'59' => 'lg-pdf2',
'60' => 'lg-pdf2',
'61' => 'lg-pdf2',
'62' => 'lg-pdf2',
'63' => 'lg-pdf2',
'64' => 'lg-pdf2',
'65' => 'lg-pdf2',
'66' => 'lg-pdf2',
'67' => 'lg-pdf2',
'68' => 'lg-pdf2',
'69' => 'lg-pdf2',
'70' => 'lg-pdf2',
'71' => 'lg-pdf2',
'72' => 'lg-pdf2',
];
$request = $req->all();
$auth_user = auth()->user();
$client_id = $auth_user->id;
$request['client_email'] = "";
$logData['email'] = $auth_user->email;
$download_type = $request['download_type'];
if($download_type == 1)
{
$logData['type'] = 'Download';
}else if($download_type == 2){
$logData['type'] = 'Email';
}
$current_html_content = $request['current_html_content'];
if (empty($id)) {
$id = isset($request['letter_id']) ? $request['letter_id'] : null;
}
$fileTypeString = "";
if (!empty($selectedLetterTypes)) {
foreach ($selectedLetterTypes as $type) {
if (!empty($fileTypeString) && $fileTypeString != "_") {
$fileTypeString .= "_" . $lettesTypes->{$type};
} else {
$fileTypeString = $lettesTypes->{$type};
}
}
}
$universal['today'] = $request['today'];
$universal['cr_resource'] = $request['cr_resource'];
$universal['name'] = $request['name'];
$universal['address'] = $request['address'];
$universal['dob'] = trim($request['dob']);
$ssn = $auth_user->ssn;
$universal['ssn'] = substr($ssn, -4); // get only last 4 digits of ssn.
$universal['p_tracking_number'] = $request['p_tracking_number'];
$destinations = array();
$additional_destionations1 = [];
$additional_destionations2 = [];
$EXP_1 = "EXPERIAN PO BOX 9701, ALLEN, TX 75013";
$EXP_2 = "EXPERIAN PO BOX 4500, ALLEN, TX 75013";
$EQF_1 = "EQUIFAX PO Box740256, ATLANTA,GA 30374-0256";
$EQF_2 = "EQUIFAX PO Box740241, ATLANTA,GA 30374-0241";
$TRANS_1 = "Trans Union PO Box 2000, CHESTER, PA 19016-2000";;
$TRANS_2 = "Trans Union PO Box 1000, CHESTER, PA 19022-1000";
$TRANS_3 = "Trans Union PO Box 2000, CHESTER, PA 19022-2000";
$destinations[] = $EXP_1;
$destinations[] = $EXP_2;
$destinations[] = $EQF_1;
$destinations[] = $EQF_2;
$destinations[] = $TRANS_1;
$destinations[] = $TRANS_2;
$destinations[] = $TRANS_3;
$additional_destionations1[$EXP_1] = "Attn Darryl Gibson,<br/>Esq. (or acting/current Group General Counsel),<br/>Experian Information Solutions, Inc.,<br/>475 Anton Blvd.,<br/> Costa Mesa, CA 92626";
$additional_destionations1[$EXP_2] = "Attn Darryl Gibson,<br/>Esq. (or acting/current Group General Counsel),<br/>Experian Information Solutions, Inc.,<br/>475 Anton Blvd.,<br/> Costa Mesa, CA 92626";
$additional_destionations2[$EXP_1] = "Experian POB 9701, ATTN Consumer Fraud Department, Allen, TX 75013";
$additional_destionations2[$EXP_2] = "Experian POB 9701, ATTN Consumer Fraud Department, Allen, TX 75013";
$additional_destionations1[$EQF_1] = "ATTN John J. Kelley, III,<br/>Esq. (or acting/current CHIEF LEGAL OFFICER),<br/>Equifax Information services LLC.<br/>1550 Peachtree Street, N.W.,<br/>ATLANTA, GA 30309";
$additional_destionations1[$EQF_2] = "ATTN John J. Kelley, III,<br/>Esq. (or acting/current CHIEF LEGAL OFFICER),<br/>Equifax Information services LLC.<br/>1550 Peachtree Street, N.W.,<br/>ATLANTA, GA 30309";
$additional_destionations2[$EQF_1] = "EQUIFAX , ATTN FRAUD DEPARTMENT,POB 740256, ATLANTA, GA 30374-0256";
$additional_destionations2[$EQF_2] = "EQUIFAX , ATTN FRAUD DEPARTMENT,POB 740256, ATLANTA, GA 30374-0256";
$additional_destionations1[$TRANS_1] = "Attn: john Blenke ,<br/>Esq. (acting or current EVP and GENERAL COUNSEL),<br/>Transunion LLC,<br/>555 W. Adams Street,<br/>CHICAGO, IL";
$additional_destionations1[$TRANS_2] = "Attn: john Blenke ,<br/>Esq. (acting or current EVP and GENERAL COUNSEL),<br/>Transunion LLC,<br/>555 W. Adams Street,<br/>CHICAGO, IL";
$additional_destionations1[$TRANS_3] = "Attn: john Blenke ,<br/>Esq. (acting or current EVP and GENERAL COUNSEL),<br/>Transunion LLC,<br/>555 W. Adams Street,<br/>CHICAGO, IL";
$additional_destionations2[$TRANS_1] = "Trans Union, Attn FRAUD DEPARTMENT, POB 2000, Chester , PA 19016-2000";
$additional_destionations2[$TRANS_2] = "Trans Union, Attn FRAUD DEPARTMENT, POB 2000, Chester , PA 19016-2000";
$additional_destionations2[$TRANS_3] = "Trans Union, Attn FRAUD DEPARTMENT, POB 2000, Chester , PA 19016-2000";
/*$destinations[] = "EXPERIAN PO BOX 9701, ALLEN, TX 75013";
$destinations[] = "EXPERIAN PO BOX 4500, ALLEN, TX 75013";
$destinations[] = "EQUIFAX PO Box740256, ATLANTA,GA 30374-0256";
$destinations[] = "EQUIFAX PO Box740241, ATLANTA,GA 30374-0241";
$destinations[] = "Trans Union PO Box 2000, CHESTER, PA 19016-2000";
$destinations[] = "Trans Union PO Box 1000, CHESTER, PA 19022-1000";
$destinations[] = "Trans Union PO Box 2000, CHESTER, PA 19022-2000";*/
$destinations[] = "INNOVIS PO Box 1640, Pittsburgh, PA 15230-1640";
$destinations[] = "Innovis Consumer Assistance PO Box 530088, Atlanta, GA 30353-0088";
$destinations[] = "LexisNexis PO Box 105108, Atlanta, GA 30348";
$destinations[] = "SageStream, LLC, LexisNexis Risk Solutions Consumer Center P. O. Box 105108. Atlanta, Georgia 30348-5108";
$destinations[] = "Chex Systems ATTN: Consumer Relations, 7805 Hudson Rd., Ste. 100, Woodbury, MN 55125";
$destinations[] = "(US RESIDENTS) MIB Inc 50 Braintree Hill Park, Suite 400, Braintree, MA 02184-8734";
$destinations[] = "(CANADIAN RESIDENTS) MIB Inc 330 university Avenue, Suite 501, Toronto, Canada M5G 1R7";
$destinations[] = "FactorTrust PO Box 3653,Alpharhetta, GA 30023";
$info_item = $request['info_item'];
$data = array(); //main data array
$files = array();
$excludes = array();
if (isset($request['info_item']['file']))
$files = $request['info_item']['file'];
if (isset($request['info_item']['exclude']))
$excludes = $request['info_item']['exclude'];
$univ_dest = $request['destination'];
$content_image = array();
$img_bottom = array();
$excluded_array_keys = [];
$letterImagesDirectory = "/epicvelocity/letters/account";
$letterAttachmentDirectory = "/epicvelocity/letters/attachment";
$letterImagesDirectory = storage_path($letterImagesDirectory);
$letterAttachmentDirectory = storage_path($letterAttachmentDirectory);
if ($request['action'] == 'new') {
// for new upload file in account part
if (!empty($request['letter_image_file'])) {
$target_file = $letterImagesDirectory . '/' . $auth_user->id;
if (!is_dir($target_file)) {
mkdir($target_file, 0777, true);
}
$image_count = 0;
foreach ($request['letter_image_file'] as $keyf => $image) {
if (!in_array($keyf, $excluded_array_keys)) {
if (!empty($image)) {
$image_count++;
$temp = $auth_user->id . "_" . $image_count . time() . ".jpg";
$dataImg = str_replace('data:image/jpeg;base64,', '', $image);
$dataImg = base64_decode($dataImg);
$targeted_file = $target_file . "/" . $temp;
file_put_contents($targeted_file, $dataImg);
$this->filePermissionSet($targeted_file);
$content_image[$keyf] = $auth_user->id . "/" . $temp;
}
}
}
}
//dd($request['attach_image_file']);
// for existing file in attachment part
if (!empty($request['attach_image_file'])) {
$target_file_attachment = ltrim($letterAttachmentDirectory,"/") . '/' . $auth_user->id;
if (!is_dir($target_file_attachment)) {
// mkdir($target_file_attachment, 0777, true);
}
$attach_count = 0;
//dd($request['attach_image_file'],count($request['attach_image_file']));
foreach ($request['attach_image_file'] as $keyf_attach => $attach) {
$isUploadMedia = $request['isUploadMedia'][$keyf_attach];
if (!in_array($keyf_attach, $excluded_array_keys)) {
if (!empty($attach)) {
$attach_count++;
$temp = $auth_user->id . "_" . $attach_count . time() . ".jpg";
$targeted_attach_file = $target_file_attachment . "/" . $temp;
//dd(getPublicFile($attach),$attach);
if ($isUploadMedia == 1) {
// copy(ltrim($attach,"/"), $targeted_attach_file);
//$img_bottom[$keyf_attach] = $attach;
// $image_src = getPublicFile($attach);
$image_src = getPublicImageFile($attach);
$img_bottom[$keyf_attach] = '<img style="width: 100%;margin-top: 20px" src="'.$image_src.'" >';
//$img_bottom[$keyf_attach] = "";
} else {
/*dd($attach);
$dataImg = str_replace('data:image/jpeg;base64,', '', $attach);
$dataImg = base64_decode($dataImg);
file_put_contents($targeted_attach_file, $dataImg);
$this->filePermissionSet($targeted_attach_file);*/
$img_bottom[$keyf_attach] = '<img src="'.$attach.'" style="width:100%;margin-top: 20px" />';
}
//$img_bottom[$keyf_attach] = $this->Auth->user('id') . "/" . $temp;
//$img_bottom[$keyf_attach] = $this->Auth->user('id') . "/" . $temp;
}
}
}
}
}
else if ($request['action'] == 'edit' || $request['action'] == 'create_new') {
// for account part
if (!empty($request['isImageChange'])) {
$target_file = $letterImagesDirectory . '/' . $this->Auth->user('id');
if (!is_dir($target_file)) {
mkdir($target_file, 0777, true);
}
$image_count = 0;
foreach ($request['isImageChange'] as $imageFileKey => $value) {
$image = $request['letter_image_file'][$imageFileKey];
$oldImage = $request['oldImage'][$imageFileKey];
if (!in_array($imageFileKey, $excluded_array_keys)) {
if ($value == 2) { // 2 for new upload Image
if (!empty($image)) {
unlink($letterImagesDirectory . '/' . $oldImage);
$image_count++;
$temp = $this->Auth->user('id') . "_" . $image_count . time() . ".jpg";
$dataImg = str_replace('data:image/jpeg;base64,', '', $image);
$dataImg = base64_decode($dataImg);
$targeted_file = $target_file . "/" . $temp;
file_put_contents($targeted_file, $dataImg);
$this->filePermissionSet($targeted_file);
$content_image[$imageFileKey] = $this->Auth->user('id') . "/" . $temp;
}
} else if ($value == 1) { // 1 for remove image
unlink($letterImagesDirectory . '/' . $oldImage);
} else if ($value == 0) {
$content_image[$imageFileKey] = $image;
}
}
}
}
// for attachment part
if (!empty($request['isAttImageChange'])) {
$target_file = $letterAttachmentDirectory . '/' . $this->Auth->user('id');
if (!is_dir($target_file)) {
mkdir($target_file, 0777, true);
}
$image_att_count = 0;
foreach ($request['isAttImageChange'] as $imageAttFileKey => $value_attach) {
$image_att = $request['attach_image_file'][$imageAttFileKey];
$oldImage_att = $request['oldAttImage'][$imageAttFileKey];
if (!in_array($imageAttFileKey, $excluded_array_keys)) {
if ($value_attach == 2) { // 2 for new upload Image
if (!empty($image_att)) {
unlink($letterAttachmentDirectory . '/' . $oldImage_att);
$image_att_count++;
$temp = $this->Auth->user('id') . "_" . $image_att_count . time() . ".jpg";
$dataImg = str_replace('data:image/jpeg;base64,', '', $image_att);
$dataImg = base64_decode($dataImg);
$targeted_file = $target_file . "/" . $temp;
file_put_contents($targeted_file, $dataImg);
$this->filePermissionSet($targeted_file);
$img_bottom[$imageAttFileKey] = $this->Auth->user('id') . "/" . $temp;
}
} else if ($value_attach == 1) { // 1 for remove image
unlink($letterAttachmentDirectory . '/' . $oldImage_att);
} else if ($value_attach == 0) {
$img_bottom[$imageAttFileKey] = $oldImage_att;
}
}
}
}
}
$db_content_image = $content_image;
//dd($db_content_image);
if (!isset($request['info_item'])) {
//flash('No Content Box added');
//return $this->redirect($this->referer());
return back()->with('error','No Content Box added');
}
$info_item['dest'] = array_values($info_item['dest']);
$final_content_image = [];
$new_dest_content_assoc = [];
if (!empty($info_item['dest'])) {
foreach ($info_item['dest'] as $dest_key => $dest) {
if (!empty($dest)) {
foreach ($dest as $current_dest) {
if (!empty($current_dest) && $current_dest != 1) {
$new_dest_content_assoc[$current_dest][] = $info_item['content'][$dest_key];
}
}
}
}
}
if (!isset($request['bureau_only']) && !isset($request['df_only'])){
$request['bureau_only'] = 1;
$request['df_only'] = 1;
}
if (isset($request['bureau_only'])) {
foreach ($info_item['template'] as $key => $value) {
if (array_key_exists($key, $excludes))
continue;
$data[$value]['type'] = 'bureau';
$data[$value]['template'][] = $value;
$data[$value]['wave'][] = $info_item['wave'][$key];
$data[$value]['letter_type'][] = $info_item['letter_type'][$key];
if(isset($info_item['content'][$key])) {
$data[$value]['content'][] = $info_item['content'][$key];
}
$a1 = array();
if (isset($info_item['dest'][$key])) {
foreach ($info_item['dest'][$key] as $key2 => $value2) {
if (in_array($value2, $destinations)) {
$a1[] = $value2;
}
}
}
if (isset($univ_dest)) {
$a1 = array_merge($a1, $univ_dest);
}
$data[$value]['dest'][] = array_filter(array_unique($a1));
if (array_key_exists($key, $files)) {
$data[$value]['file'][] = $files[$key];
$final_content_image[$value][] = $content_image[$key];
}
if (array_key_exists($key, $request['letter_image_file']))
$data[$value]['letter_image_file'][] = $request['letter_image_file'][$key];
}
}
$key_index = 400;
if (isset($request['df_only'])) {
foreach ($info_item['template_df'] as $key => $value) {
if (empty(trim($value)))
continue;
if (array_key_exists($key, $excludes)) {
continue;
}
$template_id = explode('_', $value);
$template_id = $template_id[1];
$data[$key_index]['type'] = 'creditor';
$data[$key_index]['template'][] = $value;
$data[$key_index]['wave'][] = $info_item['wave'][$key];
$data[$key_index]['letter_type'][] = $info_item['letter_type'][$key];
$data[$key_index]['content'][] = $info_item['content'][$key];
$a1 = array();
if (isset($info_item['dest'][$key])) {
foreach ($info_item['dest'][$key] as $key2 => $value2) {
if (empty(trim($value)))
continue;
if (!in_array($value2, $destinations)) {
$a1[] = $value2;
}
}
}
$data[$key_index]['dest'][] = array_filter($a1);
if (array_key_exists($key, $files)) {
$data[$key_index]['file'][] = $files[$key];
$final_content_image[$key_index][] = $content_image[$key];
}
if (array_key_exists($key, $request['letter_image_file']))
$data[$key_index]['letter_image_file'][] = $request['letter_image_file'][$key];
$key_index ++;
}
}
//dd($data);
$dest = array();
//$_SERVER['DOCUMENT_ROOT']
//$destinationPath = $_SERVER['DOCUMENT_ROOT']. "/webroot/epicvelocity/letters"; // for production server
$destinationPath = storage_path('app/public/resources/epicvelocity/letters'); // for localhost
// if (!is_dir($destinationPath)) {
// mkdir($destinationPath, 0777, true);
// }
//
// $folder_name = $destinationPath . '/' . $auth_user->id . "_" . time() . '-' . mt_rand(00000, 999999);
//
// try {
// if (!is_dir($folder_name)) {
// mkdir($folder_name, 0777, true);
// }
// } catch (Exception $e) {
// Log::error($e);
//
// }
//array for bottom images.
$img_bottom_clients = array();
if (isset($request['identity_proof_file']) && !empty($request['identity_proof_file']))
$img_bottom_clients[] = $request['identity_proof_file'];
if (isset($reques['ssn_proof_file']) && !empty($reques['ssn_proof_file']))
$img_bottom_clients[] = $reques['ssn_proof_file'];
if (isset($request['address_proof_file']) && !empty($request['address_proof_file']))
$img_bottom_clients[] = $request['address_proof_file'];
if (isset($request['other_file']) && !empty($request['other_file']))
$img_bottom_clients[] = $request['other_file'];
$count = 1;
$cb_item_per_letter = 1;
$num_of_inquiry = 1;
$pdfCount = 0;
if (isset($request['num_of_account']) && !empty($request['num_of_account'])) {
$cb_item_per_letter = $request['num_of_account'];
}
if (isset($request['num_of_inquiry']) && !empty($request['num_of_inquiry'])) {
$num_of_inquiry = $request['num_of_inquiry'];
}
$dfAddressAssocPDF = []; // Data Furnisher Address & file assoc initialization
foreach ($data as $key => $value) {
$data[$key]['dest'] = array_unique($this->array_flatten($data[$key]['dest']));
$temp_id = $data[$key]['template'][0];
$temp_name = explode('_', $data[$key]['template'][0]);
$template_type = explode('-', $temp_name[0]);
$template_type = $template_type[0];
if ($template_type == 'INQ') {
$cb_item_per_letter = $num_of_inquiry;
}
if ($temp_name[1] == '40') {
//continue;
}
$view_name = 'lg/pdf/' . $temp_name[1];
// image_content
$final_image_acc = [];
if (!empty($final_content_image[$key])) {
foreach ($final_content_image[$key] as $keyfile => $valuef) {
if (!empty($valuef)) {
$final_image_acc[] = $valuef;
}
}
}
$content_image = $final_image_acc;
// image_content
$header_content = '';
if ($temp_name[1] == 52) {
$header_content = "<p><strong><u>Notice of Intent to Sue </u></strong></p>
<p><u>(if you fail to act accordingly in response to this again applied </u><strong>CONSUMER DECLARATION of CHECK of CERTIFIED COMPLIANT and PHYSICALLY VERIFIABLE REPORTED INFORMATION with DEMAND to remove DEFICIENCIES! </strong></p>";
}
$total_destination_selected = count($data[$key]['dest']);
$testData = [];
foreach ($data[$key]['dest'] as $key2 => $value2) {
$current_destination_name = $this->getDestinationByAddress($value2);
if ($value2 == '' || $value2 == 1) {
continue;
}
if (count($data[$key]['content']) > $cb_item_per_letter) {
$content = array_chunk($data[$key]['content'], $cb_item_per_letter);
foreach ($content as $key3 => $value3) {
if (in_array($value2, $destinations)) {
if (isset($request['include_bureau_image'])) {
$fina_data = array('content' => $value3, 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => $img_bottom, 'img_bottom_clients' => $img_bottom_clients);
} else {
$fina_data = array('content' => $value3, 'destination' => $value2, 'universal' => $universal, 'content_image' => array(), 'img_bottom' => array(), 'img_bottom_clients' => array());
}
} else {
if (isset($request['include_creditor_image'])) {
$fina_data = array('content' => $value3, 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => $img_bottom, 'img_bottom_clients' => $img_bottom_clients);
} else {
$fina_data = array('content' => $value3, 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => array(), 'img_bottom_clients' => array());
//$test_content[] = ['df-content' => $fina_data['content']];
}
}
$html = '';
$content = $fina_data['content'];
$destination = $fina_data['destination'];
$avail_content = $new_dest_content_assoc[$value2] ?? "";
$content_image = $fina_data['content_image'];
$img_bottom = $fina_data['img_bottom'];
$img_bottom_clients = $fina_data['img_bottom_clients'];
$html = view($view_name,
compact(
'universal',
'fina_data',
'content',
'header_content',
'additional_destionations1',
'additional_destionations2',
'destination',
'avail_content',
'content_image',
'img_bottom',
'img_bottom_clients'
)
)->render();
$html = $this->removeGreenText($html);
//echo $html;exit;
$test_content[$key] = ['content' => array_keys($content), 'pdf' => $view_name];
$name2 = (explode(' ', $value2));
$client_name = str_replace(" ", "-", $request['name']);
if(!empty($client_name)){
$client_name = rtrim($client_name,",");
}
$date_time = time();
$file_name = $count . '_' . $client_name . '_' . $temp_name[0] . '_' . str_replace('/', '', $name2[0]) . '_' . $date_time . '.pdf'; //build name of pdf file
$count++;
$global_html[$value2] = ['html' => $html, 'destination_name' => $current_destination_name, 'file_name' => $file_name];
$global_destination_html[$current_destination_name] = $html;
// $this->generateCurrentPDF($html, $folder_name . '/' . $file_name,$file_name);
$pdfCount++;
// if (!in_array($value2, $destinations)) {
// $dfAddressAssocPDF[$folder_name . '/' . $file_name] = $value2;
// }
}
} else {
if (in_array($value2, $destinations)) {
if (isset($request['include_bureau_image'])) {
$fina_data = array('content' => $data[$key]['content'], 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => $img_bottom, 'img_bottom_clients' => $img_bottom_clients);
} else {
$fina_data = array('content' => $data[$key]['content'], 'destination' => $value2, 'universal' => $universal, 'content_image' => array(), 'img_bottom' => array(), 'img_bottom_clients' => array());
}
} else {
if (isset($request['include_creditor_image'])) {
$fina_data = array('content' => $data[$key]['content'], 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => $img_bottom, 'img_bottom_clients' => $img_bottom_clients);
} else {
$fina_data = array('content' => $data[$key]['content'], 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => array(), 'img_bottom_clients' => array());
}
}
$testData[] = $temp_name[1];
$html = '';
$content = $fina_data['content'];
$destination = $fina_data['destination'];
$avail_content = $new_dest_content_assoc[$value2] ?? "";
$content_image = $fina_data['content_image'];
$img_bottom = $fina_data['img_bottom'];
$img_bottom_clients = $fina_data['img_bottom_clients'];
$html = view($view_name,
compact(
'universal',
'fina_data',
'content',
'header_content',
'additional_destionations1',
'additional_destionations2',
'destination',
'avail_content',
'content_image',
'img_bottom',
'img_bottom_clients'
)
)->render();
$html = $this->removeGreenText($html);
//echo $html;exit;
$test_content[$key] = ['content' => array_keys($content), 'pdf' => $view_name];
$name2 = (explode(' ', $value2));
$client_name = str_replace(" ", "-", $request['name']);
if(!empty($client_name)){
$client_name = rtrim($client_name,",");
}
$date_time = time();
$file_name = $count . '_' . $client_name . '_' . $temp_name[0] . '_' . str_replace('/', '', $name2[0]) . '_' . $date_time . '.pdf'; //build name of pdf file
$count++;
$global_html[$value2] = ['html' => $html, 'destination_name' => $current_destination_name, 'file_name' => $file_name];
$global_destination_html[$current_destination_name] = $html;
// $this->generateCurrentPDF($html, $folder_name . '/' . $file_name,$file_name);
// if (!in_array($value2, $destinations)) {
// $dfAddressAssocPDF[$folder_name . '/' . $file_name] = $value2; //['address'=>$value2,'pdf'=> $file_name];
// }
$pdfCount++;
}
}
}
if($pdfCount <= config('constant.MAX_PDF_COUNT') )
{
$response['isGreaterThanFifty'] = false;
$message = '';
if($pdfCount > config('constant.MIN_PDF_COUNT_VALUE'))
{
$response['isGreaterThanFifty'] = true;
$message = "Oops! Looks like you're trying to process more than 50 letters, Are you sure you need to challenge this many Items? Please Double Check The how-to video To Make Sure You Want To Move Forward To Challenge All Items Listed. If You Want to Continue To Process All The Letters Then Continue";
}
$response['message'] = $message;
$response['status'] = true;
}
$logData['pdf_file_count'] = $pdfCount;
$logData['response'] = $response;
appLog($logData);
echo json_encode($response);
exit;
}
private function deleteGeneratedPdfWithDir($folder_name) {
// delete generated pdf with directory
try {
if (substr($folder_name, strlen($folder_name) - 1, 1) != '/') {
$folder_name .= '/';
}
$files = glob($folder_name . '*', GLOB_MARK);
foreach ($files as $file) {
@unlink($file);
}
rmdir($folder_name);
} catch (\Exception $e) {
}
}
private function array_flatten($array) {
if (!is_array($array)) {
return FALSE;
}
$result = array();
foreach ($array as $key => $value) {
if (is_array($value)) {
$result = array_merge($result, $this->array_flatten($value));
} else {
$result[$key] = $value;
}
}
return $result;
}
private function uploadMediaHTML($uploadmedias) {
$count = 0;
$html = "";
if (!empty($uploadmedias)) {
foreach ($uploadmedias as $uploadmedia) {
$file = config('constant.UPLOAD_MEDIA_PATH') . DIRECTORY_SEPARATOR.$uploadmedia->user_id . DIRECTORY_SEPARATOR . $uploadmedia->image_path;
$count++;
$html .= '<div class="col-md-12 img-content" id="img-content-' . $count . '">
<div class="col-md-12" style="padding-top:10px;padding-bottom:10px">
<div class="row">
<div class="col-md-12 text-center">
<img id="att_image_' . $count . '" class="letter-attach-img" src="' . getPublicFile($file) . '" alt="">
<input type="hidden" id="attach_image_file_' . $count . '" name="attach_image_file[]" value="'.$file. '"/>
<input type="hidden" id="isUploadMedia_' . $count . '" name="isUploadMedia[]" value="1"/>
</div>
</div>
</div>
<div class="col-md-offset-3 col-md-6">
<input onchange="uploadphotos(this,false)" type="file" name="img_bottom[]" id="attachment_img_' . $count . '" class="form-control no-bdr">
</div>
<div class="col-md-1" style="margin-top: 5px;margin-right: 20px">
<label id="label1">
<a style="cursor:hand;cursor:pointer;padding: 1px 6px;" onclick="clearAttImage(' . $count . ')" data-id="4">Clear</a>
</label>
</div>
<div class="col-md-1" style="margin-top: 5px;margin-right: 20px">
<label id="label1"><a onclick="addImage()" id="add-image-btn" style="padding: 1px 6px;" class="btn btn-success"><i class="fa fa-plus"></i></a></label>
<label id="label1"><a onclick="removeImage(' . $count . ')" id="remove" style="padding: 1px 6px;" class="btn btn-danger"><i class="fa fa-minus"></i></a></label>
</div>
<script type="text/javascript">
image_count = ' . $count . ';
</script>
</div>';
}
}
return $html;
}
private function getClientInfo($inputData)
{
$data = array();
$uploadmedia_html = "";
$creditReportObj = app(\App\Models\Creditreport::class);
$today = date('Y-m-d');
$html = "";
$clientInfo = $inputData['auth_user'];
$clientInfo->dob = $clientInfo->birth_date;
$credit_report_data = $creditReportObj->getCreditReportInfoByUserId($clientInfo->id);
$uploadmedia = null;
if (!empty($clientInfo)) {
$source_type = $clientInfo->credit_report_company_type;
$clientInfo->firstname = $clientInfo->first_name . " " . $clientInfo->last_name;
if (!empty($clientInfo->street_name)) {
$clientInfo->street_name = ", " . $clientInfo->street_name;
} else {
$clientInfo->street_name = "";
}
if (!empty($clientInfo->city)) {
$clientInfo->city = ", " . $clientInfo->city;
} else {
$clientInfo->city = "";
}
if (!empty($clientInfo->state)) {
$clientInfo->state = ", " . $clientInfo->state;
} else {
$clientInfo->state = "";
}
$clientInfo->json_address = $clientInfo->street_no . $clientInfo->street_name;
$clientInfo->json_address .= $clientInfo->city . $clientInfo->state;
$clientInfo->today = $today;
$clientInfo->created_on = date('d/m/Y', strtotime($clientInfo->created_on));
//$clientInfo->cr_data = "Identity IQ " . $clientInfo->created_on;
$report_type_name = "Identity IQ";
if ($source_type == 3) {
$report_type_name = "Smart Credit";
}
$clientInfo->cr_data = $report_type_name . " " . date("m/d/Y");
$uploadmedia = app(\App\Models\Uploadmedia::class)->getUploadMediaByUserId($clientInfo->id);
}
$data['report'] = CreditReportService::getCreditReportContent($credit_report_data->user_id,$credit_report_data->file_name);
$data['uploadmedia'] = $this->uploadMediaHTML($uploadmedia);
$data['client'] = $clientInfo;
return $data;
}
public function getLetter(Request $request){
$creditreport= auth()->user();
$auth_user_id = $creditreport->id;
$credit_report_eligibility=[
'is_show_alert'=>false,
'message'=>'',
'is_show_refresh_date'=>false
];
if($request->ajax()){
$inputData = $request->all();
$response = [];
if($inputData['action'] == "GET_CLIENT_INFO"){
$inputData['auth_user'] = $creditreport;
$response = $this->getClientInfo($inputData);
}
//return response()->json($response,200);
echo json_encode($response);
die();
}
$p_tracking_number = $this->getNumber();
// $waves=$this->generateWaves($creditreport);
if(getSession('is_first_login') == 1){
unSetSession('is_first_login');
$credit_report_eligibility['is_show_alert']=true;
$credit_report_eligibility['message']='Great Job! import your credit report next.';
setSession('video_first_time',true);
$credit_report_eligibility['is_show_refresh_date'] = true;
}
else{
if($creditreport->is_import == config('constant.IMPORT_REPORT_STATUS.ELIGIBLE'))
{
unSetSession('eligible_for_import');
$credit_report_eligibility['is_show_alert']=true;
$credit_report_eligibility['message']='Congratulations! Your next Credit Report is Ready To Import.';
}
}
return view('epicvelocity.getletter',compact('p_tracking_number','creditreport','credit_report_eligibility'));
}
private function getNumber(){
$number1 = mt_rand(1000, 9999);
$number2 = mt_rand(1000, 9999);
$number3 = mt_rand(1000, 9999);
$number4 = mt_rand(1000, 9999);
$number5 = mt_rand(1000, 9999);
return $number1.' '.$number2.' '.$number3.' '.$number4.' '.$number5;
}
private function getDestinationByAddress($address) {
$result = [
'EXPERIAN PO BOX 9701, ALLEN, TX 75013' => 'EXPERIAN DESTINATIONS',
'EXPERIAN PO BOX 4500, ALLEN, TX 75013' => 'EXPERIAN DESTINATIONS',
'EQUIFAX PO Box740256, ATLANTA,GA 30374-0256' => 'EQUIFAX DESTINATIONS',
'EQUIFAX PO Box740241, ATLANTA,GA 30374-0241' => 'EQUIFAX DESTINATIONS',
'Trans Union PO Box 2000, CHESTER, PA 19016-2000' => 'TRANS UNION DESTINATIONS',
'Trans Union PO Box 1000, CHESTER, PA 19022-1000' => 'TRANS UNION DESTINATIONS',
'Trans Union PO Box 2000, CHESTER, PA 19022-2000' => 'TRANS UNION DESTINATIONS',
'INNOVIS PO Box 1640, Pittsburgh, PA 15230-1640' => 'INNOVIS DESTINATIONS',
'Innovis Consumer Assistance PO Box 530088, Atlanta, GA 30353-0088' => 'INNOVIS DESTINATIONS',
'LexisNexis PO Box 105108, Atlanta, GA 30348' => 'LEXISNEXIS DESTINATIONS',
'SageStream, LLC, LexisNexis Risk Solutions Consumer Center P. O. Box 105108. Atlanta, Georgia 30348-5108' => 'SAGESTREAM LLC DESTINATIONS',
'Chex Systems ATTN: Consumer Relations, 7805 Hudson Rd., Ste. 100, Woodbury, MN 55125' => 'CHEX SYSTEMS DESTINATIONS',
'(US RESIDENTS) MIB Inc 50 Braintree Hill Park, Suite 400, Braintree, MA 02184-8734' => 'MIB INC DESTINATIONS',
'(CANADIAN RESIDENTS) MIB Inc 330 university Avenue, Suite 501, Toronto, Canada M5G 1R7' => 'MIB INC DESTINATIONS',
'FactorTrust PO Box 3653,Alpharhetta, GA 30023' => 'FACTOR TRUST DESTINATIONS',
];
return $result[$address] ?? "";
}
private function removeGreenText($html) {
$html = preg_replace('#<span class="span-cl-green">KEEP OPEN</span>#', '', $html);
$html = preg_replace('#<span class="span-cl-green">STAY CURRENT</span>#', '', $html);
$html = preg_replace('#<span class="span-cl-green" title="KEEP AT NO GREATER THAN 30% of reported credit limit but BEST IF AT OR BELOW 10% of the reported credit limit!">KEEP AT 10%</span>#', '', $html);
$html = preg_replace('#<span class="span-cl-green" title="NEVER GO OVER 50% at any time">NEVER GO OVER 50%</span>#', '', $html);
$html = preg_replace('#<span class="span-cl-green" title="OBVIOUSLY PAY BILLS IN FULL ON TIME ALWAYS, DO NOT MISS , OR BE LATE OR HAVE INCOMPLETE PAYMENT IN ACCOUNT HISTORY">' . "DON'T BE LATE</span>#", '', $html);
$html = preg_replace('#<p class="span-cl-green">OBVIOUSLY PAY BILLS IN FULL ON TIME ALWAYS, DO NOT MISS , OR BE LATE OR HAVE INCOMPLETE PAYMENT IN ACCOUNT HISTORY</p>#', '', $html);
return $html;
}
private function generateCurrentPDF($html, $file_path) {
// $html = str_replace('/images/iq_report_img/legend-icon.gif',"",$html);
// $link = '<style>'
// . '.acct-cb-img{
// width: 100% !important;
// }
// table.addr_hsrty td.info{
// text-align: center !important;
// }
//'
// . '</style>';
// $html = str_replace('https://www.identityiq.com/images/tu/legend-icon.gif', '', $html);
//
// $html = $link.$html;
if($this->pdfObj instanceof PdfWriter){
$pdfWriter = $this->pdfObj;
}else{
$pdfWriter = new PdfWriter();
}
$pdfWriter->write($html, $file_path);
// $pdfWriter->mpdfWrite($html, $file_path,basename($file_path));
// $pdfWriter->snappyImage($html, $file_path);
}
private function generateWaves($user)
{
$userWave=$user['wave'];
$waves=[];
for($i=1;$i<=$userWave;$i++)
{
$waves[$i]='Wave '.$i;
}
return $waves;
}
}