Compare commits

...

17 Commits

Author SHA1 Message Date
79bea9002e Added index to requested_at amendments 2025-10-24 09:27:34 +11:00
0e72fa1355 Added Metrics model 2025-10-23 18:04:48 +11:00
db89056468 Added BeforeSave 2025-10-23 17:02:52 +11:00
567470372f askilhdfjasdgf 2025-10-23 16:59:06 +11:00
674f7dd5f5 asdnfujklsreghyiujlfhhsdrlgkif 2025-10-23 16:55:59 +11:00
f50333d223 Made user nullable in participant 2025-10-23 16:44:56 +11:00
a7f73eb96a Fixed typo 2025-10-23 16:32:18 +11:00
57b4791a4a Fixed typo 2025-10-23 16:30:35 +11:00
7737b8b4d2 Added tablename for GC users 2025-10-23 16:01:34 +11:00
2f2388caab Added Calls to Participant via FK. Added User to Participant via FK. 2025-10-23 15:54:46 +11:00
ff0f873dd8 Added GCUser 2025-10-23 15:41:44 +11:00
7bf15cce48 Added UserId to participant model 2025-10-19 19:16:41 +11:00
643c5cc695 Changed breakdown to use a composite PK 2025-10-19 15:16:45 +11:00
8b2b31ef3f Added call breakdown model 2025-10-19 15:02:27 +11:00
423383a2f8 Update invoice_config rounding_function from bool -> str 2025-10-10 09:51:00 +11:00
00b946fc8d Fixed issue setting startTime as endTime 2025-09-18 15:07:09 +10:00
4e5f789671 Made conversation start/end optional 2025-09-18 10:19:07 +10:00
6 changed files with 88 additions and 19 deletions

View File

@@ -8,7 +8,7 @@ type DBAmendment struct {
AmendmentColumn string
AmendmentValue string
Requestor string
RequestedAt time.Time
RequestedAt time.Time `gorm:"index"`
Sequence string
}

View File

@@ -23,8 +23,8 @@ type CrmInvoiceConfig struct {
PartnerAudioBookingBH *string `gorm:"column:partner_audio_booking_bh" json:"partner_audio_booking_bh"`
PartnerVideoBookingAH *string `gorm:"column:partner_video_booking_ah" json:"partner_video_booking_ah"`
PartnerVideoBookingBH *string `gorm:"column:partner_video_booking_bh" json:"partner_video_booking_bh"`
RoundingFunction *string `gorm:"column:rounding_function" json:"rounding_function"`
RoundBookings *bool `gorm:"column:round_bookings" json:"round_bookings"`
RoundingFunction *bool `gorm:"column:rounding_function" json:"rounding_function"`
SplitBookings *bool `gorm:"column:split_bookings" json:"split_bookings"`
SplitOnDemand *bool `gorm:"column:split_on_demand" json:"split_on_demand"`
}

View File

@@ -67,8 +67,8 @@ type CallStat struct {
ClientId int `gorm:"index"`
CustomerDnis string
CustomerAni string
ConversationStart time.Time `gorm:"index"`
ConversationEnd time.Time `gorm:"index"`
ConversationStart *time.Time `gorm:"index"`
ConversationEnd *time.Time `gorm:"index"`
SearchStartTime *time.Time
P1ConnectTime time.Time `gorm:"index"`
P1DisconnectTime time.Time `gorm:"index"`
@@ -78,8 +78,6 @@ type CallStat struct {
InterpreterAccepted bool
InterpreterConnectedCount int
InterpreterConnected bool
// InterpreterCount int
// InterpreterConnected bool
ClientDisconnected bool
UtsDuration int
UtsEntries int
@@ -93,3 +91,40 @@ type CallStat struct {
func (CallStat) TableName() string {
return "gc_call_stats"
}
type Breakdown struct {
ClientConversationId string `gorm:"primaryKey;index"`
InterpreterConversationId string `gorm:"index"`
Timestamp time.Time `gorm:"primaryKey;index"`
Task string `gorm:"primaryKey"`
Duration int
Message string
Metadata *string `gorm:"type:json"`
}
func (Breakdown) TableName() string {
return "gc_call_breakdown"
}
type CallMetrics struct {
ClientConversationId string `gorm:"primaryKey;index"`
//
TotalDuration int
TotalClientResponseDuration int
TotalSystemDuration int
TotalTalkDuration int
//
AgentAlertDuration int
AgentHoldDuration int
AgentTalkDuration int
//
SearchingDuration int
ConfigurationDuration int
QueueDuration int
//
Metadata *string `gorm:"type:json"`
}
func (CallMetrics) TableName() string {
return "gc_call_metrics"
}

View File

@@ -72,6 +72,7 @@ type AnalyticsConversationWithoutAttributes struct {
DivisionIds []string `json:"divisionIds"`
Participants []struct {
ParticipantId string `json:"participantId"`
UserId string `json:"userId"`
ParticipantName string `json:"participantName"`
Purpose string `json:"purpose"`
ExternalContactId string `json:"externalContactId"`
@@ -183,3 +184,22 @@ type NotificationConversationWithAttributes struct {
SecurePause bool `json:"securePause"`
UtilizationLabelId string `json:"utilizationLabelId"`
}
type UsersQuery struct {
Entities []GCUser `json:"entities"`
PageSize int `json:"pageSize"`
Total int `json:"total"`
}
type GCUser struct {
Id string `json:"id" gorm:"primaryKey"`
Name string `json:"name"`
Email string `json:"email"`
State string `json:"state"`
Username string `json:"username"`
AcdAutoAnswer bool `json:"acdAutoAnswer"`
}
func (GCUser) TableName() string {
return "gc_users"
}

View File

@@ -2,6 +2,8 @@ package models
import (
"time"
"gorm.io/gorm"
)
type DBParticipant struct {
@@ -17,13 +19,24 @@ type DBParticipant struct {
Name *string `gorm:"index"`
Purpose *string `gorm:"index"`
QueueId *string
UserId *string
Wrapup *string `gorm:"type:json"`
WrapupExpected *bool
WrapupRequired *bool
Sessions []DBSession `gorm:"foreignKey:ParticipantId;references:Id"`
Calls []DBCall `gorm:"foreignKey:ParticipantId;references:Id"`
User *GCUser `gorm:"foreignKey:UserId;references:Id"`
}
func (DBParticipant) TableName() string {
return "gc_participants"
}
func (p *DBParticipant) BeforeSave(tx *gorm.DB) error {
// Convert empty string to nil
if p.UserId != nil && *p.UserId == "" {
p.UserId = nil
}
return nil
}

View File

@@ -22,9 +22,9 @@ func ExtractWithoutAttributes(base models.AnalyticsConversationWithoutAttributes
var endTime *time.Time
parsedEndTime, err := time.Parse(time.RFC3339, base.ConversationEnd)
if err != nil {
startTime = nil
endTime = nil
} else {
startTime = &parsedEndTime
endTime = &parsedEndTime
}
divisionIdsBytes, err := json.Marshal(base.DivisionIds)
@@ -49,13 +49,14 @@ func ExtractWithoutAttributes(base models.AnalyticsConversationWithoutAttributes
for _, p := range base.Participants {
participant := models.DBParticipant{
ConnectedTime: nil,
// ConnectedTime: nil,
ConversationId: base.ConversationId,
EndTime: nil,
// EndTime: nil,
ExternalContactId: &p.ExternalContactId,
Id: p.ParticipantId,
Name: &p.ParticipantName,
Purpose: &p.Purpose,
UserId: &p.UserId,
}
participants = append(participants, participant)