Prechádzať zdrojové kódy

formulario y consumo de api de consulta

alanittec 2 rokov pred
rodič
commit
fc1fc5a27e

+ 41 - 35
sistema-mantenimiento-front/src/app/components/gdel/addo/addo.component.html

@@ -1,9 +1,9 @@
 <div class="items-container animated fadeIn">
     <div id="navigation" class="mb-8">
         <div class="prev-page prevent-select indigo_primary_background mat-elevation-z8"
-            [routerLink]="['/sam/ADSI/CRAV']" matRipple>
+            [routerLink]="['/sam/GDEL']" matRipple>
             <mat-icon style="color: white;">arrow_back</mat-icon>
-            <div class="page-name ml-4">Administración de Documentos</div>
+            <div class="page-name ml-4">Administración de documentos</div>
         </div>
     </div>
     <mat-card class="override-elevation-z8"
@@ -25,52 +25,57 @@
             <div class="row-advices pt-8">
                 <mat-form-field appearance="outline" style="width: calc(50% - 8px);">
                     <mat-label>Nombre del archivo</mat-label>
-                    <input type="text" matInput maxlength="100" #AFAL_NOAR>
-                    <mat-hint align="end">{{AFAL_NOAR.value.length}} / 100</mat-hint>
-                    <!-- <mat-error *ngIf="adviceTitle.hasError('required')">
-                        El título del aviso es <strong>requerido</strong>.
+                    <input type="text" matInput maxlength="100" #NOAR [formControl]="AFAL_NOAR"
+                        [errorStateMatcher]="errorMatcher">
+                    <mat-hint align="end">{{NOAR.value.length}} / 100</mat-hint>
+                    <mat-error *ngIf="AFAL_NOAR.hasError('required')">
+                        El nombre del documento es <strong>requerido</strong>.
                     </mat-error>
-                    <mat-error *ngIf="adviceTitle.hasError('minlength')">
-                        El título del aviso debe tener al menos <strong>8 caracteres</strong>.
+                    <mat-error *ngIf="AFAL_NOAR.hasError('minlength')">
+                        El nombre del documento debe tener al menos <strong>8 caracteres</strong>.
+                    </mat-error>
+                    <mat-error *ngIf="AFAL_NOAR.hasError('maxlength')">
+                        El nombre del documento debe tener máximo <strong>100 caracteres</strong>.
                     </mat-error>
-                    <mat-error *ngIf="adviceTitle.hasError('maxlength')">
-                        El título del aviso debe tener máximo <strong>100 caracteres</strong>.
-                    </mat-error> -->
                 </mat-form-field>
+
                 <mat-form-field appearance="outline" style="width: calc(50% - 8px);">
-                    <mat-label>Código del módulo</mat-label>
-                    <input type="text" matInput maxlength="100" #AFAL_COMO>
-                    <!-- <mat-error *ngIf="adviceTitle.hasError('required')">
-                        El título del aviso es <strong>requerido</strong>.
-                    </mat-error>
-                    <mat-error *ngIf="adviceTitle.hasError('minlength')">
-                        El título del aviso debe tener al menos <strong>8 caracteres</strong>.
+                    <mat-label>Clasificación del documento</mat-label>
+                    <mat-select #CLDO [formControl]="AFAL_CLDO" [errorStateMatcher]="errorMatcher">
+                        <mat-option *ngFor="let cld of docClassificationAux; let i = index;"
+                            [value]=cld.code>{{cld.category}}</mat-option>
+                    </mat-select>
+                    <mat-error *ngIf="AFAL_CLDO.hasError('required')">
+                        La clasificación del documento es <strong>requerido</strong>.
                     </mat-error>
-                    <mat-error *ngIf="adviceTitle.hasError('maxlength')">
-                        El título del aviso debe tener máximo <strong>100 caracteres</strong>.
-                    </mat-error> -->
                 </mat-form-field>
             </div>
 
             <div class="row-advices pt-8">
                 <mat-form-field appearance="outline" style="width: calc(50% - 8px);">
-                    <mat-label>Clasificación del documento</mat-label>
-                    <mat-select #AFAL_CLDO>
-                        <mat-option *ngFor="let cld of docClassificationAux; let i = index;" [value]=cld.code>{{cld['category']}}</mat-option>
+                    <mat-label>Código del módulo</mat-label>
+                    <mat-select #COMO [formControl]="AFAL_COMO" [errorStateMatcher]="errorMatcher">
+                        <mat-option *ngFor="let mod of modules; let i = index;"
+                            [value]=mod.MODU_IDMO>{{mod.MODU_NOMB}}</mat-option>
                     </mat-select>
-<!--                     <mat-error *ngIf="GIRO_EMPRESARIAL?.invalid">{{ getErrorMessage('GIRO_EMPRESARIAL') }}</mat-error>
- -->
-                    <!-- <mat-error *ngIf="adviceTitle.hasError('required')">
-                        El título del aviso es <strong>requerido</strong>.
-                    </mat-error>
-                    <mat-error *ngIf="adviceTitle.hasError('minlength')">
-                        El título del aviso debe tener al menos <strong>8 caracteres</strong>.
+                    <mat-error *ngIf="AFAL_COMO.hasError('required')">
+                        El código del módulo es <strong>requerido</strong>.
                     </mat-error>
-                    <mat-error *ngIf="adviceTitle.hasError('maxlength')">
-                        El título del aviso debe tener máximo <strong>100 caracteres</strong>.
-                    </mat-error> -->
                 </mat-form-field>
 
+                <mat-form-field appearance="outline" style="width: calc(50% - 8px);">
+                    <mat-label>Usuarios con acceso</mat-label>
+                    <mat-select multiple [formControl]="AFAL_USAC">
+                        <mat-optgroup *ngFor="let group of divisions" [label]="group.name">
+                            <mat-option *ngFor="let option of group.division" [value]="option.value">
+                                {{ option.viewValue }}
+                            </mat-option>
+                        </mat-optgroup>
+                    </mat-select>
+                    <!-- <mat-error *ngIf="AFAL_USAC.hasError('required')">
+                        La audiencia del aviso es <strong>requerida</strong>.
+                    </mat-error> -->
+                </mat-form-field>
             </div>
 
             <div class="row-advices pt-8">
@@ -120,7 +125,8 @@
                 <tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
 
                 <tr class="mat-row" *matNoDataRow>
-                    <td class="mat-cell" colspan="100%" *ngIf="attached.length == 0">Aún no se ha adjuntado nungún
+                    <td class="mat-cell" style="text-align: center;" colspan="100%" *ngIf="attached.length == 0">Aún no
+                        se ha adjuntado nungún
                         archivo</td>
                 </tr>
             </table>

+ 191 - 33
sistema-mantenimiento-front/src/app/components/gdel/addo/addo.component.ts

@@ -1,24 +1,54 @@
 import { HttpErrorResponse } from '@angular/common/http';
-import { Component, ViewChild, OnInit, AfterViewInit, ElementRef } from '@angular/core';
-import { MatDialog } from '@angular/material/dialog';
+import {
+  Component,
+  ViewChild,
+  OnInit,
+  ElementRef,
+} from '@angular/core';
 import { MatPaginator } from '@angular/material/paginator';
 import { MatSort } from '@angular/material/sort';
 import { MatTableDataSource } from '@angular/material/table';
-import { Router } from '@angular/router';
 import { lastValueFrom } from 'rxjs';
 import { EncService } from 'src/app/services/enc/enc.service';
 import { ResourcesService } from 'src/app/services/resources/resources.service';
 import { ActivatedRoute } from '@angular/router';
 import { MatSnackBar } from '@angular/material/snack-bar';
-import { availableFiles, docClassification } from 'src/environments/environment.prod';
+import {
+  availableFiles,
+  docClassification,
+} from 'src/environments/environment.prod';
 import { MatchErrors } from '../../users-profiles/profiles-admin/new-profile/new-profile.component';
 import { FormControl, Validators } from '@angular/forms';
-import { DocumentManagementService } from 'src/app/services/document-management.service';
+import { DocumentManagementService } from 'src/app/services/gdel/document-management.service';
+import { GETBGMService } from 'src/app/services/getb/getbgm/getbgm.service';
+import { UsersProfilesService } from 'src/app/services/users-profiles.service';
+import { UsersResponse } from 'src/app/interfaces/users.interface';
+import { ProfilesResponse } from 'src/app/interfaces/profiles.interface';
 export interface TempFileInfo {
   id: string;
   name: string;
   size: string;
 }
+export interface Division {
+  value: string;
+  viewValue: string;
+}
+export interface ModuloResponse {
+  CODIGO_MODULO: string;
+  MODULO: string;
+  FECHA_REG: string;
+  FECHA_MOD: string;
+  ESTADO: string;
+}
+export interface ResponseData {
+  error: boolean;
+  msg: string;
+  response: Array<ModuloResponse>;
+}
+export interface DivisionGroup {
+  name: string;
+  division: Division[];
+}
 @Component({
   selector: 'app-addo',
   templateUrl: './addo.component.html',
@@ -34,7 +64,10 @@ export class ADDOComponent implements OnInit {
   public isUploading: boolean;
   public downloadLink: String;
   public docClassificationAux: any;
-  attached: TempFileInfo[];
+  public modules: any;
+  public arr_submodulo: any;
+  public divisions: DivisionGroup[];
+  public attached: TempFileInfo[];
 
   dataSource?: MatTableDataSource<TempFileInfo>;
   displayedColumns: string[] = ['ID', 'NOMBRE', 'PESO', 'ACCIONES'];
@@ -44,19 +77,23 @@ export class ADDOComponent implements OnInit {
   @ViewChild('download') a?: ElementRef;
 
   errorMatcher = new MatchErrors();
-  AFAL_NOAR = new FormControl('', [Validators.required, Validators.minLength(8), Validators.maxLength(100)]);
+  AFAL_NOAR = new FormControl('', [
+    Validators.required,
+    Validators.minLength(8),
+    Validators.maxLength(100),
+  ]);
   AFAL_CLDO = new FormControl('', Validators.required);
   AFAL_COMO = new FormControl('', Validators.required);
-  
+  AFAL_USAC = new FormControl('');
+
   constructor(
     private _encService: EncService,
     private _resourcesServices: ResourcesService,
-    private _dialog: MatDialog,
-    private _router: Router,
+    private _moduloService: GETBGMService,
     private _routeActivated: ActivatedRoute,
     private _snackBar: MatSnackBar,
     private _documentManagement: DocumentManagementService,
-
+    private _usersProfilesService: UsersProfilesService
   ) {
     this.isNew = false;
     this.isLoading = true;
@@ -66,16 +103,20 @@ export class ADDOComponent implements OnInit {
     this.actionForm = 'Crear Documento';
     this.isUploading = false;
     this.attached = [];
+    this.modules = [];
+    this.arr_submodulo = [];
     this.downloadLink = '';
     this.docClassificationAux = docClassification;
+    this.divisions = [];
   }
 
   ngOnInit(): void {
+    this.consultarModulos();
     this._routeActivated.queryParams.subscribe((params) => {
       let idDoc = params['idDoc'];
       this.isNew = idDoc == undefined;
       if (this.isNew) {
-        //this.getData();
+        this.getData();
       } else {
         this.idDocument = idDoc;
         //this.getAdvice(idAvi);
@@ -84,8 +125,96 @@ export class ADDOComponent implements OnInit {
     this.isLoading = false;
   }
 
-  public goBack(steps: number) {
-    window.history.go(steps * -1);
+  async getData() {
+    try {
+      let idEnc = localStorage.getItem('idusuario')!;
+      let idDec = await this._encService.desencriptar(idEnc);
+      let shortEnc = await lastValueFrom(this._encService.shortEncrypt(idEnc));
+
+      let users: UsersResponse = await lastValueFrom(
+        this._usersProfilesService.getUsers(shortEnc.response.encrypted, 1)
+      );
+      this.errorStr = users.msg;
+      this.hasError = users.error;
+
+      if (this.hasError) {
+        this.isLoading = false;
+      } else {
+        let profiles: ProfilesResponse = await lastValueFrom(
+          this._usersProfilesService.getProfiles(shortEnc.response.encrypted, 1)
+        );
+        this.errorStr = profiles.msg;
+        this.hasError = profiles.error;
+
+        if (this.hasError) {
+          this.isLoading = false;
+        } else {
+          let profilesGroup: DivisionGroup = {
+            name: 'Perfiles',
+            division: [],
+          };
+
+          profiles.response.forEach((profile) => {
+            let profileDisplay: Division = {
+              value: `prof-${profile.IDPERFIL}`,
+              viewValue: profile.NOMBREPERFIL,
+            };
+
+            if (profile.ESTATUS != 'Eliminado')
+              profilesGroup.division.push(profileDisplay);
+          });
+
+          this.divisions.push(profilesGroup);
+
+          let usersGroup: DivisionGroup = {
+            name: 'Usuarios',
+            division: [],
+          };
+
+          users.response.forEach((user) => {
+            let userName = this.buildName(
+              user.NOMBRE,
+              user.APEPAT,
+              user.APEMAT
+            );
+            let userID = `user-${user.IDUSUARIO}`;
+
+            let userDisplay: Division = {
+              value: userID,
+              viewValue: userName,
+            };
+
+            if (user.IDUSUARIO != idDec) {
+              if (user.ESTATUS == 'Activo')
+                usersGroup.division.push(userDisplay);
+            }
+          });
+
+          this.divisions.push(usersGroup);
+
+          if (this.isNew) {
+            let initialFiles: TempFileInfo[] = [];
+            this.dataSource = new MatTableDataSource(initialFiles);
+          }
+
+          this.isLoading = false;
+        }
+      }
+    } catch (error: any) {
+      this.isLoading = false;
+      this.hasError = true;
+
+      if (error.error == undefined || error.error == null) {
+        this.errorStr = 'Ocurrió un error inesperado.';
+      } else if (error.error.msg == undefined || error.error.msg == null) {
+        this.errorStr = 'Ocurrió un error inesperado.';
+      } else {
+        this.errorStr = error.error.msg;
+      }
+    }
+
+    console.log(this.divisions);
+    
   }
 
   checkFile(event: any) {
@@ -176,36 +305,40 @@ export class ADDOComponent implements OnInit {
     }
   }
 
-  async deleteFile(id: string){
-    try{
+  async deleteFile(id: string) {
+    try {
       let idUser = localStorage.getItem('idusuario');
-      let idUserShort = await lastValueFrom(this._encService.shortEncrypt(idUser!));
+      let idUserShort = await lastValueFrom(
+        this._encService.shortEncrypt(idUser!)
+      );
 
-      let response = await lastValueFrom(this._documentManagement.deleteTempFile({
-        'id_user': idUserShort.response.encrypted,
-        'id_file': id,
-        'linea': 1,
-      }));
+      let response = await lastValueFrom(
+        this._documentManagement.deleteTempFile({
+          id_user: idUserShort.response.encrypted,
+          id_file: id,
+          linea: 1,
+        })
+      );
 
-      if(response.error){
+      if (response.error) {
         this.openSnackBar(response.msg);
-      }else{
+      } else {
         let attachedAux: TempFileInfo[] = [];
-        this.attached.forEach(file => {
-          if(file.id != id) attachedAux.push(file);
+        this.attached.forEach((file) => {
+          if (file.id != id) attachedAux.push(file);
         });
 
         this.attached = attachedAux;
         this.dataSource = new MatTableDataSource(this.attached);
       }
-    }catch(error: any){
+    } catch (error: any) {
       this.isUploading = false;
-      let msg = "";
-      if(error.error == undefined){
+      let msg = '';
+      if (error.error == undefined) {
         msg = 'Ocurrió un error insperado.';
-      }else if(error.error.msg == undefined){
+      } else if (error.error.msg == undefined) {
         msg = 'Ocurrió un error insperado.';
-      }else{
+      } else {
         msg = error.error.msg;
       }
 
@@ -213,8 +346,8 @@ export class ADDOComponent implements OnInit {
     }
   }
 
-  async downloadFile(idFile: string){
-/*     try{
+  async downloadFile(idFile: string) {
+    /*     try{
       let shortAvi = await lastValueFrom(this._encService.shortEncrypt(idFile));
       let idEnc = localStorage.getItem('idusuario');
       let shortEnc = await lastValueFrom(this._encService.shortEncrypt(idEnc!));
@@ -238,6 +371,19 @@ export class ADDOComponent implements OnInit {
     } */
   }
 
+  public async consultarModulos() {
+    this.isLoading = true;
+    await lastValueFrom(this._moduloService.getModules()).then(
+      (data: ResponseData) => {
+        console.log(data.response);
+
+        this.modules = data.response;
+      },
+      (error: HttpErrorResponse) => this._resourcesServices.checkErrors(error)
+    );
+    this.isLoading = false;
+  }
+
   formatBytes(bytes: number, decimals = 2) {
     if (bytes === 0) return '0 Bytes';
 
@@ -255,4 +401,16 @@ export class ADDOComponent implements OnInit {
       duration: 2500,
     });
   }
+
+  buildName(nomb: string, appa: string, apma?: string): string {
+    if (apma == '' || apma == null || apma == undefined) {
+      return `${nomb} ${appa}`;
+    } else {
+      return `${nomb} ${appa} ${apma}`;
+    }
+  }
+
+  public goBack(steps: number) {
+    window.history.go(steps * -1);
+  }
 }

+ 16 - 15
sistema-mantenimiento-front/src/app/components/gdel/gdel.component.html

@@ -4,14 +4,14 @@
         <div class="prev-page prevent-select indigo_primary_background mat-elevation-z8" matRipple
             [routerLink]="['/sam/home']">
             <mat-icon style="color: white">arrow_back</mat-icon>
-            <div class="page-name ml-4">Menú Principal</div>
+            <div class="page-name ml-4">Menú principal</div>
         </div>
     </header>
 
     <mat-card class="override-card-GDEL override-elevation-z8">
-        <section class="override-section" >
+        <section class="override-section">
             <nav class="override-nav">
-                <mat-card-title class="mat-card-title centre">Administración de Documentos</mat-card-title>
+                <mat-card-title class="mat-card-title centre">Administración de documentos</mat-card-title>
                 <mat-drawer-container class="example-container">
                     <mat-drawer mode="side" opened class="mat-options">
                         <div>
@@ -21,14 +21,14 @@
                                     <ul *ngIf="!ulOptSmall">
                                         <li class="container" *ngFor="let row of options;let i = index"
                                             [ngClass]="{'active': clickedIndex == i}"
-                                            (click)="clickedIndex == i? clickedIndex = null : clickedIndex = i">
+                                            (click)="clickedIndex == i? clickedIndex = null : clickedIndex = i; selectTab(i)">
                                             <mat-icon class="maticon-drawer">{{row.icon}}</mat-icon> {{row.items}}
                                         </li>
                                     </ul>
                                     <ul *ngIf="ulOptSmall">
                                         <li class="container" *ngFor="let row of options;let i = index"
                                             [ngClass]="{'active': clickedIndex == i}"
-                                            (click)="clickedIndex == i? clickedIndex = null : clickedIndex = i"
+                                            (click)="clickedIndex == i? clickedIndex = null : clickedIndex = i; selectTab(i)"
                                             matTooltip="">
                                             <mat-icon class="maticon-drawer">{{row.icon}}</mat-icon>
                                         </li>
@@ -54,14 +54,15 @@
                                 <button mat-raised-button color="primary" matTooltip=""
                                     [routerLink]="['/sam/GDEL/ADDO/crear']" [disabled]="isLoadingForm" *ngIf="!btnSmall"
                                     class="override-no-shadow mr-10">
-                                    <mat-icon>note_add</mat-icon> Registrar Documento
+                                    <mat-icon>note_add</mat-icon> Registrar documento
                                 </button>
                                 <button mat-mini-fab color="primary" class="override-no-shadow mr-8"
-                                    [disabled]="isLoadingForm" *ngIf="btnSmall" matTooltip="Registrar Documento">
+                                    [routerLink]="['/sam/GDEL/ADDO/crear']" [disabled]="isLoadingForm" *ngIf="btnSmall"
+                                    matTooltip="Registrar Documento">
                                     <mat-icon>note_add</mat-icon>
                                 </button>
                                 <button mat-mini-fab color="info" matTooltip="Actualizar Datos"
-                                    class="override-no-shadow mr-10">
+                                    class="override-no-shadow mr-10" (click)="getDocuments()">
                                     <mat-icon>refresh</mat-icon>
                                 </button>
                             </div>
@@ -83,17 +84,17 @@
 
                                     <ng-container matColumnDef="NAME">
                                         <th mat-header-cell *matHeaderCellDef mat-sort-header>Nombre</th>
-                                        <td mat-cell *matCellDef="let row">{{ row.NAME }}</td>
+                                        <td mat-cell *matCellDef="let row">{{ row.NOMBRE_ARC }}</td>
                                     </ng-container>
 
                                     <ng-container matColumnDef="EXT">
                                         <th mat-header-cell *matHeaderCellDef mat-sort-header>Extensión</th>
-                                        <td mat-cell *matCellDef="let row">{{ row.EXT }}</td>
+                                        <td mat-cell *matCellDef="let row">{{ row.EXTENSION }}</td>
                                     </ng-container>
 
                                     <ng-container matColumnDef="SIZE">
                                         <th mat-header-cell *matHeaderCellDef mat-sort-header>Tamaño</th>
-                                        <td mat-cell *matCellDef="let row">{{ row.SIZE }}</td>
+                                        <td mat-cell *matCellDef="let row">{{ row.TAMANIO }}</td>
                                     </ng-container>
 
                                     <ng-container matColumnDef="VERSION">
@@ -102,13 +103,13 @@
                                     </ng-container>
 
                                     <ng-container matColumnDef="FRMOD">
-                                        <th mat-header-cell *matHeaderCellDef mat-sort-header>Fecha de Registro</th>
-                                        <td mat-cell *matCellDef="let row">{{ row.FRMOD }}</td>
+                                        <th mat-header-cell *matHeaderCellDef mat-sort-header>Fecha de registro</th>
+                                        <td mat-cell *matCellDef="let row">{{ row.FECHA_REGISTRO }}</td>
                                     </ng-container>
 
                                     <ng-container matColumnDef="USMOD">
                                         <th mat-header-cell *matHeaderCellDef mat-sort-header>Propietario</th>
-                                        <td mat-cell *matCellDef="let row">{{ row.USMOD }}</td>
+                                        <td mat-cell *matCellDef="let row">{{ row.PROPIETARIO }}</td>
                                     </ng-container>
 
                                     <ng-container matColumnDef="ACTIONS" style="width: 350px !important;">
@@ -117,7 +118,7 @@
                                             <!-- BOTONES DE ACCIONES NORMALES -->
                                             <div *ngIf="!btnSmall">
                                                 <button mat-mini-fab color="primary" class="override-no-shadow mr-4"
-                                                    matTooltip="Abrir" (click)="openViewer('test','a')">
+                                                    matTooltip="Abrir" (click)="openViewer(element.URL)">
                                                     <mat-icon>open_in_new</mat-icon>
                                                 </button>
                                                 <button mat-mini-fab color="primary" class="override-no-shadow mr-4"

+ 114 - 44
sistema-mantenimiento-front/src/app/components/gdel/gdel.component.ts

@@ -19,6 +19,9 @@ import { lastValueFrom } from 'rxjs';
 
 import WebViewer from '@pdftron/webviewer';
 import { WebviewerComponent } from './webviewer/webviewer.component';
+import { DocumentManagementService } from 'src/app/services/gdel/document-management.service';
+import { MatSnackBar } from '@angular/material/snack-bar';
+import { GdelService } from 'src/app/services/gdel/gdel.service';
 @Component({
   selector: 'app-gdel',
   templateUrl: './gdel.component.html',
@@ -46,7 +49,7 @@ export class GDELComponent implements AfterViewInit, OnInit {
     },
     {
       id: 2,
-      items: 'Compartidos Conmigo',
+      items: 'Compartidos conmigo',
       icon: 'group_add',
     },
     {
@@ -61,7 +64,10 @@ export class GDELComponent implements AfterViewInit, OnInit {
     private _resourcesServices: ResourcesService,
     private _dialog: MatDialog,
     private _router: Router,
-    public dialog: MatDialog
+    public dialog: MatDialog,
+    private _documentManagement: DocumentManagementService,
+    private _gdelService: GdelService,
+    private _snackBar: MatSnackBar
   ) {
     this.displayedColumns = [
       'ID',
@@ -84,7 +90,7 @@ export class GDELComponent implements AfterViewInit, OnInit {
   ngOnInit(): void {
     this.onResize();
 
-    this.dataSource.data = [
+    /*     this.dataSource.data = [
       {
         ID: '01-ADSI-CA-230120-000001=01',
         NAME: 'Test',
@@ -103,8 +109,8 @@ export class GDELComponent implements AfterViewInit, OnInit {
         FRMOD: '22/02/12',
         USMOD: 'CAVA07',
       },
-    ];
-    //this.getAllRequestLines();
+    ]; */
+    this.getDocuments();
   }
 
   ngAfterViewInit(): void {
@@ -112,52 +118,51 @@ export class GDELComponent implements AfterViewInit, OnInit {
     this.dataSource.sort = this.sort;
   }
 
-  public async alert(type: string, dataElement: any = null) {
-    this.isLoadingForm = true;
-    let dataDialog: AlertData = {} as AlertData;
-    if (type === 'CANCEL') {
-      dataDialog = {
-        icon: 'warning',
-        title: 'Cancelar Solicitud',
-        description:
-          '¿Está seguro de cancelar la línea de solicitud de compra?',
-      };
-    }
+  registerDocument() {
+    this._router.navigate(['sam/GDEL/ADDO/nuevo']);
+  }
 
-    // Se ejecuta la alerta
-    const dialogRef = this._dialog.open(AlertComponent, {
-      data: dataDialog,
-      disableClose: true,
-      width: '350px',
-    });
+  public async getShareDocuments() {
+    this.dataSource.data = [];
+  }
 
-    // Se obtiene la respuesta obtenida por la alerta
-    dialogRef.afterClosed().subscribe((result) => {
-      if (result && type === 'CANCEL') {
-        console.log(result);
+  public async getDocuments() {
+    this.isLoading = true;
+    let idEnc = localStorage.getItem('idusuario')!;
+    let shortEnc = await lastValueFrom(this._encService.shortEncrypt(idEnc));
+
+    let documents: any = await lastValueFrom(
+      this._gdelService.getDocumentsByUser(
+        shortEnc.response.encrypted,
+        1
+      )
+    );
+
+    if (documents.error) {
+      this.openSnackBar(documents.msg);
+    } else {
+      for (let index = 0; index < documents.response.length; index++) {
+        documents.response[index].TAMANIO = this.formatBytes(
+          documents.response[index].TAMANIO
+        );
       }
-    });
-    this.isLoadingForm = false;
-  }
+      this.dataSource.data = documents.response;
+      this.isLoading = false;
 
-  registerDocument(){
-    this._router.navigate(['sam/GDEL/ADDO/nuevo']);
+    }
+    console.log(documents);
   }
 
-  async modifyDocument(idDocument: number){
+  async modifyDocument(idDocument: number) {
     let idDocEnc = await this._encService.encriptar(`${idDocument}`);
-    
+
     this._router.navigate(['sam/GDEL/ADDO/editar'], {
       queryParams: {
-        idDoc: idDocEnc
-      }
+        idDoc: idDocEnc,
+      },
     });
   }
 
-  public goBack(steps: number) {
-    window.history.go(steps * -1);
-  }
-
   // Método de filtrado de datos
   public applyFilter(event: any, type: string): void {
     let filterValue: string;
@@ -180,12 +185,26 @@ export class GDELComponent implements AfterViewInit, OnInit {
 
   selectTab(index: number) {
     this.active = index;
+    console.log(index);
+    
+    switch (index) {
+      case 0:
+        this.getDocuments();
+        break;
+      case 1:
+        this.getShareDocuments();
+        break;
+      case 2:
+        break;
+      default:
+        break;
+    }
   }
 
-  public openViewer(url: string, path: string) {
+  public openViewer(url: string) {
     let dialogRef: any;
     let fileData = {
-      url: 'http://209.50.56.224/sam/public_files/Asignación de módulos SAM.docx',
+      url: url,
     };
 
     dialogRef = this.dialog.open(WebviewerComponent, {
@@ -200,6 +219,7 @@ export class GDELComponent implements AfterViewInit, OnInit {
       this.isLoadingForm = false;
     });
   }
+
   // Método para dar formato a las fechas y horas
   public formatDate(dateRegister: string, dateUpdate: string | null): string {
     let date: string = dateUpdate === null ? dateRegister : dateUpdate;
@@ -208,11 +228,39 @@ export class GDELComponent implements AfterViewInit, OnInit {
     return `${arrDate[2]}-${arrDate[1]}-${arrDate[0]} ${arrDateTime[1]}`;
   }
 
+  public async alert(type: string, dataElement: any = null) {
+    this.isLoadingForm = true;
+    let dataDialog: AlertData = {} as AlertData;
+    if (type === 'CANCEL') {
+      dataDialog = {
+        icon: 'warning',
+        title: 'Cancelar Solicitud',
+        description:
+          '¿Está seguro de cancelar la línea de solicitud de compra?',
+      };
+    }
+
+    // Se ejecuta la alerta
+    const dialogRef = this._dialog.open(AlertComponent, {
+      data: dataDialog,
+      disableClose: true,
+      width: '350px',
+    });
+
+    // Se obtiene la respuesta obtenida por la alerta
+    dialogRef.afterClosed().subscribe((result) => {
+      if (result && type === 'CANCEL') {
+        console.log(result);
+      }
+    });
+    this.isLoadingForm = false;
+  }
+
   // Funcion para descargar archivos
-  async downloadFile(idFile: string){
+  async downloadFile(idFile: string) {
     console.log('descargar archivo');
-    
-/*     try{
+
+    /*     try{
       let shortAvi = await lastValueFrom(this._encService.shortEncrypt(idFile));
       let idEnc = localStorage.getItem('idusuario');
       let shortEnc = await lastValueFrom(this._encService.shortEncrypt(idEnc!));
@@ -235,4 +283,26 @@ export class GDELComponent implements AfterViewInit, OnInit {
       this.openSnackBar(msg);
     } */
   }
+
+  public goBack(steps: number) {
+    window.history.go(steps * -1);
+  }
+
+  formatBytes(bytes: number, decimals = 2) {
+    if (bytes === 0) return '0 Bytes';
+
+    const k = 1024;
+    const dm = decimals < 0 ? 0 : decimals;
+    const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
+
+    const i = Math.floor(Math.log(bytes) / Math.log(k));
+
+    return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
+  }
+
+  openSnackBar(msg: string) {
+    this._snackBar.open(msg, undefined, {
+      duration: 2500,
+    });
+  }
 }

+ 0 - 0
sistema-mantenimiento-front/src/app/services/document-management.service.spec.ts → sistema-mantenimiento-front/src/app/services/gdel/document-management.service.spec.ts


+ 0 - 0
sistema-mantenimiento-front/src/app/services/document-management.service.ts → sistema-mantenimiento-front/src/app/services/gdel/document-management.service.ts


+ 16 - 0
sistema-mantenimiento-front/src/app/services/gdel/gdel.service.spec.ts

@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { GdelService } from './gdel.service';
+
+describe('GdelService', () => {
+  let service: GdelService;
+
+  beforeEach(() => {
+    TestBed.configureTestingModule({});
+    service = TestBed.inject(GdelService);
+  });
+
+  it('should be created', () => {
+    expect(service).toBeTruthy();
+  });
+});

+ 36 - 0
sistema-mantenimiento-front/src/app/services/gdel/gdel.service.ts

@@ -0,0 +1,36 @@
+import { HttpClient, HttpHeaders } from '@angular/common/http';
+import { Injectable } from '@angular/core';
+import { map } from 'rxjs';
+import { apiUriAlan } from 'src/environments/environment';
+
+@Injectable({
+  providedIn: 'root'
+})
+export class GdelService {
+
+  constructor(private http: HttpClient) {}
+
+  getDocumentsByUser(idUser: string, line: number){
+    return this.getQuery(`get-documents/${idUser}/${line}`).pipe(map((data: any) => data));
+  }
+
+  getQuery(query: string){
+    const JWT = `Bearer ${localStorage.getItem('token')}`;
+    const URL = `${apiUriAlan}${query}`;
+    return this.http.get(URL, {
+      headers: new HttpHeaders({
+        Authorization: JWT
+      })
+    });
+  }
+
+  postQuery(query: string, body: any){
+    const JWT = `Bearer ${localStorage.getItem('token')}`;
+    const URL = `${apiUriAlan}${query}`;
+    return this.http.post(URL, body, {
+      headers: new HttpHeaders({
+        Authorization: JWT!
+      })
+    });
+  }
+}

+ 1 - 0
sistema-mantenimiento-front/src/environments/environment.ts

@@ -13,6 +13,7 @@ export const apiTemp = 'http://git.ittec.mx/sam/public/api/';
 //export const socket = 'http://git.ittec.mx/socket';
 export const socket = 'http://localhost:3200';
 //export const apiTemp = 'http://127.0.0.1:8000/api/';
+export const apiUriAlan = 'http://192.168.1.2:8000/api/';
 
 export const apiUriWorkflow = 'http://192.168.100.148:8004/api';
 export const public_key = 'WrBEGoJnMnMhC/2hiaYypcmPwP9Z4p4/bNex0T/WUWA=';