219 lines
6.5 KiB
TypeScript
219 lines
6.5 KiB
TypeScript
import moment from "moment";
|
|
import { Person, User, userRole } from "../models"
|
|
import { TreeNode } from "primeng/api";
|
|
|
|
type MyProName = "fatherId" | "motherId";
|
|
|
|
export class Utils {
|
|
static toBase64 (file:any)
|
|
{
|
|
let promise = new Promise((resolve, reject) => {
|
|
const reader = new FileReader();
|
|
reader.readAsDataURL(file);
|
|
reader.onload = () => resolve(reader.result);
|
|
reader.onerror = reject;
|
|
});
|
|
return promise;
|
|
}
|
|
static getBase64(file: any) {
|
|
let result: any;
|
|
var reader = new FileReader();
|
|
reader.readAsDataURL(file);
|
|
reader.onload = function () {
|
|
result = reader.result;
|
|
console.log('tobase64 ', result);
|
|
};
|
|
reader.onerror = function (error) {
|
|
console.log('Error: ', error);
|
|
};
|
|
}
|
|
static getCurrentUser(): User {
|
|
|
|
let myUser = new User();
|
|
myUser.username = "";
|
|
const obj = sessionStorage.getItem('currentUser');
|
|
//const obj = localStorage.getItem('currentUser');
|
|
if (obj != undefined) {
|
|
let user = JSON.parse(obj);
|
|
myUser.firstName = user.firstName;
|
|
myUser.id = user.id;
|
|
myUser.lastName = user.lastName;
|
|
myUser.role = user.role;
|
|
myUser.username = user.username;
|
|
myUser.email = user.email;
|
|
myUser.token = user.token;
|
|
myUser.phone = user.phone;
|
|
myUser.department = user.department;
|
|
myUser.position = user.position;
|
|
myUser.managerEmail = user.managerEmail;
|
|
|
|
|
|
|
|
}
|
|
// console.log("[util] getcurrentUser",myUser);
|
|
return myUser;
|
|
}
|
|
static setLocalStore(user: User): void {
|
|
if (user && user.token) {
|
|
// store user details and jwt token in local storage to keep user logged in between page refreshes
|
|
// localStorage.setItem('currentUser', JSON.stringify(user));
|
|
sessionStorage.setItem('currentUser', JSON.stringify(user));
|
|
}
|
|
}
|
|
|
|
static getLastMonth(): Date {
|
|
let result = moment().subtract(1, 'months').toDate();
|
|
result.setDate(1);
|
|
return result;
|
|
}
|
|
static getHome(): string {
|
|
let result ="";
|
|
const user = this.getCurrentUser();
|
|
const urole = user.role;
|
|
if (urole == userRole.Accounting)
|
|
{
|
|
result = "staffworkw";
|
|
}
|
|
else if (urole == userRole.Admin)
|
|
{
|
|
result = "staff";
|
|
}
|
|
else if (urole == userRole.ServiceManager)
|
|
{
|
|
result = "servicetask";
|
|
}
|
|
else if (urole == userRole.WorkShop)
|
|
{
|
|
result = "staffwork";
|
|
}
|
|
else if (urole == userRole.Normal)
|
|
{
|
|
result = "staff";
|
|
}
|
|
return result;
|
|
}
|
|
static getTimeStr(val:Date): string {
|
|
let result = "00:00";
|
|
if (val)
|
|
{
|
|
const hh = val.getHours();
|
|
const min = val.getMinutes();
|
|
if (hh < 10)
|
|
result = '0' + hh.toString();
|
|
else
|
|
result = hh.toString();
|
|
if (min < 10)
|
|
result = result + ":0" + min.toString();
|
|
else
|
|
result = result + ":" + min.toString();
|
|
|
|
}
|
|
return result;
|
|
}
|
|
static canRunReport(role: number): boolean {
|
|
let result = false;
|
|
if (role == userRole.Admin)
|
|
result = true;
|
|
return result;
|
|
}
|
|
static getUserRole(user: User): number {
|
|
/*
|
|
sysadmin
|
|
request_manager
|
|
ward_user
|
|
*/
|
|
let ret = 0;
|
|
if (user) {
|
|
// console.log("utils user", user);
|
|
if (user.role)
|
|
ret = user.role;
|
|
}
|
|
return ret;
|
|
}
|
|
static getIsAuth(): boolean {
|
|
const user = this.getCurrentUser();
|
|
if (user.username != "") {
|
|
return true;
|
|
}
|
|
else
|
|
return false;
|
|
}
|
|
static getAdminRoleName(): number {
|
|
return userRole.Admin;
|
|
}
|
|
static clearCurrentUser(): void {
|
|
sessionStorage.clear();
|
|
//localStorage.clear();
|
|
}
|
|
|
|
static formatNode(item:Person): TreeNode
|
|
{
|
|
let label = item.lastName + " " + item.firstName;
|
|
let key = item.id.toString();
|
|
let node: TreeNode ={
|
|
key,
|
|
label,
|
|
type: 'person',
|
|
data: {title: item.title, name: label, image: item.image},
|
|
icon: 'pi pi-user'
|
|
};
|
|
|
|
return node;
|
|
}
|
|
static getFileExtension(filename: string): string {
|
|
const lastDotIndex = filename.lastIndexOf('.');
|
|
if (lastDotIndex !== -1 && lastDotIndex < filename.length - 1) { // Ensure a dot exists and is not the last character
|
|
return filename.substring(lastDotIndex + 1);
|
|
}
|
|
return ''; // No extension found
|
|
}
|
|
static getChildForParentId(proName: MyProName , pid: number,childressNodes: Person[]): TreeNode[] {
|
|
let result: TreeNode[] =[];
|
|
let tree_node_child: TreeNode[];
|
|
let node:TreeNode;
|
|
let item: Person;
|
|
|
|
const children = childressNodes.filter(x => x[proName] == pid);
|
|
for (let c = 0; c < children.length; c++)
|
|
{
|
|
item = children[c];
|
|
node = this.formatNode(item);
|
|
tree_node_child = this.getChildForParentId(proName,item.id, childressNodes);
|
|
console.log("getChildForParentId childressNodes item tree_node_child ", childressNodes, item, tree_node_child);
|
|
if (tree_node_child.length > 0)
|
|
{
|
|
node.expanded = true;
|
|
node.children = tree_node_child;
|
|
}
|
|
result.push(node);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
static populateNode(proName: MyProName, familyList: Person[]): TreeNode[] {
|
|
let familyTree: TreeNode[] = [];
|
|
let node:TreeNode;
|
|
let child_nodes:TreeNode[];
|
|
|
|
let childressNodes:Person[];
|
|
|
|
let item: Person;
|
|
const topNodes = familyList.filter(x => x[proName]! < 1);
|
|
childressNodes = familyList.filter(x => x[proName]! > 0);
|
|
for(let i = 0; i < topNodes.length; i++)
|
|
{
|
|
item = topNodes[i];
|
|
node = Utils.formatNode(item);
|
|
child_nodes = this.getChildForParentId(proName, item.id,childressNodes);
|
|
console.log("populate getchildrenForParentId", child_nodes);
|
|
if (child_nodes.length > 0)
|
|
{
|
|
node.expanded = true;
|
|
node.children = child_nodes;
|
|
}
|
|
familyTree.push(node);
|
|
//childressNodes =
|
|
}
|
|
return familyTree;
|
|
}
|
|
} |