registro.component.ts 63 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355
  1. import { Component, Inject, OnInit } from "@angular/core";
  2. import { EnviarInfoService } from "../../../Administrador/services/enviar-info.service";
  3. import { AbstractControl, FormBuilder, FormControl, FormGroup, ReactiveFormsModule, ValidationErrors, Validators,FormArray } from "@angular/forms";
  4. import { MAT_DATE_LOCALE, MatOption, provideNativeDateAdapter } from "@angular/material/core";
  5. import { RegistroAcademicoService } from "../../services/registroAcademico.service";
  6. import Swal from "sweetalert2";
  7. import { ActivatedRoute, Router } from "@angular/router";
  8. import { MAT_DIALOG_DATA, MatDialog, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogModule, MatDialogRef, MatDialogTitle } from "@angular/material/dialog";
  9. import { MatFormFieldModule } from "@angular/material/form-field";
  10. import { MatInputModule } from "@angular/material/input";
  11. import { MatButtonModule } from "@angular/material/button";
  12. import { MatIcon } from "@angular/material/icon";
  13. import { CommonModule } from "@angular/common";
  14. import { MatSelectModule } from "@angular/material/select";
  15. import { GradosEducativosService } from "../../../Administrador/services/grados-educativos.service";
  16. import { BreakpointObserver } from "@angular/cdk/layout";
  17. import { map } from 'rxjs/operators';
  18. import { UsersService } from "../../../Administrador/services/users.service";
  19. @Component({
  20. selector: 'app-registro',
  21. templateUrl: './registro.component.html',
  22. styleUrls: ['./registro.component.css'],
  23. providers: [provideNativeDateAdapter(),
  24. { provide: MAT_DATE_LOCALE, useValue: 'en-GB' }
  25. ],
  26. })
  27. export class registroComponent implements OnInit {
  28. color: string = '';
  29. Padre = JSON.parse(localStorage.getItem('userDataS') ? localStorage.getItem('userDataS') || '' : localStorage.getItem('userData') || '');
  30. textColor: string = '';
  31. dia: number = 0;
  32. mes: number = 0;
  33. año: number = 0;
  34. form = this.fb.group({
  35. idAlumno: [''],
  36. primerNombre: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  37. segundoNombre: [null, Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  38. apellidoPaterno: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  39. apellidoMaterno: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  40. curp: ['', [Validators.pattern('^[A-Z]{1}[A-Z]{3}[0-9]{6}[HM]{1}[A-Z]{5}[A-Z0-9]{2}$')]],
  41. sexo: [''],
  42. edad: [''],
  43. ciudadNacimiento: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  44. estado: [''],
  45. fechaNacimiento: ['', [this.validateFechaNacimiento]],
  46. diaNacimiento: [this.dia],
  47. mesNacimiento: [this.mes],
  48. añoNacimiento: [this.año],
  49. domicilio: [''],
  50. telefonoCasa: ['', [Validators.pattern('^[0-9]{10}$')]],
  51. institucionProcedencia: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  52. motivoCambio: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  53. });
  54. validateFechaNacimiento(control: AbstractControl): ValidationErrors | null {
  55. const fechaNacimiento = new Date(control.value);
  56. const fechaMaxima = new Date();
  57. const fechaMinima = new Date();
  58. fechaMaxima.setFullYear(fechaMaxima.getFullYear() - 1);
  59. fechaMinima.setFullYear(fechaMinima.getFullYear() - 20);
  60. const yearNacimiento = fechaNacimiento.getFullYear();
  61. const yearMaxima = fechaMaxima.getFullYear();
  62. const yearMinima = fechaMinima.getFullYear();
  63. if (yearNacimiento > yearMaxima || yearNacimiento < yearMinima) {
  64. return { fechaInvalida: true };
  65. }
  66. return null;
  67. }
  68. validateFechaNacimiento1(control: AbstractControl): ValidationErrors | null {
  69. const fechaNacimiento = new Date(control.value);
  70. const fechaMaxima = new Date();
  71. fechaMaxima.setFullYear(fechaMaxima.getFullYear() - 1);
  72. const yearNacimiento = fechaNacimiento.getFullYear();
  73. const yearMaxima = fechaMaxima.getFullYear();
  74. if (yearNacimiento > yearMaxima) {
  75. return { fechaInvalida: true };
  76. }
  77. return null;
  78. }
  79. form2 = this.fb.group({
  80. padrePrimerNombre: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  81. padreSegundoNombre: [null, Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  82. padreApellidoPaterno: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  83. padreApellidoMaterno: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  84. padreCurp: ['', [Validators.pattern('^[A-Z]{1}[A-Z]{3}[0-9]{6}[HM]{1}[A-Z]{5}[A-Z0-9]{2}$')]],
  85. padreNacionalidad: [''],
  86. padreEstadoCivil: [''],
  87. padreFechaNacimiento: ['', [this.validateFechaNacimiento1]],
  88. padreDiaNacimiento: [this.dia],
  89. padreMesNacimiento: [this.mes],
  90. padreAñoNacimiento: [this.año],
  91. padreDomicilio: [''],
  92. padreCPDomicilio: ['', [Validators.pattern('^[0-9]{5}$')]],
  93. padreEscolaridad: [''],
  94. padreOcupacion: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  95. padreLugarTrabajo: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  96. padreTelefonoTrabajo: ['', [Validators.pattern('^[0-9]{10}$')]],
  97. padreExtension: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  98. padreCelular: ['', [Validators.pattern('^[0-9]{10}$')]],
  99. padreCorreo: ['', [Validators.pattern('^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$')]],
  100. });
  101. form3 = this.fb.group({
  102. madrePrimerNombre: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  103. madreSegundoNombre: [null, Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  104. madreApellidoPaterno: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  105. madreApellidoMaterno: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  106. madreCurp: ['', [Validators.pattern('^[A-Z]{1}[A-Z]{3}[0-9]{6}[HM]{1}[A-Z]{5}[A-Z0-9]{2}$')]],
  107. madreNacionalidad: [''],
  108. madreEstadoCivil: [''],
  109. madreFechaNacimiento: ['', [this.validateFechaNacimiento1]],
  110. madreDiaNacimiento: [this.dia],
  111. madreMesNacimiento: [this.mes],
  112. madreAñoNacimiento: [this.año],
  113. madreDomicilio: [''],
  114. madreCPDomicilio: ['', [Validators.pattern('^[0-9]{5}$')]],
  115. madreEscolaridad: [''],
  116. madreOcupacion: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  117. madreLugarTrabajo: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  118. madreTelefonoTrabajo: ['', [Validators.pattern('^[0-9]{10}$')]],
  119. madreExtension: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  120. madreCelular: ['', [Validators.pattern('^[0-9]{10}$')]],
  121. madreCorreo: ['', [Validators.pattern('^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$')]],
  122. });
  123. form4 = this.fb.group({
  124. PadreFam: ['', Validators.required],
  125. MadreFam: ['', Validators.required],
  126. AutorizarAlum: ['', Validators.required],
  127. personasAutorizadas: this.fb.array([])
  128. });
  129. form5 = this.fb.group({
  130. tipoSangre: [''],
  131. aspirina: [''],
  132. penicilina: [''],
  133. otrosMedicamentos: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  134. paperas: [''],
  135. sarampion: [''],
  136. rubeola: [''],
  137. escarlatina: [''],
  138. tosferina: [''],
  139. tifoidea: [''],
  140. hepatitis: [''],
  141. varicela: [''],
  142. bronquitis: [''],
  143. apendicitis: [''],
  144. meninguitis: [''],
  145. desmayos: [''],
  146. covid: [''],
  147. garganta: [''],
  148. estomago: [''],
  149. catarro: [''],
  150. diarrea: [''],
  151. dolorCabeza: [''],
  152. fiebreAlta: [''],
  153. comezonFrecuente: [''],
  154. mareos: [''],
  155. diabetes: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  156. asmatico: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  157. epileptico: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  158. enfermedadPiel: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  159. });
  160. form6 = this.fb.group({
  161. problemasEmbarazo: [''],
  162. problemasParto: [''],
  163. peso: ['', [Validators.pattern('^[0-9]{1}(\\.[0-9]{1,3})?$')]],
  164. pesoActual: ['', [Validators.pattern('^[0-9]{1,3}(\\.[0-9]{1,3})?$')]],
  165. talla1: ['', [Validators.pattern('^[0-9]{1,2}$')]],
  166. tallaActual: ['', [Validators.pattern('^[0-9]{1,2}(\\.[0-9]{1,2})?$')]],
  167. edad1: [''],
  168. edad2: [''],
  169. gateo: [''],
  170. edadGateo: [''],
  171. edadHablo: [''],
  172. edadCamino: ['',],
  173. enfermedades: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  174. alergias: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  175. tratamientoMedico: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  176. lentes: [''],
  177. piePlano: [''],
  178. zapatoOrtopedico: [''],
  179. problemasAprendizaje: [''],
  180. relacionPareja: [''],
  181. problemasFamilia: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  182. afectacionProblemas: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  183. tratamientoPsicologico: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  184. desagradaFamilia: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  185. agradaFamilia: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  186. actividadDesagrada: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  187. actividadAgrada: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  188. defectos: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  189. virtudes: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  190. futuro: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  191. comentarios: ['', Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')],
  192. usuarioRegistro: [this.Padre[0]],
  193. });
  194. tiposDeSangre = [
  195. { id: 'A+', nombre: 'A Positivo' },
  196. { id: 'A-', nombre: 'A Negativo' },
  197. { id: 'B+', nombre: 'B Positivo' },
  198. { id: 'B-', nombre: 'B Negativo' },
  199. { id: 'AB+', nombre: 'AB Positivo' },
  200. { id: 'AB-', nombre: 'AB Negativo' },
  201. { id: 'O+', nombre: 'O Positivo' },
  202. { id: 'O-', nombre: 'O Negativo' }
  203. ];
  204. estados = [
  205. 'Aguascalientes',
  206. 'Baja California',
  207. 'Baja California Sur',
  208. 'Campeche',
  209. 'Chiapas',
  210. 'Chihuahua',
  211. 'Coahuila',
  212. 'Colima',
  213. 'Ciudad de México',
  214. 'Durango',
  215. 'Guanajuato',
  216. 'Guerrero',
  217. 'Hidalgo',
  218. 'Jalisco',
  219. 'Mexico',
  220. 'Michoacan',
  221. 'Morelos',
  222. 'Nayarit',
  223. 'Nuevo Leon',
  224. 'Oaxaca',
  225. 'Puebla',
  226. 'Queretaro',
  227. 'Quintana Roo',
  228. 'San Luis Potosi',
  229. 'Sinaloa',
  230. 'Sonora',
  231. 'Tabasco',
  232. 'Tamaulipas',
  233. 'Tlaxcala',
  234. 'Veracruz',
  235. 'Yucatan',
  236. 'Zacatecas',
  237. ];
  238. // Datos general Alumno
  239. AlumnoDatos: any[] = [
  240. { titulo: 'PrimerNombre:', form: 'primerNombre', tipo: 'text', errorType: 'required' },
  241. { titulo: 'SegundoNombre:', form: 'segundoNombre', tipo: 'text', errorType: 'required' },
  242. { titulo: 'ApellidoPaterno:', form: 'apellidoPaterno', tipo: 'text', errorType: 'required' },
  243. { titulo: 'ApellidoMaterno:', form: 'apellidoMaterno', tipo: 'text', errorType: 'required' },
  244. ];
  245. EdadAlumno: any[] = [
  246. { id: '1', num: '1 Año' },
  247. { id: '2', num: '2 Años' },
  248. { id: '3', num: '3 Años' },
  249. { id: '4', num: '4 Años' },
  250. { id: '5', num: '5 Años' },
  251. { id: '6', num: '6 Años' },
  252. { id: '7', num: '7 Años' },
  253. { id: '8', num: '8 Años' },
  254. { id: '9', num: '9 Años' },
  255. { id: '10', num: '10 Años' },
  256. { id: '11', num: '11 Años' },
  257. { id: '12', num: '12 Años' },
  258. { id: '13', num: '13 Años' },
  259. { id: '14', num: '14 Años' },
  260. { id: '15', num: '15 Años' },
  261. { id: '16', num: '16 Años' },
  262. { id: '17', num: '17 Años' },
  263. { id: '18', num: '18 Años' },
  264. { id: '19', num: '19 Años' },
  265. { id: '20', num: '20 Años' },
  266. ];
  267. AlumnoDatos2: any[] = [
  268. { titulo: 'Institución de la que procede: ', form: 'institucionProcedencia', tipo: 'text', errorType: 'required' },
  269. { titulo: 'Motivo del cambio: ', form: 'motivoCambio', tipo: 'text', errorType: 'required' },
  270. ];
  271. // Datos general Padre
  272. PadreDatos: any[] = [
  273. { titulo: 'PrimerNombre:', form: 'padrePrimerNombre', tipo: 'text', errorType: 'required' },
  274. { titulo: 'SegundoNombre:', form: 'padreSegundoNombre', tipo: 'text' },
  275. { titulo: 'ApellidoPaterno:', form: 'padreApellidoPaterno', tipo: 'text', errorType: 'required' },
  276. { titulo: 'ApellidoMaterno:', form: 'padreApellidoMaterno', tipo: 'text', errorType: 'required' },
  277. ];
  278. PadreDatos2: any[] = [
  279. { titulo: 'Ocupación:', form: 'padreOcupacion', tipo: 'text', errorType: 'required' },
  280. { titulo: 'Lugar de Trabajo:', form: 'padreLugarTrabajo', tipo: 'text', errorType: 'required' },
  281. { titulo: 'Tel. de Trabajo:', form: 'padreTelefonoTrabajo', tipo: 'number', errorType: 'required', errorType2: 'pattern' },
  282. { titulo: 'Extensión:', form: 'padreExtension', tipo: 'text', errorType: 'required' },
  283. ];
  284. Escolaridad: any[] = [
  285. { id: 'S', nombre: 'Sin estudios' },
  286. { id: 'B', nombre: 'Bachillerato' },
  287. { id: 'L', nombre: 'Licenciatura' },
  288. { id: 'M', nombre: 'Maestría' },
  289. { id: 'D', nombre: 'Doctorado' },
  290. ];
  291. //Datos general Madre
  292. madreDatos: any[] = [
  293. { titulo: 'PrimerNombre:', form: 'madrePrimerNombre', tipo: 'text', errorType: 'required' },
  294. { titulo: 'SegundoNombre:', form: 'madreSegundoNombre', tipo: 'text' },
  295. { titulo: 'ApellidoPaterno:', form: 'madreApellidoPaterno', tipo: 'text', errorType: 'required' },
  296. { titulo: 'ApellidoMaterno:', form: 'madreApellidoMaterno', tipo: 'text', errorType: 'required' },
  297. ];
  298. madreDatos1: any[] = [
  299. { titulo: 'Domicilio: ', form: 'madreDomicilio', tipo: 'text', errorType: 'required' },
  300. { titulo: 'C.P.Domicilio: ', form: 'madreCPDomicilio', tipo: 'number', errorType: 'required', errorType3: 'pattern' },
  301. ];
  302. madreDatos2: any[] = [
  303. { titulo: 'Ocupación:', form: 'madreOcupacion', tipo: 'text', errorType: 'required' },
  304. { titulo: 'Lugar de Trabajo:', form: 'madreLugarTrabajo', tipo: 'text', errorType: 'required' },
  305. { titulo: 'Tel. de Trabajo:', form: 'madreTelefonoTrabajo', tipo: 'number', errorType: 'required', errorType2: 'pattern' },
  306. { titulo: 'Extensión:', form: 'madreExtension', tipo: 'text', errorType: 'required' },
  307. ];
  308. //Formulario Padecimientos
  309. alergicoA: any[] = [
  310. { titulo: 'Aspirina: ', si: 'Si', no: 'No', form: 'aspirina' },
  311. { titulo: 'Penicilina: ', si: 'Si', no: 'No', form: 'penicilina' }
  312. ];
  313. HaPadecido: any[] = [
  314. { titulo: 'Paperas: ', si: 'Si', no: 'No', form: 'paperas' },
  315. { titulo: 'Sarampión: ', si: 'Si', no: 'No', form: 'sarampion' },
  316. { titulo: 'Rúbeola: ', si: 'Si', no: 'No', form: 'rubeola' },
  317. { titulo: 'Escarlatina: ', si: 'Si', no: 'No', form: 'escarlatina' },
  318. { titulo: 'Tosferina: ', si: 'Si', no: 'No', form: 'tosferina' },
  319. { titulo: 'Tifoidea: ', si: 'Si', no: 'No', form: 'tifoidea' },
  320. { titulo: 'Hepatitis: ', si: 'Si', no: 'No', form: 'hepatitis' },
  321. { titulo: 'Varicela: ', si: 'Si', no: 'No', form: 'varicela' },
  322. { titulo: 'Bronquitis: ', si: 'Si', no: 'No', form: 'bronquitis' },
  323. { titulo: 'Apendicitis: ', si: 'Si', no: 'No', form: 'apendicitis' },
  324. { titulo: 'Meningitis: ', si: 'Si', no: 'No', form: 'meninguitis' },
  325. { titulo: 'Desmayos: ', si: 'Si', no: 'No', form: 'desmayos' },
  326. { titulo: 'COVID-19: ', si: 'Si', no: 'No', form: 'covid' },
  327. ];
  328. PadeceFrecuencia: any[] = [
  329. { titulo: 'Garganta: ', si: 'Si', no: 'No', form: 'garganta' },
  330. { titulo: 'Estomago: ', si: 'Si', no: 'No', form: 'estomago' },
  331. { titulo: 'Catarro: ', si: 'Si', no: 'No', form: 'catarro' },
  332. { titulo: 'Diarrea: ', si: 'Si', no: 'No', form: 'diarrea' },
  333. { titulo: 'Dolores de cabeza: ', si: 'Si', no: 'No', form: 'dolorCabeza' },
  334. { titulo: 'Fiebres Altas: ', si: 'Si', no: 'No', form: 'fiebreAlta' },
  335. { titulo: 'Comezón Frecuente: ', si: 'Si', no: 'No', form: 'comezonFrecuente' },
  336. { titulo: 'Mareos: ', si: 'Si', no: 'No', form: 'mareos' },
  337. ];
  338. padeciminetos: any[] = [
  339. { titulo: ' Si es diabetico,¿Qué precausiones sigue?', form: 'diabetes', tipo: 'text', errorType: 'required' },
  340. { titulo: 'Si es asmático,¿Qué medicamento utiliza?', form: 'asmatico', tipo: 'text', errorType: 'required' },
  341. { titulo: 'Si es epiléptico,¿Qué medicamento utiliza?', form: 'epileptico', tipo: 'text', errorType: 'required' },
  342. { titulo: '¿Presenta alguna enfermedad de la piel?, ¿Cuál?', form: 'enfermedadPiel', tipo: 'text', errorType: 'required' },
  343. ];
  344. //Antecedentes Alumno
  345. AntecedentesAlumno: any[] = [
  346. { titulo: '¿Tuvo problemas en el embarazo? ', si: 'Si', no: 'No', form: 'problemasEmbarazo' },
  347. { titulo: '¿Tuvo problemas en el parto? ', si: 'Si', no: 'No', form: 'problemasParto' },
  348. ];
  349. AntecedentesAlumno1: any[] = [
  350. { titulo: '¿Cuánto pesó?', form: 'peso', tipo: 'number' },
  351. { titulo: '¿Cuánto pesa?', form: 'pesoActual', tipo: 'number' },
  352. ];
  353. AntecedentesAlumno2: any[] = [
  354. { titulo: '¿Cuánto Midió?', form: 'talla1', tipo: 'number' },
  355. { titulo: '¿Cuánto Mide?', form: 'tallaActual', tipo: 'number' },
  356. ];
  357. edadControl = [
  358. { id: '1', nombre: '1 Años' },
  359. { id: '2', nombre: '2 Años' },
  360. { id: '3', nombre: '3 Años' },
  361. { id: '4', nombre: '4 Años' },
  362. { id: '5', nombre: '5 Años' },
  363. { id: '6', nombre: '6 Años' },
  364. { id: '7', nombre: '7 años' }
  365. ]
  366. edad: any[] = [
  367. { titulo: '¿A que edad?', form: 'edadGateo', errorType: 'required' },
  368. { titulo: 'Edad en la que habló ', form: 'edadHablo', errorType: 'required' },
  369. { titulo: 'Edad en la que caminó', form: 'edadCamino', errorType: 'required' },
  370. ];
  371. AntecedentesAlumno3: any[] = [
  372. { titulo: 'Enfermedades que ha padecido:', form: 'enfermedades', tipo: 'text', errorType: 'required' },
  373. { titulo: 'Enfermedades o alergias que padece:', form: 'alergias', tipo: 'text', errorType: 'required' },
  374. { titulo: '¿Está en algún tratamiento médico?', form: 'tratamientoMedico', tipo: 'text', errorType: 'required' },
  375. ];
  376. AntecedentesAlumno4: any[] = [
  377. { titulo: '¿Usa lentes?', si: 'Si', no: 'No', form: 'lentes', errorType: 'required' },
  378. { titulo: '¿Tiene pie plano?', si: 'Si', no: 'No', form: 'piePlano', errorType: 'required' },
  379. { titulo: '¿Utiliza plantilla o zapato ortopédico? ', si: 'Si', no: 'No', form: 'zapatoOrtopedico', errorType: 'required' },
  380. ];
  381. AntecedentesAlumno5: any[] = [
  382. { titulo: '¿Qué es lo que creen le desagrada más al niño de su familia?', form: 'desagradaFamilia', tipo: 'text', errorType: 'required' },
  383. { titulo: '¿Qué es lo que creen le agrada más al niño de su familia?', form: 'agradaFamilia', tipo: 'text', errorType: 'required' },
  384. { titulo: '¿Qué actividades de su hogar no le gusta hacer a su hijo?', form: 'actividadDesagrada', tipo: 'text', errorType: 'required' },
  385. { titulo: '¿Qué actividades de su hogar le gusta hacer a su hijo?', form: 'actividadAgrada', tipo: 'text', errorType: 'required' },
  386. { titulo: '¿Cuáles son los mayores defectos de su hijo?', form: 'defectos', tipo: 'text', errorType: 'required' },
  387. { titulo: '¿Cuáles son las mayores virtudes de su hijo?', form: 'virtudes', tipo: 'text', errorType: 'required' },
  388. { titulo: '¿Qué es lo que espera en el futuro para su hijo?', form: 'futuro', tipo: 'text', errorType: 'required' },
  389. { titulo: 'Algún comentario que crea importante agregar:', form: 'comentarios', tipo: 'text', errorType: 'required' },
  390. ];
  391. //covid
  392. covid: any[] = [
  393. { titulo: '¿Cuántos miembros de su familia viven en la misma casa?', form: 'cantidadPersonas', tipo: 'number', errorType: 'required' },
  394. { titulo: '¿Cuántos miembros ya han sido vacunados?', form: 'cantidadVacunados', tipo: 'number', errorType: 'required' },
  395. { titulo: '¿Qué medidas de higiene maneja en su hogar?', form: 'medidadHigiene', tipo: 'text', errorType: 'required' },
  396. ];
  397. FormularioCompleto: any[] = [];
  398. valoresCombinados: any = {};
  399. selected = new FormControl();
  400. todayDate: Date = new Date();
  401. todayDate1: Date = new Date();
  402. datos: any;
  403. isLoading: boolean = true;
  404. stepperOrientation: any;
  405. isLinear = false;
  406. screenSize: number;
  407. private id: string = '';
  408. dataAlum: any;
  409. nombreAlumno: any;
  410. constructor(private _enviarInfo: EnviarInfoService, private fb: FormBuilder, private _registroAcademico: RegistroAcademicoService, private _router: Router,
  411. public dialog: MatDialog, private breakpointObserver: BreakpointObserver, private route: ActivatedRoute
  412. ) {
  413. this.todayDate.setFullYear(new Date().getFullYear(), 0, 1);
  414. this.todayDate1.setFullYear(new Date().getFullYear() - 20, 0, 1);
  415. this.stepperOrientation = breakpointObserver
  416. .observe('(min-width: 800px)')
  417. .pipe(map(({ matches }) => (matches ? 'horizontal' : 'vertical')));
  418. this.onResize();
  419. this.screenSize = window.innerWidth;
  420. // Inicializar con al menos una persona autorizada
  421. this.agregarPersonaAutorizada();
  422. }
  423. get personasAutorizadas(): FormArray {
  424. return this.form4.get('personasAutorizadas') as FormArray;
  425. }
  426. agregarPersonaAutorizada() {
  427. this.personasAutorizadas.push(this.crearPersonaAutorizada()); }
  428. // Función para crear un FormGroup de persona autorizada
  429. crearPersonaAutorizada(nombre: string = '', telefono: string = '', parentesco: string = ''): FormGroup {
  430. return this.fb.group({
  431. nombre: [nombre, [Validators.required, Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')]],
  432. telefono: [telefono, [Validators.required, Validators.pattern('^[0-9+\\-\\s()]*$'), Validators.minLength(10)]],
  433. parentesco: [parentesco, [Validators.required, Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')]]
  434. });
  435. }
  436. // Función para eliminar una persona autorizada
  437. eliminarPersonaAutorizada(index: number): void {
  438. if (this.personasAutorizadas.length > 1) {
  439. this.personasAutorizadas.removeAt(index);
  440. }
  441. }
  442. // Función para validar campos de persona autorizada
  443. isPersonaAutorizadaInvalid(index: number, campo: string): boolean {
  444. const persona = this.personasAutorizadas.at(index);
  445. const field = persona.get(campo);
  446. return field ? field.invalid && (field.dirty || field.touched) : false;
  447. }
  448. onResize() {
  449. this.screenSize = window.innerWidth;
  450. }
  451. getdatos() {
  452. this._registroAcademico.getOneRegistroAcademico(this.id).subscribe((data: any) => {
  453. this.isLoading = false;
  454. this.datos = data.registro[0];
  455. if (this.datos !== undefined) {
  456. this.form.get('primerNombre')?.setValue(this.datos.FiDI_Nombre1);
  457. this.form.get('segundoNombre')?.setValue(this.datos.FiDI_Nombre2);
  458. this.form.get('apellidoPaterno')?.setValue(this.datos.FiDI_ApellidoPaterno);
  459. this.form.get('apellidoMaterno')?.setValue(this.datos.FiDI_ApellidoMaterno);
  460. this.form.get('curp')?.setValue(this.datos.FiDI_CURP);
  461. this.form.get('sexo')?.setValue(this.datos.FiDI_Sexo);
  462. this.form.get('edad')?.setValue(this.datos.FiDI_Edad);
  463. this.form.get('ciudadNacimiento')?.setValue(this.datos.FiDI_NacCiudad);
  464. this.form.get('estado')?.setValue(this.datos.FiDI_NacEstado);
  465. const fechaNacimiento = new Date(
  466. Number(this.datos.FiDI_NacFechaAnio),
  467. Number(this.datos.FiDI_NacFechaMes) - 1,
  468. Number(this.datos.FiDI_NacFechaDia)
  469. );
  470. if (this.datos.FiDI_NacFechaAnio != 0) {
  471. this.form.get('fechaNacimiento')?.setValue(fechaNacimiento.toISOString());
  472. } else {
  473. this.form.get('fechaNacimiento')?.setValue('');
  474. }
  475. this.form.get('domicilio')?.setValue(this.datos.FiDI_Domicilio);
  476. this.form.get('telefonoCasa')?.setValue(this.datos.FiDI_Telefono);
  477. this.form.get('institucionProcedencia')?.setValue(this.datos.FiDI_InstProce);
  478. this.form.get('motivoCambio')?.setValue(this.datos.FiDI_MotivoCambio);
  479. // Padre
  480. this.form2.get('padrePrimerNombre')?.setValue(this.datos.FiDI_PadNombre1);
  481. this.form2.get('padreSegundoNombre')?.setValue(this.datos.FiDI_PadNombre2);
  482. this.form2.get('padreApellidoPaterno')?.setValue(this.datos.FiDI_PadApellidoPaterno);
  483. this.form2.get('padreApellidoMaterno')?.setValue(this.datos.FiDI_PadApellidoMaterno);
  484. this.form2.get('padreCurp')?.setValue(this.datos.FiDI_PadCURP);
  485. this.form2.get('padreNacionalidad')?.setValue(this.datos.FiDI_PadNacionalidad);
  486. this.form2.get('padreEstadoCivil')?.setValue(this.datos.FiDI_PadEstadoCivil);
  487. const fechaNacimiento1 = new Date(
  488. Number(this.datos.FiDI_PadNacFechaAnio),
  489. Number(this.datos.FiDI_PadNacFechaMes) - 1,
  490. Number(this.datos.FiDI_PadNacFechaDia)
  491. );
  492. if (this.datos.FiDI_PadNacFechaAnio != 0) {
  493. this.form2.get('padreFechaNacimiento')?.setValue(fechaNacimiento1.toISOString());
  494. } else {
  495. this.form2.get('padreFechaNacimiento')?.setValue('');
  496. }
  497. this.form2.get('padreDomicilio')?.setValue(this.datos.FiDI_PadDomicilio);
  498. this.form2.get('padreCPDomicilio')?.setValue(this.datos.FiDI_PadCP);
  499. this.form2.get('padreEscolaridad')?.setValue(this.datos.FiDI_PadEscolaridad);
  500. this.form2.get('padreOcupacion')?.setValue(this.datos.FiDI_PadOcupacion);
  501. this.form2.get('padreLugarTrabajo')?.setValue(this.datos.FiDI_PadLugTrabajo);
  502. this.form2.get('padreTelefonoTrabajo')?.setValue(this.datos.FiDI_PadTelTrabajo);
  503. this.form2.get('padreExtension')?.setValue(this.datos.FiDI_PadTelTrabajoExt);
  504. this.form2.get('padreCelular')?.setValue(this.datos.FiDI_PadCelular);
  505. this.form2.get('padreCorreo')?.setValue(this.datos.FiDI_PadCorreo);
  506. //Madre
  507. this.form3.get('madrePrimerNombre')?.setValue(this.datos.FiDI_MadNombre1);
  508. this.form3.get('madreSegundoNombre')?.setValue(this.datos.FiDI_MadNombre2);
  509. this.form3.get('madreApellidoPaterno')?.setValue(this.datos.FiDI_MadApellidoPaterno);
  510. this.form3.get('madreApellidoMaterno')?.setValue(this.datos.FiDI_MadApellidoMaterno);
  511. this.form3.get('madreCurp')?.setValue(this.datos.FiDI_MadCURP);
  512. this.form3.get('madreNacionalidad')?.setValue(this.datos.FiDI_MadNacionalidad);
  513. this.form3.get('madreEstadoCivil')?.setValue(this.datos.FiDI_MadEstadoCivil);
  514. const fechaNacimiento2 = new Date(
  515. Number(this.datos.FiDI_MadNacFechaAnio),
  516. Number(this.datos.FiDI_MadNacFechaMes) - 1,
  517. Number(this.datos.FiDI_MadNacFechaDia)
  518. );
  519. if (this.datos.FiDI_MadNacFechaAnio != 0) {
  520. this.form3.get('madreFechaNacimiento')?.setValue(fechaNacimiento2.toISOString());
  521. } else {
  522. this.form3.get('madreFechaNacimiento')?.setValue('');
  523. }
  524. this.form3.get('madreDomicilio')?.setValue(this.datos.FiDI_MadDomicilio);
  525. this.form3.get('madreCPDomicilio')?.setValue(this.datos.FiDI_MadCP);
  526. this.form3.get('madreEscolaridad')?.setValue(this.datos.FiDI_MadEscolaridad);
  527. this.form3.get('madreOcupacion')?.setValue(this.datos.FiDI_MadOcupacion);
  528. this.form3.get('madreLugarTrabajo')?.setValue(this.datos.FiDI_MadLugTrabajo);
  529. this.form3.get('madreTelefonoTrabajo')?.setValue(this.datos.FiDI_MadTelTrabajo);
  530. this.form3.get('madreExtension')?.setValue(this.datos.FiDI_MadTelTrabajoExt);
  531. this.form3.get('madreCelular')?.setValue(this.datos.FiDI_MadCelular);
  532. this.form3.get('madreCorreo')?.setValue(this.datos.FiDI_MadCorreo);
  533. //Autorizacion
  534. this.form4.get('PadreFam')?.setValue(this.datos.FiDI_RecogerPadre);
  535. this.form4.get('MadreFam')?.setValue(this.datos.FiDI_RecogerMadre);
  536. if (Array.isArray(this.datos.personasAutorizadas) && this.datos.personasAutorizadas.length > 0) {
  537. this.datos.personasAutorizadas.forEach((persona: any) => {
  538. this.personasAutorizadas.push(
  539. this.crearPersonaAutorizada(persona.nombre, persona.telefono, persona.parentesco)
  540. );
  541. });
  542. } else {
  543. // Si no hay datos, agregar al menos uno vacío para que el form tenga un input disponible
  544. this.agregarPersonaAutorizada();
  545. }
  546. this.form4.get('AutorizarAlum')?.setValue(this.datos.FiDI_RetirarseSolo);
  547. //Padecimientos
  548. this.form5.get('tipoSangre')?.setValue(this.datos.CedA_TipoSangre);
  549. this.form5.get('aspirina')?.setValue(this.datos.CedA_AlergiaAspirina);
  550. this.form5.get('penicilina')?.setValue(this.datos.CedA_AlergiaPenicilina);
  551. this.form5.get('otrosMedicamentos')?.setValue(this.datos.CedA_AlergiaOtro);
  552. this.form5.get('paperas')?.setValue(this.datos.CedA_PadPaperas);
  553. this.form5.get('sarampion')?.setValue(this.datos.CedA_PadSarampio);
  554. this.form5.get('rubeola')?.setValue(this.datos.CedA_PadRubeola);
  555. this.form5.get('escarlatina')?.setValue(this.datos.CedA_PadEscarlatina);
  556. this.form5.get('tosferina')?.setValue(this.datos.CedA_PadTosferina);
  557. this.form5.get('tifoidea')?.setValue(this.datos.CedA_PadTifoidea);
  558. this.form5.get('hepatitis')?.setValue(this.datos.CedA_PadHepatitis);
  559. this.form5.get('varicela')?.setValue(this.datos.CedA_PadVaricela);
  560. this.form5.get('bronquitis')?.setValue(this.datos.CedA_PadBronquitis);
  561. this.form5.get('apendicitis')?.setValue(this.datos.CedA_PadApendicitis);
  562. this.form5.get('meninguitis')?.setValue(this.datos.CedA_PadMeningitis);
  563. this.form5.get('desmayos')?.setValue(this.datos.CedA_PadDesmayos);
  564. this.form5.get('covid')?.setValue(this.datos.CedA_PadCovid19);
  565. this.form5.get('garganta')?.setValue(this.datos.CedA_PadGarganta);
  566. this.form5.get('estomago')?.setValue(this.datos.CedA_PadEstomago);
  567. this.form5.get('catarro')?.setValue(this.datos.CedA_PadCatarro);
  568. this.form5.get('diarrea')?.setValue(this.datos.CedA_PadDiarrea);
  569. this.form5.get('dolorCabeza')?.setValue(this.datos.CedA_PadDolorCabeza);
  570. this.form5.get('fiebreAlta')?.setValue(this.datos.CedA_PadFiebreAlta);
  571. this.form5.get('comezonFrecuente')?.setValue(this.datos.CedA_PadComezon);
  572. this.form5.get('mareos')?.setValue(this.datos.CedA_PadMareos);
  573. this.form5.get('diabetes')?.setValue(this.datos.CedA_DiabeticoPrecauciones);
  574. this.form5.get('asmatico')?.setValue(this.datos.CedA_AsmaticoPrecauciones);
  575. this.form5.get('epileptico')?.setValue(this.datos.CedA_EpilepticoPrecauciones);
  576. this.form5.get('enfermedadPiel')?.setValue(this.datos.CedA_EnfermedadEnPiel);
  577. //Antecedentes
  578. this.form6.get('problemasEmbarazo')?.setValue(this.datos.CedA_ProbEmbarazo);
  579. this.form6.get('problemasParto')?.setValue(this.datos.CedA_ProbParto);
  580. this.form6.get('peso')?.setValue(this.datos.CedA_PesoNacimiento);
  581. this.form6.get('pesoActual')?.setValue(this.datos.CedA_PesoActual);
  582. this.form6.get('talla1')?.setValue(this.datos.CedA_AlturaNacimiento);
  583. this.form6.get('tallaActual')?.setValue(this.datos.CedA_AlturaActual);
  584. this.form6.get('edad1')?.setValue(this.datos.CedA_EsfinteresDiurno);
  585. this.form6.get('edad2')?.setValue(this.datos.CedA_EsfinteresNocturno);
  586. this.form6.get('gateo')?.setValue(this.datos.CedA_Gateo);
  587. this.form6.get('edadGateo')?.setValue(this.datos.CedA_GateoEdad);
  588. this.form6.get('edadHablo')?.setValue(this.datos.CedA_EdadHablo);
  589. this.form6.get('edadCamino')?.setValue(this.datos.CedA_EdadCamino);
  590. this.form6.get('enfermedades')?.setValue(this.datos.CedA_EnfermedadesPadecidas);
  591. this.form6.get('alergias')?.setValue(this.datos.CedA_EnfermedadesAlergiasActuales);
  592. this.form6.get('tratamientoMedico')?.setValue(this.datos.CedA_TratamientoMedicoActual);
  593. this.form6.get('lentes')?.setValue(this.datos.CedA_UsaLentes);
  594. this.form6.get('piePlano')?.setValue(this.datos.CedA_PiePlano);
  595. this.form6.get('zapatoOrtopedico')?.setValue(this.datos.CedA_Ortopedico);
  596. this.form6.get('problemasAprendizaje')?.setValue(this.datos.CedA_ProbAprendizaje);
  597. this.form6.get('relacionPareja')?.setValue(this.datos.CedA_RelPareja);
  598. this.form6.get('problemasFamilia')?.setValue(this.datos.CedA_ProblemasFamiliares);
  599. this.form6.get('afectacionProblemas')?.setValue(this.datos.CedA_HijoAfectado);
  600. this.form6.get('tratamientoPsicologico')?.setValue(this.datos.CedA_TratPsicologico);
  601. this.form6.get('desagradaFamilia')?.setValue(this.datos.CedA_LoQueDesagradaFamilia);
  602. this.form6.get('agradaFamilia')?.setValue(this.datos.CedA_LoQueAgradaFamilia);
  603. this.form6.get('actividadDesagrada')?.setValue(this.datos.CedA_HogarNoGustan);
  604. this.form6.get('actividadAgrada')?.setValue(this.datos.CedA_HogarGustan);
  605. this.form6.get('defectos')?.setValue(this.datos.CedA_Defectos);
  606. this.form6.get('virtudes')?.setValue(this.datos.CedA_Virtudes);
  607. this.form6.get('futuro')?.setValue(this.datos.CedA_Futuro);
  608. this.form6.get('comentarios')?.setValue(this.datos.CedA_Comentario);
  609. }
  610. });
  611. }
  612. isValidField(field: string, errorType: string) {
  613. const control = this.form.get(field);
  614. return control?.hasError(errorType) && control?.touched;
  615. }
  616. isValidField1(field: string, errorType: string) {
  617. const control = this.form2.get(field);
  618. return control?.hasError(errorType) && control?.touched;
  619. }
  620. isValidField2(field: string, errorType: string) {
  621. const control = this.form3.get(field);
  622. return control?.hasError(errorType) && control?.touched;
  623. }
  624. isValidField3(field: string, errorType: string) {
  625. const control = this.form4.get(field);
  626. return control?.hasError(errorType) && control?.touched;
  627. }
  628. isValidField4(field: string, errorType: string) {
  629. const control = this.form5.get(field);
  630. return control?.hasError(errorType) && control?.touched;
  631. }
  632. isValidField5(field: string, errorType: string) {
  633. const control = this.form6.get(field);
  634. return control?.hasError(errorType) && control?.touched;
  635. }
  636. ngOnInit(): void {
  637. this.route.paramMap.subscribe(params => {
  638. const id = params.get('id');
  639. this.id = atob(id || '');
  640. });
  641. this._registroAcademico.getOne(this.id).subscribe((data: any) => {
  642. this.dataAlum = data;
  643. this.nombreAlumno = data[0].nombreUsuario;
  644. });
  645. this.getdatos();
  646. this._enviarInfo.currentTextColor.subscribe(textColor => {
  647. this.textColor = textColor;
  648. });
  649. this._enviarInfo.currentColor.subscribe(color => {
  650. this.color = color;
  651. });
  652. this.form.get('idAlumno')?.setValue(this.id);
  653. this.form.get('edad')?.disable();
  654. }
  655. siguienteTap(index: number) {
  656. this.selected.setValue(index);
  657. }
  658. siguiente() {
  659. if (this.form.invalid) {
  660. this.form.markAllAsTouched();
  661. return;
  662. }
  663. }
  664. siguiente1() {
  665. if (this.form2.invalid) {
  666. this.form2.markAllAsTouched();
  667. return;
  668. }
  669. }
  670. siguiente2() {
  671. if (this.form3.invalid) {
  672. this.form3.markAllAsTouched();
  673. return;
  674. }
  675. }
  676. siguiente3() {
  677. if (this.form4.invalid) {
  678. this.form4.markAllAsTouched();
  679. return;
  680. }
  681. }
  682. siguiente4() {
  683. if (this.form5.invalid) {
  684. this.form5.markAllAsTouched();
  685. return;
  686. }
  687. }
  688. siguiente5() {
  689. if (this.form6.invalid) {
  690. this.form6.markAllAsTouched();
  691. return;
  692. }
  693. }
  694. fecha(fecha: any) {
  695. const fechaNacimiento = fecha.value;
  696. const hoy = new Date();
  697. const edad = hoy.getFullYear() - fechaNacimiento.getFullYear();
  698. this.form.get('edad')?.setValue(edad.toString());
  699. }
  700. Asistente() {
  701. const domicilio = this.dialog.open(Asistente, {
  702. data: this.form.getRawValue().domicilio
  703. });
  704. domicilio.afterClosed().subscribe(result => {
  705. if (result) {
  706. let domicilio = `${result.calle}, ${result.exterior}, ${result.interior}, ${result.colonia}, ${result.localidad}, ${result.municipio}, ${result.estado}, ${result.pais}, ${result.CP}, ${result.referencia}`;
  707. this.form.controls['domicilio'].setValue(domicilio.trim());
  708. }
  709. });
  710. }
  711. Asistente1() {
  712. const domicilio = this.dialog.open(Asistente, {
  713. data: this.form2.getRawValue().padreDomicilio
  714. });
  715. domicilio.afterClosed().subscribe(result => {
  716. if (result) {
  717. let domicilio = `${result.calle}, ${result.exterior}, ${result.interior}, ${result.colonia}, ${result.localidad}, ${result.municipio}, ${result.estado}, ${result.pais}, ${result.CP}, ${result.referencia}`;
  718. this.form2.controls['padreDomicilio'].setValue(domicilio.trim());
  719. this.form2.controls['padreCPDomicilio'].setValue(result.CP.trim());
  720. }
  721. });
  722. }
  723. Asistente2() {
  724. const domicilio = this.dialog.open(Asistente, {
  725. data: this.form3.getRawValue().madreDomicilio
  726. });
  727. domicilio.afterClosed().subscribe(result => {
  728. if (result) {
  729. let domicilio = `${result.calle}, ${result.exterior}, ${result.interior}, ${result.colonia}, ${result.localidad}, ${result.municipio}, ${result.estado}, ${result.pais}, ${result.CP}, ${result.referencia}`;
  730. this.form3.controls['madreDomicilio'].setValue(domicilio.trim());
  731. this.form3.controls['madreCPDomicilio'].setValue(result.CP.trim());
  732. }
  733. });
  734. }
  735. onSave() {
  736. if (this.form.valid) {
  737. if (this.form.value.fechaNacimiento) {
  738. const fechaNacimiento = new Date(this.form.value.fechaNacimiento);
  739. const dia = fechaNacimiento.getDate();
  740. const mes = fechaNacimiento.getMonth() + 1;
  741. const año = fechaNacimiento.getFullYear();
  742. this.form.controls['diaNacimiento'].setValue(dia);
  743. this.form.controls['mesNacimiento'].setValue(mes);
  744. this.form.controls['añoNacimiento'].setValue(año);
  745. }
  746. Object.assign(this.valoresCombinados, this.form.getRawValue());
  747. }
  748. if (this.form2.valid) {
  749. if (this.form2.value.padreFechaNacimiento) {
  750. const fechaNacimiento = new Date(this.form2.value.padreFechaNacimiento);
  751. const dia = fechaNacimiento.getDate();
  752. const mes = fechaNacimiento.getMonth() + 1;
  753. const año = fechaNacimiento.getFullYear();
  754. this.form2.controls['padreDiaNacimiento'].setValue(dia);
  755. this.form2.controls['padreMesNacimiento'].setValue(mes);
  756. this.form2.controls['padreAñoNacimiento'].setValue(año);
  757. }
  758. Object.assign(this.valoresCombinados, this.form2.getRawValue());
  759. }
  760. if (this.form3.valid) {
  761. if (this.form3.value.madreFechaNacimiento) {
  762. const fechaNacimiento = new Date(this.form3.value.madreFechaNacimiento);
  763. const dia = fechaNacimiento.getDate();
  764. const mes = fechaNacimiento.getMonth() + 1;
  765. const año = fechaNacimiento.getFullYear();
  766. this.form3.controls['madreDiaNacimiento'].setValue(dia);
  767. this.form3.controls['madreMesNacimiento'].setValue(mes);
  768. this.form3.controls['madreAñoNacimiento'].setValue(año);
  769. }
  770. Object.assign(this.valoresCombinados, this.form3.getRawValue());
  771. }
  772. if (this.form4.valid) {
  773. Object.assign(this.valoresCombinados, this.form4.getRawValue());
  774. }
  775. if (this.form5.valid) {
  776. Object.assign(this.valoresCombinados, this.form5.getRawValue());
  777. }
  778. if (this.form6.valid) {
  779. Object.assign(this.valoresCombinados, this.form6.getRawValue());
  780. }
  781. this._registroAcademico.getOneRegistroAcademico(this.id).subscribe((data: any) => {
  782. this.datos = data.registro[0];
  783. if (this.datos) {
  784. this._registroAcademico.ActualizarRegistroAcademico(this.valoresCombinados).subscribe((data: any) => {
  785. Swal.fire('Actualizació exitosa', data.mensaje, 'success');
  786. });
  787. this._router.navigate(['/homePadres/registroAlumno']);
  788. } else {
  789. this._registroAcademico.createRegistroAcademico(this.valoresCombinados).subscribe((data: any) => {
  790. Swal.fire('Registro exitoso', data.mensaje, 'success');
  791. });
  792. this._router.navigate(['/homePadres/registroAlumno']);
  793. }
  794. });
  795. }
  796. Salir() {
  797. Swal.fire({
  798. title: '¿Estás seguro de salir?',
  799. text: "Para guardar los datos ingresados, presiona el botón 'Guardar y salir'",
  800. icon: 'warning',
  801. showCancelButton: true,
  802. allowEscapeKey: false,
  803. allowOutsideClick: false,
  804. confirmButtonColor: '#3085d6',
  805. cancelButtonColor: '#d33',
  806. confirmButtonText: 'Guardar y salir',
  807. cancelButtonText: 'Salir sin guardar'
  808. }).then((result) => {
  809. if (result.isConfirmed) {
  810. this.onSave();
  811. this._router.navigate(['/homePadres/registroAlumno']);
  812. } else {
  813. this._router.navigate(['/homePadres/registroAlumno']);
  814. }
  815. });
  816. }
  817. }
  818. @Component({
  819. selector: 'app-registro',
  820. templateUrl: './registroAd.component.html',
  821. styleUrls: ['./registro.component.css'],
  822. providers: [provideNativeDateAdapter(),
  823. { provide: MAT_DATE_LOCALE, useValue: 'en-GB' }
  824. ],
  825. })
  826. export class RegistroAdComponent implements OnInit {
  827. Mes = [
  828. { id: '01', nombre: 'Enero' },
  829. { id: '02', nombre: 'Febrero' },
  830. { id: '03', nombre: 'Marzo' },
  831. { id: '04', nombre: 'Abril' },
  832. { id: '05', nombre: 'Mayo' },
  833. { id: '06', nombre: 'Junio' },
  834. { id: '07', nombre: 'Julio' },
  835. { id: '08', nombre: 'Agosto' },
  836. { id: '09', nombre: 'Septiembre' },
  837. { id: '10', nombre: 'Octubre' },
  838. { id: '11', nombre: 'Noviembre' },
  839. { id: '12', nombre: 'Diciembre' },
  840. ];
  841. selectedFile: File | null = null;
  842. GradoCursar: any[] = [];
  843. planPago: any[] = [];
  844. porcentaje: any[] = [];
  845. MetodoPago: any[] = [];
  846. color: string = '';
  847. textColor: string = '';
  848. form!: FormGroup;
  849. form2!: FormGroup;
  850. selected = new FormControl();
  851. radioButton: string = 'No';
  852. formularioCompleto: any = {}
  853. datos: any;
  854. private id: string = '';
  855. isLoading: boolean = true;
  856. dataAlum: any;
  857. nombreAlumno: any;
  858. gradoCur: any;
  859. Padre = JSON.parse(localStorage.getItem('userData') || '');
  860. constructor(private _enviarInfo: EnviarInfoService, private fb: FormBuilder, public dialog: MatDialog, private _registroAdministrativo: RegistroAcademicoService,
  861. private _router: Router, private _gradosEducativos: GradosEducativosService, private route: ActivatedRoute, private _registro: RegistroAcademicoService
  862. ) {
  863. this.formulario();
  864. }
  865. formulario() {
  866. this.form = this.fb.group({
  867. idAlumno: [''],
  868. gradoCursar: [''],
  869. mesInscripcion: [''],
  870. planPago: [''],
  871. becaCurso: [''],
  872. becaPorcentaje: [''],
  873. });
  874. this.form2 = this.fb.group({
  875. factura: [''],
  876. metedoPago: ['EF'],
  877. RFCFactura: ['XAXX010101000'],
  878. razonSocial: ['PUBLICO EN GENERAL'],
  879. domicilioFactura: [''],
  880. correoFactura: ['', [Validators.pattern('^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$')]],
  881. usuarioRegistro: [this.Padre[0]],
  882. cuentaPago: [''],
  883. constanciaFiscal: ['']
  884. });
  885. this.form2.get('domicilioFactura')?.disable();
  886. this.form2.get('correoFactura')?.disable();
  887. this.form2.get('razonSocial')?.disable();
  888. this.form2.get('RFCFactura')?.disable();
  889. this.form2.get('metedoPago')?.disable();
  890. }
  891. onFileSelected(event: any) {
  892. const file = event.target.files[0];
  893. if (file) {
  894. if (file.type !== 'application/pdf') {
  895. Swal.fire('Error', 'Solo se permiten archivos PDF', 'error');
  896. event.target.value = '';
  897. this.selectedFile = null;
  898. return;
  899. }
  900. if (file.size > 5 * 1024 * 1024) {
  901. Swal.fire('Error', 'El archivo no puede ser mayor a 5MB', 'error');
  902. event.target.value = '';
  903. this.selectedFile = null;
  904. return;
  905. }
  906. this.selectedFile = file;
  907. this.form2.get('constanciaFiscal')?.setValue(file.name);
  908. }
  909. }
  910. cargarFormulario() {
  911. this._registroAdministrativo.getOneRegistroAdmin(this.id).subscribe((data: any) => {
  912. this.isLoading = false;
  913. this.datos = data.registro[0];
  914. if (this.datos != undefined) {
  915. this.form.get('gradoCursar')?.setValue(this.datos.RegA_GradoCursar);
  916. this.form.get('mesInscripcion')?.setValue(this.datos.RegA_MesInscripcion);
  917. this.form.get('planPago')?.setValue(this.datos.RegA_PlanPagos);
  918. this.form.get('becaCurso')?.setValue(this.datos.RegA_BecaCurso);
  919. this.form.get('becaPorcentaje')?.setValue(this.datos.RegA_BecaPorcentaje);
  920. this.form2.get('factura')?.setValue(this.datos.RegA_RequiereFactura);
  921. // Actualiza controles según valor de factura
  922. this.factura({ value: this.datos.RegA_RequiereFactura });
  923. this.form2.get('metedoPago')?.setValue(this.datos.RegA_MetodoPago);
  924. this.form2.get('RFCFactura')?.setValue(this.datos.RegA_RfcFactura);
  925. this.form2.get('razonSocial')?.setValue(this.datos.RegA_NombreFactura);
  926. this.form2.get('domicilioFactura')?.setValue(this.datos.RegA_DireccionFactura);
  927. this.form2.get('correoFactura')?.setValue(this.datos.RegA_CorreoFactura);
  928. this.form2.get('cuentaPago')?.setValue(this.datos.RegA_CuentaPago);
  929. if (this.datos.RegA_RequiereFactura === 'No') {
  930. // Borra archivo porque ya no requiere factura
  931. this.selectedFile = null;
  932. this.form2.get('constanciaFiscal')?.setValue(null);
  933. } else {
  934. // Mostrar archivo si existe
  935. if (this.datos.RegA_ConstanciaFiscal) {
  936. this.form2.get('constanciaFiscal')?.setValue(this.datos.RegA_ConstanciaFiscal);
  937. }
  938. }
  939. }
  940. });
  941. }
  942. factura(event: any) {
  943. if (event.value === 'No') {
  944. this.form2.get('metedoPago')?.setValue('EF');
  945. this.form2.get('RFCFactura')?.setValue('XAXX010101000');
  946. this.form2.get('razonSocial')?.setValue('PUBLICO EN GENERAL');
  947. this.form2.get('correoFactura')?.setValue('NA');
  948. this.form2.get('domicilioFactura')?.setValue('NA');
  949. this.form2.get('cuentaPago')?.setValue('00');
  950. this.form2.get('domicilioFactura')?.clearValidators();
  951. this.form2.get('correoFactura')?.clearValidators();
  952. this.form2.get('razonSocial')?.clearValidators();
  953. this.form2.get('RFCFactura')?.clearValidators();
  954. this.form2.get('metedoPago')?.clearValidators();
  955. this.form2.get('domicilioFactura')?.disable();
  956. this.form2.get('correoFactura')?.disable();
  957. this.form2.get('razonSocial')?.disable();
  958. this.form2.get('RFCFactura')?.disable();
  959. this.form2.get('metedoPago')?.disable();
  960. this.form2.get('constanciaFiscal')?.disable();
  961. this.selectedFile = null;
  962. this.form2.get('constanciaFiscal')?.setValue(null);
  963. } else {
  964. this.form2.get('metedoPago')?.setValue('');
  965. this.form2.get('RFCFactura')?.setValue('');
  966. this.form2.get('razonSocial')?.setValue('');
  967. this.form2.get('domicilioFactura')?.setValue('');
  968. this.form2.get('correoFactura')?.setValue('');
  969. this.form2.get('cuentaPago')?.setValue('01');
  970. this.form2.get('domicilioFactura')?.setValidators([Validators.required]);
  971. this.form2.get('correoFactura')?.setValidators([Validators.required, Validators.pattern('^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$')]);
  972. this.form2.get('razonSocial')?.setValidators([Validators.required]);
  973. this.form2.get('RFCFactura')?.setValidators([Validators.required]);
  974. this.form2.get('metedoPago')?.setValidators([Validators.required]);
  975. this.form2.get('domicilioFactura')?.enable();
  976. this.form2.get('correoFactura')?.enable();
  977. this.form2.get('razonSocial')?.enable();
  978. this.form2.get('RFCFactura')?.enable();
  979. this.form2.get('metedoPago')?.enable();
  980. this.form2.get('constanciaFiscal')?.enable();
  981. }
  982. this.form2.get('domicilioFactura')?.updateValueAndValidity();
  983. this.form2.get('correoFactura')?.updateValueAndValidity();
  984. this.form2.get('razonSocial')?.updateValueAndValidity();
  985. this.form2.get('RFCFactura')?.updateValueAndValidity();
  986. this.form2.get('metedoPago')?.updateValueAndValidity();
  987. this.form2.get('constanciaFiscal')?.updateValueAndValidity();
  988. }
  989. siguienteTap(index: number) {
  990. if (this.form.invalid) {
  991. this.form.markAllAsTouched();
  992. return
  993. }
  994. this.selected.setValue(index);
  995. }
  996. Salir() {
  997. Swal.fire({
  998. title: '¿Estás seguro de salir?',
  999. text: "Para guardar los datos ingresados, presiona el botón 'Guardar y salir'",
  1000. icon: 'warning',
  1001. showCancelButton: true,
  1002. allowEscapeKey: false,
  1003. allowOutsideClick: false,
  1004. confirmButtonColor: '#3085d6',
  1005. cancelButtonColor: '#d33',
  1006. confirmButtonText: 'Guardar y salir',
  1007. cancelButtonText: 'Salir sin guardar'
  1008. }).then((result) => {
  1009. if (result.isConfirmed) {
  1010. this.guardarFormulario();
  1011. this._router.navigate(['/homePadres/registroAlumno']);
  1012. } else {
  1013. this._router.navigate(['/homePadres/registroAlumno']);
  1014. }
  1015. });
  1016. }
  1017. isValidField(field: string, errorType: string) {
  1018. const control = this.form.get(field);
  1019. return control?.hasError(errorType) && control?.touched;
  1020. }
  1021. isValidField1(field: string, errorType: string) {
  1022. const control = this.form2.get(field);
  1023. return control?.hasError(errorType) && control?.touched;
  1024. }
  1025. ngOnInit(): void {
  1026. let idNivel: any;
  1027. this._enviarInfo.currentTextColor.subscribe(textColor => {
  1028. this.textColor = textColor;
  1029. });
  1030. this._enviarInfo.currentColor.subscribe(color => {
  1031. this.color = color;
  1032. });
  1033. this.route.paramMap.subscribe(params => {
  1034. const id = params.get('id');
  1035. this.id = atob(id || '');
  1036. });
  1037. this.form.get('idAlumno')?.setValue(this.id);
  1038. this._registro.getOne(this.id).subscribe((data: any) => {
  1039. this.dataAlum = data;
  1040. this.nombreAlumno = data[0].nombreUsuario;
  1041. });
  1042. this._gradosEducativos.getAll().subscribe((data: any) => {
  1043. if (data) {
  1044. for (let i = 0; i < data.length; i++) {
  1045. if (data[i].nombreGrado == this.dataAlum[0].grado) {
  1046. idNivel = data[i].idNivel;
  1047. }
  1048. }
  1049. }
  1050. this.GradoCursar = data.filter((data: any) => data.idNivel == idNivel);
  1051. });
  1052. this._registroAdministrativo.getPlanPago().subscribe((data: any) => {
  1053. this.planPago = data.planPago.filter((data: any) => data.idNivelPlanPago == idNivel);
  1054. });
  1055. this._registroAdministrativo.getPorcentajeBeca().subscribe((data: any) => {
  1056. this.porcentaje = data.porcentajeBeca;
  1057. });
  1058. this._registroAdministrativo.getMetodoPago().subscribe((data: any) => {
  1059. this.MetodoPago = data.metodoPago;
  1060. });
  1061. this.cargarFormulario();
  1062. }
  1063. async guardarFormulario() {
  1064. if (this.form2.invalid) {
  1065. this.form2.markAllAsTouched();
  1066. return;
  1067. }
  1068. try {
  1069. // Habilita temporalmente los campos deshabilitados
  1070. this.form2.get('domicilioFactura')?.enable();
  1071. this.form2.get('correoFactura')?.enable();
  1072. this.form2.get('razonSocial')?.enable();
  1073. this.form2.get('RFCFactura')?.enable();
  1074. this.form2.get('metedoPago')?.enable();
  1075. // Combina los valores de ambos formularios
  1076. const formularioCompleto = {
  1077. ...this.form.getRawValue(),
  1078. ...this.form2.getRawValue(),
  1079. idEscuela: 'COLEGIOABC',
  1080. };
  1081. // Construir FormData
  1082. const formData = new FormData();
  1083. for (const key in formularioCompleto) {
  1084. if (formularioCompleto[key] !== null && formularioCompleto[key] !== undefined) {
  1085. formData.append(key, formularioCompleto[key]);
  1086. }
  1087. }
  1088. // Si hay archivo seleccionado, lo agregamos al FormData
  1089. if (this.selectedFile) {
  1090. formData.append('constanciaFiscal', this.selectedFile, this.selectedFile.name);
  1091. }
  1092. // Vuelve a deshabilitar los campos
  1093. this.form2.get('domicilioFactura')?.disable();
  1094. this.form2.get('correoFactura')?.disable();
  1095. this.form2.get('razonSocial')?.disable();
  1096. this.form2.get('RFCFactura')?.disable();
  1097. this.form2.get('metedoPago')?.disable();
  1098. // Decide si crear o actualizar
  1099. this._registroAdministrativo.getOneRegistroAdmin(this.id).subscribe((data: any) => {
  1100. const idAlumno = this.form.get('idAlumno')?.value;
  1101. if (data.registro && data.registro.length > 0) {
  1102. this._registroAdministrativo.actualizarRegistroAdministrativo(formData, idAlumno).subscribe(
  1103. (res: any) => {
  1104. Swal.fire('Actualización exitosa', res.mensaje, 'success');
  1105. this._router.navigate(['/homePadres/registroAlumno']);
  1106. },
  1107. (error) => {
  1108. Swal.fire('Error', 'No se pudo actualizar el registro', 'error');
  1109. console.error('Error al actualizar:', error);
  1110. }
  1111. );
  1112. } else {
  1113. this._registroAdministrativo.crearRegistroAdministrativo(formData).subscribe(
  1114. (res: any) => {
  1115. Swal.fire('Registro exitoso', res.mensaje, 'success');
  1116. this._router.navigate(['/homePadres/registroAlumno']);
  1117. },
  1118. (error) => {
  1119. Swal.fire('Error', 'No se pudo crear el registro', 'error');
  1120. console.error('Error al crear:', error);
  1121. }
  1122. );
  1123. }
  1124. });
  1125. } catch (error) {
  1126. console.error('Error en guardarFormulario:', error);
  1127. Swal.fire('Error', 'Ocurrió un error al procesar el formulario', 'error');
  1128. }
  1129. }
  1130. Asistente() {
  1131. const asistente = this.dialog.open(Asistente, {
  1132. data: this.form2.getRawValue().domicilioFactura
  1133. });
  1134. asistente.afterClosed().subscribe((result) => {
  1135. if (result) {
  1136. let domicilio = `${result.calle}, ${result.exterior}, ${result.interior}, ${result.colonia}, ${result.localidad}, ${result.municipio}, ${result.estado}, ${result.pais}, ${result.CP}, ${result.referencia}`;
  1137. this.form2.get('domicilioFactura')?.setValue(domicilio.trim());
  1138. }
  1139. });
  1140. }
  1141. }
  1142. @Component({
  1143. selector: 'App-Asistente',
  1144. templateUrl: './Asistente.html',
  1145. styleUrls: ['./registro.component.css'],
  1146. standalone: true,
  1147. imports: [MatDialogActions, MatDialogClose, MatButtonModule, MatFormFieldModule, MatInputModule, MatIcon, CommonModule, ReactiveFormsModule, MatOption, MatSelectModule]
  1148. })
  1149. export class Asistente {
  1150. estados = [
  1151. 'Aguascalientes',
  1152. 'Baja California',
  1153. 'Baja California Sur',
  1154. 'Campeche',
  1155. 'Chiapas',
  1156. 'Chihuahua',
  1157. 'Coahuila',
  1158. 'Colima',
  1159. 'Ciudad de México',
  1160. 'Durango',
  1161. 'Guanajuato',
  1162. 'Guerrero',
  1163. 'Hidalgo',
  1164. 'Jalisco',
  1165. 'Mexico',
  1166. 'Michoacan',
  1167. 'Morelos',
  1168. 'Nayarit',
  1169. 'Nuevo Leon',
  1170. 'Oaxaca',
  1171. 'Puebla',
  1172. 'Queretaro',
  1173. 'Quintana Roo',
  1174. 'San Luis Potosi',
  1175. 'Sinaloa',
  1176. 'Sonora',
  1177. 'Tabasco',
  1178. 'Tamaulipas',
  1179. 'Tlaxcala',
  1180. 'Veracruz',
  1181. 'Yucatan',
  1182. 'Zacatecas',
  1183. ];
  1184. form!: FormGroup;
  1185. maxCaracteres: number = 0;
  1186. constructor(public dialogRef: MatDialogRef<Asistente>, private fb: FormBuilder, @Inject(MAT_DIALOG_DATA) public data: any) {
  1187. this.Formulario();
  1188. }
  1189. Formulario() {
  1190. this.form = this.fb.group({
  1191. calle: ['', [Validators.required, Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')]],
  1192. exterior: ['', [Validators.required, Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')]],
  1193. interior: [''],
  1194. colonia: ['', [Validators.required, Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')]],
  1195. localidad: ['', [Validators.required, Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')]],
  1196. municipio: ['', [Validators.required, Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')]],
  1197. estado: ['', [Validators.required]],
  1198. CP: ['', [Validators.required, Validators.pattern('^[0-9]{5}$')]],
  1199. pais: ['', [Validators.required, Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')]],
  1200. referencia: ['', [Validators.required, Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')]],
  1201. });
  1202. }
  1203. isValidField(field: string, errorType: string) {
  1204. const control = this.form.get(field);
  1205. return control?.hasError(errorType) && control?.touched;
  1206. }
  1207. ngOnInit(): void {
  1208. if (this.data) {
  1209. const dataArr = this.data.split(',').map((item: any) => item.trim());
  1210. this.form = this.fb.group({
  1211. calle: [dataArr[0], [Validators.required, Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')]],
  1212. exterior: [dataArr[1], [Validators.required, Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')]],
  1213. interior: [dataArr[2]],
  1214. colonia: [dataArr[3], [Validators.required, Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')]],
  1215. localidad: [dataArr[4], [Validators.required, Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')]],
  1216. municipio: [dataArr[5], [Validators.required, Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')]],
  1217. estado: [dataArr[6], [Validators.required]],
  1218. CP: [dataArr[8], [Validators.required, Validators.pattern('^[0-9]{5}$')]],
  1219. pais: [dataArr[7], [Validators.required, Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')]],
  1220. referencia: [dataArr[9], [Validators.required, Validators.pattern('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ,.][a-zA-Z0-9\\sáéíóúÁÉÍÓÚñÑ,.]*$')]],
  1221. });
  1222. }
  1223. }
  1224. guardar() {
  1225. if (this.form.invalid) {
  1226. this.form.markAllAsTouched();
  1227. return;
  1228. }
  1229. if (this.form.value.interior === '') {
  1230. this.form.get('interior')?.setValue('N/A');
  1231. }
  1232. this.dialogRef.close(this.form.value);
  1233. }
  1234. max() {
  1235. this.maxCaracteres = this.form.get('referencia')?.value.length
  1236. }
  1237. }