github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/sys/invite/impl_cancelsentinvite.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 provideCmdCancelSentInvite(cfg *istructsmem.AppConfigType, timeFunc coreutils.TimeFunc) { 17 cfg.Resources.Add(istructsmem.NewCommandFunction( 18 qNameCmdCancelSentInvite, 19 execCmdCancelSentInvite(timeFunc), 20 )) 21 } 22 23 func execCmdCancelSentInvite(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 35 if !ok { 36 return coreutils.NewHTTPError(http.StatusBadRequest, ErrInviteNotExists) 37 } 38 39 if !isValidInviteState(svCDocInvite.AsInt32(field_State), qNameCmdCancelSentInvite) { 40 return coreutils.NewHTTPError(http.StatusBadRequest, ErrInviteStateInvalid) 41 } 42 43 svbCDocInvite, err := args.Intents.UpdateValue(skbCDocInvite, svCDocInvite) 44 if err != nil { 45 return 46 } 47 svbCDocInvite.PutInt64(field_Updated, timeFunc().UnixMilli()) 48 svbCDocInvite.PutInt32(field_State, State_Cancelled) 49 50 return 51 } 52 }