Compare commits
7 Commits
d086852634
...
974bef9d08
Author | SHA1 | Date |
---|---|---|
CATHERINA-LUCE | 974bef9d08 | |
CATHERINA-LUCE | d9635c16e7 | |
CATHERINA-LUCE | 2011e95585 | |
CATHERINA-LUCE | cc21b895e8 | |
CATHERINA-LUCE | ccf78e0bd4 | |
CATHERINA-LUCE | 0a5349c711 | |
CATHERINA-LUCE | a333529f8d |
|
@ -35,6 +35,10 @@ const routes: Routes = [
|
||||||
path:'service',
|
path:'service',
|
||||||
loadChildren: () => import('./features/service/service.module').then(m => m.ServiceModule)
|
loadChildren: () => import('./features/service/service.module').then(m => m.ServiceModule)
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path:'place',
|
||||||
|
loadChildren: () => import('./features/place/place.module').then(m => m.PlaceModule)
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path : "**",
|
path : "**",
|
||||||
component : VehicleViewComponent
|
component : VehicleViewComponent
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<label>etage</label>
|
||||||
|
<input [(ngModel)]="place.etage" type="text" pInputText />
|
||||||
|
<br>
|
||||||
|
<label>taille</label>
|
||||||
|
<input [(ngModel)]="place.taille" type="text" pInputText />
|
||||||
|
<br>
|
||||||
|
<label>disponibilite</label>
|
||||||
|
<input [(ngModel)]="place.disponibilite" type="text" pInputText />
|
||||||
|
<br>
|
||||||
|
<label>vehicule Occupe</label>
|
||||||
|
<input [(ngModel)]="place.vehiculeOccupe" type="text" pInputText />
|
||||||
|
<br>
|
||||||
|
<label>date entrée</label>
|
||||||
|
<input [(ngModel)]="place.dateEntree" type="text" pInputText />
|
||||||
|
<br>
|
||||||
|
<label>date Sortie</label>
|
||||||
|
<input [(ngModel)]="place.dateSortie" type="text" pInputText />
|
||||||
|
<br>
|
||||||
|
<label>proprietaire</label>
|
||||||
|
<input [(ngModel)]="place.proprietaire" type="text" pInputText />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button (click)="save()" pButton type="button" label="Enregistrer"></button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { PlaceEditComponent } from './place-edit.component';
|
||||||
|
|
||||||
|
describe('PlaceEditComponent', () => {
|
||||||
|
let component: PlaceEditComponent;
|
||||||
|
let fixture: ComponentFixture<PlaceEditComponent>;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
await TestBed.configureTestingModule({
|
||||||
|
imports: [PlaceEditComponent]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
|
||||||
|
fixture = TestBed.createComponent(PlaceEditComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,84 @@
|
||||||
|
import {Component, OnInit} from '@angular/core';
|
||||||
|
import {PlaceService} from "../../service/place.service.service";
|
||||||
|
import {ActivatedRoute, Router} from "@angular/router";
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-place-edit',
|
||||||
|
templateUrl: './place-edit.component.html',
|
||||||
|
styleUrl: './place-edit.component.scss'
|
||||||
|
})
|
||||||
|
export class PlaceEditComponent implements OnInit{
|
||||||
|
|
||||||
|
place : any = {};
|
||||||
|
id:string = "0";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
constructor(private router: Router,
|
||||||
|
private placeService: PlaceService,
|
||||||
|
private activatedRoute : ActivatedRoute,) { }
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.id = this.activatedRoute.snapshot.params['id'];
|
||||||
|
|
||||||
|
if(this.id && this.id != "0"){
|
||||||
|
this.getById();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
getById(): void{
|
||||||
|
this.placeService.getById(this.id).subscribe({
|
||||||
|
next :(res)=>{
|
||||||
|
if(res.success){
|
||||||
|
this.place = res.data;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error:(err)=>{
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
save() {
|
||||||
|
if(this.id == "0"){
|
||||||
|
this.create(this.place);
|
||||||
|
}else {
|
||||||
|
this.update(this.place);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
create(place: any): void{
|
||||||
|
this.placeService.create(this.place).subscribe( {
|
||||||
|
next: (res)=>{
|
||||||
|
if(res.success){
|
||||||
|
this.router.navigateByUrl("/app/place").then();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
update(service: any): void {
|
||||||
|
this.placeService.update(service).subscribe( {
|
||||||
|
next: (res)=>{
|
||||||
|
if(res.success){
|
||||||
|
this.router.navigateByUrl("/app/place").then();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
<div>
|
||||||
|
<div style="display: inline-flex">
|
||||||
|
<div style="">
|
||||||
|
Recherche <br>
|
||||||
|
|
||||||
|
<input type="text" pInputText [(ngModel)]="searchTerm" (ngModelChange)="search()" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="margin-left: 10px">Filtre pard ta</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div style="text-align: right; margin-bottom :10px">
|
||||||
|
<button (click)="edit('0')" pButton type="button" label="Ajouter une place"></button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p-table [value]="places" [tableStyle]="{'min-width': '50rem'}">
|
||||||
|
<ng-template pTemplate="header">
|
||||||
|
<tr>
|
||||||
|
<th>Etage</th>
|
||||||
|
<th>Taille</th>
|
||||||
|
<th>Disponibilité</th>
|
||||||
|
<th>Date sortie</th>
|
||||||
|
<th>Vehicule occupé</th>
|
||||||
|
<th>Date entrée</th>
|
||||||
|
<th>Propriétaire</th>
|
||||||
|
<th>Action</th>
|
||||||
|
</tr>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template pTemplate="body" let-item>
|
||||||
|
<tr>
|
||||||
|
<td>{{item.etage}}</td>
|
||||||
|
<td>{{item.taille}}</td>
|
||||||
|
<td>{{item.disponibilite}}</td>
|
||||||
|
<td>{{item.vehiculeOccupe}}</td>
|
||||||
|
<td>{{item.dateEntree}}</td>
|
||||||
|
<td>{{item.dateSortie}}</td>
|
||||||
|
<td>{{item.proprietaire}}</td>
|
||||||
|
<td>
|
||||||
|
<i (click)="edit(item._id)" class="pi pi-pencil" style="margin-right: 10px"></i>
|
||||||
|
<i (click)="delete(item._id)" class="pi pi-trash" style="margin-right: 10px"></i>
|
||||||
|
<i (click)="view(item._id)" class="pi pi-eye" style="margin-right: 10px"></i>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</ng-template>
|
||||||
|
</p-table>
|
|
@ -0,0 +1,23 @@
|
||||||
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { PlaceListeComponent } from './place-liste.component';
|
||||||
|
|
||||||
|
describe('PlaceListeComponent', () => {
|
||||||
|
let component: PlaceListeComponent;
|
||||||
|
let fixture: ComponentFixture<PlaceListeComponent>;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
await TestBed.configureTestingModule({
|
||||||
|
imports: [PlaceListeComponent]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
|
||||||
|
fixture = TestBed.createComponent(PlaceListeComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,66 @@
|
||||||
|
import {Component, OnInit} from '@angular/core';
|
||||||
|
import {ButtonDirective} from "primeng/button";
|
||||||
|
import {PrimeTemplate} from "primeng/api";
|
||||||
|
import {TableModule} from "primeng/table";
|
||||||
|
import {Router} from "@angular/router";
|
||||||
|
import {PlaceService} from "../../service/place.service.service";
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-place-liste',
|
||||||
|
templateUrl: './place-liste.component.html',
|
||||||
|
styleUrl: './place-liste.component.scss'
|
||||||
|
})
|
||||||
|
export class PlaceListeComponent implements OnInit{
|
||||||
|
places: any[] = [];
|
||||||
|
searchTerm : string = "";
|
||||||
|
params : any = {};
|
||||||
|
|
||||||
|
constructor(private router: Router,
|
||||||
|
private placeService: PlaceService
|
||||||
|
) {
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.params.search = "";
|
||||||
|
this.params.fields = ["etage", "taille", "disponibilite", "vehicule occupe", "date entrée", "date sortie", "proprietaire"];
|
||||||
|
this.params.page = 1;
|
||||||
|
this.params.limit = 5;
|
||||||
|
this.getPlaces();
|
||||||
|
}
|
||||||
|
|
||||||
|
getPlaces() {
|
||||||
|
this.placeService.getAll(this.params).subscribe({
|
||||||
|
next: (res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.places = res.data;
|
||||||
|
console.log(this.places+ 'voici les plces')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
view(_id: string): void {
|
||||||
|
this.router.navigateByUrl('/app/place/view/'+_id).then();
|
||||||
|
}
|
||||||
|
|
||||||
|
delete(_id: string): void {
|
||||||
|
this.placeService.delete(_id).subscribe({
|
||||||
|
next: (res)=>{
|
||||||
|
if(res.success){
|
||||||
|
this.getPlaces();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
edit(_id: string): void {
|
||||||
|
this.router.navigateByUrl('/app/place/edit/'+_id).then();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
search() {
|
||||||
|
this.params.search = this.searchTerm;
|
||||||
|
this.getPlaces()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<label>etage</label><br>
|
||||||
|
<strong>{{place.etage }}</strong>
|
||||||
|
<br><br>
|
||||||
|
<label>taille</label><br>
|
||||||
|
{{place.taille}}
|
||||||
|
<br><br>
|
||||||
|
<label>disponibilite</label><br>
|
||||||
|
{{place.disponibilite}}
|
||||||
|
<br><br>
|
||||||
|
<label>Vehicule ocupée</label><br>
|
||||||
|
{{place.vehiculeOccupee}}
|
||||||
|
<br><br>
|
||||||
|
<label>date entrée</label><br>
|
||||||
|
{{place.dateEntree}}
|
||||||
|
<br><br>
|
||||||
|
<label>date sortie</label><br>
|
||||||
|
{{place.dateSortie}}
|
||||||
|
<label>proprietaire</label><br>
|
||||||
|
{{place.proprietaire}}
|
||||||
|
</div>
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { PlaceViewComponent } from './place-view.component';
|
||||||
|
|
||||||
|
describe('PlaceViewComponent', () => {
|
||||||
|
let component: PlaceViewComponent;
|
||||||
|
let fixture: ComponentFixture<PlaceViewComponent>;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
await TestBed.configureTestingModule({
|
||||||
|
imports: [PlaceViewComponent]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
|
||||||
|
fixture = TestBed.createComponent(PlaceViewComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,49 @@
|
||||||
|
import {ChangeDetectorRef, Component, OnInit} from '@angular/core';
|
||||||
|
import {ServiceService} from "../../../service/service/service.service";
|
||||||
|
import {ActivatedRoute, Router} from "@angular/router";
|
||||||
|
import {PlaceService} from "../../service/place.service.service";
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-place-view',
|
||||||
|
standalone: true,
|
||||||
|
imports: [],
|
||||||
|
templateUrl: './place-view.component.html',
|
||||||
|
styleUrl: './place-view.component.scss'
|
||||||
|
})
|
||||||
|
export class PlaceViewComponent implements OnInit{
|
||||||
|
place : any = {};
|
||||||
|
id: string = "0";
|
||||||
|
|
||||||
|
constructor(private PlaceService: PlaceService,
|
||||||
|
private activatedRoute : ActivatedRoute,
|
||||||
|
private cdr: ChangeDetectorRef,
|
||||||
|
private router: Router) { }
|
||||||
|
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.id = this.activatedRoute.snapshot.params['id'];
|
||||||
|
|
||||||
|
if(this.id && this.id != "0"){
|
||||||
|
this.getById();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
getById(): void{
|
||||||
|
this.PlaceService.getById(this.id).subscribe({
|
||||||
|
next :(res)=>{
|
||||||
|
if(res.success){
|
||||||
|
this.place = res.data;
|
||||||
|
this.cdr.detectChanges();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error:(err)=>{
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
import {NgModule} from '@angular/core';
|
||||||
|
import {CommonModule} from '@angular/common';
|
||||||
|
import {RouterModule, Routes} from "@angular/router";
|
||||||
|
import {TableModule} from "primeng/table";
|
||||||
|
import {ButtonModule} from "primeng/button";
|
||||||
|
import {InputTextModule} from "primeng/inputtext";
|
||||||
|
import {FormsModule} from "@angular/forms";
|
||||||
|
import {PlaceListeComponent} from "./page/place-liste/place-liste.component";
|
||||||
|
import {PlaceViewComponent} from "./page/place-view/place-view.component";
|
||||||
|
import {PlaceEditComponent} from "./page/place-edit/place-edit.component";
|
||||||
|
|
||||||
|
const routes: Routes = [
|
||||||
|
{
|
||||||
|
path: '',
|
||||||
|
component: PlaceListeComponent
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'edit/:id',
|
||||||
|
component: PlaceEditComponent
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path:'view/:id',
|
||||||
|
component:PlaceViewComponent
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
declarations: [
|
||||||
|
PlaceListeComponent,
|
||||||
|
PlaceEditComponent
|
||||||
|
],
|
||||||
|
imports: [
|
||||||
|
CommonModule,
|
||||||
|
RouterModule.forChild(routes),
|
||||||
|
TableModule,
|
||||||
|
ButtonModule,
|
||||||
|
InputTextModule,
|
||||||
|
FormsModule
|
||||||
|
]
|
||||||
|
})
|
||||||
|
export class PlaceModule {
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
import { TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { PlaceServiceService } from './place.service.service';
|
||||||
|
|
||||||
|
describe('PlaceServiceService', () => {
|
||||||
|
let service: PlaceServiceService;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
TestBed.configureTestingModule({});
|
||||||
|
service = TestBed.inject(PlaceServiceService);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be created', () => {
|
||||||
|
expect(service).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,34 @@
|
||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
import {HttpClient} from "@angular/common/http";
|
||||||
|
import {Observable} from "rxjs";
|
||||||
|
import {apiRoute} from "../../../core/routes/api.route";
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root'
|
||||||
|
})
|
||||||
|
export class PlaceService {
|
||||||
|
|
||||||
|
|
||||||
|
url: string = "place"
|
||||||
|
constructor(private http: HttpClient) { }
|
||||||
|
|
||||||
|
getAll(params:any):Observable<any>{
|
||||||
|
return this.http.get<any>(apiRoute+this.url, {params});
|
||||||
|
}
|
||||||
|
|
||||||
|
getById(id: string):Observable<any> {
|
||||||
|
return this.http.get<any>(apiRoute+this.url+"/"+id);
|
||||||
|
}
|
||||||
|
|
||||||
|
create(place: any):Observable<any>{
|
||||||
|
return this.http.post<any>(apiRoute+this.url,place);
|
||||||
|
}
|
||||||
|
|
||||||
|
update(place: any):Observable<any>{
|
||||||
|
return this.http.put<any>(apiRoute+this.url+ "/"+place._id,place);
|
||||||
|
}
|
||||||
|
|
||||||
|
delete(id: string):Observable<any>{
|
||||||
|
return this.http.delete<any>(apiRoute+this.url + "/"+id);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1 +1,26 @@
|
||||||
<p>service-edit works!</p>
|
<div>
|
||||||
|
<div>
|
||||||
|
<label>vente</label>
|
||||||
|
<input [(ngModel)]="service.vente" type="text" pInputText />
|
||||||
|
<br>
|
||||||
|
<label>financement</label>
|
||||||
|
<input [(ngModel)]="service.financement" type="text" pInputText />
|
||||||
|
<br>
|
||||||
|
<label>assurance</label>
|
||||||
|
<input [(ngModel)]="service.assurance" type="text" pInputText />
|
||||||
|
<br>
|
||||||
|
<label>programme</label>
|
||||||
|
<input [(ngModel)]="service.programme" type="text" pInputText />
|
||||||
|
<br>
|
||||||
|
<label>gestion</label>
|
||||||
|
<input [(ngModel)]="service.gestion" type="text" pInputText />
|
||||||
|
<br>
|
||||||
|
<label>location</label>
|
||||||
|
<input [(ngModel)]="service.location" type="text" pInputText />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button (click)="save()" pButton type="button" label="Enregistrer"></button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,10 +8,10 @@ describe('ServiceEditComponent', () => {
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await TestBed.configureTestingModule({
|
await TestBed.configureTestingModule({
|
||||||
declarations: [ ServiceEditComponent ]
|
imports: [ServiceEditComponent]
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
|
|
||||||
fixture = TestBed.createComponent(ServiceEditComponent);
|
fixture = TestBed.createComponent(ServiceEditComponent);
|
||||||
component = fixture.componentInstance;
|
component = fixture.componentInstance;
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
|
|
|
@ -1,15 +1,70 @@
|
||||||
import { Component, OnInit } from '@angular/core';
|
import {Component, OnInit} from '@angular/core';
|
||||||
|
import {ActivatedRoute, Router} from "@angular/router";
|
||||||
|
import {ServiceService} from "../../service/service.service";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-service-edit',
|
selector: 'app-service-edit',
|
||||||
templateUrl: './service-edit.component.html',
|
templateUrl: './service-edit.component.html',
|
||||||
styleUrls: ['./service-edit.component.scss']
|
styleUrl: './service-edit.component.scss'
|
||||||
})
|
})
|
||||||
export class ServiceEditComponent implements OnInit {
|
export class ServiceEditComponent implements OnInit{
|
||||||
|
service: any = {};
|
||||||
|
id: string = "0";
|
||||||
|
|
||||||
constructor() { }
|
constructor(private router: Router,
|
||||||
|
private serviceService: ServiceService,
|
||||||
|
private activatedRoute : ActivatedRoute,
|
||||||
|
) {
|
||||||
|
}
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
|
this.id = this.activatedRoute.snapshot.params['id'];
|
||||||
|
|
||||||
|
if(this.id && this.id != "0"){
|
||||||
|
this.getById();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getById(): void{
|
||||||
|
this.serviceService.getById(this.id).subscribe({
|
||||||
|
next :(res)=>{
|
||||||
|
if(res.success){
|
||||||
|
this.service = res.data;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error:(err)=>{
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
save():void {
|
||||||
|
if(this.id == "0"){
|
||||||
|
this.create(this.service);
|
||||||
|
}else {
|
||||||
|
this.update(this.service);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
create(service: any): void{
|
||||||
|
this.serviceService.create(service).subscribe( {
|
||||||
|
next: (res)=>{
|
||||||
|
if(res.success){
|
||||||
|
this.router.navigateByUrl("/app/service").then();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
update(service: any): void {
|
||||||
|
this.serviceService.update(service).subscribe( {
|
||||||
|
next: (res)=>{
|
||||||
|
if(res.success){
|
||||||
|
this.router.navigateByUrl("/app/service").then();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1 +1,46 @@
|
||||||
<p>service-list works!</p>
|
<div>
|
||||||
|
<div style="display: inline-flex">
|
||||||
|
<div style="">
|
||||||
|
Recherche <br>
|
||||||
|
|
||||||
|
<input type="text" pInputText [(ngModel)]="searchTerm" (ngModelChange)="search()" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="margin-left: 10px">Filtre pard ta</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="text-align: right; margin-bottom :10px">
|
||||||
|
<button (click)="edit('0')" pButton type="button" label="Ajouter un service"></button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p-table [value]="services" [tableStyle]="{'min-width': '50rem'}">
|
||||||
|
<ng-template pTemplate="header">
|
||||||
|
<tr>
|
||||||
|
<th>vente</th>
|
||||||
|
<th>assurance</th>
|
||||||
|
<th>programme</th>
|
||||||
|
<th>financement</th>
|
||||||
|
<th>gestion</th>
|
||||||
|
<th>location</th>
|
||||||
|
<th>Action</th>
|
||||||
|
</tr>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template pTemplate="body" let-item>
|
||||||
|
<tr>
|
||||||
|
<td>{{item.vente}}</td>
|
||||||
|
<td>{{item.assurance}}</td>
|
||||||
|
<td>{{item.programme}}</td>
|
||||||
|
<td>{{item.financement}}</td>
|
||||||
|
<td>{{item.gestion}}</td>
|
||||||
|
<td>{{item.location}}</td>
|
||||||
|
<td>
|
||||||
|
<i (click)="edit(item._id)" class="pi pi-pencil" style="margin-right: 10px"></i>
|
||||||
|
<i (click)="delete(item._id)" class="pi pi-trash" style="margin-right: 10px"></i>
|
||||||
|
<i (click)="view(item._id)" class="pi pi-eye" style="margin-right: 10px"></i>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</ng-template>
|
||||||
|
</p-table>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,10 +8,10 @@ describe('ServiceListComponent', () => {
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await TestBed.configureTestingModule({
|
await TestBed.configureTestingModule({
|
||||||
declarations: [ ServiceListComponent ]
|
imports: [ServiceListComponent]
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
|
|
||||||
fixture = TestBed.createComponent(ServiceListComponent);
|
fixture = TestBed.createComponent(ServiceListComponent);
|
||||||
component = fixture.componentInstance;
|
component = fixture.componentInstance;
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
|
|
|
@ -1,15 +1,67 @@
|
||||||
import { Component, OnInit } from '@angular/core';
|
import {Component, OnInit} from '@angular/core';
|
||||||
|
import {Router} from "@angular/router";
|
||||||
|
import {PlaceService} from "../../../place/service/place.service.service";
|
||||||
|
import {ServiceService} from "../../service/service.service";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-service-list',
|
selector: 'app-service-list',
|
||||||
templateUrl: './service-list.component.html',
|
templateUrl: './service-list.component.html',
|
||||||
styleUrls: ['./service-list.component.scss']
|
styleUrl: './service-list.component.scss'
|
||||||
})
|
})
|
||||||
export class ServiceListComponent implements OnInit {
|
export class ServiceListComponent implements OnInit{
|
||||||
|
|
||||||
constructor() { }
|
searchTerm : string = "";
|
||||||
|
params : any = {};
|
||||||
|
|
||||||
ngOnInit(): void {
|
services: any[] = [];
|
||||||
}
|
|
||||||
|
constructor(private router: Router,
|
||||||
|
private serviceService: ServiceService
|
||||||
|
) {}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.params.search = "";
|
||||||
|
this.params.fields = ["vente", "assurance", "programme", "financement", "gestion", "location"];
|
||||||
|
this.params.page = 1;
|
||||||
|
this.params.limit = 5;
|
||||||
|
this.getServices();
|
||||||
|
}
|
||||||
|
|
||||||
|
getServices() {
|
||||||
|
this.serviceService.getAll(this.params).subscribe({
|
||||||
|
next: (res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.services = res.data;
|
||||||
|
console.log(this.services+ 'voici les services')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
edit(_id: string): void {
|
||||||
|
this.router.navigateByUrl('/app/service/edit/'+_id).then();
|
||||||
|
}
|
||||||
|
|
||||||
|
view(_id: string): void {
|
||||||
|
this.router.navigateByUrl('/app/service/view/'+_id).then();
|
||||||
|
}
|
||||||
|
|
||||||
|
delete(_id: string): void {
|
||||||
|
this.serviceService.delete(_id).subscribe({
|
||||||
|
next: (res)=>{
|
||||||
|
if(res.success){
|
||||||
|
this.getServices();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
search() {
|
||||||
|
this.params.search = this.searchTerm;
|
||||||
|
this.getServices()
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<label>vente</label><br>
|
||||||
|
<strong>{{service.vente }}</strong>
|
||||||
|
<br><br>
|
||||||
|
<label>financement</label><br>
|
||||||
|
{{service.financement}}
|
||||||
|
<br><br>
|
||||||
|
<label>Assurance</label><br>
|
||||||
|
{{service.assurance}}
|
||||||
|
<br><br>
|
||||||
|
<label>Programme</label><br>
|
||||||
|
{{service.programme}}
|
||||||
|
<br><br>
|
||||||
|
<label>Gestion</label><br>
|
||||||
|
{{service.gestion}}
|
||||||
|
<br><br>
|
||||||
|
<label>Location</label><br>
|
||||||
|
{{service.location}}
|
||||||
|
</div>
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
</div>
|
|
@ -0,0 +1,23 @@
|
||||||
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { ServiceViewComponent } from './service-view.component';
|
||||||
|
|
||||||
|
describe('ServiceViewComponent', () => {
|
||||||
|
let component: ServiceViewComponent;
|
||||||
|
let fixture: ComponentFixture<ServiceViewComponent>;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
await TestBed.configureTestingModule({
|
||||||
|
imports: [ServiceViewComponent]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
|
||||||
|
fixture = TestBed.createComponent(ServiceViewComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,45 @@
|
||||||
|
import {ChangeDetectorRef, Component, OnInit} from '@angular/core';
|
||||||
|
import {VehicleService} from "../../../vehicle/service/vehicle.service";
|
||||||
|
import {ActivatedRoute, Router} from "@angular/router";
|
||||||
|
import {ServiceService} from "../../service/service.service";
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-service-view',
|
||||||
|
standalone: true,
|
||||||
|
imports: [],
|
||||||
|
templateUrl: './service-view.component.html',
|
||||||
|
styleUrl: './service-view.component.scss'
|
||||||
|
})
|
||||||
|
export class ServiceViewComponent implements OnInit{
|
||||||
|
service : any = {};
|
||||||
|
id: string = "0";
|
||||||
|
|
||||||
|
constructor(private serviceService: ServiceService,
|
||||||
|
private activatedRoute : ActivatedRoute,
|
||||||
|
private cdr: ChangeDetectorRef,
|
||||||
|
private router: Router) { }
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.id = this.activatedRoute.snapshot.params['id'];
|
||||||
|
|
||||||
|
if(this.id && this.id != "0"){
|
||||||
|
this.getById();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
getById(): void{
|
||||||
|
this.serviceService.getById(this.id).subscribe({
|
||||||
|
next :(res)=>{
|
||||||
|
if(res.success){
|
||||||
|
this.service = res.data;
|
||||||
|
this.cdr.detectChanges();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error:(err)=>{
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,11 +1,14 @@
|
||||||
import { NgModule } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
|
import {ServiceListComponent} from "./page/service-list/service-list.component";
|
||||||
import {RouterModule, Routes} from "@angular/router";
|
import {RouterModule, Routes} from "@angular/router";
|
||||||
import {VehicleListComponent} from "../vehicle/page/vehicle-list/vehicle-list.component";
|
import {TableModule} from "primeng/table";
|
||||||
import {VehicleEditComponent} from "../vehicle/page/vehicle-edit/vehicle-edit.component";
|
import {ButtonModule} from "primeng/button";
|
||||||
import {VehicleViewComponent} from "../vehicle/page/vehicle-view/vehicle-view.component";
|
import {InputTextModule} from "primeng/inputtext";
|
||||||
import { ServiceListComponent } from './page/service-list/service-list.component';
|
import {FormsModule} from "@angular/forms";
|
||||||
import { ServiceEditComponent } from './page/service-edit/service-edit.component';
|
import {ServiceEditComponent} from "./page/service-edit/service-edit.component";
|
||||||
|
import {ServiceViewComponent} from "./page/service-view/service-view.component";
|
||||||
|
|
||||||
|
|
||||||
const routes: Routes = [
|
const routes: Routes = [
|
||||||
{
|
{
|
||||||
|
@ -13,25 +16,27 @@ const routes: Routes = [
|
||||||
component: ServiceListComponent
|
component: ServiceListComponent
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'edit',
|
path: 'edit/:id',
|
||||||
component: VehicleEditComponent
|
component: ServiceEditComponent
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path:'view',
|
path:'view/:id',
|
||||||
component:VehicleViewComponent
|
component:ServiceViewComponent
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [
|
declarations: [
|
||||||
|
ServiceEditComponent,
|
||||||
ServiceListComponent,
|
ServiceListComponent
|
||||||
ServiceEditComponent
|
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
RouterModule.forChild(routes)
|
RouterModule.forChild(routes),
|
||||||
|
TableModule,
|
||||||
|
ButtonModule,
|
||||||
|
InputTextModule,
|
||||||
|
FormsModule
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
export class ServiceModule { }
|
export class ServiceModule { }
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
import {HttpClient} from "@angular/common/http";
|
||||||
|
import {Observable} from "rxjs";
|
||||||
|
import {apiRoute} from "../../../core/routes/api.route";
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root'
|
||||||
|
})
|
||||||
|
export class ServiceService {
|
||||||
|
|
||||||
|
|
||||||
|
url: string = "service"
|
||||||
|
constructor(private http: HttpClient) { }
|
||||||
|
|
||||||
|
getAll(params:any):Observable<any>{
|
||||||
|
return this.http.get<any>(apiRoute+this.url, {params});
|
||||||
|
}
|
||||||
|
|
||||||
|
getById(id: string):Observable<any> {
|
||||||
|
return this.http.get<any>(apiRoute+this.url+"/"+id);
|
||||||
|
}
|
||||||
|
|
||||||
|
create(service: any):Observable<any>{
|
||||||
|
return this.http.post<any>(apiRoute+this.url,service);
|
||||||
|
}
|
||||||
|
|
||||||
|
update(service: any):Observable<any>{
|
||||||
|
return this.http.put<any>(apiRoute+this.url+ "/"+service._id,service);
|
||||||
|
}
|
||||||
|
|
||||||
|
delete(id: string):Observable<any>{
|
||||||
|
return this.http.delete<any>(apiRoute+this.url + "/"+id);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,13 +1,16 @@
|
||||||
<!-- Toolbar -->
|
<!-- Toolbar -->
|
||||||
<div class="toolbar" role="banner">
|
<div class="toolbar" role="banner">
|
||||||
<img
|
<img
|
||||||
width="40"
|
width="40"
|
||||||
alt="Angular Logo"
|
alt="Angular Logo"
|
||||||
src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTAgMjUwIj4KICAgIDxwYXRoIGZpbGw9IiNERDAwMzEiIGQ9Ik0xMjUgMzBMMzEuOSA2My4ybDE0LjIgMTIzLjFMMTI1IDIzMGw3OC45LTQzLjcgMTQuMi0xMjMuMXoiIC8+CiAgICA8cGF0aCBmaWxsPSIjQzMwMDJGIiBkPSJNMTI1IDMwdjIyLjItLjFWMjMwbDc4LjktNDMuNyAxNC4yLTEyMy4xTDEyNSAzMHoiIC8+CiAgICA8cGF0aCAgZmlsbD0iI0ZGRkZGRiIgZD0iTTEyNSA1Mi4xTDY2LjggMTgyLjZoMjEuN2wxMS43LTI5LjJoNDkuNGwxMS43IDI5LjJIMTgzTDEyNSA1Mi4xem0xNyA4My4zaC0zNGwxNy00MC45IDE3IDQwLjl6IiAvPgogIDwvc3ZnPg=="
|
src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTAgMjUwIj4KICAgIDxwYXRoIGZpbGw9IiNERDAwMzEiIGQ9Ik0xMjUgMzBMMzEuOSA2My4ybDE0LjIgMTIzLjFMMTI1IDIzMGw3OC45LTQzLjcgMTQuMi0xMjMuMXoiIC8+CiAgICA8cGF0aCBmaWxsPSIjQzMwMDJGIiBkPSJNMTI1IDMwdjIyLjItLjFWMjMwbDc4LjktNDMuNyAxNC4yLTEyMy4xTDEyNSAzMHoiIC8+CiAgICA8cGF0aCAgZmlsbD0iI0ZGRkZGRiIgZD0iTTEyNSA1Mi4xTDY2LjggMTgyLjZoMjEuN2wxMS43LTI5LjJoNDkuNGwxMS43IDI5LjJIMTgzTDEyNSA1Mi4xem0xNyA4My4zaC0zNGwxNy00MC45IDE3IDQwLjl6IiAvPgogIDwvc3ZnPg=="
|
||||||
/>
|
/>
|
||||||
<!-- vehicle -->
|
<!-- vehicle -->
|
||||||
<a routerLink="/app/vehicle"> <span><i class="pi pi-car"></i> Véhicule</span></a>
|
<a routerLink="/app/vehicle"> <span><i class="pi pi-car"></i> Véhicule</span></a>
|
||||||
<div class="spacer"></div>
|
<div class="spacer"></div>
|
||||||
|
<a routerLink="/app/place"><span><i class="pi-compass"></i>Place</span></a>
|
||||||
|
<div class="spacer"></div>
|
||||||
|
|
||||||
|
|
||||||
<!-- service -->
|
<!-- service -->
|
||||||
<a routerLink="/app/service"><span><i class="pi-compass"></i>Service</span></a>
|
<a routerLink="/app/service"><span><i class="pi-compass"></i>Service</span></a>
|
||||||
|
@ -27,8 +30,6 @@
|
||||||
<div class="spacer"></div>
|
<div class="spacer"></div>
|
||||||
<span>Utilisateur</span>
|
<span>Utilisateur</span>
|
||||||
<div class="spacer"></div>
|
<div class="spacer"></div>
|
||||||
<span>Place</span>
|
|
||||||
<div class="spacer"></div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div role="main" style="margin-top: 120px; padding: 20px">
|
<div role="main" style="margin-top: 120px; padding: 20px">
|
||||||
|
|
Loading…
Reference in New Issue