Commit 34248d79 authored by RenanMontenegro3's avatar RenanMontenegro3

fix: concerta o erro na atualização automatica de páginas + download de exel em aceite-navios

parent b186fd8c
...@@ -26,6 +26,7 @@ import { throwError } from 'rxjs'; ...@@ -26,6 +26,7 @@ import { throwError } from 'rxjs';
import { MatCardActions } from '@angular/material/card'; import { MatCardActions } from '@angular/material/card';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { environment } from '../../../../environments/.env'; import { environment } from '../../../../environments/.env';
import { ReloadService } from '../../../services/reload.service';
@Component({ @Component({
selector: 'app-aceite-edit', selector: 'app-aceite-edit',
standalone: true, standalone: true,
...@@ -68,7 +69,7 @@ export class AceiteEditComponent implements OnInit { ...@@ -68,7 +69,7 @@ export class AceiteEditComponent implements OnInit {
private _bercoService: BercosService, private _bercoService: BercosService,
private cdr: ChangeDetectorRef, private cdr: ChangeDetectorRef,
private httpClient: HttpClient, private httpClient: HttpClient,
private _reloadService: ReloadService
) { ) {
this.empForm = this._fb.group({ this.empForm = this._fb.group({
...@@ -534,6 +535,8 @@ selectedCategoriaNome: string = ''; ...@@ -534,6 +535,8 @@ selectedCategoriaNome: string = '';
next: () => { next: () => {
this._dialogRef.close(true); this._dialogRef.close(true);
this.toastService.success('Aceite editado com sucesso'); this.toastService.success('Aceite editado com sucesso');
this._reloadService.reloadRoute('navio')
this._reloadService.reloadRoute('aceite')
}, },
error: (err: any) => { error: (err: any) => {
console.error(err); console.error(err);
...@@ -544,6 +547,8 @@ selectedCategoriaNome: string = ''; ...@@ -544,6 +547,8 @@ selectedCategoriaNome: string = '';
next: () => { next: () => {
this._dialogRef.close(true); this._dialogRef.close(true);
this.toastService.success('Aceite editado com sucesso'); this.toastService.success('Aceite editado com sucesso');
this._reloadService.reloadRoute('navio')
this._reloadService.reloadRoute('aceite')
}, },
error: (err: any) => { error: (err: any) => {
console.error(err); console.error(err);
......
...@@ -27,6 +27,8 @@ import { JwtDecoderService } from '../../../jwt-decoder.service'; ...@@ -27,6 +27,8 @@ import { JwtDecoderService } from '../../../jwt-decoder.service';
import { AuthService } from '../../../auth.service'; import { AuthService } from '../../../auth.service';
import { jwtDecode } from 'jwt-decode'; import { jwtDecode } from 'jwt-decode';
import { CsvService } from '../../../csv.service'; import { CsvService } from '../../../csv.service';
import { ReloadService } from '../../../services/reload.service';
import { Router } from '@angular/router';
interface AceiteData { interface AceiteData {
id: number; id: number;
imo: number; imo: number;
...@@ -88,9 +90,20 @@ export class AceitesComponent implements OnInit { ...@@ -88,9 +90,20 @@ export class AceitesComponent implements OnInit {
private jwtDecoderService: JwtDecoderService, private jwtDecoderService: JwtDecoderService,
private authService: AuthService, private authService: AuthService,
private cdr: ChangeDetectorRef, private cdr: ChangeDetectorRef,
private _csvService: CsvService private _csvService: CsvService,
private _reloadService: ReloadService,
private _router: Router
) { } ) { }
reload() {
if (this._reloadService.reload) {
this._router.navigateByUrl('/', { skipLocationChange: true }).then(() => {
this._router.navigate(['aceite']);
this._reloadService.reload = false;
});
}
}
ngOnInit(): void { ngOnInit(): void {
this.validationToken(); this.validationToken();
...@@ -429,8 +442,7 @@ export class AceitesComponent implements OnInit { ...@@ -429,8 +442,7 @@ export class AceitesComponent implements OnInit {
this._coreService.openSnackBar(err.error.title); this._coreService.openSnackBar(err.error.title);
}, },
}); });
this.cdr.detectChanges(); this.reload();
} }
openEditForm(data: any) { openEditForm(data: any) {
......
...@@ -17,6 +17,7 @@ import { MatDialogModule } from '@angular/material/dialog'; ...@@ -17,6 +17,7 @@ import { MatDialogModule } from '@angular/material/dialog';
import { ToastrService } from 'ngx-toastr'; import { ToastrService } from 'ngx-toastr';
import { BercosComponent } from '../bercos/bercos.component'; import { BercosComponent } from '../bercos/bercos.component';
import { BercosService } from '../../../services/bercos/bercos.service'; import { BercosService } from '../../../services/bercos/bercos.service';
import { ReloadService } from '../../../services/reload.service';
@Component({ @Component({
selector: 'app-berco-add', selector: 'app-berco-add',
...@@ -51,6 +52,7 @@ export class BercoAddComponent implements OnInit { ...@@ -51,6 +52,7 @@ export class BercoAddComponent implements OnInit {
private _dialogRef: MatDialogRef<BercoAddComponent>, private _dialogRef: MatDialogRef<BercoAddComponent>,
@Inject(MAT_DIALOG_DATA) public data: any, @Inject(MAT_DIALOG_DATA) public data: any,
private toastService: ToastrService, private toastService: ToastrService,
private _reloadService: ReloadService
) { ) {
this.bercoForm = this._fb.group({ this.bercoForm = this._fb.group({
nome: ['', Validators.required], nome: ['', Validators.required],
...@@ -91,6 +93,8 @@ export class BercoAddComponent implements OnInit { ...@@ -91,6 +93,8 @@ export class BercoAddComponent implements OnInit {
this._bercoService.addEmployee(this.bercoForm.value).subscribe({ this._bercoService.addEmployee(this.bercoForm.value).subscribe({
next: (val: any) => { next: (val: any) => {
this.toastService.success('Berço adicionado com sucesso'); this.toastService.success('Berço adicionado com sucesso');
this._reloadService.reloadRoute('navio');
this._reloadService.reloadRoute('berco');
this._dialogRef.close(true); this._dialogRef.close(true);
}, },
error: (err: any) => { error: (err: any) => {
......
...@@ -15,6 +15,7 @@ import { MatDialogModule } from '@angular/material/dialog'; ...@@ -15,6 +15,7 @@ import { MatDialogModule } from '@angular/material/dialog';
import { ToastrService } from 'ngx-toastr'; import { ToastrService } from 'ngx-toastr';
import { BercosComponent } from '../bercos/bercos.component'; import { BercosComponent } from '../bercos/bercos.component';
import { BercosService } from '../../../services/bercos/bercos.service'; import { BercosService } from '../../../services/bercos/bercos.service';
import { ReloadService } from '../../../services/reload.service';
@Component({ @Component({
selector: 'app-berco-edit', selector: 'app-berco-edit',
...@@ -46,6 +47,7 @@ export class BercoEditComponent implements OnInit { ...@@ -46,6 +47,7 @@ export class BercoEditComponent implements OnInit {
private _dialogRef: MatDialogRef<BercoEditComponent>, private _dialogRef: MatDialogRef<BercoEditComponent>,
@Inject(MAT_DIALOG_DATA) public data: any, @Inject(MAT_DIALOG_DATA) public data: any,
private toastService: ToastrService, private toastService: ToastrService,
private _reloadService: ReloadService
) { ) {
this.bercoForm = this._fb.group({ this.bercoForm = this._fb.group({
nome: ['', Validators.required], nome: ['', Validators.required],
...@@ -92,6 +94,8 @@ export class BercoEditComponent implements OnInit { ...@@ -92,6 +94,8 @@ export class BercoEditComponent implements OnInit {
this._bercoService.updateEmployee(this.data.id, this.bercoForm.value).subscribe({ this._bercoService.updateEmployee(this.data.id, this.bercoForm.value).subscribe({
next: (val: any) => { next: (val: any) => {
this.toastService.success('Detalhes do berço atualizados!'); this.toastService.success('Detalhes do berço atualizados!');
this._reloadService.reloadRoute('navio');
this._reloadService.reloadRoute('berco');
this._dialogRef.close(true); this._dialogRef.close(true);
}, },
error: (err: any) => { error: (err: any) => {
......
...@@ -16,6 +16,7 @@ import { MatDialogModule } from '@angular/material/dialog'; ...@@ -16,6 +16,7 @@ import { MatDialogModule } from '@angular/material/dialog';
import { ToastrService } from 'ngx-toastr'; import { ToastrService } from 'ngx-toastr';
import { NgxCurrencyDirective } from 'ngx-currency'; import { NgxCurrencyDirective } from 'ngx-currency';
import { BlackListService } from '../../../services/Blacklists/black-list.service'; import { BlackListService } from '../../../services/Blacklists/black-list.service';
import { ReloadService } from '../../../services/reload.service';
@Component({ @Component({
selector: 'app-black-list-add', selector: 'app-black-list-add',
standalone: true, standalone: true,
...@@ -50,7 +51,8 @@ export class BlackListAddComponent implements OnInit { ...@@ -50,7 +51,8 @@ export class BlackListAddComponent implements OnInit {
private _empService: BlackListService, private _empService: BlackListService,
@Inject(MAT_DIALOG_DATA) public data: any, @Inject(MAT_DIALOG_DATA) public data: any,
private _dialogRef: MatDialogRef<BlackListAddComponent>, private _dialogRef: MatDialogRef<BlackListAddComponent>,
private toastService: ToastrService private toastService: ToastrService,
private _reladService: ReloadService
) { ) {
this.empForm = this._fb.group({ this.empForm = this._fb.group({
imo: [this.data?.imo || '', Validators.required], imo: [this.data?.imo || '', Validators.required],
......
...@@ -29,7 +29,10 @@ import { BlackListEdit } from '../black-list-edit/black-list-edit.component'; ...@@ -29,7 +29,10 @@ import { BlackListEdit } from '../black-list-edit/black-list-edit.component';
import { BlackListService } from '../../../services/Blacklists/black-list.service'; import { BlackListService } from '../../../services/Blacklists/black-list.service';
import { VisualizacaoBlackListComponent } from '../visualizacao-black-list/visualizacao-black-list.component'; import { VisualizacaoBlackListComponent } from '../visualizacao-black-list/visualizacao-black-list.component';
import { CsvService } from '../../../csv.service'; import { CsvService } from '../../../csv.service';
import { ReloadService
} from '../../../services/reload.service';
import { Router } from '@angular/router';
interface NavioData { interface NavioData {
id: number; id: number;
imo: number; imo: number;
...@@ -99,9 +102,21 @@ export class BlackListComponent { ...@@ -99,9 +102,21 @@ export class BlackListComponent {
private authService: AuthService, private authService: AuthService,
private _coreService: CoreService, private _coreService: CoreService,
private cdr: ChangeDetectorRef, private cdr: ChangeDetectorRef,
private _csvService: CsvService // Injetando o serviço CSV' private _csvService: CsvService, // Injetando o serviço CSV'
private _reloadService: ReloadService,
private _router: Router
) { } ) { }
reload() {
if (this._reloadService.reload) {
this._router.navigateByUrl('/', { skipLocationChange: true }).then(() => {
this._router.navigate(['black-list']);
this._reloadService.reload = false;
});
}
}
ngOnInit(): void { ngOnInit(): void {
this.validationToken(); this.validationToken();
} }
...@@ -171,6 +186,7 @@ export class BlackListComponent { ...@@ -171,6 +186,7 @@ export class BlackListComponent {
this._coreService.openSnackBar(err.error.title); this._coreService.openSnackBar(err.error.title);
}, },
}); });
this.reload();
} }
openEditForm(data: any) { openEditForm(data: any) {
...@@ -180,8 +196,6 @@ export class BlackListComponent { ...@@ -180,8 +196,6 @@ export class BlackListComponent {
disableClose: true, // Impede que o diálogo feche ao clicar fora disableClose: true, // Impede que o diálogo feche ao clicar fora
width: '600px', // Define a largura do diálogo width: '600px', // Define a largura do diálogo
}); });
this.cdr.detectChanges();
} }
addBlackList(data: any) { addBlackList(data: any) {
...@@ -191,8 +205,7 @@ export class BlackListComponent { ...@@ -191,8 +205,7 @@ export class BlackListComponent {
disableClose: true, // Impede que o diálogo feche ao clicar fora disableClose: true, // Impede que o diálogo feche ao clicar fora
width: '600px', // Define a largura do diálogo width: '600px', // Define a largura do diálogo
}); });
this.cdr.detectChanges(); this.reload();
} }
openAddEmpForm() { openAddEmpForm() {
...@@ -201,7 +214,6 @@ export class BlackListComponent { ...@@ -201,7 +214,6 @@ export class BlackListComponent {
disableClose: true, // Impede que o diálogo feche ao clicar fora disableClose: true, // Impede que o diálogo feche ao clicar fora
width: '600px', // Define a largura do diálogo})); width: '600px', // Define a largura do diálogo}));
}) })
this.cdr.detectChanges();
} }
...@@ -211,7 +223,6 @@ export class BlackListComponent { ...@@ -211,7 +223,6 @@ export class BlackListComponent {
autoFocus: true, // Foca no primeiro campo interativo do formulário autoFocus: true, // Foca no primeiro campo interativo do formulário
width: '800px', // Define a largura do diálogo width: '800px', // Define a largura do diálogo
}); });
this.cdr.detectChanges();
} }
......
...@@ -17,6 +17,7 @@ import { NaviosComponent } from '../navios/navios.component'; ...@@ -17,6 +17,7 @@ import { NaviosComponent } from '../navios/navios.component';
import { ToastrService } from 'ngx-toastr'; import { ToastrService } from 'ngx-toastr';
import { NgxCurrencyDirective } from 'ngx-currency'; import { NgxCurrencyDirective } from 'ngx-currency';
import { BercosService } from '../../../services/bercos/bercos.service'; import { BercosService } from '../../../services/bercos/bercos.service';
import { ReloadService } from '../../../services/reload.service';
@Component({ @Component({
selector: 'app-navio-add', selector: 'app-navio-add',
...@@ -58,6 +59,7 @@ export class NavioAddComponent implements OnInit { ...@@ -58,6 +59,7 @@ export class NavioAddComponent implements OnInit {
@Inject(MAT_DIALOG_DATA) public data: any, @Inject(MAT_DIALOG_DATA) public data: any,
private toastService: ToastrService, private toastService: ToastrService,
private _bercoService: BercosService, // Injetando o serviço de berços private _bercoService: BercosService, // Injetando o serviço de berços
private _reloadService: ReloadService
) { ) {
this.empForm = this._fb.group({ this.empForm = this._fb.group({
imo: ['', Validators.required], imo: ['', Validators.required],
...@@ -416,6 +418,7 @@ bercosDisponiveis: any[] = []; ...@@ -416,6 +418,7 @@ bercosDisponiveis: any[] = [];
next: () => { next: () => {
this._dialogRef.close(true); this._dialogRef.close(true);
this.toastService.success('Navio cadastrado com sucesso!'); this.toastService.success('Navio cadastrado com sucesso!');
this._reloadService.reloadRoute('navio');
}, },
error: (err: any) => { error: (err: any) => {
console.error(err); console.error(err);
......
...@@ -20,6 +20,7 @@ import { NgxCurrencyDirective } from 'ngx-currency'; ...@@ -20,6 +20,7 @@ import { NgxCurrencyDirective } from 'ngx-currency';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { environment } from '../../../../environments/.env'; import { environment } from '../../../../environments/.env';
import { MatCardModule } from '@angular/material/card'; import { MatCardModule } from '@angular/material/card';
import { ReloadService } from '../../../services/reload.service';
@Component({ @Component({
selector: 'app-navio-edit', selector: 'app-navio-edit',
...@@ -64,6 +65,7 @@ export class NavioEditComponent implements OnInit { ...@@ -64,6 +65,7 @@ export class NavioEditComponent implements OnInit {
private _coreService: CoreService, private _coreService: CoreService,
private toastService: ToastrService, private toastService: ToastrService,
private httpClient: HttpClient ,// Adicione isto private httpClient: HttpClient ,// Adicione isto
private _reloadService: ReloadService
) { ) {
this.empForm = this._fb.group({ this.empForm = this._fb.group({
...@@ -435,6 +437,7 @@ this.empForm.get('categoria')?.valueChanges.subscribe(catId => { ...@@ -435,6 +437,7 @@ this.empForm.get('categoria')?.valueChanges.subscribe(catId => {
next: () => { next: () => {
this._dialogRef.close(true); this._dialogRef.close(true);
this.toastService.success('Navio editado com sucesso!'); this.toastService.success('Navio editado com sucesso!');
this._reloadService.reloadRoute('navio');
}, },
error: (err: any) => { error: (err: any) => {
console.error(err); console.error(err);
......
...@@ -5,6 +5,7 @@ import { AsyncValidatorFn, AbstractControl, ValidationErrors, Validators } from ...@@ -5,6 +5,7 @@ import { AsyncValidatorFn, AbstractControl, ValidationErrors, Validators } from
import { map } from 'rxjs/operators'; import { map } from 'rxjs/operators';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { environment } from '../../../environments/.env'; // Importa o environment import { environment } from '../../../environments/.env'; // Importa o environment
import { ReloadService } from '../reload.service';
@Injectable({ @Injectable({
providedIn: 'root' providedIn: 'root'
...@@ -15,16 +16,19 @@ export class BlackListService { ...@@ -15,16 +16,19 @@ export class BlackListService {
private apiUrl = environment.API_URL + '/api/black-list'; private apiUrl = environment.API_URL + '/api/black-list';
private apiUrl_verifica_imo = environment.API_URL + '/api/vdatas'; private apiUrl_verifica_imo = environment.API_URL + '/api/vdatas';
constructor(private _http: HttpClient) {} constructor(private _http: HttpClient, private _reladService: ReloadService) {}
addEmployee(data: any): Observable<any> { addEmployee(data: any): Observable<any> {
return this._http.post(this.apiUrl, data).pipe( return this._http.post(this.apiUrl, data).pipe(
tap((res: any) => { tap((res: any) => {
this.users = res; this.users = res;
this._reladService.reloadRoute('/navio');
this._reladService.reloadRoute('black-list');
}), }),
catchError(error => { catchError(error => {
return throwError(error); return throwError(error);
})); }));
} }
updateEmployee(id: number, data: any): Observable<any> { updateEmployee(id: number, data: any): Observable<any> {
......
...@@ -6,6 +6,7 @@ import { map } from 'rxjs/operators'; ...@@ -6,6 +6,7 @@ import { map } from 'rxjs/operators';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { of } from 'rxjs'; import { of } from 'rxjs';
import { environment } from '../../../environments/.env'; // Importa o environment import { environment } from '../../../environments/.env'; // Importa o environment
import { ReloadService } from '../reload.service';
@Injectable({ @Injectable({
providedIn: 'root' providedIn: 'root'
}) })
...@@ -16,7 +17,7 @@ export class AceiteService { ...@@ -16,7 +17,7 @@ export class AceiteService {
private apiUrl_verifica_imo = environment.API_URL + '/api/vdatas'; private apiUrl_verifica_imo = environment.API_URL + '/api/vdatas';
constructor(private _http: HttpClient) { } constructor(private _http: HttpClient, private _reladService: ReloadService) {}
getAllAceitesSemPaginacao(): Observable<any[]> { getAllAceitesSemPaginacao(): Observable<any[]> {
...@@ -39,13 +40,17 @@ getAllAceitesSemPaginacao(): Observable<any[]> { ...@@ -39,13 +40,17 @@ getAllAceitesSemPaginacao(): Observable<any[]> {
// Adiciona o arquivo PDF // Adiciona o arquivo PDF
if (foto) { if (foto) {
formData.append('foto', foto, foto.name); const newName = this.generateUniqueFilename(foto.name);
const renamedFile = new File([foto], newName, { type: foto.type });
formData.append('foto', renamedFile, newName);
} }
return this._http.post(this.apiUrl, formData).pipe( return this._http.post(this.apiUrl, formData).pipe(
tap((res: any) => { tap((res: any) => {
console.log('Resposta da API:', res); console.log('Resposta da API:', res);
this._reladService.reloadRoute('navio');
this._reladService.reloadRoute('aceite');
}), }),
catchError(error => { catchError(error => {
console.error('Erro ao enviar dados:', error); console.error('Erro ao enviar dados:', error);
...@@ -65,7 +70,9 @@ getAllAceitesSemPaginacao(): Observable<any[]> { ...@@ -65,7 +70,9 @@ getAllAceitesSemPaginacao(): Observable<any[]> {
// Adiciona o arquivo, se disponível // Adiciona o arquivo, se disponível
if (foto) { if (foto) {
formData.append('foto', foto, foto.name); const newName = this.generateUniqueFilename(foto.name);
const renamedFile = new File([foto], newName, { type: foto.type });
formData.append('foto', renamedFile, newName);
} }
// Faz a requisição POST ou PUT dependendo do backend // Faz a requisição POST ou PUT dependendo do backend
...@@ -101,6 +108,8 @@ getAllAceitesSemPaginacao(): Observable<any[]> { ...@@ -101,6 +108,8 @@ getAllAceitesSemPaginacao(): Observable<any[]> {
tap((res: any) => { tap((res: any) => {
console.log('Resultado recebido:', res); console.log('Resultado recebido:', res);
sessionStorage.setItem("aceitesSearch", JSON.stringify(res)); sessionStorage.setItem("aceitesSearch", JSON.stringify(res));
this._reladService.reloadRoute('navio');
this._reladService.reloadRoute('aceite');
}), }),
catchError(error => { catchError(error => {
console.error('Erro ao buscar dados:', error); console.error('Erro ao buscar dados:', error);
...@@ -122,7 +131,9 @@ getAllAceitesSemPaginacao(): Observable<any[]> { ...@@ -122,7 +131,9 @@ getAllAceitesSemPaginacao(): Observable<any[]> {
// Adiciona o arquivo, se disponível // Adiciona o arquivo, se disponível
if (foto) { if (foto) {
formData.append('foto', foto, foto.name); const newName = this.generateUniqueFilename(foto.name);
const renamedFile = new File([foto], newName, { type: foto.type });
formData.append('foto', renamedFile, newName);
} }
// Faz a requisição PUT para atualizar os dados // Faz a requisição PUT para atualizar os dados
...@@ -137,6 +148,13 @@ getAllAceitesSemPaginacao(): Observable<any[]> { ...@@ -137,6 +148,13 @@ getAllAceitesSemPaginacao(): Observable<any[]> {
); );
} }
private generateUniqueFilename(originalName: string): string {
const dotIndex = originalName.lastIndexOf('.');
const ext = dotIndex !== -1 ? originalName.slice(dotIndex) : '';
const randomPart = Math.random().toString(36).slice(2, 9);
return `${Date.now()}-${randomPart}${ext}`;
}
getAceiteList(pageIndex: number, pageSize: number): Observable<any> { getAceiteList(pageIndex: number, pageSize: number): Observable<any> {
let params = new HttpParams() let params = new HttpParams()
......
...@@ -7,7 +7,7 @@ import { ...@@ -7,7 +7,7 @@ import {
import { Observable, throwError } from 'rxjs'; import { Observable, throwError } from 'rxjs';
import { catchError, map, tap } from 'rxjs/operators'; import { catchError, map, tap } from 'rxjs/operators';
import { environment } from '../../environments/.env'; // Importa o environment import { environment } from '../../environments/.env'; // Importa o environment
import { ReloadService } from './reload.service';
@Injectable({ @Injectable({
providedIn: 'root', providedIn: 'root',
}) })
...@@ -15,7 +15,7 @@ export class NavioService { ...@@ -15,7 +15,7 @@ export class NavioService {
users: any[] = []; users: any[] = [];
private apiUrl = environment.API_URL + '/api/vessels'; private apiUrl = environment.API_URL + '/api/vessels';
private apiUrlDash = environment.API_URL + '/statistics/all'; private apiUrlDash = environment.API_URL + '/statistics/all';
constructor(private _http: HttpClient) { } constructor(private _http: HttpClient, private _reloadService: ReloadService) {}
addEmployee1(data: any, foto: File): Observable<any> { addEmployee1(data: any, foto: File): Observable<any> {
console.log(JSON.stringify(JSON.stringify(data))); console.log(JSON.stringify(JSON.stringify(data)));
...@@ -29,13 +29,16 @@ export class NavioService { ...@@ -29,13 +29,16 @@ export class NavioService {
// Adiciona o arquivo PDF // Adiciona o arquivo PDF
if (foto) { if (foto) {
formData.append('foto', foto, foto.name); const newName = this.generateUniqueFilename(foto.name);
const renamedFile = new File([foto], newName, { type: foto.type });
formData.append('foto', renamedFile, newName);
} }
return this._http.post(this.apiUrl, formData).pipe( return this._http.post(this.apiUrl, formData).pipe(
tap((res: any) => { tap((res: any) => {
console.log('Resposta da API:', res); console.log('Resposta da API:', res);
this._reloadService.reloadRoute('navio');
}), }),
catchError(error => { catchError(error => {
console.error('Erro ao enviar dados:', error); console.error('Erro ao enviar dados:', error);
...@@ -83,6 +86,8 @@ export class NavioService { ...@@ -83,6 +86,8 @@ export class NavioService {
return this._http.get<any>(`${this.apiUrl}/custom`, { params }).pipe( return this._http.get<any>(`${this.apiUrl}/custom`, { params }).pipe(
tap((res: any) => { tap((res: any) => {
console.log('Resultado recebido:', res); console.log('Resultado recebido:', res);
this._reloadService.reloadRoute('black-list');
this._reloadService.reloadRoute('navio');
sessionStorage.setItem('naviosSearch', JSON.stringify(res)); sessionStorage.setItem('naviosSearch', JSON.stringify(res));
}), }),
catchError((error) => { catchError((error) => {
...@@ -108,13 +113,16 @@ export class NavioService { ...@@ -108,13 +113,16 @@ export class NavioService {
// Adiciona o arquivo, se disponível // Adiciona o arquivo, se disponível
if (foto) { if (foto) {
formData.append('foto', foto, foto.name); const newName = this.generateUniqueFilename(foto.name);
const renamedFile = new File([foto], newName, { type: foto.type });
formData.append('foto', renamedFile, newName);
} }
// Faz a requisição POST ou PUT dependendo da API // Faz a requisição POST ou PUT dependendo da API
return this._http.put(`${this.apiUrl}/${id}`, formData).pipe( return this._http.put(`${this.apiUrl}/${id}`, formData).pipe(
tap((res: any) => { tap((res: any) => {
console.log('Resposta da API (upload/edit):', res); console.log('Resposta da API (upload/edit):', res);
this._reloadService.reloadRoute('black-list');
}), }),
catchError((error) => { catchError((error) => {
console.error('Erro no upload/edição:', error); console.error('Erro no upload/edição:', error);
...@@ -143,6 +151,7 @@ export class NavioService { ...@@ -143,6 +151,7 @@ export class NavioService {
return this._http.delete(`${this.apiUrl}/${id}`).pipe( return this._http.delete(`${this.apiUrl}/${id}`).pipe(
tap((res: any) => { tap((res: any) => {
this.users = res; this.users = res;
this._reloadService.reloadRoute('navio');
}), }),
catchError((error) => { catchError((error) => {
return throwError(error); return throwError(error);
...@@ -179,6 +188,13 @@ getAllAceitesSemPaginacao(): Observable<any[]> { ...@@ -179,6 +188,13 @@ getAllAceitesSemPaginacao(): Observable<any[]> {
); );
} }
private generateUniqueFilename(originalName: string): string {
const dotIndex = originalName.lastIndexOf('.');
const ext = dotIndex !== -1 ? originalName.slice(dotIndex) : '';
const randomPart = Math.random().toString(36).slice(2, 9);
return `${Date.now()}-${randomPart}${ext}`;
}
......
import { Injectable } from '@angular/core';
import { Router } from '@angular/router';
@Injectable({ providedIn: 'root' })
export class ReloadService {
reload = true;
constructor(private router: Router) { }
reloadRoute(route: string): Promise<boolean> {
// Always perform a component-level reload by navigating away then back.
return this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {
return this.router.navigate([route]);
});
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment