diff --git a/svc/routes/order_mail.go b/svc/routes/order_mail.go index 5081f85..6e3ea5d 100644 --- a/svc/routes/order_mail.go +++ b/svc/routes/order_mail.go @@ -15,11 +15,12 @@ import ( ) type sendOrderMarketMailPayload struct { - OrderHeaderID string `json:"orderHeaderID"` - Operation string `json:"operation"` - DeletedItems []string `json:"deletedItems"` - UpdatedItems []string `json:"updatedItems"` - AddedItems []string `json:"addedItems"` + OrderHeaderID string `json:"orderHeaderID"` + Operation string `json:"operation"` + DeletedItems []string `json:"deletedItems"` + UpdatedItems []string `json:"updatedItems"` + AddedItems []string `json:"addedItems"` + ExtraRecipients []string `json:"extraRecipients"` } func SendOrderMarketMailHandler(pg *sql.DB, mssql *sql.DB, ml *mailer.GraphMailer) http.HandlerFunc { @@ -67,6 +68,7 @@ func SendOrderMarketMailHandler(pg *sql.DB, mssql *sql.DB, ml *mailer.GraphMaile http.Error(w, "recipient query error: "+err.Error(), http.StatusInternalServerError) return } + recipients = appendUniqueRecipients(recipients, payload.ExtraRecipients...) if len(recipients) == 0 { http.Error(w, "no active email mapping for market", http.StatusBadRequest) return @@ -242,6 +244,37 @@ ORDER BY email return out, nil } +func appendUniqueRecipients(base []string, extras ...string) []string { + seen := make(map[string]struct{}, len(base)+len(extras)) + out := make([]string, 0, len(base)+len(extras)) + + for _, raw := range base { + mail := strings.ToLower(strings.TrimSpace(raw)) + if mail == "" { + continue + } + if _, ok := seen[mail]; ok { + continue + } + seen[mail] = struct{}{} + out = append(out, mail) + } + + for _, raw := range extras { + mail := strings.ToLower(strings.TrimSpace(raw)) + if mail == "" { + continue + } + if _, ok := seen[mail]; ok { + continue + } + seen[mail] = struct{}{} + out = append(out, mail) + } + + return out +} + func buildOrderPDFBytesForMail(db *sql.DB, pgDB *sql.DB, orderID string) ([]byte, *OrderHeader, error) { header, err := getOrderHeaderFromDB(db, orderID) if err != nil { diff --git a/ui/src/pages/OrderProductionUpdate.vue b/ui/src/pages/OrderProductionUpdate.vue index 159c152..7ce4f08 100644 --- a/ui/src/pages/OrderProductionUpdate.vue +++ b/ui/src/pages/OrderProductionUpdate.vue @@ -1166,7 +1166,8 @@ async function sendUpdateMailAfterApply (selectedRows) { operation: payload.operation, deletedItems: payload.deletedItems, updatedItems: payload.updatedItems, - addedItems: payload.addedItems + addedItems: payload.addedItems, + extraRecipients: ['urun@baggi.com.tr'] }) const sentCount = Number(res?.data?.sentCount || 0)