export enum ErrorCode {
  AUTH_INVALID_OTP = 'AUTH_INVALID_OTP',
  AUTH_TOKEN_EXPIRED = 'AUTH_TOKEN_EXPIRED',
  ACCESS_DENIED = 'ACCESS_DENIED',
  RESOURCE_NOT_FOUND = 'RESOURCE_NOT_FOUND',
  VALIDATION_ERROR = 'VALIDATION_ERROR',
  GPS_DEVICE_NOT_REGISTERED = 'GPS_DEVICE_NOT_REGISTERED',
  GPS_STALE_LOCATION = 'GPS_STALE_LOCATION',
  RFID_CARD_NOT_ASSIGNED = 'RFID_CARD_NOT_ASSIGNED',
  RFID_DUPLICATE_SCAN = 'RFID_DUPLICATE_SCAN',
  TRIP_NOT_ACTIVE = 'TRIP_NOT_ACTIVE',
  STUDENT_NOT_ASSIGNED_TO_ROUTE = 'STUDENT_NOT_ASSIGNED_TO_ROUTE',
  TICKET_ALREADY_CLOSED = 'TICKET_ALREADY_CLOSED',
  INSURANCE_CONSENT_REQUIRED = 'INSURANCE_CONSENT_REQUIRED',
  WELCOME_KIT_NOT_ASSIGNED = 'WELCOME_KIT_NOT_ASSIGNED',
  RATE_LIMIT_EXCEEDED = 'RATE_LIMIT_EXCEEDED',
  SERVER_ERROR = 'SERVER_ERROR',
}

export const ERROR_HTTP_STATUS: Record<ErrorCode, number> = {
  [ErrorCode.AUTH_INVALID_OTP]: 400,
  [ErrorCode.AUTH_TOKEN_EXPIRED]: 401,
  [ErrorCode.ACCESS_DENIED]: 403,
  [ErrorCode.RESOURCE_NOT_FOUND]: 404,
  [ErrorCode.VALIDATION_ERROR]: 422,
  [ErrorCode.GPS_DEVICE_NOT_REGISTERED]: 403,
  [ErrorCode.GPS_STALE_LOCATION]: 200,
  [ErrorCode.RFID_CARD_NOT_ASSIGNED]: 400,
  [ErrorCode.RFID_DUPLICATE_SCAN]: 409,
  [ErrorCode.TRIP_NOT_ACTIVE]: 400,
  [ErrorCode.STUDENT_NOT_ASSIGNED_TO_ROUTE]: 400,
  [ErrorCode.TICKET_ALREADY_CLOSED]: 400,
  [ErrorCode.INSURANCE_CONSENT_REQUIRED]: 400,
  [ErrorCode.WELCOME_KIT_NOT_ASSIGNED]: 404,
  [ErrorCode.RATE_LIMIT_EXCEEDED]: 429,
  [ErrorCode.SERVER_ERROR]: 500,
};
