github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/sys/invite/impl_initiatecancelacceptedinvite.go (about) 1 /* 2 * Copyright (c) 2023-present unTill Pro, Ltd. 3 */ 4 5 package invite 6 7 import ( 8 "net/http" 9 10 "github.com/voedger/voedger/pkg/istructs" 11 "github.com/voedger/voedger/pkg/istructsmem" 12 "github.com/voedger/voedger/pkg/state" 13 coreutils "github.com/voedger/voedger/pkg/utils" 14 ) 15 16 func provideCmdInitiateCancelAcceptedInvite(cfg *istructsmem.AppConfigType, timeFunc coreutils.TimeFunc) { 17 cfg.Resources.Add(istructsmem.NewCommandFunction( 18 qNameCmdInitiateCancelAcceptedInvite, 19 execCmdInitiateCancelAcceptedInvite(timeFunc), 20 )) 21 } 22 23 func execCmdInitiateCancelAcceptedInvite(timeFunc coreutils.TimeFunc) func(args istructs.ExecCommandArgs) (err error) { 24 return func(args istructs.ExecCommandArgs) (err error) { 25 skbCDocInvite, err := args.State.KeyBuilder(state.Record, qNameCDocInvite) 26 if err != nil { 27 return 28 } 29 skbCDocInvite.PutRecordID(state.Field_ID, args.ArgumentObject.AsRecordID(field_InviteID)) 30 svCDocInvite, ok, err := args.State.CanExist(skbCDocInvite) 31 if err != nil { 32 return 33 } 34 if !ok { 35 return coreutils.NewHTTPError(http.StatusBadRequest, ErrInviteNotExists) 36 } 37 38 if !isValidInviteState(svCDocInvite.AsInt32(field_State), qNameCmdInitiateCancelAcceptedInvite) { 39 return coreutils.NewHTTPError(http.StatusBadRequest, ErrInviteStateInvalid) 40 } 41 42 svbCDocInvite, err := args.Intents.UpdateValue(skbCDocInvite, svCDocInvite) 43 if err != nil { 44 return 45 } 46 svbCDocInvite.PutInt64(field_Updated, timeFunc().UnixMilli()) 47 svbCDocInvite.PutInt32(field_State, State_ToBeCancelled) 48 49 return err 50 } 51 }