export  enum LeaveStatus {
  Submit = "1",
  Cancel = "2",
}
export  enum AttendanceStatus {
  /**
   * 非出勤
   */
  None = 0,
    /**
   * 出勤
   */
  Attendance = 1,
    /**
   * 请假
   */
  Leave = 2,
}
export  enum DailyStatus {
  /**
   * 未到校:00000000  0
   */
  None = 0,
  /**
  * 接到孩子:00000001  1
  */
  TakeOver = 1 << 0,
  /**
   * 入校:00000010  2
   */
  SignIn = 1 << 1,
  /**
   * 作业已完成:00000100  4
   */
  HomeWork = 1 << 2,
  /**
   * 申请接孩子: 00001000  8
   */
  ApplySignOut = 1 << 3,
  /**
   * 同意接走:00010000  16
   */
  AgreeSignOut = 1 << 4,
  /**
   * 孩子已经接走:00100000  32
   */
  SignOut = 1 << 5,
  /**
   * 老师已反馈:01000000  64
   */
  TeacherFeedback = 1 << 6,
}
export function hasDailyStatus(target:DailyStatus,p:DailyStatus) {
  return (target & p) === p
}
export enum TeacherType {
  Teacher="1",
  VicePrincipal="2",
  Principal="3",
}
export function getTeacherTypeLable(value: any): string {
  const type = value as TeacherType;
  switch (type) {
    case TeacherType.Teacher:
      return '老师';
    case TeacherType.VicePrincipal:
      return '副校长';
    case TeacherType.Principal:
      return '校长';
  }
  return '';
}
export function getTeacherTypeOptions():any[]  {
  return [
    { label: '老师', value: TeacherType.Teacher },
    { label: '副校长', value: TeacherType.VicePrincipal },
    { label: '校长', value: TeacherType.Principal },
  ];
}

export enum ParentsRelationshipType {
  Father="1",
  Mother="2",
  Grandpa="3",
  Grandmother="4",
  Grandpa2="5",
  Grandmother2="6",
}
export function getParentsRelationshipLable(value: any): string {
  const type = value as ParentsRelationshipType;
  switch (type) {
    case ParentsRelationshipType.Father:
      return '父亲';
    case ParentsRelationshipType.Mother:
      return '母亲';
    case ParentsRelationshipType.Grandpa:
      return '爷爷 ';
    case ParentsRelationshipType.Grandmother:
      return '奶奶';
    case ParentsRelationshipType.Grandpa2:
      return '姥爷';
    case ParentsRelationshipType.Grandmother2:
      return '姥姥';
  }
  return '';
}
export function getParentsRelationshipTypeOptions():any[]  {
  return [
    { label: '父亲', value: ParentsRelationshipType.Father },
    { label: '母亲', value: ParentsRelationshipType.Mother },
    { label: '爷爷', value: ParentsRelationshipType.Grandpa },
    { label: '奶奶', value: ParentsRelationshipType.Grandmother },
    { label: '姥爷', value: ParentsRelationshipType.Grandpa2 },
    { label: '姥姥', value: ParentsRelationshipType.Grandmother2 },
  ];
}

export  enum SexType {
  Male = "1",
  FeMale = "2"
}
export function getSexTypeLable(value: any): string {
  const type = value as SexType;
  switch (type) {
    case SexType.Male:
      return '男';
    case SexType.FeMale:
      return '女';
  }
  return '未知';
}
export function getSexTypeOptions():any[]  {
  return [
    { label: '男', value: SexType.Male },
    { label: '女', value: SexType.FeMale },
  ];
}

export  enum PersonType {
  Teacher = "1",
  Parents = "2",
  Student = "3"
}
export function getPersonTypeLable(value: any): string {
  const type = value as PersonType;
  switch (type) {
    case PersonType.Teacher :
      return '教师';
    case PersonType.Parents :
      return '家长';
    case PersonType.Student :
      return '学生';
  }
  return '';
}
export function getPersonTypeOptions():any[] {
  return [
    { label: '教师', value: PersonType.Teacher },
    { label: '家长', value: PersonType.Parents },
  ];
}

export enum SubjectType {
  Chinese = "1",
  Math= "2",
  English = "3",
}
export function getSubjectTypeLable(value: any): string {
  const type = value as SubjectType;
  switch (type) {
    case SubjectType.Chinese:
      return '语文';
    case SubjectType.Math:
      return '数学';
    case SubjectType.English:
      return '英语';
      }
    return '';
}
export function getSubjectTypeOptions():any[]  {
  return [
    { label: '语文', value: SubjectType.Chinese },
    { label: '数学', value: SubjectType.Math },
    { label: '英语', value: SubjectType.English },
  ];
}
export  enum FeedbackStatus {
  /**
   * 未发布
   */
    None = 0,
    /**
     * 提交审核
     */
    Submit = 1,
    /**
     * 通过
     */
    Approved = 2,
    /**
     * 驳回
     */
    Reject = 3,
}
export function getFeedbackStatusOptions():any[]  {
  return [
    { label: '提交审核', value: FeedbackStatus.Submit },
    { label: '通过', value: FeedbackStatus.Approved },
    { label: '驳回', value: FeedbackStatus.Reject },
  ];
}
export function getFeedbackStatusLable(value: any): string {
  const type = value as FeedbackStatus;
  switch (type) {
    case FeedbackStatus.Submit:
      return '提交审核';
    case FeedbackStatus.Approved:
      return '通过';
    case FeedbackStatus.Reject:
      return '驳回';
    }
  return '';
}
export  enum FeedbackType {
  /**
   * 语文
   */
  Chinese = 1,
    /**
   * 数学
   */
  Math = Chinese+1,
    /**
   * 英语
   */
  English = Math+1,
    /**
   * 英语语法
   */
  EnglishGrammar = English+1,
    /**
   * 美文
   */
  Beautify = EnglishGrammar+1,
    /**
   * 激励
   */
  Inspirit =  Beautify+1,
    /**
   * 批评
   */
  Criticize =  Inspirit+1,
    /**
   * 其它
   */
  Other=  Criticize+1,
}
export function getFeedbackTypeOptions():any[]  {
  return [
    { label: '语文', value: FeedbackType.Chinese },
    { label: '数学', value: FeedbackType.Math },
    { label: '英语', value: FeedbackType.English },
    { label: '英语语法', value: FeedbackType.EnglishGrammar },
    { label: '美文', value: FeedbackType.Beautify },
    { label: '激励', value: FeedbackType.Inspirit },
    { label: '批评', value: FeedbackType.Criticize },
    { label: '其它', value: FeedbackType.Other },
  ];
}
export function getFeedbackTypeLable(value: any): string {
  const type = value as FeedbackType;
  switch (type) {
    case FeedbackType.Chinese:
      return '语文';
    case FeedbackType.Math:
      return '数学';
    case FeedbackType.English:
      return '英语';
    case FeedbackType.EnglishGrammar:
      return '英语语法';
    case FeedbackType.Beautify:
      return '美文';
    case FeedbackType.Inspirit:
      return '激励';
    case FeedbackType.Criticize:
      return '批评';
    case FeedbackType.Other:
      return '其它';
    }
  return '';
}

export enum SchoolStage {
  PrimarySchool="1",
  JuniorSchool="2",
  HighSchool="3",
}
export function getSchoolStageOptions():any[]  {
  return [
    { label: '小学', value: SchoolStage.PrimarySchool },
    { label: '初中', value: SchoolStage.JuniorSchool },
    { label: '高中', value: SchoolStage.HighSchool },
  ];
}
export function getSchoolStageLable(value: any): string {
  const type = value as SchoolStage;
  switch (type) {
    case SchoolStage.PrimarySchool:
      return '小学';
    case SchoolStage.JuniorSchool:
      return '初中';
    case SchoolStage.HighSchool:
      return '高中';
    }
  return '';
}
export enum PayCycle {
  /**按日 */
  ByDay="1",
  /**按月 */
  ByMonth="2",
  /**按次 */
  ByTimes="3",
}
export function getPayCycleOptions():any[]  {
  return [
    { label: '按日', value: PayCycle.ByDay },
    { label: '按月', value: PayCycle.ByMonth },
    { label: '按次', value: PayCycle.ByTimes },
  ];
}
export function getPayCycleLable(value: any): string {
  const type = value as PayCycle;
  switch (type) {
    case PayCycle.ByDay:
      return '按日';
    case PayCycle.ByMonth:
      return '按月';
    case PayCycle.ByTimes:
      return '按次';
    }
  return '';
}

export enum PayType {
  /**托管费 */
  Custody="1",
  /**餐费 */
  Meal="2",
  /**其它 */
  Other="3",
}
export function getPayTypeOptions():any[]  {
  return [
    { label: '托管费', value: PayType.Custody },
    { label: '餐费', value: PayType.Meal },
    { label: '其它', value: PayType.Other },
  ];
}
export function getPayTypeLable(value: any): string {
  const type = value as PayType;
  switch (type) {
    case PayType.Custody:
      return '托管费';
    case PayType.Meal:
      return '餐费';
    case PayType.Other:
      return '其它';
    }
  return '';
}
export enum SemesterType {
  /**上学期:1*/
  First=1,
  /**下学期:2*/
  Second=2,
}
export function getSemesterTypeOptions():any[]  {
  return [
    { label: '上学期', value: SemesterType.First },
    { label: '下学期', value: SemesterType.Second },
  ];
}
export function getSemesterTypeLable(value: any): string {
  const type = value as SemesterType;
  switch (type) {
    case SemesterType.First:
      return '上学期';
    case SemesterType.Second:
      return '下学期';
    }
  return '未知';
}
export enum WrongType {
  ChineseDictation = 1,
  ChinesePinyin= ChineseDictation+1,
  EnglishDictation  = 201,
  EnglishRead  = EnglishDictation+1,
}
export function getWrongTypeOptions():any[]  {
  return [
    { label: '语文默写', value: WrongType.ChineseDictation },
    { label: '语文拼音', value: WrongType.ChinesePinyin },
    { label: '英语默写', value: WrongType.EnglishDictation },
    { label: '英语阅读', value: WrongType.EnglishRead },
  ];
}
export function getWrongTypeLable(value: any): string {
  const type = value as WrongType;
  switch (type) {
    case WrongType.ChineseDictation:
      return '语文默写';
    case WrongType.ChinesePinyin:
      return '语文拼音';
    case WrongType.EnglishDictation:
      return '英语默写';
    case WrongType.EnglishRead:
      return '英语阅读';
    }
  return '未知';
}
/**
 * 民族
 */
export enum NationType {
  /**
   * 汉族
   */
  Nation01	=	1,
   /**
   * 满族
   */
  Nation02	=	Nation01	+	1,
    /**
   * 蒙古族
   */
  Nation03	=	Nation02	+	1,
    /**
   * 回族
   */
  Nation04	=	Nation03	+	1,
    /**
   * 藏族
   */
  Nation05	=	Nation04	+	1,
    /**
   * 维吾尔族
   */
  Nation06	=	Nation05	+	1,
    /**
   * 苗族
   */
  Nation07	=	Nation06	+	1,
    /**
   * 彝族
   */
 Nation08	=	Nation07	+	1,
   /**
   * 壮族
   */
   Nation09	=	Nation08	+	1,
   /**
   * 布依族
   */
   Nation10	=	Nation09	+	1,
   /**
   * 侗族
   */
   Nation11	=	Nation10	+	1,
   /**
   * 瑶族
   */
   Nation12	=	Nation11	+	1,
   /**
   * 白族
   */
   Nation13	=	Nation12	+	1,
   /**
   * 土家族
   */
   Nation14	=	Nation13	+	1,
   /**
   * 哈尼族
   */
   Nation15	=	Nation14	+	1,
   /**
   * 哈萨克族
   */
   Nation16	=	Nation15	+	1,
   /**
   * 傣族
   */
   Nation17	=	Nation16	+	1,
   /**
   * 黎族
   */
   Nation18	=	Nation17	+	1,
   /**
   * 傈僳族
   */
   Nation19	=	Nation18	+	1,
   /**
   * 佤族
   */
   Nation20	=	Nation19	+	1,
   /**
   * 畲族
   */
   Nation21	=	Nation20	+	1,
   /**
   * 高山族
   */
   Nation22	=	Nation21	+	1,
   /**
   * 拉祜族
   */
   Nation23	=	Nation22	+	1,
   /**
   * 水族
   */
   Nation24	=	Nation23	+	1,
   /**
   * 东乡族
   */
   Nation25	=	Nation24	+	1,
   /**
   * 纳西族
   */
   Nation26	=	Nation25	+	1,
   /**
   * 景颇族
   */
   Nation27	=	Nation26	+	1,
   /**
   * 柯尔克孜族
   */
   Nation28	=	Nation27	+	1,
   /**
   * 土族
   */
   Nation29	=	Nation28	+	1,
   /**
   * 达斡尔族
   */
   Nation30	=	Nation29	+	1,
   /**
   * 仫佬族
   */
   Nation31	=	Nation30	+	1,
   /**
   * 羌族
   */
   Nation32	=	Nation31	+	1,
   /**
   * 布朗族
   */
   Nation33	=	Nation32	+	1,
   /**
   * 撒拉族
   */
   Nation34	=	Nation33	+	1,
   /**
   * 毛南族
   */
   Nation35	=	Nation34	+	1,
   /**
   * 仡佬族
   */
   Nation36	=	Nation35	+	1,
   /**
   * 锡伯族
   */
   Nation37	=	Nation36	+	1,
   /**
   * 阿昌族
   */
   Nation38	=	Nation37	+	1,
   /**
   * 普米族
   */
   Nation39	=	Nation38	+	1,
   /**
   * 塔吉克族
   */
   Nation40	=	Nation39	+	1,
   /**
   * 怒族
   */
   Nation41	=	Nation40	+	1,
   /**
   * 乌孜别克族
   */
   Nation42	=	Nation41	+	1,
   /**
   * 俄罗斯族
   */
   Nation43	=	Nation42	+	1,
   /**
   * 鄂温克族
   */
   Nation44	=	Nation43	+	1,
   /**
   * 德昂族
   */
   Nation45	=	Nation44	+	1,
   /**
   * 保安族
   */
   Nation46	=	Nation45	+	1,
   /**
   * 裕固族
   */
   Nation47	=	Nation46	+	1,
   /**
   * 京族
   */
   Nation48	=	Nation47	+	1,
   /**
   * 塔塔尔族
   */
   Nation49	=	Nation48	+	1,
   /**
   * 独龙族
   */
   Nation50	=	Nation49	+	1,
   /**
   * 鄂伦春族
   */
   Nation51	=	Nation50	+	1,
   /**
   * 赫哲族
   */
   Nation52	=	Nation51	+	1,
   /**
   * 门巴族
   */
   Nation53	=	Nation52	+	1,
   /**
   * 珞巴族
   */
   Nation54	=	Nation53	+	1,
   /**
   * 基诺族
   */
   Nation55	=	Nation54	+	1,
   /**
   * 朝鲜族
   */
   Nation56	=	Nation55	+	1,
}
const NationMap =new Map() as Map<NationType,string>
function initNationMap(){
  NationMap.set(NationType.Nation01 ,"汉族");
  NationMap.set(NationType.Nation02 ,"满族");
  NationMap.set(NationType.Nation03 ,"蒙古族");
  NationMap.set(NationType.Nation04 ,"回族");
  NationMap.set(NationType.Nation05 ,"藏族");
  NationMap.set(NationType.Nation06 ,"维吾尔族");
  NationMap.set(NationType.Nation07 ,"苗族");
  NationMap.set(NationType.Nation08 ,"彝族");
  NationMap.set(NationType.Nation09 ,"壮族");
  NationMap.set(NationType.Nation10 ,"布依族");
  NationMap.set(NationType.Nation11 ,"侗族");
  NationMap.set(NationType.Nation12 ,"瑶族");
  NationMap.set(NationType.Nation13 ,"白族");
  NationMap.set(NationType.Nation14 ,"土家族");
  NationMap.set(NationType.Nation15 ,"哈尼族");
  NationMap.set(NationType.Nation16 ,"哈萨克族");
  NationMap.set(NationType.Nation17 ,"傣族");
  NationMap.set(NationType.Nation18 ,"黎族");
  NationMap.set(NationType.Nation19 ,"傈僳族");
  NationMap.set(NationType.Nation20 ,"佤族");
  NationMap.set(NationType.Nation21 ,"畲族");
  NationMap.set(NationType.Nation22 ,"高山族");
  NationMap.set(NationType.Nation23 ,"拉祜族");
  NationMap.set(NationType.Nation24 ,"水族");
  NationMap.set(NationType.Nation25 ,"东乡族");
  NationMap.set(NationType.Nation26 ,"纳西族");
  NationMap.set(NationType.Nation27 ,"景颇族");
  NationMap.set(NationType.Nation28 ,"柯尔克孜族");
  NationMap.set(NationType.Nation29 ,"土族");
  NationMap.set(NationType.Nation30 ,"达斡尔族");
  NationMap.set(NationType.Nation31 ,"仫佬族");
  NationMap.set(NationType.Nation32 ,"羌族");
  NationMap.set(NationType.Nation33 ,"布朗族");
  NationMap.set(NationType.Nation34 ,"撒拉族");
  NationMap.set(NationType.Nation35 ,"毛南族");
  NationMap.set(NationType.Nation36 ,"仡佬族");
  NationMap.set(NationType.Nation37 ,"锡伯族");
  NationMap.set(NationType.Nation38 ,"阿昌族");
  NationMap.set(NationType.Nation39 ,"普米族");
  NationMap.set(NationType.Nation40 ,"塔吉克族");
  NationMap.set(NationType.Nation41 ,"怒族");
  NationMap.set(NationType.Nation42 ,"乌孜别克族");
  NationMap.set(NationType.Nation43 ,"俄罗斯族");
  NationMap.set(NationType.Nation44 ,"鄂温克族");
  NationMap.set(NationType.Nation45 ,"德昂族");
  NationMap.set(NationType.Nation46 ,"保安族");
  NationMap.set(NationType.Nation47 ,"裕固族");
  NationMap.set(NationType.Nation48 ,"京族");
  NationMap.set(NationType.Nation49 ,"塔塔尔族");
  NationMap.set(NationType.Nation50 ,"独龙族");
  NationMap.set(NationType.Nation51 ,"鄂伦春族");
  NationMap.set(NationType.Nation52 ,"赫哲族");
  NationMap.set(NationType.Nation53 ,"门巴族");
  NationMap.set(NationType.Nation54 ,"珞巴族");
  NationMap.set(NationType.Nation55 ,"基诺族");
  NationMap.set(NationType.Nation56 ,"朝鲜族");

}
initNationMap();

export function getNationTypeOptions():any[]  {
  const list = [];
  for (const item of NationMap) {
    list.push({ label: item[1], value: item[0] })
  }
  return list;
}
export function getNationTypeLable(value: any): string {
  const type = value as NationType;
  const item = NationMap.get(type);
  if(item){
    return item;
  }
  return '未知';
}
/**
 * 政治面貌
 */
export enum PoliticalType {
  /**群众 */
  Mass=1,
  /** 党员*/
  PartyMembers=Mass+1,
  /**团员 */
  LeagueMembers=PartyMembers+1,
  /**民主党派 */
  Democratic=LeagueMembers+1,
}
export function getPoliticalTypeOptions():any[]  {
  return [
    { label: '群众', value: PoliticalType.Mass },
    { label: '党员', value: PoliticalType.PartyMembers },
    { label: '团员', value: PoliticalType.LeagueMembers },
    { label: '民主党派', value: PoliticalType.Democratic },
  ];
}
export function getPoliticalTypeLable(value: any): string {
  const type = value as PoliticalType;
  switch (type) {
    case PoliticalType.Mass:
      return '群众';
    case PoliticalType.PartyMembers:
      return '党员';
    case PoliticalType.LeagueMembers:
      return '团员';
    case PoliticalType.Democratic:
      return '民主党派';
    }
  return '未知';
}