53 lines
1.9 KiB
Go
53 lines
1.9 KiB
Go
package platform
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/Gleipnir-Technology/nidus-sync/db"
|
|
"github.com/Gleipnir-Technology/nidus-sync/db/gen/nidus-sync/public/model"
|
|
querypublic "github.com/Gleipnir-Technology/nidus-sync/db/query/public"
|
|
"github.com/Gleipnir-Technology/nidus-sync/lint"
|
|
)
|
|
|
|
func CommunicationsForOrganization(ctx context.Context, org_id int64) ([]*model.Communication, error) {
|
|
return querypublic.CommunicationsFromOrganization(ctx, org_id)
|
|
}
|
|
func CommunicationFromID(ctx context.Context, user User, comm_id int64) (*model.Communication, error) {
|
|
comm, err := querypublic.CommunicationFromID(ctx, comm_id)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if comm.OrganizationID != user.Organization.ID {
|
|
return nil, nil
|
|
}
|
|
return comm, nil
|
|
}
|
|
func CommunicationMarkInvalid(ctx context.Context, user User, comm_id int64) error {
|
|
return communicationMark(ctx, user, comm_id, querypublic.CommunicationMarkInvalid)
|
|
}
|
|
func CommunicationMarkPendingResponse(ctx context.Context, user User, comm_id int64) error {
|
|
return communicationMark(ctx, user, comm_id, querypublic.CommunicationMarkPendingResponse)
|
|
}
|
|
func CommunicationMarkPossibleIssue(ctx context.Context, user User, comm_id int64) error {
|
|
return communicationMark(ctx, user, comm_id, querypublic.CommunicationMarkPossibleIssue)
|
|
}
|
|
func CommunicationMarkPossibleResolved(ctx context.Context, user User, comm_id int64) error {
|
|
return communicationMark(ctx, user, comm_id, querypublic.CommunicationMarkPossibleResolved)
|
|
}
|
|
|
|
type markFunc = func(context.Context, db.Tx, int64, int64, int64) error
|
|
|
|
func communicationMark(ctx context.Context, user User, comm_id int64, f markFunc) error {
|
|
txn, err := db.BeginTxn(ctx)
|
|
if err != nil {
|
|
return fmt.Errorf("begin txn: %w", err)
|
|
}
|
|
defer lint.LogOnErrRollback(txn.Rollback, ctx, "rollback")
|
|
err = f(ctx, txn, int64(user.Organization.ID), int64(user.ID), comm_id)
|
|
if err != nil {
|
|
return fmt.Errorf("mark: %w", err)
|
|
}
|
|
txn.Commit(ctx)
|
|
return nil
|
|
}
|