Commit f02270be by DESKTOP-E3GSHH7\myhr

จัดการบริษัท

parent c5f2b417
...@@ -9,6 +9,34 @@ export class BaseModel{ ...@@ -9,6 +9,34 @@ export class BaseModel{
} }
} }
export function dataToArray(data?: any) {
return data ? data : []
}
export function checkData(data?: any) {
return (data || data == 0) ? data : null
}
export function checkDataNumber(data?: any) {
return (data || data == 0) ? Number(data) : null
}
export function baseGetName(thName?: string | null, engName?: string | null, currentLang?: string) {
let name = null
if (currentLang == "th") {
if (thName) {
name = thName
} else if (engName) {
name = engName
}
} else {
if (engName) {
name = engName
} else if (thName) {
name = thName
}
}
return name
}
export interface Sort { export interface Sort {
......
// src/app/modules/company/models/companys.mode.ts
import { BaseModel, dataToArray, checkData, baseGetName } from "./base.model";
import { CategoryModel } from "./category.model";
import { WelfareModel } from "./welfare.model";
import { CountryModel } from "./country.model";
import { SubDistrictModel } from "./subdistrict.model";
import { ProvinceModel } from "./province.model";
import { TranslateService } from "@ngx-translate/core";
import { environment } from "../../../environments/environment";
export interface CompanyModelS {
companyCategory: CategoryModel | null;
companyId: string;
employerId: string;
companyWelfareList: WelfareModel[];
country: CountryModel | null;
locationDetail: string;
companyDetail: string;
email: string;
emailContact: string;
engFirstnameContact: string;
engLastnameContact: string;
engName: string;
facebookSocial: string;
fax: string;
faxContact: string;
industrialEstate: number;
latitude: string;
line: string;
longitude: string;
map: string;
phone: string;
phoneContact: string;
photoGraph: string;
province: ProvinceModel | null;
provinceContact: ProvinceModel | null;
subDistrict: SubDistrictModel | null;
subDistrictContact: SubDistrictModel | null;
taxPayer: string;
telContact: string;
thFirstnameContact: string;
thLastnameContact: string;
thName: string;
twitterSocial: string;
video: string;
webSite: string;
websiteContact: string;
websiteSocial: string;
status: number;
// เพิ่มบรรทัดนี้:
updatedAt: string; // หรือ Date หาก backend ส่งมาเป็น timestamp หรือ Date object
}
export class CompanyModelS extends BaseModel implements CompanyModelS {
companyCategory: CategoryModel | null;
companyId: string;
employerId: string;
companyWelfareList: WelfareModel[];
country: CountryModel | null;
locationDetail: string;
companyDetail: string;
email: string;
emailContact: string;
engFirstnameContact: string;
engLastnameContact: string;
engName: string;
facebookSocial: string;
fax: string;
faxContact: string;
industrialEstate: number;
latitude: string;
line: string;
longitude: string;
map: string;
phone: string;
phoneContact: string;
photoGraph: string;
province: ProvinceModel | null;
provinceContact: ProvinceModel | null;
subDistrict: SubDistrictModel | null;
subDistrictContact: SubDistrictModel | null;
taxPayer: string;
telContact: string;
thFirstnameContact: string;
thLastnameContact: string;
thName: string;
twitterSocial: string;
video: string;
webSite: string;
websiteContact: string;
websiteSocial: string;
status: number;
// เพิ่มบรรทัดนี้:
updatedAt: string; // หรือ Date
[key: string]: any;
constructor(data?: Partial<CompanyModelS>, translateService?: TranslateService) {
super(data, translateService);
this.companyCategory = data?.companyCategory ? new CategoryModel(data?.companyCategory, translateService) : null;
this.companyId = checkData(data?.companyId);
this.companyWelfareList = dataToArray(data?.companyWelfareList).map((x: WelfareModel) => new WelfareModel(x, translateService));
this.country = data?.country ? new CountryModel(data?.country, translateService) : null;
this.locationDetail = checkData(data?.locationDetail);
this.companyDetail = checkData(data?.companyDetail);
this.email = checkData(data?.email);
this.emailContact = checkData(data?.emailContact);
this.engFirstnameContact = checkData(data?.engFirstnameContact);
this.engLastnameContact = checkData(data?.engLastnameContact);
this.engName = checkData(data?.engName);
this.facebookSocial = checkData(data?.facebookSocial);
this.fax = checkData(data?.fax);
this.faxContact = checkData(data?.faxContact);
this.industrialEstate = checkData(data?.industrialEstate);
this.latitude = checkData(data?.latitude);
this.line = checkData(data?.line);
this.longitude = checkData(data?.longitude);
this.map = checkData(data?.map);
this.phone = checkData(data?.phone);
this.phoneContact = checkData(data?.phoneContact);
this.photoGraph = checkData(data?.photoGraph);
this.province = data?.province ? new ProvinceModel(data?.province, translateService) : null;
this.provinceContact = data?.provinceContact ? new ProvinceModel(data?.provinceContact, translateService) : null;
this.subDistrict = data?.subDistrict ? new SubDistrictModel(data?.subDistrict, translateService) : null;
this.subDistrictContact = data?.subDistrictContact ? new SubDistrictModel(data?.subDistrictContact, translateService) : null;
this.taxPayer = checkData(data?.taxPayer);
this.telContact = checkData(data?.telContact);
this.thFirstnameContact = checkData(data?.thFirstnameContact);
this.thLastnameContact = checkData(data?.thLastnameContact);
this.thName = checkData(data?.thName);
this.twitterSocial = checkData(data?.twitterSocial);
this.video = checkData(data?.video);
this.webSite = checkData(data?.webSite);
this.websiteContact = checkData(data?.websiteContact);
this.websiteSocial = checkData(data?.websiteSocial);
this.status = checkData(data?.status);
// เพิ่มบรรทัดนี้:
this.updatedAt = checkData(data?.updatedAt); // ดึงค่า updatedAt จากข้อมูลที่ได้รับ
}
getPicture() {
if (this.photoGraph) {
return environment.baseUrl + "/files/image/" + this.photoGraph;
} else {
return "assets/img/icon/icon_employer.png";
}
}
getStatus(): string {
if (this.status == 1) {
return this.translateService.instant('PUBLIC');
} else {
return this.translateService.instant('PENDING');
}
}
getName() {
return baseGetName(this.thName, this.engName, this.translateService?.currentLang);
}
}
\ No newline at end of file
import { TranslateService } from "@ngx-translate/core"; import { TranslateService } from "@ngx-translate/core";
import { BaseModel, baseGetName, checkData } from "./base.model"; import { BaseModel, baseGetName, checkData } from "./base.model";
import { CountryModel } from "./country.model"; import { CountryModel } from "./country.model";
import { RegionModel } from "./region.model"; import { RegionModel } from "./Region.model";
export interface ProvinceModel { export interface ProvinceModel {
provinceId: string provinceId: string
shortTname: string shortTname: string
......
...@@ -12,7 +12,7 @@ import { CompanyModel } from '../models/company.model'; ...@@ -12,7 +12,7 @@ import { CompanyModel } from '../models/company.model';
}) })
export class CompanyService { export class CompanyService {
apiBaseUrl = "/companys"; apiBaseUrl = "/company";
constructor( constructor(
private http: HttpClient, private http: HttpClient,
private translateService: TranslateService private translateService: TranslateService
......
// src/app/modules/company/services/companys.service.ts
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { forkJoin, map, Observable, switchMap } from 'rxjs';
import { environment } from "../../../environments/environment";
import { CompanyModelS } from '../models/companys.mode';
import { PageResponseModel } from '../models/base.model'; // ตรวจสอบว่ามี BaseModel ใน base.model.ts
@Injectable({
providedIn: 'root'
})
export class CompanyServiceS {
api = "/company";
urlApi = environment.baseUrl + "/company";
constructor(private http: HttpClient) { }
getById(companyId: string): Observable<CompanyModelS> {
return this.http.get<CompanyModelS>(this.urlApi + "/" + companyId);
}
getList(): Observable<CompanyModelS[]> {
return this.http.get<CompanyModelS[]>(this.urlApi + "/list");
}
getListByPageSize(body: { page: number; size: number }): Observable<PageResponseModel<CompanyModelS>> {
return this.http.get<PageResponseModel<CompanyModelS>>(this.urlApi, { params: body }).pipe(
map((page) => {
return {
...page, content: page.content.map((e) => new CompanyModelS(e)),
};
})
);
}
getAllListByPageSize(): Observable<CompanyModelS[]> {
return this.http.get<PageResponseModel<CompanyModelS>>(this.urlApi, { params: { page: 0, size: 1 } }).pipe(
switchMap((checkData: any) => {
const size = 500;
const totalElements = checkData.totalElements;
const numOfPages = Math.ceil(totalElements / size);
const parallelList: Observable<PageResponseModel<CompanyModelS>>[] = [];
for (let page = 0; page < numOfPages; page++) {
parallelList.push(this.getListByPageSize({
page,
size,
}));
}
return forkJoin(parallelList).pipe(
map((response) => {
let data: CompanyModelS[] = [];
for (let i = 0; i < response.length; i++) {
data = data.concat(response[i].content);
}
return data;
})
);
})
);
}
saveOrUpdateCompany(body: CompanyModelS): Observable<any> {
return this.http.post(this.urlApi, body); // ใช้ POST สำหรับทั้งคู่
}
// deleteCompany(body: CompanyModelS): Observable<any> {
// const options = {
// headers: new HttpHeaders({
// "Content-Type": "application/json",
// }),
// body: body, // ส่ง body ไปด้วยใน request DELETE
// };
// return this.http.delete(this.urlApi, options);
// }
deleteCompany(companyId: string): Observable<any> { // รับแค่ string companyId
const options = {
headers: new HttpHeaders({
"Content-Type": "application/json",
}),
// สร้าง Object ที่มีแค่ companyId
body: { companyId: companyId },
};
return this.http.delete(this.urlApi, options);
}
getComGroup(companyId: string): Observable<CompanyModelS[]> {
return this.http.get<CompanyModelS[]>(this.urlApi + "/group-checked?companyId=" + companyId);
}
}
// import { HttpClient, HttpHeaders } from '@angular/common/http';
// import { Injectable } from '@angular/core';
// import { forkJoin, map, Observable, switchMap } from 'rxjs';
// import { environment } from "../../../environments/environment";
// import { CompanyModelS } from '../models/companys.mode';
// import { PageResponseModel } from '../models/base.model';
// @Injectable({
// providedIn: 'root'
// })
// export class CompanyServiceS {
// api = "/company"
// urlApi = environment.baseUrl + "/company"
// constructor(private http: HttpClient) { }
// getById(companyId: string): Observable<CompanyModelS> {
// return this.http.get<CompanyModelS>(this.urlApi + "/" + companyId)
// }
// getList(): Observable<CompanyModelS[]> {
// return this.http.get<CompanyModelS[]>(this.urlApi + "/list")
// }
// getListByPageSize(body: { page: number; size: number }) {
// return this.http.get<PageResponseModel<CompanyModelS>>(this.urlApi, { params: body, }).pipe(
// map((page) => {
// return {
// ...page, content: page.content.map((e) => new CompanyModelS(e)),
// };
// })
// );
// }
// getAllListByPageSize(): Observable<CompanyModelS[]> {
// return this.http.get<PageResponseModel<CompanyModelS>>(this.urlApi, { params: { page: 0, size: 1 }, }).pipe(switchMap((checkData: any) => {
// const size = 500;
// const numOfPages = checkData.totalElements / size;
// const parallelList: Observable<PageResponseModel<CompanyModelS>>[] = [];
// for (let page = 0; page < numOfPages; page++) {
// parallelList.push(this.getListByPageSize({
// page,
// size,
// }));
// }
// return forkJoin(parallelList).pipe(
// map((response) => {
// let data: CompanyModelS[] = [];
// for (let i = 0; i < response.length; i++) {
// data = data.concat(response[i].content);
// }
// return data;
// })
// );
// }));
// }
// postCompany(body: CompanyModelS) {
// return this.http.post(this.urlApi, body)
// }
// deleteCompany(body: CompanyModelS) {
// const options = {
// headers: new HttpHeaders({
// "Content-Type": "application/json",
// }),
// body: body,
// };
// return this.http.delete(this.urlApi, options)
// }
// getComGroup(companyId: string): Observable<CompanyModelS[]> {
// return this.http.get<CompanyModelS[]>(this.urlApi + "/group-checked?companyId="+companyId)
// }
// }
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