Skip to main content

Bảo trì

Mô hình dữ liệu

Mối quan hệ với các mô hình khác

/src/app/services/maintenance/manual-maitenance-plans.service.ts
import { HttpClient, HttpHeaders } from "@angular/common/http";
import { Injectable } from "@angular/core";
import { catchError, firstValueFrom, pipe } from "rxjs";
import { ApiResponse } from "src/app/models/api/api-response.model";
import { ManualMaintenancePlanPostModel } from "src/app/models/maintenance/manual-maintenance-plan/manual-maintenance-plan-post.model";
import { ManualMaintenancePlanPutModel } from "src/app/models/maintenance/manual-maintenance-plan/manual-maintenance-plan-put.model";
import { ManualMaintenancePlanResponseModel } from "src/app/models/maintenance/manual-maintenance-plan/manual-maintenance-plan-response.model";
import { ManualMaintenancePlan } from "src/app/models/maintenance/manual-maintenance-plan/manual-maintenance-plan.model";
import { PaginationResponseModel } from "src/app/models/pagination/pagination.response.model";
import { ProjectModel } from "src/app/models/project/project.model";
import { BaseService } from "../base/base.service";
import { LoadingService } from "../loading/loading-service";
import { MessageService } from "../message/message.service";

@Injectable()
export class ManualMaintenancePlanService extends BaseService {

constructor(
private http: HttpClient
, private messageService: MessageService
, private loadingService: LoadingService
)
{
super();
this.baseAddress = `[fmApi]/v1/[clientId]/[projectId]/manual-maintenance-plans`;

}

private baseAddress: string;
private httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
};

public async get(
project: ProjectModel,
pageIndex:number
)
{
try
{
const pageData = project.manualMaintenancePlans.pages.find(x => x.pageIndex === pageIndex);
if (pageData) return pageData.items;
this.loadingService.show("");
const response = await firstValueFrom(this.http.get<ApiResponse<PaginationResponseModel<ManualMaintenancePlanResponseModel>>>(`${this.baseAddress}/page/${pageIndex}`, this.httpOptions)
.pipe(
catchError(this.handleError)
));
this.loadingService.hide();
if(response.result)
{
const data = response.result.items.map(x=>new ManualMaintenancePlan(x));
project.manualMaintenancePlans.total = response.result.total;
project.manualMaintenancePlans.addPageByItems(data,pageIndex);
return data;
}
else
{
this.messageService.setErrorMessage(response.errorMessage);
return false;
}
}
catch(err) {
this.loadingService.hide();
console.error(err);
this.messageService.setErrorMessage("Error: Can not connect to the server!");
return false;
}

}

public async post(
postModel: ManualMaintenancePlanPostModel
) {
try {
this.loadingService.show("Đang tạo mới..");
const response = await firstValueFrom(this.http.post<ApiResponse<ManualMaintenancePlanResponseModel>>(`${this.baseAddress}`, postModel, this.httpOptions)
.pipe(
catchError(this.handleError)
));
this.loadingService.hide();
if (response?.result) {
const item = new ManualMaintenancePlan(response.result);
this.messageService.setMessage("Tạo mới thành công!");

return item;
}
else {
this.messageService.setErrorMessage(response.errorMessage);
return false;
}
}
catch (err) {
this.loadingService.hide();
console.error(err);
this.messageService.setErrorMessage("Error: Can not connect to the server!");
return false;
}
}

public async put(
putModel: ManualMaintenancePlanPutModel
) {
try {
this.loadingService.show("Đang cập nhật..");
const response = await firstValueFrom(this.http.put<ApiResponse<ManualMaintenancePlanResponseModel>>(`${this.baseAddress}`, putModel, this.httpOptions)
.pipe(
catchError(this.handleError)
));
this.loadingService.hide();
if (response?.result) {
const item = new ManualMaintenancePlan(response.result);
this.messageService.setMessage("Cập nhật thành công!");

return item;
}
else {
this.messageService.setErrorMessage(response.errorMessage);
return false;
}
}
catch (err) {
this.loadingService.hide();
console.error(err);
this.messageService.setErrorMessage("Error: Can not connect to the server!");
return false;
}
}

public async delete(
id: string
) {
try {
this.loadingService.show("Đang xóa..");
const response = await firstValueFrom(this.http.delete<ApiResponse<object>>(`${this.baseAddress}/${id}`, this.httpOptions)
.pipe(
catchError(this.handleError)
));
this.loadingService.hide();
if (response?.successful) {
this.messageService.setMessage("Xóa thành công!");
return true;
}
else {
this.messageService.setErrorMessage(response.errorMessage);
return false;
}
}
catch (err) {
this.loadingService.hide();
console.error(err);
this.messageService.setErrorMessage("Error: Can not connect to the server!");
return false;

}
}
}