diff --git a/cmd/teams.go b/cmd/teams.go
index 833d48b0..2e39ebcb 100644
--- a/cmd/teams.go
+++ b/cmd/teams.go
@@ -55,13 +55,14 @@ func handleCreateTeam(r *fastglue.Request) error {
app = r.Context.(*App)
name = string(r.RequestCtx.PostArgs().Peek("name"))
timezone = string(r.RequestCtx.PostArgs().Peek("timezone"))
+ emoji = string(r.RequestCtx.PostArgs().Peek("emoji"))
conversationAssignmentType = string(r.RequestCtx.PostArgs().Peek("conversation_assignment_type"))
)
businessHrsID, err := strconv.Atoi(string(r.RequestCtx.PostArgs().Peek("business_hours_id")))
if err != nil || businessHrsID == 0 {
return r.SendErrorEnvelope(fasthttp.StatusBadRequest, "Invalid `business_hours_id`.", nil, envelope.InputError)
}
- if err := app.team.Create(name, timezone, conversationAssignmentType, businessHrsID); err != nil {
+ if err := app.team.Create(name, timezone, conversationAssignmentType, businessHrsID, emoji); err != nil {
return sendErrorEnvelope(r, err)
}
return r.SendEnvelope("Team created successfully.")
@@ -73,6 +74,7 @@ func handleUpdateTeam(r *fastglue.Request) error {
app = r.Context.(*App)
name = string(r.RequestCtx.PostArgs().Peek("name"))
timezone = string(r.RequestCtx.PostArgs().Peek("timezone"))
+ emoji = string(r.RequestCtx.PostArgs().Peek("emoji"))
conversationAssignmentType = string(r.RequestCtx.PostArgs().Peek("conversation_assignment_type"))
)
id, err := strconv.Atoi(r.RequestCtx.UserValue("id").(string))
@@ -86,7 +88,7 @@ func handleUpdateTeam(r *fastglue.Request) error {
return r.SendErrorEnvelope(fasthttp.StatusBadRequest, "Invalid `business_hours_id`.", nil, envelope.InputError)
}
- if err = app.team.Update(id, name, timezone, conversationAssignmentType, businessHrsID); err != nil {
+ if err = app.team.Update(id, name, timezone, conversationAssignmentType, businessHrsID, emoji); err != nil {
return sendErrorEnvelope(r, err)
}
return r.SendEnvelope(true)
diff --git a/frontend/src/components/admin/team/teams/TeamForm.vue b/frontend/src/components/admin/team/teams/TeamForm.vue
index 6a40d080..6b7d3162 100644
--- a/frontend/src/components/admin/team/teams/TeamForm.vue
+++ b/frontend/src/components/admin/team/teams/TeamForm.vue
@@ -1,7 +1,22 @@
+
+function toggleEmojiPicker () {
+ isEmojiPickerVisible.value = !isEmojiPickerVisible.value
+}
+
+function onSelectEmoji (emoji) {
+ form.setFieldValue('emoji', emoji.i || emoji)
+}
+
\ No newline at end of file
diff --git a/frontend/src/components/admin/team/teams/teamFormSchema.js b/frontend/src/components/admin/team/teams/teamFormSchema.js
index b689cb41..954f05e9 100644
--- a/frontend/src/components/admin/team/teams/teamFormSchema.js
+++ b/frontend/src/components/admin/team/teams/teamFormSchema.js
@@ -8,6 +8,7 @@ export const teamFormSchema = z.object({
.min(2, {
message: 'Team name must be at least 2 characters.'
}),
+ emoji: z.string({ required_error: 'Emoji is required.' }),
conversation_assignment_type: z.string({ required_error: 'Conversation assignment type is required.' }),
business_hours_id : z.number({ required_error: 'Business hours is required.' }),
timezone: z.string().optional(),
diff --git a/frontend/src/components/conversation/sidebar/AssignTeam.vue b/frontend/src/components/conversation/sidebar/AssignTeam.vue
index 8c59e004..09a52a74 100644
--- a/frontend/src/components/conversation/sidebar/AssignTeam.vue
+++ b/frontend/src/components/conversation/sidebar/AssignTeam.vue
@@ -13,8 +13,9 @@
No team found.
-
- {{ team.name }}
+
+ {{ team.emoji }} {{ team.name }}
- {{ team.name }}
+ {{ team.emoji }}{{ team.name }}
diff --git a/internal/team/models/models.go b/internal/team/models/models.go
index c3f9d9e8..cdcd8778 100644
--- a/internal/team/models/models.go
+++ b/internal/team/models/models.go
@@ -15,8 +15,8 @@ type Team struct {
UpdatedAt time.Time `db:"updated_at" json:"updated_at"`
Emoji null.String `db:"emoji" json:"emoji"`
Name string `db:"name" json:"name"`
- ConversationAssignmentType string `db:"conversation_assignment_type" json:"conversation_assignment_type"`
- Timezone string `db:"timezone" json:"timezone"`
+ ConversationAssignmentType string `db:"conversation_assignment_type" json:"conversation_assignment_type,omitempty"`
+ Timezone string `db:"timezone" json:"timezone,omitempty"`
BusinessHoursID int `db:"business_hours_id" json:"business_hours_id,omitempty"`
}
diff --git a/internal/team/queries.sql b/internal/team/queries.sql
index e4c53c8b..ec24d8d1 100644
--- a/internal/team/queries.sql
+++ b/internal/team/queries.sql
@@ -18,10 +18,10 @@ JOIN teams t ON t.id = tm.team_id
WHERE t.id = $1;
-- name: insert-team
-INSERT INTO teams (name, timezone, conversation_assignment_type, business_hours_id) VALUES ($1, $2, $3, $4) RETURNING id;
+INSERT INTO teams (name, timezone, conversation_assignment_type, business_hours_id, emoji) VALUES ($1, $2, $3, $4, $5) RETURNING id;
-- name: update-team
-UPDATE teams set name = $2, timezone = $3, conversation_assignment_type = $4, business_hours_id = $5 where id = $1;
+UPDATE teams set name = $2, timezone = $3, conversation_assignment_type = $4, business_hours_id = $5, emoji = $6 where id = $1;
-- name: upsert-user-teams
WITH delete_old_teams AS (
diff --git a/internal/team/team.go b/internal/team/team.go
index 4d7452c1..a7fed658 100644
--- a/internal/team/team.go
+++ b/internal/team/team.go
@@ -102,8 +102,8 @@ func (u *Manager) Get(id int) (models.Team, error) {
}
// Create creates a new team.
-func (u *Manager) Create(name, timezone, conversationAssignmentType string, businessHrsID int) error {
- if _, err := u.q.InsertTeam.Exec(name, timezone, conversationAssignmentType, businessHrsID); err != nil {
+func (u *Manager) Create(name, timezone, conversationAssignmentType string, businessHrsID int, emoji string) error {
+ if _, err := u.q.InsertTeam.Exec(name, timezone, conversationAssignmentType, businessHrsID, emoji); err != nil {
u.lo.Error("error inserting team", "error", err)
return envelope.NewError(envelope.GeneralError, "Error creating team", nil)
}
@@ -111,8 +111,8 @@ func (u *Manager) Create(name, timezone, conversationAssignmentType string, busi
}
// Update updates an existing team.
-func (u *Manager) Update(id int, name, timezone, conversationAssignmentType string, businessHrsID int) error {
- if _, err := u.q.UpdateTeam.Exec(id, name, timezone, conversationAssignmentType, businessHrsID); err != nil {
+func (u *Manager) Update(id int, name, timezone, conversationAssignmentType string, businessHrsID int, emoji string) error {
+ if _, err := u.q.UpdateTeam.Exec(id, name, timezone, conversationAssignmentType, businessHrsID, emoji); err != nil {
u.lo.Error("error updating team", "error", err)
return envelope.NewError(envelope.GeneralError, "Error updating team", nil)
}
diff --git a/internal/user/queries.sql b/internal/user/queries.sql
index 56614c2f..c7c5e4ea 100644
--- a/internal/user/queries.sql
+++ b/internal/user/queries.sql
@@ -35,7 +35,7 @@ SELECT
u.last_name,
u.roles,
COALESCE(
- (SELECT json_agg(json_build_object('id', t.id, 'name', t.name))
+ (SELECT json_agg(json_build_object('id', t.id, 'name', t.name, 'emoji', t.emoji))
FROM team_members tm
JOIN teams t ON tm.team_id = t.id
WHERE tm.user_id = u.id),