feat: Implement product management features including CRUD operations and UI components

This commit is contained in:
2025-12-05 00:01:48 +03:30
parent 3bc1202c77
commit 0419ff2fc7
36 changed files with 377 additions and 48 deletions
@@ -1,3 +1,4 @@
import { IPaginatedResponse } from '@/core/models/service.model';
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
@@ -10,8 +11,8 @@ export class InventoriesService {
private apiRoutes = INVENTORIES_API_ROUTES;
getAll(): Observable<IInventoryResponse[]> {
return this.http.get<IInventoryRawResponse[]>(this.apiRoutes.list());
getAll(): Observable<IPaginatedResponse<IInventoryResponse>> {
return this.http.get<IPaginatedResponse<IInventoryRawResponse>>(this.apiRoutes.list());
}
getSingle(inventoryId: string): Observable<IInventoryResponse> {
@@ -8,5 +8,7 @@
[items]="items()"
[loading]="loading()"
[showDetails]="true"
>
</app-page-data-list>
(onAdd)="openAddForm()"
/>
<inventory-form [(visible)]="visibleForm" (onSubmit)="refresh()" />
@@ -3,13 +3,14 @@ import {
PageDataListComponent,
} from '@/shared/components/pageDataList/page-data-list.component';
import { Component, signal } from '@angular/core';
import { InventoryFormComponent } from '../components/form.component';
import { IInventoryResponse } from '../models';
import { InventoriesService } from '../services/main.service';
@Component({
selector: 'app-inventories',
templateUrl: './list.component.html',
imports: [PageDataListComponent],
imports: [PageDataListComponent, InventoryFormComponent],
})
export class InventoriesComponent {
constructor(private inventoryService: InventoriesService) {
@@ -26,12 +27,21 @@ export class InventoriesComponent {
loading = signal(false);
items = signal<IInventoryResponse[]>([]);
visibleForm = signal(false);
refresh() {
this.getData();
}
getData() {
this.loading.set(true);
this.inventoryService.getAll().subscribe((res) => {
this.loading.set(false);
this.items.set(res);
this.items.set(res.data);
});
}
openAddForm() {
this.visibleForm.set(true);
}
}