FirmaController.php 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777
  1. <?php
  2. defined('BASEPATH') OR exit('No direct script access allowed');
  3. class FirmaController extends CI_Controller {
  4. public function __construct()
  5. {
  6. parent::__construct();
  7. //$this->load->model("FirmaModel");
  8. }
  9. /**
  10. * Index Page for this controller.
  11. *
  12. * Maps to the following URL
  13. * http://example.com/index.php/welcome
  14. * - or -
  15. * http://example.com/index.php/welcome/index
  16. * - or -
  17. * Since this controller is set as the default controller in
  18. * config/routes.php, it's displayed at http://example.com/
  19. *
  20. * So any other public methods not prefixed with an underscore will
  21. * map to /index.php/welcome/<method_name>
  22. * @see https://codeigniter.com/user_guide/general/urls.html
  23. */
  24. /** Comentario sobre data_file():
  25. * ESTA FUNCION REGRESA LA DIRECCION DEL ARCHIVO EXCEL QUE SE ESTÁ LEYENDO PARA GENERAR LAS FIRMAS
  26. */
  27. private function data_file(){
  28. return 'C:\xampp\htdocs\firmasCI\system_files\datos_firmas.xlsx';
  29. }
  30. public function index()
  31. {
  32. $File = $this->data_file();
  33. $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
  34. $spreadsheet= $reader->load($File);
  35. $sheet = $spreadsheet->getActiveSheet();
  36. $fila_maxima = $sheet->getHighestDataRow();
  37. #obteniendo headers
  38. $headers=[];
  39. foreach($sheet->getRowIterator(1,1) as $row){
  40. $cellIterator = $row->getCellIterator();
  41. $cellIterator->setIterateOnlyExistingCells(false);
  42. foreach($cellIterator as $cell){
  43. $headers[] = $cell->getCalculatedValue();
  44. }
  45. }
  46. #obteniendo datos de las personas
  47. $personal =[];
  48. foreach($sheet->getRowIterator(2,$fila_maxima) as $row){
  49. $cellIterator = $row->getCellIterator();
  50. $cellIterator->setIterateOnlyExistingCells(false);
  51. $i=0;
  52. $data=[];
  53. foreach($cellIterator as $cell){
  54. $data[$headers[$i]] = $cell->getCalculatedValue();
  55. $i++;
  56. }
  57. $personal[]=$data;
  58. }
  59. $data = ['headers'=>$headers,'personal'=>$personal];
  60. $this->load->view('lista',$data);
  61. }
  62. public function generarVistaPrevia($id){
  63. $persona = $this->consultarPersonal($id);
  64. if(isset($persona)){
  65. list($site,$type,$identifier) = explode("/",$persona['LinkedIn']);
  66. list($email_id,$email_domain) = explode("@",$persona['Correo']);
  67. $data=['persona'=>$persona,'site'=>$site,'type'=>$type,'identifier'=>$identifier,'email_id'=>$email_id,'email_domain'=>$email_domain];
  68. //llamada a la vista
  69. $this->load->view($persona['Plantilla'],$data);
  70. /*
  71. *
  72. *Todas las plantillas de firma en html se han llamado igual que como están en el excel
  73. *si desea cambiar el nombre de las plantillas debe descomentar el siguiente algoritmo y
  74. *extenderlo si es necesario.
  75. *
  76. if($persona['Plantilla']=='MER'){
  77. $this->load->view('MER',$data);
  78. }elseif($persona['Plantilla']=='INVER'){
  79. $this->load->view('INVER',$data);
  80. }elseif($persona['Plantilla']=='INVERSOL'){
  81. $this->load->view('INVERSOL',$data);
  82. }elseif($persona['Plantilla']=='METCO'){
  83. $this->load->view('METCO',$data);
  84. }else{
  85. print("NO ESTA ASIGNADO A NINGUNA PLANTILLA, REVISE LOS DATOS");
  86. }
  87. */
  88. }else{
  89. print("NO EXISTE EL ID ".$id." REGISTRADO EN LA HOJA DE EXCEL,POR FAVOR REVISE LOS DATOS");
  90. }
  91. }
  92. public function consultarPersonal($id){
  93. $File = $this->data_file();
  94. $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
  95. $spreadsheet= $reader->load($File);
  96. $sheet = $spreadsheet->getActiveSheet();
  97. $fila_maxima = $sheet->getHighestDataRow();
  98. #obteniendo headers
  99. $headers=[];
  100. foreach($sheet->getRowIterator(1,1) as $row){
  101. $cellIterator = $row->getCellIterator();
  102. $cellIterator->setIterateOnlyExistingCells(false);
  103. foreach($cellIterator as $cell){
  104. $headers[] = $cell->getCalculatedValue();
  105. }
  106. }
  107. #obteniendo datos
  108. foreach($sheet->getRowIterator(2,$fila_maxima) as $row){
  109. $cellIterator = $row->getCellIterator();
  110. $cellIterator->setIterateOnlyExistingCells(false);
  111. $i=0;
  112. $data=[];
  113. foreach($cellIterator as $cell){
  114. $data[$headers[$i]] = $cell->getCalculatedValue();
  115. $i++;
  116. if($data['N']!=$id){
  117. break;
  118. }else{
  119. $persona=$data;
  120. }
  121. }
  122. if(isset($persona)){
  123. return $persona;
  124. }
  125. }
  126. return null;
  127. }
  128. /**
  129. * comentario sobre la funcion descargarHTML($id)
  130. * ESTA FUNCION UTILIZA LAS FUNCIONES consultarPersonal($id)
  131. * y generarHTML($persona)
  132. * PARA GENERAR LA FIRMA DESEADA, LUEGO DE GENERARLA REALIZA LA DESCARGA
  133. */
  134. public function descargarHTML($id){
  135. $persona = $this->consultarPersonal($id);
  136. if(isset($persona)){
  137. $file_name = $this->generarHTML($persona);
  138. // Creamos las cabezeras que forzaran la descarga del archivo como archivo zip.
  139. header("Content-type: application/octet-stream");
  140. header("Content-disposition: attachment; filename=".$persona['Plantilla']."_".str_replace (" ","_" ,$persona['Nombre Completo']).".htm");
  141. // leemos el archivo creado
  142. readfile($file_name);
  143. }else{
  144. print("ERROR AL CONSULTAR EL EXCEL, REVISE LOS DATOS");
  145. }
  146. }
  147. /**
  148. * comentario sobre generarHTML($persona):
  149. * ESTA FUNCION GENERA LAS VISTAS HTML PARA DESCARGAR, DE CADA FIRMA ELECTRONICA
  150. * NECESITA COMO PARAMETRO UNA PERSONA EN ESPECIFICO PARA LA QUE SE GENERARÁ LA VISTA
  151. * RETORNA LA UBICACION Y EL NOMBRE DEL ARCHIVO CREADO.
  152. * SE DA POR ALUDIDO QUE LAS IMAGENES Y FUENTE QUE CONSUME LA VISTA, SE ENCUENTRAN EN
  153. * UN SERVIDOR EN LINEA,LISTO PARA SERVIRLOS.
  154. */
  155. public function generarHTML($persona){
  156. $persona_name = $persona['Primer Nombre']."_".$persona['Primer Apellido'];
  157. $path='system_files/firmas_generadas/';
  158. $main_directory = $path.$persona['N']."_".$persona_name;
  159. $sub_directory = $main_directory."/".$persona['N']."_".$persona_name."_".date("d-m-Y_H_i_s");
  160. $file_name = $sub_directory."/".$persona_name.".htm";
  161. if(!file_exists($main_directory)){
  162. mkdir($main_directory);
  163. }
  164. if(!file_exists($sub_directory)){
  165. mkdir($sub_directory);
  166. }
  167. list($site,$type,$identifier) = explode("/",$persona['LinkedIn']);
  168. list($email_id,$email_domain) = explode("@",$persona['Correo']);
  169. $firma = fopen($file_name,"a") or die("Error al crear el archivo");
  170. if($persona['Plantilla']=='MER'){
  171. $style ="
  172. @font-face{
  173. font-family:HelveticaNeueLTStd-Lt;
  174. src:url(../Tipografias/HelveticaNeueLTStd-Lt.otf);
  175. }
  176. font{
  177. font-family: Helvetica, sans-serif;
  178. }
  179. td{
  180. font-family: Helvetica, sans-serif;
  181. }
  182. .merelec_name_yellow{
  183. font-family: Helvetica, sans-serif;
  184. color: #FCB122;
  185. font-size: 14pt;
  186. font-weight: bold;
  187. }
  188. .merelec_name_gray{
  189. font-family: Helvetica, sans-serif;
  190. color: #80888F;
  191. font-size: 14pt;
  192. font-weight: bold;
  193. }
  194. .merelec_puesto{
  195. font-family: Helvetica, sans-serif;
  196. color: #80888F;
  197. font-size: 14pt;
  198. }
  199. .merelec_yellow_text{
  200. color: #FCB122;
  201. font-size: 12pt;
  202. font-weight: bold;
  203. }
  204. .merelec_gray_text{
  205. color: #80888F;
  206. font-size: 12pt;
  207. }
  208. ";
  209. $body = " <table>
  210. <tbody>
  211. <tr>
  212. <td colspan=\"2\">
  213. <span class=\"merelec_name_yellow\">".$persona['Primer Nombre']."</span> <span class=\"merelec_name_gray\">".$persona['Primer Apellido']."</span>
  214. <p style=\"margin-top:1%\"><span class=\"merelec_puesto\">".$persona['Puesto']."</span></p>
  215. </td>
  216. </tr>
  217. <tr height=\"10\"></tr>
  218. <tr>
  219. <td width=\"200\" style=\"border-right:2px solid #80888F;\">
  220. <img src=\"https://www.mercadoselectricos.com.sv/wp-content/uploads/2019/12/IMG_MER_Logo.png\" width=\"200\" height=\"83\">
  221. </td>
  222. <td width=\"900\" style=\"margin-left:2px;\">
  223. <table>
  224. <tbody>
  225. <tr align=\"left\">
  226. <td>
  227. <span style=\"color: #80888F\"><span class=\"merelec_yellow_text\">T.</span><span class=\"merelec_gray_text\">".$persona['Telefono']."</span> &nbsp;
  228. <span class=\"merelec_yellow_text\">C.</span><span class=\"merelec_gray_text\">".$persona['Celular']."</span></span>
  229. </td>
  230. </tr>
  231. <tr>
  232. <td>
  233. <a href=\"mailto:".$persona['Correo']."\"><span class=\"merelec_yellow_text\">".$email_id."</span><span class=\"merelec_gray_text\">@".$email_domain."</span></a>
  234. </td>
  235. </tr>
  236. <tr>
  237. <td>
  238. <a href=\"https://www.".$persona['LinkedIn']."\"> <span class=\"merelec_gray_text\">".$site."/".$type."/"."</span><span class=\"merelec_yellow_text\">".$identifier."</span></a>
  239. </td>
  240. </tr>
  241. <tr>
  242. <td>
  243. <table>
  244. <tr>
  245. <td>
  246. <a class=\"social_media\" href=\"https://www.linkedin.com/company/mercados-electricos-centroamerica/\">
  247. <img width=\"20\" height=\"20\" src=\"https://www.mercadoselectricos.com.sv/wp-content/uploads/2019/12/IMG_MER_Linkedin.png\">
  248. </a>
  249. </td>
  250. <td>
  251. <a class=\"social_media\" href=\"https://www.facebook.com/MercadosElectricosCentroamerica/\">
  252. <img width=\"20\" height=\"20\" src=\"https://www.mercadoselectricos.com.sv/wp-content/uploads/2019/12/IMG_MER_Facebook.png\">
  253. </a>
  254. </td>
  255. <td>
  256. <a class=\"social_media\" href=\"https://www.mercadoselectricos.com.sv\">
  257. <span class=\"merelec_gray_text\">www.</span><span class=\"merelec_yellow_text\">mercadoselectricos</span><span class=\"merelec_gray_text\">.com.sv</span>
  258. </a>
  259. </td>
  260. </tr>
  261. </table>
  262. </td>
  263. </tr>
  264. </tbody>
  265. </table>
  266. </td>
  267. </tr>
  268. </tbody>
  269. </table>
  270. </body>
  271. </html>";
  272. }elseif($persona['Plantilla']=='INVER'){
  273. $style = "@font-face{
  274. font-family:HelveticaNeueLTStd-Lt;
  275. src:url(../Tipografias/HelveticaNeueLTStd-Lt.otf);
  276. }
  277. .inverlec_name_blue{
  278. font-family: Helvetica, sans-serif;
  279. color: #00ABE7;
  280. font-size: 16px;
  281. font-weight:bold;
  282. }
  283. .inverlec_name_black{
  284. font-family: Helvetica, sans-serif;
  285. color: black;
  286. font-size: 16px;
  287. font-weight:bold;
  288. }
  289. .inverlec_puesto{
  290. font-family: Helvetica, sans-serif;
  291. color: black;
  292. font-size: 16px;
  293. }
  294. td{
  295. font-family: Helvetica, sans-serif;
  296. }
  297. .inverlec_blue_text{
  298. color: #00ABE7;
  299. font-family: Helvetica, sans-serif;
  300. font-size: 15px;
  301. font-weight:bold;
  302. }
  303. .inverlec_black_text{
  304. color: black;
  305. font-family: Helvetica, sans-serif;
  306. font-size: 15px;
  307. }
  308. ";
  309. $body="<table>
  310. <tbody>
  311. <tr>
  312. <td colspan=\"2\">
  313. <span class=\"inverlec_name_blue\">".$persona['Primer Nombre']."</span> <span class=\"inverlec_name_black\">".$persona['Primer Apellido']."</span>
  314. <p style=\"margin-top:1%\"><span class=\"inverlec_puesto\">".$persona['Puesto']."</span></p>
  315. </td>
  316. </tr>
  317. <tr height=\"10\"></tr>
  318. <tr>
  319. <td width=\"160\" style=\"border-right:2px solid #00ABE7;\">
  320. <img src=\"https://www.mercadoselectricos.com.sv/wp-content/uploads/2019/12/IMG_INVER_Logo.png\" width=\"160\" height=\"90\">
  321. </td>
  322. <td width=\"900\" style=\"margin-left:2px;\" >
  323. <table>
  324. <tbody>
  325. <tr align=\"left\">
  326. <td>
  327. <span style=\"color: #80888F\"><span class=\"inverlec_blue_text\">T.</span><span class=\"inverlec_black_text\">".$persona['Telefono']."</span>
  328. <span class=\"inverlec_blue_text\">C.</span><span class=\"inverlec_black_text\">".$persona['Celular']."</span></span>
  329. </td>
  330. </tr>
  331. <tr>
  332. <td>
  333. <a href=\"mailto:".$persona['Correo']."\"><span class=\"inverlec_blue_text\">".$email_id."</span><span class=\"inverlec_black_text\">@".$email_domain."</span></a>
  334. </td>
  335. </tr>
  336. <tr>
  337. <td>
  338. <a href=\"https://www.".$persona['LinkedIn']."\"> <span class=\"inverlec_black_text\">".$site."/".$type."/"."</span><span class=\"inverlec_blue_text\">".$identifier."</span></a>
  339. </td>
  340. </tr>
  341. <tr>
  342. <td>
  343. <table>
  344. <tr>
  345. <td>
  346. <a class=\"social_media\" href=\"https://www.linkedin.com/company/inverlecsv/\">
  347. <img width=\"20\" height=\"20\" src=\"https://www.mercadoselectricos.com.sv/wp-content/uploads/2019/12/IMG_INVER_Linkedin.png\">
  348. </a>
  349. </td>
  350. <td>
  351. <a class=\"social_media\" href=\"https://www.facebook.com/Inverlecsv/\">
  352. <img width=\"20\" height=\"20\" src=\"https://www.mercadoselectricos.com.sv/wp-content/uploads/2019/12/IMG_INVER_Facebook.png\">
  353. </a>
  354. </td>
  355. <td>
  356. <a class=\"social_media\" href=\"https://www.inverlec.com.sv\">
  357. <span class=\"inverlec_black_text\">www.</span><span class=\"inverlec_blue_text\">inverlec</span><span class=\"inverlec_black_text\">.com.sv</span>
  358. </a>
  359. </td>
  360. </tr>
  361. </table>
  362. </td>
  363. </tr>
  364. </tbody>
  365. </table>
  366. </td>
  367. </tr>
  368. </tbody>
  369. </table>
  370. </body>
  371. </html>
  372. ";
  373. }elseif($persona['Plantilla']=='INVERSOL'){
  374. $style = "
  375. @font-face{
  376. font-family:HelveticaNeueLTStd-Lt;
  377. src:url(../Tipografias/HelveticaNeueLTStd-Lt.otf);
  378. }
  379. .inversol_name_yellow{
  380. font-family: Helvetica, sans-serif;
  381. color: #F78D27;
  382. font-size: 16px;
  383. font-weight: bold;
  384. }
  385. .inversol_name_black{
  386. font-family: Helvetica, sans-serif;
  387. color: black;
  388. font-size: 16px;
  389. font-weight: bold;
  390. }
  391. .inversol_puesto{
  392. font-family: Helvetica, sans-serif;
  393. color: black;
  394. font-size: 16px;
  395. }
  396. td{
  397. font-family: Helvetica, sans-serif;
  398. }
  399. .inversol_yellow_text{
  400. color: #F78D27;
  401. font-family: Helvetica, sans-serif;
  402. font-size: 15px;
  403. font-weight: bold;
  404. }
  405. .inversol_black_text{
  406. color: black;
  407. font-family: Helvetica, sans-serif;
  408. font-size: 15px;
  409. }
  410. ";
  411. $body = "<table>
  412. <tbody>
  413. <tr>
  414. <td colspan=\"2\">
  415. <span class=\"inversol_name_yellow\">".$persona['Primer Nombre']."</span> <span class=\"inversol_name_black\">".$persona['Primer Apellido']."</span>
  416. <p style=\"margin-top:1%\"><span class=\"inversol_puesto\">".$persona['Puesto']."</span></p>
  417. </td>
  418. </tr>
  419. <tr height=\"10\"></tr>
  420. <tr>
  421. <td width=\"160\" style=\"border-right:2px solid #FBAB20;\">
  422. <img src=\"https://www.mercadoselectricos.com.sv/wp-content/uploads/2019/12/IMG_INVERSOL_Logo.png\" width=\"160\" height=\"100\">
  423. </td>
  424. <td width=\"900\" style=\"margin-left:2px;\">
  425. <table>
  426. <tbody>
  427. <tr align=\"left\">
  428. <td>
  429. <span style=\"color: #80888F\"><span class=\"inversol_yellow_text\">T.</span><span class=\"inversol_black_text\">".$persona['Telefono']."</span>
  430. <span class=\"inversol_yellow_text\">C.</span><span class=\"inversol_black_text\">".$persona['Celular']."</span></span>
  431. </td>
  432. </tr>
  433. <tr>
  434. <td>
  435. <a href=\"mailto:".$persona['Correo']."\"><span class=\"inversol_yellow_text\">".$email_id."</span><span class=\"inversol_black_text\">@".$email_domain."</span></a>
  436. </td>
  437. </tr>
  438. <tr>
  439. <td>
  440. <a href=\"https://www.".$persona['LinkedIn']."\"> <span class=\"inversol_black_text\">".$site."/".$type."/"."</span><span class=\"inversol_yellow_text\">".$identifier."</span></a>
  441. </td>
  442. </tr>
  443. <tr>
  444. <td>
  445. <table>
  446. <tr>
  447. <td>
  448. <a class=\"social_media\" href=\"https://www.linkedin.com/company/inverlecsolar/\">
  449. <img width=\"20\" height=\"20\" src=\"https://www.mercadoselectricos.com.sv/wp-content/uploads/2019/12/IMG_INVERSOL_Linkedin.png\">
  450. </a>
  451. </td>
  452. <td>
  453. <a class=\"social_media\" href=\"https://www.facebook.com/inverlec/\">
  454. <img width=\"20\" height=\"20\" src=\"https://www.mercadoselectricos.com.sv/wp-content/uploads/2019/12/IMG_INVERSOL_Facebook.png\">
  455. </a>
  456. </td>
  457. <td>
  458. <a class=\"social_media\" href=\"https://www.inverlec.solar\">
  459. <span class=\"inversol_black_text\">www.</span><span class=\"inversol_yellow_text\">inverlec</span><span class=\"inversol_black_text\">.solar</span>
  460. </a>
  461. </td>
  462. </tr>
  463. </table>
  464. </td>
  465. </tr>
  466. </tbody>
  467. </table>
  468. </td>
  469. </tr>
  470. </tbody>
  471. </table>
  472. </body>
  473. </html>
  474. ";
  475. }elseif($persona['Plantilla']=='METCO'){
  476. $style = "@font-face{
  477. font-family:HelveticaNeueLTStd-Lt;
  478. src:url(../Tipografias/HelveticaNeueLTStd-Lt.ttf);
  479. }
  480. @font-face{
  481. font-family:VAGRoundedStd-Light;
  482. src:url(../Tipografias/VAGRoundedStd-Light.otf);
  483. }
  484. .metco_name_yellow{
  485. font-family: Helvetica, sans-serif;
  486. color: #DE8C33;
  487. font-size: 15pt;
  488. font-weight: bold;
  489. }
  490. .metco_name_black{
  491. font-family: Helvetica, sans-serif;
  492. color: black;
  493. font-size: 15pt;
  494. font-weight: bold;
  495. }
  496. .metco_puesto{
  497. font-family: Helvetica, sans-serif;
  498. color: black;
  499. font-size: 15pt;
  500. }
  501. td{
  502. font-family: HelveticaNeueLTStd-Lt;
  503. }
  504. .metco_yellow_text{
  505. color: #DE8C33;
  506. font-size: 11pt;
  507. font-family: Helvetica, sans-serif;
  508. font-weight: bold;
  509. }
  510. .metco_gray_text{
  511. color: black;
  512. font-size: 11pt;
  513. font-family: Helvetica, sans-serif;
  514. }
  515. ";
  516. $body =" <table>
  517. <tbody>
  518. <tr>
  519. <td colspan=\"2\">
  520. <span class=\"metco_name_yellow\">".$persona['Primer Nombre']."</span> <span class=\"metco_name_black\">".$persona['Primer Apellido']."</span>
  521. <p style=\"margin-top:1%\"><span class=\"metco_puesto\">".$persona['Puesto']."</span></p>
  522. </td>
  523. </tr>
  524. <tr height=\"10\"></tr>
  525. <tr>
  526. <td width=\"200\" style=\"border-right:2px solid #DE8C33;\">
  527. <img src=\"https://www.mercadoselectricos.com.sv/wp-content/uploads/2019/12/IMG_METCO_Logo.png\" width=\"200\" height=\"80\">
  528. </td>
  529. <td width=\"900\" style=\"margin-left:2px;\">
  530. <table>
  531. <tbody>
  532. <tr align=\"left\">
  533. <td>
  534. <span style=\"color: #80888F\"><span class=\"metco_yellow_text\">T.</span><span class=\"metco_gray_text\">".$persona['Telefono']."</span> &nbsp;
  535. <span class=\"metco_yellow_text\">C.</span><span class=\"metco_gray_text\">".$persona['Celular']."</span></span>
  536. </td>
  537. </tr>
  538. <tr>
  539. <td>
  540. <a href=\"mailto:".$persona['Correo']."\"><span class=\"metco_yellow_text\">".$email_id."</span><span class=\"metco_gray_text\">@".$email_domain."</span></a>
  541. </td>
  542. </tr>
  543. <tr>
  544. <td>
  545. <a href=\"https://www.".$persona['LinkedIn']."\"> <span class=\"metco_gray_text\">".$site."/".$type."/"."</span><span class=\"metco_yellow_text\">".$identifier."</span></a>
  546. </td>
  547. </tr>
  548. <tr>
  549. <td>
  550. <table>
  551. <tr>
  552. <td>
  553. <a class=\"social_media\" href=\"https://www.linkedin.com/company/mexicanenergytradingco/\">
  554. <img width=\"20\" height=\"20\" src=\"https://www.mercadoselectricos.com.sv/wp-content/uploads/2019/12/IMG_METCO_Logo-02.png\">
  555. </a>
  556. </td>
  557. <td>
  558. <a class=\"social_media\" href=\"https://www.facebook.com/MexicanEnergyTradingCo/\">
  559. <img width=\"20\" height=\"20\" src=\"https://www.mercadoselectricos.com.sv/wp-content/uploads/2019/12/IMG_METCO_Logo-03.png\">
  560. </a>
  561. </td>
  562. <td>
  563. <a class=\"social_media\" href=\"http://www.mexicantradingco.com.mx\">
  564. <span class=\"metco_gray_text\">www.</span><span class=\"metco_yellow_text\">mexicantradingco</span><span class=\"metco_gray_text\">.com.mx</span>
  565. </a>
  566. </td>
  567. </tr>
  568. </table>
  569. </td>
  570. </tr>
  571. </tbody>
  572. </table>
  573. </td>
  574. </tr>
  575. </tbody>
  576. </table>
  577. </body>
  578. </html>
  579. ";
  580. }else{
  581. $body = "";
  582. print("NO ESTA ASIGNADO A NINGUNA PLANTILLA, REVISE LOS DATOS");
  583. }
  584. $general_style ="
  585. a {
  586. text-decoration: none;
  587. display:table-cell;
  588. vertical-align:middle;
  589. }
  590. .social_media{
  591. padding-right:4px;
  592. }
  593. ";
  594. $html_header ="<html>
  595. <head>
  596. </head>
  597. <body>
  598. <style> "." ".$style.$general_style."
  599. </style>";
  600. fwrite($firma,$html_header.$body);
  601. return $file_name;
  602. }
  603. /**
  604. * comentario sobre generarTodas():
  605. * ESTA FUNCION GENERA TODAS LAS FIRMAS EN HTML Y LAS AGREGA A UN ARCHIVO ZIP
  606. * SE DA POR ALUDIDO QUE LAS IMAGENES Y FUENTE QUE CONSUME CADA VISTA, SE ENCUENTRAN EN
  607. * UN SERVIDOR EN LINEA,LISTO PARA SERVIRLOS.
  608. */
  609. public function generarTodas(){
  610. $File = $this->data_file();
  611. $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
  612. $spreadsheet= $reader->load($File);
  613. $sheet = $spreadsheet->getActiveSheet();
  614. $fila_maxima = $sheet->getHighestDataRow();
  615. #obteniendo headers
  616. $headers=[];
  617. foreach($sheet->getRowIterator(1,1) as $row){
  618. $cellIterator = $row->getCellIterator();
  619. $cellIterator->setIterateOnlyExistingCells(false);
  620. foreach($cellIterator as $cell){
  621. $headers[] = $cell->getCalculatedValue();
  622. }
  623. }
  624. #obteniendo datos de las personas
  625. $file_names=[];
  626. $file_dirs=[];
  627. foreach($sheet->getRowIterator(2,$fila_maxima) as $row){
  628. $cellIterator = $row->getCellIterator();
  629. $cellIterator->setIterateOnlyExistingCells(false);
  630. $i=0;
  631. $persona=[];
  632. foreach($cellIterator as $cell){
  633. $persona[$headers[$i]] = $cell->getCalculatedValue();
  634. $i++;
  635. }
  636. $file_names[]=$persona['Plantilla']."_".$persona['Nombre Completo'].".htm";
  637. $file_dirs[]=$this->generarHTML($persona);
  638. }
  639. $i=0;
  640. $zip = new ZipArchive();
  641. $zip_name = "paquete_firmas.zip";
  642. $zip->open($zip_name,ZipArchive::CREATE);
  643. foreach($file_dirs as $file){
  644. $zip->addFile($file,$file_names[$i]);
  645. $i++;
  646. }
  647. $zip->close();
  648. // Creamos las cabezeras que forzaran la descarga del archivo como archivo zip.
  649. header("Content-type: application/octet-stream");
  650. header("Content-disposition: attachment; filename=".$zip_name);
  651. // leemos el archivo creado
  652. readfile($zip_name);
  653. // Por último eliminamos el archivo temporal creado
  654. unlink($zip_name);//Destruye el archivo temporal
  655. }
  656. /*
  657. *método para guardar en una base de datos
  658. public function guardar()
  659. {
  660. if ($_POST){
  661. $this->FirmaModel->guardar($_POST);
  662. $ruta = base_url();
  663. echo "<script>
  664. window.location = '{$ruta}';
  665. </script>";
  666. }
  667. }*/
  668. }