* apps/bot: add feature add contact * apps/bot: check role 'master' before add contact * apps/bot: rename createCustomer -> createUser * remove ';' * app/bot: add contact define name & phone * apps/bot: check user already exists w/o telegramId (invited) * Чтобы добавить контакт, сначала поделитесь своим номером телефона. * apps/bot: create or update functions * apps/bot: remove api.ts -> move getCustomer to packages/graphql/api * packages/graphql: add api/customer tests * tests for createOrUpdateClient * fix(apps/web): user is undefined * fix(apps/web): actions getCustomer * feat(apps/web): update user photo on app launch * rename page 'masters' -> 'contacts' * feat(apps/web): add basic /contacts page * fix app layout * refactor customer queries * add action getProfile * get customer contacts * use zustand for contacts * add loading spinner * rename filteredContacts -> contacts * replace zustand with @tanstack/react-query * profile: use react-query * refactor updateRole function * move updateRole closer to profile-card * beautify actions * add page 'profile/[telegramId]' * profile: add button "message to telegram" * profile: add call feature * app/bot: normalize phone before register * do not open keyboard on page load * contacts: loading spinner * telegram login: customer.active=true * update name on telegram first login
56 lines
1.2 KiB
GraphQL
56 lines
1.2 KiB
GraphQL
fragment CustomerFields on Customer {
|
|
active
|
|
documentId
|
|
name
|
|
phone
|
|
photoUrl
|
|
role
|
|
telegramId
|
|
}
|
|
|
|
mutation CreateCustomer($name: String!, $telegramId: Long, $phone: String) {
|
|
createCustomer(data: { name: $name, telegramId: $telegramId, phone: $phone, role: client }) {
|
|
documentId
|
|
}
|
|
}
|
|
|
|
query GetCustomer($phone: String, $telegramId: Long) {
|
|
customers(filters: { or: [{ phone: { eq: $phone } }, { telegramId: { eq: $telegramId } }] }) {
|
|
...CustomerFields
|
|
}
|
|
}
|
|
|
|
query GetCustomerMasters($phone: String, $telegramId: Long) {
|
|
customers(
|
|
filters: {
|
|
or: [{ phone: { eq: $phone } }, { telegramId: { eq: $telegramId } }]
|
|
and: [{ active: { eq: true } }]
|
|
}
|
|
) {
|
|
documentId
|
|
masters {
|
|
...CustomerFields
|
|
}
|
|
}
|
|
}
|
|
|
|
query GetCustomerClients($phone: String, $telegramId: Long) {
|
|
customers(
|
|
filters: {
|
|
or: [{ phone: { eq: $phone } }, { telegramId: { eq: $telegramId } }]
|
|
and: [{ active: { eq: true } }]
|
|
}
|
|
) {
|
|
documentId
|
|
clients {
|
|
...CustomerFields
|
|
}
|
|
}
|
|
}
|
|
|
|
mutation UpdateCustomerProfile($documentId: ID!, $data: CustomerInput!) {
|
|
updateCustomer(documentId: $documentId, data: $data) {
|
|
...CustomerFields
|
|
}
|
|
}
|