2026-05-15 20:10:14 +00:00
|
|
|
package resource
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
|
|
|
|
"net/http"
|
|
|
|
|
|
2026-05-19 15:33:57 +00:00
|
|
|
nhttp "source.gleipnir.technology/Gleipnir/nidus-sync/http"
|
|
|
|
|
"source.gleipnir.technology/Gleipnir/nidus-sync/platform"
|
|
|
|
|
"source.gleipnir.technology/Gleipnir/nidus-sync/platform/types"
|
2026-05-15 20:10:14 +00:00
|
|
|
//"github.com/rs/zerolog/log"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type contactR struct {
|
|
|
|
|
router *router
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func Contact(r *router) *contactR {
|
|
|
|
|
return &contactR{
|
|
|
|
|
router: r,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type contact struct {
|
|
|
|
|
types.Contact
|
2026-05-23 00:47:37 +00:00
|
|
|
Messages []types.Message
|
|
|
|
|
URI string
|
2026-05-15 20:10:14 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (res *contactR) ByIDGet(ctx context.Context, r *http.Request, user platform.User, qp QueryParams) (contact, *nhttp.ErrorWithStatus) {
|
|
|
|
|
return contact{}, nil
|
|
|
|
|
}
|
|
|
|
|
func (res *contactR) List(ctx context.Context, r *http.Request, user platform.User, query QueryParams) ([]contact, *nhttp.ErrorWithStatus) {
|
|
|
|
|
contacts, err := platform.ContactsForOrganization(ctx, user.Organization.ID)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, nhttp.NewError("nuisance report query: %w", err)
|
|
|
|
|
}
|
|
|
|
|
result := make([]contact, len(contacts))
|
|
|
|
|
for i, c := range contacts {
|
|
|
|
|
uri, err := res.router.IDToURI("contact.ByIDGet", int(c.ID))
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, nhttp.NewError("contact uri: %w", err)
|
|
|
|
|
}
|
2026-05-23 00:47:37 +00:00
|
|
|
messages, err := platform.MessagesForContact(ctx, int64(c.ID))
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, nhttp.NewError("messages for contact: %w", err)
|
|
|
|
|
}
|
2026-05-15 20:10:14 +00:00
|
|
|
result[i] = contact{
|
2026-05-23 00:47:37 +00:00
|
|
|
Contact: c,
|
|
|
|
|
Messages: messages,
|
|
|
|
|
URI: uri,
|
2026-05-15 20:10:14 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return result, nil
|
|
|
|
|
}
|