github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/sys/invite/impl_initiateupdateinviteroles.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 provideCmdInitiateUpdateInviteRoles(cfg *istructsmem.AppConfigType, timeFunc coreutils.TimeFunc) { 17 cfg.Resources.Add(istructsmem.NewCommandFunction( 18 qNameCmdInitiateUpdateInviteRoles, 19 execCmdInitiateUpdateInviteRoles(timeFunc), 20 )) 21 } 22 23 func execCmdInitiateUpdateInviteRoles(timeFunc coreutils.TimeFunc) func(args istructs.ExecCommandArgs) (err error) { 24 return func(args istructs.ExecCommandArgs) (err error) { 25 if !coreutils.IsValidEmailTemplate(args.ArgumentObject.AsString(field_EmailTemplate)) { 26 return coreutils.NewHTTPError(http.StatusBadRequest, errInviteTemplateInvalid) 27 } 28 29 skbCDocInvite, err := args.State.KeyBuilder(state.Record, qNameCDocInvite) 30 if err != nil { 31 return 32 } 33 skbCDocInvite.PutRecordID(state.Field_ID, args.ArgumentObject.AsRecordID(field_InviteID)) 34 svCDocInvite, ok, err := args.State.CanExist(skbCDocInvite) 35 if err != nil { 36 return 37 } 38 if !ok { 39 return coreutils.NewHTTPError(http.StatusBadRequest, ErrInviteNotExists) 40 } 41 42 if !isValidInviteState(svCDocInvite.AsInt32(field_State), qNameCmdInitiateUpdateInviteRoles) { 43 return coreutils.NewHTTPError(http.StatusBadRequest, ErrInviteStateInvalid) 44 } 45 46 svbCDocInvite, err := args.Intents.UpdateValue(skbCDocInvite, svCDocInvite) 47 if err != nil { 48 return 49 } 50 svbCDocInvite.PutInt32(field_State, State_ToUpdateRoles) 51 svbCDocInvite.PutInt64(field_Updated, timeFunc().UnixMilli()) 52 53 return err 54 } 55 }