Skip to content

Commit

Permalink
Merge pull request #79 from UdL-EPS-SoftArch/Fix-Medical-Record-Bugs
Browse files Browse the repository at this point in the history
Fix medical record bugs
rogargon authored Jun 17, 2024
2 parents 79a79cd + e1f21ca commit 7746686
Showing 6 changed files with 191 additions and 143 deletions.
42 changes: 26 additions & 16 deletions src/app/medical-record/medical-add/medical-record-add.component.ts
Original file line number Diff line number Diff line change
@@ -5,6 +5,7 @@ import {MedicalRecordService} from "../medical-record.service";
import {Pet} from "../../pet/pet";
import {CommonModule} from "@angular/common";
import {FormsModule} from "@angular/forms";
import {PetService} from "../../pet/pet.service";

@Component({
selector: 'app-medical-record-add',
@@ -28,6 +29,7 @@ export class MedicalRecordAddComponent implements OnInit {
year: any;

constructor(
private petService: PetService,
private medicalRecordService: MedicalRecordService,
private router: Router
) { }
@@ -40,25 +42,33 @@ export class MedicalRecordAddComponent implements OnInit {
return new Date(year, month, day);
}

addMedicalRecord( issue: string, description: string, date: Date, petId: number) {
let medicalRecord = new MedicalRecord(
{
issue: issue,
description: description,
date: date,
pet: `/pets/${petId}`
}
);
addMedicalRecord(issue: string, description: string, date: Date, petId: number) {
// Check if petId exists
this.petService.getPetById(petId).subscribe({
next: (pet: Pet) => {
if (pet) {
let medicalRecord = new MedicalRecord({
issue: issue,
description: description,
date: date,
pet: `/pets/${petId}`
});

this.medicalRecordService.createMedicalRecord(medicalRecord).subscribe({
next: (response) => {
console.log('Medical Record created:', response);
this.medicalRecordService.createMedicalRecord(medicalRecord).subscribe({
next: (response) => {
alert('Medical Record created:');
this.router.navigate(['/medical-records/', this.petId]);
},
error: (error) => console.error('Error creating medical record:', error)
});

this.router.navigate(['/medical-records']);
} else {
alert(`Pet with ID ${petId} does not exist.`);
}
},
error: (error) => console.error('Error creating medical record:', error)
error: (error) => alert(`Pet with ID ${petId} does not exist.`)
});

this.router.navigate(['/medical-records']);

}

}
Original file line number Diff line number Diff line change
@@ -13,7 +13,7 @@ <h1>Edit Medical Record</h1>
<form #medicalRecordForm="ngForm">
<div class="form-group">
<label for="description">Issue:</label>
<textarea id="issue" name="description" [(ngModel)]="issue" required></textarea>
<textarea id="issue" name="issue" [(ngModel)]="issue" required></textarea>
</div>
<div class="form-group">
<label for="description">Description:</label>
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Component, OnInit } from '@angular/core';
import {MedicalRecordService} from "../medical-record.service";
import { ActivatedRoute, Router } from '@angular/router';
import {ActivatedRoute, NavigationExtras, Router} from '@angular/router';
import {FormGroup, FormBuilder, Validators, FormsModule} from '@angular/forms';
import {MedicalRecord} from "../medical-record";

@@ -64,6 +64,12 @@ export class MedicalRecordEditComponent implements OnInit {
this.medicalRecordService.updateMedicalRecord(this.recordId, medicalRecord).subscribe({
next: (response) => {
console.log('Medical Record updated:', response);

const reloadTimestamp = new Date().getTime();
const navigationExtras: NavigationExtras = {
queryParams: { reload: reloadTimestamp }
};
this.router.navigate(['/medical-records', this.petId], navigationExtras);
},
error: (error) => console.error('Error updating medical record:', error)

Original file line number Diff line number Diff line change
@@ -42,7 +42,8 @@
</head>
<body>
<div class="container">
<h2>Medical Records</h2>
<h2 *ngIf="!petId">Medical Records</h2>
<h3 *ngIf="petId">Medical Records for {{petName}}</h3>
<div *ngIf="medicalRecords.length > 0; else noRecords">
<div *ngFor="let record of medicalRecords" class="record">
<p><span class="label">URI:</span> {{ record.uri }}</p>
271 changes: 149 additions & 122 deletions src/app/medical-record/medical-list/medical-record-list.component.ts
Original file line number Diff line number Diff line change
@@ -1,130 +1,157 @@
import { Component, OnInit } from '@angular/core';
import {ActivatedRoute, Router, RouterLink} from '@angular/router';
import {MedicalRecord} from "../medical-record";
import {MedicalRecordService} from "../medical-record.service";
import {Pet} from "../../pet/pet";
import {CommonModule} from "@angular/common";
import {Subscription} from "cypress/types/net-stubbing";
import {AuthenticationBasicService} from "../../login-basic/authentication-basic.service";
import {PetService} from "../../pet/pet.service";
import { ActivatedRoute, Router, NavigationEnd, RouterLink } from '@angular/router';
import { MedicalRecord } from "../medical-record";
import { MedicalRecordService } from "../medical-record.service";
import { Pet } from "../../pet/pet";
import { CommonModule } from "@angular/common";
import { AuthenticationBasicService } from "../../login-basic/authentication-basic.service";
import { PetService } from "../../pet/pet.service";
import { filter } from 'rxjs/operators';

@Component({
selector: 'app-medical-record-list',
templateUrl: './medical-record-list.component.html',
standalone: true,
imports: [
RouterLink,
CommonModule,
],
styleUrls: ['./medical-record-list.component.css']
selector: 'app-medical-record-list',
templateUrl: './medical-record-list.component.html',
standalone: true,
imports: [
RouterLink,
CommonModule,
],
styleUrls: ['./medical-record-list.component.css']
})
export class MedicalRecordListComponent implements OnInit {
medicalRecords: MedicalRecord[] = [];
petId: any;
selectedPet : Pet | undefined;

constructor(private authenticationService: AuthenticationBasicService,
private medicalRecordService: MedicalRecordService,
private petService: PetService,
private router: Router,
private route: ActivatedRoute,
) { }


ngOnInit(): void {


this.route.params.subscribe(params => {
console.log(params) //log the entire params object
console.log(params['petId']) //log the value of id

this.petId = params['petId'];
});




if (this.petId) {
this.fetchPet(this.petId);
console.log("petId", this.petId);
medicalRecords: MedicalRecord[] = [];
petId: any;
petName: string = '';
selectedPet: Pet | undefined;

constructor(private authenticationService: AuthenticationBasicService,
private medicalRecordService: MedicalRecordService,
private petService: PetService,
private router: Router,
private route: ActivatedRoute) {

this.router.events.pipe(
filter(event => event instanceof NavigationEnd)
).subscribe((event: NavigationEnd) => {
if (this.router.url.startsWith('/medical-records')) {
this.initializeComponent();
}
});
}

ngOnInit(): void {

this.initializeComponent();
}

initializeComponent() {
this.route.params.subscribe(params => {
console.log(params) // log the entire params object
console.log(params['petId']) // log the value of id

this.petId = params['petId'];
});

this.route.queryParams.subscribe(queryParams => {
console.log(queryParams); // log query params for debugging
if (queryParams['reload']) {
console.log('Reload triggered by queryParams change');
}

if (this.petId) {
this.fetchPetName(this.petId);
this.fetchMedicalRecordsByPetId(this.petId);
} else {
this.fetchAllMedicalRecords();
}
});
}


fetchMedicalRecordsByPetId(petId: number) {
this.medicalRecordService.getMedicalRecordsByPetId(petId).subscribe({
next: (records) => {
if (Array.isArray(records)) {
records.forEach(record => {
let lastIndex = record.uri.lastIndexOf('/');
record.id = lastIndex > -1 ? record.uri.substring(lastIndex + 1) : '';
});
this.medicalRecords = records;
} else {
console.error('Data returned is not an array:', records);
}
},
error: (error) => {
console.error('Failed to fetch medical records:', error);
this.medicalRecords = []; // Reset or handle as needed
}
});
}

fetchAllMedicalRecords() {
this.medicalRecordService.getMedicalRecords().subscribe({
next: (records) => {
if (Array.isArray(records)) {
records.forEach(record => {
let lastIndex = record.uri.lastIndexOf('/');
record.id = lastIndex > -1 ? record.uri.substring(lastIndex + 1) : '';
});
this.medicalRecords = records;
} else {
this.fetchMedicalRecords();
console.log("NO petId");
console.error('Data returned is not an array:', records);
}
}

fetchPet(petId: number) {
this.medicalRecordService.getMedicalRecordsByPetId(petId).subscribe({
next: (records) => {
if (Array.isArray(records)) {
records.forEach(record => {
let lastIndex = record.uri.lastIndexOf('/');
record.id = lastIndex > -1 ? record.uri.substring(lastIndex + 1) : '';
})
this.medicalRecords = records;
} else {
console.error('Data returned is not an array:', records);
}
},
error: (error) => {
console.error('Failed to fetch medical records:', error);
this.medicalRecords = []; // Reset or handle as needed
}
});
}

fetchMedicalRecords() {
this.medicalRecordService.getMedicalRecords().subscribe({
next: (records) => {
if (Array.isArray(records)) {
records.forEach(record => {
let lastIndex = record.uri.lastIndexOf('/');
record.id = lastIndex > -1 ? record.uri.substring(lastIndex + 1) : '';
})
this.medicalRecords = records;
} else {
console.error('Data returned is not an array:', records);
}
},
error: (error) => {
console.error('Failed to fetch medical records:', error);
this.medicalRecords = []; // Reset or handle as needed
}
});
}
editRecord(record: any) {
const recordId = record.id;
const petUrl = record._links.pet.href;

this.petService.getPetByUrl(petUrl).subscribe({
next: (pet) => {
this.selectedPet = pet;
const lastIndex = pet.uri.lastIndexOf('/');
this.selectedPet.id = Number(lastIndex > -1 ? pet.uri.substring(lastIndex + 1) : '');
console.log(this.selectedPet, " - Selected Pet");


this.router.navigate([`/medical-records/${recordId}/${this.selectedPet.id}/edit`, {}]);
},
error: (error) => {
console.error('Failed to fetch pet:', error);
this.selectedPet = undefined;
}
});
}


deleteRecord(recordId: string) {
this.medicalRecordService.deleteMedicalRecord(recordId).subscribe(() => {
this.fetchMedicalRecords();
});
}

addMedicalRecord() {
this.router.navigate(['/medical-records/add']);
}

isRole(role: string): boolean {
return this.authenticationService.isRole(role);
}
},
error: (error) => {
console.error('Failed to fetch medical records:', error);
this.medicalRecords = []; // Reset or handle as needed
}
});
}

editRecord(record: any) {
const recordId = record.id;
const petUrl = record._links.pet.href;

this.petService.getPetByUrl(petUrl).subscribe({
next: (pet) => {
this.selectedPet = pet;
const lastIndex = pet.uri.lastIndexOf('/');
this.selectedPet.id = Number(lastIndex > -1 ? pet.uri.substring(lastIndex + 1) : '');
console.log(this.selectedPet, " - Selected Pet");

this.router.navigate([`/medical-records/${recordId}/${this.selectedPet.id}/edit`, {}]);
},
error: (error) => {
console.error('Failed to fetch pet:', error);
this.selectedPet = undefined;
}
});
}

deleteRecord(recordId: string) {
this.medicalRecordService.deleteMedicalRecord(recordId).subscribe(() => {
this.initializeComponent(); // Ensure correct data is loaded after deletion
});
}

addMedicalRecord() {
this.router.navigate(['/medical-records/add']);
}

isRole(role: string): boolean {
return this.authenticationService.isRole(role);
}

fetchPetName(petId: number) {
this.petService.getPetById(petId).subscribe({
next: (pet) => {
this.petName = pet.name;
console.log("Pet Name", this.petName);
},
error: (error) => {
console.error('Failed to fetch pet name:', error);
this.petName = '';
}
});
}
}
Loading
Oops, something went wrong.

0 comments on commit 7746686

Please sign in to comment.