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  }