school-dashboard-exercise/src/types/App.ts
2024-08-07 15:07:18 +03:00

406 lines
18 KiB
TypeScript

import { ReactElement, LazyExoticComponent, ReactNode } from "react";
import { Mark_State, Payment_type, term_type } from "./Item";
import { ABILITIES_ENUM, ABILITIES_VALUES_ENUM } from "../enums/abilities";
export type ChildrenType = {
children: ReactNode;
};
type TMenuItemBase = {
icon: JSX.Element;
text: string;
header?: string;
title?: string;
withOutLayout?: boolean;
abilities: ABILITIES_ENUM;
abilities_value: ABILITIES_VALUES_ENUM;
prevPath: number;
};
type TMenuItemWithDropdown = TMenuItemBase & {
path: string;
element?: ReactElement | LazyExoticComponent<any>;
children: TMenuItem[];
};
type TMenuItemWithoutDropdown = TMenuItemBase & {
path: string;
element: ReactElement | LazyExoticComponent<any>;
children?: TMenuItem[];
};
export type TMenuItem = TMenuItemWithDropdown | TMenuItemWithoutDropdown;
export type TCrudRoute = {
header?: string;
path: string;
element: ReactElement | LazyExoticComponent<any>;
abilities: ABILITIES_ENUM;
abilities_value: ABILITIES_VALUES_ENUM;
prevPath: number;
};
export interface CardData {
title: string;
value: string;
subTitle: string;
percentage: number;
Good?: boolean;
}
export const nationalities: { value: string; label: string }[] = [
{ label: "select.nationalities.Afghan", value: "Afghan" },
{ label: "select.nationalities.Albanian", value: "Albanian" },
{ label: "select.nationalities.Algerian", value: "Algerian" },
{ label: "select.nationalities.American", value: "American" },
{ label: "select.nationalities.Andorran", value: "Andorran" },
{ label: "select.nationalities.Angolan", value: "Angolan" },
{ label: "select.nationalities.Antiguans", value: "Antiguans" },
{ label: "select.nationalities.Argentinean", value: "Argentinean" },
{ label: "select.nationalities.Armenian", value: "Armenian" },
{ label: "select.nationalities.Australian", value: "Australian" },
{ label: "select.nationalities.Austrian", value: "Austrian" },
{ label: "select.nationalities.Azerbaijani", value: "Azerbaijani" },
{ label: "select.nationalities.Bahamian", value: "Bahamian" },
{ label: "select.nationalities.Bahraini", value: "Bahraini" },
{ label: "select.nationalities.Bangladeshi", value: "Bangladeshi" },
{ label: "select.nationalities.Barbadian", value: "Barbadian" },
{ label: "select.nationalities.Barbudans", value: "Barbudans" },
{ label: "select.nationalities.Batswana", value: "Batswana" },
{ label: "select.nationalities.Belarusian", value: "Belarusian" },
{ label: "select.nationalities.Belgian", value: "Belgian" },
{ label: "select.nationalities.Belizean", value: "Belizean" },
{ label: "select.nationalities.Beninese", value: "Beninese" },
{ label: "select.nationalities.Bhutanese", value: "Bhutanese" },
{ label: "select.nationalities.Bolivian", value: "Bolivian" },
{ label: "select.nationalities.Bosnian", value: "Bosnian" },
{ label: "select.nationalities.Brazilian", value: "Brazilian" },
{ label: "select.nationalities.British", value: "British" },
{ label: "select.nationalities.Bruneian", value: "Bruneian" },
{ label: "select.nationalities.Bulgarian", value: "Bulgarian" },
{ label: "select.nationalities.Burkinabe", value: "Burkinabe" },
{ label: "select.nationalities.Burmese", value: "Burmese" },
{ label: "select.nationalities.Burundian", value: "Burundian" },
{ label: "select.nationalities.Cambodian", value: "Cambodian" },
{ label: "select.nationalities.Cameroonian", value: "Cameroonian" },
{ label: "select.nationalities.Canadian", value: "Canadian" },
{ label: "select.nationalities.Cape Verdean", value: "Cape Verdean" },
{ label: "select.nationalities.Central African", value: "Central African" },
{ label: "select.nationalities.Chadian", value: "Chadian" },
{ label: "select.nationalities.Chilean", value: "Chilean" },
{ label: "select.nationalities.Chinese", value: "Chinese" },
{ label: "select.nationalities.Colombian", value: "Colombian" },
{ label: "select.nationalities.Comoran", value: "Comoran" },
{ label: "select.nationalities.Congolese", value: "Congolese" },
{ label: "select.nationalities.Costa Rican", value: "Costa Rican" },
{ label: "select.nationalities.Croatian", value: "Croatian" },
{ label: "select.nationalities.Cuban", value: "Cuban" },
{ label: "select.nationalities.Cypriot", value: "Cypriot" },
{ label: "select.nationalities.Czech", value: "Czech" },
{ label: "select.nationalities.Danish", value: "Danish" },
{ label: "select.nationalities.Djibouti", value: "Djibouti" },
{ label: "select.nationalities.Dominican", value: "Dominican" },
{ label: "select.nationalities.Dutch", value: "Dutch" },
{ label: "select.nationalities.East Timorese", value: "East Timorese" },
{ label: "select.nationalities.Ecuadorean", value: "Ecuadorean" },
{ label: "select.nationalities.Egyptian", value: "Egyptian" },
{ label: "select.nationalities.Emirian", value: "Emirian" },
{
label: "select.nationalities.Equatorial Guinean",
value: "Equatorial Guinean",
},
{ label: "select.nationalities.Eritrean", value: "Eritrean" },
{ label: "select.nationalities.Estonian", value: "Estonian" },
{ label: "select.nationalities.Ethiopian", value: "Ethiopian" },
{ label: "select.nationalities.Fijian", value: "Fijian" },
{ label: "select.nationalities.Filipino", value: "Filipino" },
{ label: "select.nationalities.Finnish", value: "Finnish" },
{ label: "select.nationalities.French", value: "French" },
{ label: "select.nationalities.Gabonese", value: "Gabonese" },
{ label: "select.nationalities.Gambian", value: "Gambian" },
{ label: "select.nationalities.Georgian", value: "Georgian" },
{ label: "select.nationalities.German", value: "German" },
{ label: "select.nationalities.Ghanaian", value: "Ghanaian" },
{ label: "select.nationalities.Greek", value: "Greek" },
{ label: "select.nationalities.Grenadian", value: "Grenadian" },
{ label: "select.nationalities.Guatemalan", value: "Guatemalan" },
{ label: "select.nationalities.Guinea-Bissauan", value: "Guinea-Bissauan" },
{ label: "select.nationalities.Guinean", value: "Guinean" },
{ label: "select.nationalities.Guyanese", value: "Guyanese" },
{ label: "select.nationalities.Haitian", value: "Haitian" },
{ label: "select.nationalities.Herzegovinian", value: "Herzegovinian" },
{ label: "select.nationalities.Honduran", value: "Honduran" },
{ label: "select.nationalities.Hungarian", value: "Hungarian" },
{ label: "select.nationalities.I-Kiribati", value: "I-Kiribati" },
{ label: "select.nationalities.Icelander", value: "Icelander" },
{ label: "select.nationalities.Indian", value: "Indian" },
{ label: "select.nationalities.Indonesian", value: "Indonesian" },
{ label: "select.nationalities.Iranian", value: "Iranian" },
{ label: "select.nationalities.Iraqi", value: "Iraqi" },
{ label: "select.nationalities.Irish", value: "Irish" },
{ label: "select.nationalities.Palestine", value: "Palestine" },
{ label: "select.nationalities.Italian", value: "Italian" },
{ label: "select.nationalities.Ivorian", value: "Ivorian" },
{ label: "select.nationalities.Jamaican", value: "Jamaican" },
{ label: "select.nationalities.Japanese", value: "Japanese" },
{ label: "select.nationalities.Jordanian", value: "Jordanian" },
{ label: "select.nationalities.Kazakhstani", value: "Kazakhstani" },
{ label: "select.nationalities.Kenyan", value: "Kenyan" },
{
label: "select.nationalities.Kittian and Nevisian",
value: "Kittian and Nevisian",
},
{ label: "select.nationalities.Kuwaiti", value: "Kuwaiti" },
{ label: "select.nationalities.Kyrgyz", value: "Kyrgyz" },
{ label: "select.nationalities.Laotian", value: "Laotian" },
{ label: "select.nationalities.Latvian", value: "Latvian" },
{ label: "select.nationalities.Lebanese", value: "Lebanese" },
{ label: "select.nationalities.Liberian", value: "Liberian" },
{ label: "select.nationalities.Libyan", value: "Libyan" },
{ label: "select.nationalities.Liechtensteiner", value: "Liechtensteiner" },
{ label: "select.nationalities.Lithuanian", value: "Lithuanian" },
{ label: "select.nationalities.Luxembourger", value: "Luxembourger" },
{ label: "select.nationalities.Macedonian", value: "Macedonian" },
{ label: "select.nationalities.Malagasy", value: "Malagasy" },
{ label: "select.nationalities.Malawian", value: "Malawian" },
{ label: "select.nationalities.Malaysian", value: "Malaysian" },
{ label: "select.nationalities.Maldivan", value: "Maldivan" },
{ label: "select.nationalities.Malian", value: "Malian" },
{ label: "select.nationalities.Maltese", value: "Maltese" },
{ label: "select.nationalities.Marshallese", value: "Marshallese" },
{ label: "select.nationalities.Mauritanian", value: "Mauritanian" },
{ label: "select.nationalities.Mauritian", value: "Mauritian" },
{ label: "select.nationalities.Mexican", value: "Mexican" },
{ label: "select.nationalities.Micronesian", value: "Micronesian" },
{ label: "select.nationalities.Moldovan", value: "Moldovan" },
{ label: "select.nationalities.Monacan", value: "Monacan" },
{ label: "select.nationalities.Mongolian", value: "Mongolian" },
{ label: "select.nationalities.Moroccan", value: "Moroccan" },
{ label: "select.nationalities.Mosotho", value: "Mosotho" },
{ label: "select.nationalities.Motswana", value: "Motswana" },
{ label: "select.nationalities.Mozambican", value: "Mozambican" },
{ label: "select.nationalities.Namibian", value: "Namibian" },
{ label: "select.nationalities.Nauruan", value: "Nauruan" },
{ label: "select.nationalities.Nepali", value: "Nepali" },
{ label: "select.nationalities.New Zealander", value: "New Zealander" },
{ label: "select.nationalities.Nicaraguan", value: "Nicaraguan" },
{ label: "select.nationalities.Nigerian", value: "Nigerian" },
{ label: "select.nationalities.Nigerien", value: "Nigerien" },
{ label: "select.nationalities.North Korean", value: "North Korean" },
{ label: "select.nationalities.Northern Irish", value: "Northern Irish" },
{ label: "select.nationalities.Norwegian", value: "Norwegian" },
{ label: "select.nationalities.Omani", value: "Omani" },
{ label: "select.nationalities.Pakistani", value: "Pakistani" },
{ label: "select.nationalities.Palauan", value: "Palauan" },
{ label: "select.nationalities.Panamanian", value: "Panamanian" },
{
label: "select.nationalities.Papua New Guinean",
value: "Papua New Guinean",
},
{ label: "select.nationalities.Paraguayan", value: "Paraguayan" },
{ label: "select.nationalities.Peruvian", value: "Peruvian" },
{ label: "select.nationalities.Polish", value: "Polish" },
{ label: "select.nationalities.Portuguese", value: "Portuguese" },
{ label: "select.nationalities.Qatari", value: "Qatari" },
{ label: "select.nationalities.Romanian", value: "Romanian" },
{ label: "select.nationalities.Russian", value: "Russian" },
{ label: "select.nationalities.Rwandan", value: "Rwandan" },
{ label: "select.nationalities.Saint Lucian", value: "Saint Lucian" },
{ label: "select.nationalities.Salvadoran", value: "Salvadoran" },
{ label: "select.nationalities.Samoan", value: "Samoan" },
{ label: "select.nationalities.San Marinese", value: "San Marinese" },
{ label: "select.nationalities.Sao Tomean", value: "Sao Tomean" },
{ label: "select.nationalities.Saudi", value: "Saudi" },
{ label: "select.nationalities.Scottish", value: "Scottish" },
{ label: "select.nationalities.Senegalese", value: "Senegalese" },
{ label: "select.nationalities.Serbian", value: "Serbian" },
{ label: "select.nationalities.Seychellois", value: "Seychellois" },
{ label: "select.nationalities.Sierra Leonean", value: "Sierra Leonean" },
{ label: "select.nationalities.Singaporean", value: "Singaporean" },
{ label: "select.nationalities.Slovakian", value: "Slovakian" },
{ label: "select.nationalities.Slovenian", value: "Slovenian" },
{ label: "select.nationalities.Solomon Islander", value: "Solomon Islander" },
{ label: "select.nationalities.Somali", value: "Somali" },
{ label: "select.nationalities.South African", value: "South African" },
{ label: "select.nationalities.South Korean", value: "South Korean" },
{ label: "select.nationalities.Spanish", value: "Spanish" },
{ label: "select.nationalities.Sri Lankan", value: "Sri Lankan" },
{ label: "select.nationalities.Sudanese", value: "Sudanese" },
{ label: "select.nationalities.Surinamer", value: "Surinamer" },
{ label: "select.nationalities.Swazi", value: "Swazi" },
{ label: "select.nationalities.Swedish", value: "Swedish" },
{ label: "select.nationalities.Swiss", value: "Swiss" },
{ label: "select.nationalities.Syrian", value: "Syrian" },
{ label: "select.nationalities.Taiwanese", value: "Taiwanese" },
{ label: "select.nationalities.Tajik", value: "Tajik" },
{ label: "select.nationalities.Tanzanian", value: "Tanzanian" },
{ label: "select.nationalities.Thai", value: "Thai" },
{ label: "select.nationalities.Togolese", value: "Togolese" },
{ label: "select.nationalities.Tongan", value: "Tongan" },
{
label: "select.nationalities.Trinidadian/Tobagonian",
value: "Trinidadian/Tobagonian",
},
{ label: "select.nationalities.Tunisian", value: "Tunisian" },
{ label: "select.nationalities.Turkish", value: "Turkish" },
{ label: "select.nationalities.Tuvaluan", value: "Tuvaluan" },
{ label: "select.nationalities.Ugandan", value: "Ugandan" },
{ label: "select.nationalities.Ukrainian", value: "Ukrainian" },
{ label: "select.nationalities.Uruguayan", value: "Uruguayan" },
{ label: "select.nationalities.Uzbekistani", value: "Uzbekistani" },
{ label: "select.nationalities.Venezuelan", value: "Venezuelan" },
{ label: "select.nationalities.Vietnamese", value: "Vietnamese" },
{ label: "select.nationalities.Welsh", value: "Welsh" },
{ label: "select.nationalities.Yemenite", value: "Yemenite" },
{ label: "select.nationalities.Zambian", value: "Zambian" },
{ label: "select.nationalities.Zimbabwean", value: "Zimbabwean" },
];
export const Term_Select: { value: term_type; label: string }[] = [
{ value: "first", label: "الأول" },
{ value: "second", label: "الثاني" },
];
interface Note {
label: string;
value: string;
color: string;
}
export const notes: Note[] = [
{ label: "select.Note.normal_note", value: "normal_note", color: "yellow" }, // Normal Note
{ label: "select.Note.alert_note", value: "alert_note", color: "yellow" }, // Alert Note
{
label: "select.Note.financial_note",
value: "financial_note",
color: "yellow",
}, // Financial Note
{
label: "select.Note.positive_note",
value: "positive_note",
color: "green",
}, // Positive Note
{ label: "select.Note.warning_note", value: "warning_note", color: "red" }, // Warning Note
{
label: "select.Note.academic_note",
value: "academic_note",
color: "yellow",
}, // Academic Note
{
label: "select.Note.studying_note",
value: "studying_note",
color: "yellow",
}, // Studying Note
{
label: "select.Note.organization_note",
value: "orgnaization_note",
color: "yellow",
}, // Organization Note
];
export const Payments: { label: string; value: Payment_type | "" }[] = [
{ label: "select.Payments.paid", value: "paid" },
{ label: "select.Payments.to_be_paid", value: "to_be_paid" },
];
export const Marks: { value: Mark_State; label: string }[] = [
{ value: "Not_Taken", label: "Not_Taken" },
{ value: "Taken", label: "Taken" },
];
export type Sex = "male" | "female" | "bi";
export const Sex_Select_options: { value: Sex; label: string }[] = [
{ value: "male", label: "select.Sex.male" },
{ value: "female", label: "select.Sex.female" },
{ value: "bi", label: "select.Sex.bi" },
];
export const Sex_Select_options_Student: { value: Sex; label: string }[] = [
{ value: "male", label: "select.Sex.male" },
{ value: "female", label: "select.Sex.female" },
];
export type religion = "muslim" | "christianity" | "other";
export const religion_Select_options: { value: religion; label: string }[] = [
{ value: "muslim", label: "select.Religion.muslim" },
{ value: "christianity", label: "select.Religion.christianity" },
{ value: "other", label: "select.Religion.other" },
];
export interface Branch {
id: number;
name: string;
address: string;
meta: {
test: number;
};
created_at: string; // ISO 8601 date string
updated_at: string; // ISO 8601 date string
}
export interface Role {
id: number;
name: string;
}
export interface Cycle {
id: number;
starting_date: string; // ISO 8601 date string
ending_date: string; // ISO 8601 date string
branch_id: number;
name: string;
status: string; // Consider using a string literal type for status if it has specific values
}
export interface Term {
id: number;
cycle_id: number;
ending_date: string; // ISO 8601 date string
starting_date: string; // ISO 8601 date string
term_type: term_type;
description: string | null;
current_term: boolean;
}
export const Term_type: { value: term_type; label: string }[] = [
{ value: "first", label: "select.Term_type.first" },
{ value: "second", label: "select.Term_type.second" },
{ value: "summer", label: "select.Term_type.summer" },
{ value: "extra", label: "select.Term_type.extra" },
];
export interface Ability {
id: number;
name: string;
}
export type admin_type = "admin" | "branchAdmin";
export type active_type = "active" | "suspend";
export interface Admin {
id: number;
username: string;
email: string;
type: admin_type; // Update the types as needed
status: active_type; // Update the statuses as needed
shouldRechangePassword: boolean;
created_at: string;
updated_at: string;
}
export const Admin_type: { value: admin_type; label: string }[] = [
{ value: "admin", label: "select.Admin_type.admin" },
{ value: "branchAdmin", label: "select.Admin_type.branchAdmin" },
];
export interface BranchRole {
role: Role;
branch: Branch;
}
export interface showAdmin {
user: Admin;
branches: BranchRole[];
}