Files
talenttic-crm-app/src/app/pages/company-profile/company-profile.component.ts
2023-04-25 09:17:32 +01:00

120 lines
3.8 KiB
TypeScript

import { Component, OnInit } from "@angular/core";
import { FormBuilder, FormGroup, Validators } from "@angular/forms";
import { ToastrService } from "ngx-toastr";
import { CompanyService } from "src/app/services/company.service";
@Component({
selector: "app-company-profile",
templateUrl: "./company-profile.component.html",
styleUrls: ["./company-profile.component.scss"],
})
export class CompanyProfileComponent implements OnInit {
updateInfoForm: FormGroup;
imgFile: any;
fileName: any;
imgSrc: any;
institutionId!: number;
imgFormatError: boolean = false;
fileSizeError: boolean = false;
company: any;
private emailPattern =
"(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\\\[\x01-\x09\x0b\x0c\x0e-\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\\])";
constructor(
private fb: FormBuilder,
private toastr: ToastrService,
private companyService: CompanyService
) {
this.updateInfoForm = this.fb.group({
companyName: ["", [Validators.required, Validators.minLength(6)]],
companyUsername: ["", [Validators.required]],
companyAddress: ["", [Validators.required, Validators.minLength(6)]],
companyCity: ["", [Validators.required, Validators.minLength(3)]],
companyPhone: [
"",
[
Validators.required,
Validators.minLength(11),
Validators.pattern("^[0-9]*$"),
],
],
companyEmail: [
"",
[Validators.required, Validators.pattern(this.emailPattern)],
],
companyDescription: ["", [Validators.required, Validators.minLength(10)]],
companyLogo: ["", Validators.required],
});
this.companyService.getCompanyById(1).subscribe((company) => {
this.company = company;
console.log(this.company);
});
}
get formControls() {
return this.updateInfoForm.controls;
}
ngOnInit(): void {
this.updateInfoForm.patchValue({
companyName: this.company.name,
companyUsername: this.company.username,
companyEmail: this.company.email,
companyPhone: this.company.phone,
companyAddress: this.company.address,
companyCity: this.company.city,
companyDescription: this.company.description,
companyLogo: this.company.image,
});
}
// Check file type
checkFileType(file: File): boolean {
const imageTypes = ["image/jpeg", "image/png", "image/gif", "image/jpg"]; // Add more types if needed
return imageTypes.includes(file.type);
}
onFileChange(event: any) {
this.imgFile = <File>event.target.files[0];
this.fileName = this.imgFile.name;
console.log(this.imgFile);
if (this.checkFileType(this.imgFile)) {
let reader = new FileReader();
reader.readAsDataURL(event.target.files[0]);
reader.onload = (event: any) => {
this.imgSrc = event.target.result;
this.updateInfoForm.patchValue({
image: this.imgSrc,
});
};
} else {
// Use toastr service to show error message
this.toastr.error("Please select correct image format", "Error", {
timeOut: 3000,
progressBar: true,
progressAnimation: "increasing",
closeButton: true,
positionClass: "toast-top-center",
});
this.imgFormatError = true;
}
/* checking file size here is greater than 2MB */
if (this.imgFile.size > 2000000) {
this.fileSizeError = true;
} else {
this.fileSizeError = false;
}
}
updateInfo() {
if (this.updateInfoForm.invalid) {
return;
}
}
}