Untitled

 avatar
unknown
plain_text
a year ago
2.5 kB
5
Indexable
export type Customer = {
    token: Customer.Token;
    email: string;
    profileUrl: string;
    firstName: string;
    lastName: string;
    phoneNumber: string;
    birthDate: string;
    address: string;
    lastSeen: string;
    dateJoined: string;
    numberOfVisits: number;
    age: number;
    paymentMethod: string;
    moneyCredit: number;
    classCredit: number;
    activities: Customer.Activity[];
    memberships: Customer.Membership[];
    bundles: Customer.Bundle[];
    bookings: Customer.Booking[];
    histories: Customer.History[];
    visits: Customer.Visit[];
    payments: Customer.Payment[];
  };
  export namespace Customer {
    export type Token = `c_${string}`;

    export type Params = UObject.PartialBy<Omit<Customer, "token">, "email">;

    export type Activity = {
      className: string;
      location: string;
      temperature: string;
      status: string;
      profileUrl: string;
      assigneeName: string;
      lastActivityDate: string;
      eventDate?: string;
    };

    export type Membership = {
      token: Organization.Token;
      name: string;
      activatedAt: Date;
      expiresAt: Date;
      userToken: string;
      membershipPlanToken: Organization.MembershipPlan.Token;
      renewsOn: Date;
      price: number;
    };

    export type Bundle = {
      token: Organization.Token;
      name: string;
      activatedAt: Date;
      userToken: string;
      bundlePlanToken: Organization.BundlePlan.Token;
      renewsOn: Date;
      price: number;
    };

    export type Booking = {
      token: Organization.Token;
      status: "pending" | "confirmed";
      checkedInAt: Date;
      bookableToken: Bookable.Token;
      userToken: string;
      schedule: string; // e.g. Every Tuesday 1:00 - 2:00 PM
      name: string;
    };

    export type History = {
      className: string;
      location: string;
      temperature: string;
      profileUrl: string;
      assigneeName: string;
      lastActivityDate: Date;
      eventDate?: Date;
      purchasedBy?: string;
      subscriptionBought?: string;
      status: "Checked In" | "Cancelled";
    };

    export type Visit = {
      className: string;
      location: string;
      temperature: string;
      lastActivityDate: Date;
    };

    export type Payment = {
      itemName: string;
      price: number;
      lastActivityDate: Date;
      status: "Paid" | "Unpaid";
    };
  }
Editor is loading...
Leave a Comment