+func (pm *ProviderManager) checkIfProviderIsRegistered(registrationId string, ctx echo.Context) (*provapi.APIProviderEnrolmentDetails, error) {
+ registeredProvider, ok := pm.onboardedProviders[registrationId]
+ if !ok {
+ return nil, fmt.Errorf("provider not onboarded")
+ }
+ return ®isteredProvider, nil
+}
+
+func getProviderFromRequest(ctx echo.Context) (provapi.APIProviderEnrolmentDetails, error) {
+ var updatedProvider provapi.APIProviderEnrolmentDetails
+ err := ctx.Bind(&updatedProvider)
+ if err != nil {
+ return provapi.APIProviderEnrolmentDetails{}, fmt.Errorf("invalid format for provider")
+ }
+ return updatedProvider, nil
+}
+
+func updateDomainInfo(updatedProvider, registeredProvider *provapi.APIProviderEnrolmentDetails) {
+ if updatedProvider.ApiProvDomInfo != nil {
+ registeredProvider.ApiProvDomInfo = updatedProvider.ApiProvDomInfo
+ }
+}
+
+func updateFuncs(updatedFuncs, registeredFuncs *[]provapi.APIProviderFunctionDetails) (*[]provapi.APIProviderFunctionDetails, error) {
+ addedFuncs := []provapi.APIProviderFunctionDetails{}
+ changedFuncs := []provapi.APIProviderFunctionDetails{}
+ for _, function := range *updatedFuncs {
+ if function.ApiProvFuncId == nil {
+ function.ApiProvFuncId = getFuncId(function.ApiProvFuncRole, function.ApiProvFuncInfo)
+ addedFuncs = append(addedFuncs, function)
+ } else {
+ registeredFunction, ok := getApiFunc(*function.ApiProvFuncId, registeredFuncs)
+ if !ok {
+ return nil, fmt.Errorf("function with ID %s is not registered for the provider", *function.ApiProvFuncId)
+ }
+ if function.ApiProvFuncInfo != nil {
+ registeredFunction.ApiProvFuncInfo = function.ApiProvFuncInfo
+ }
+ changedFuncs = append(changedFuncs, function)
+ }
+ }
+ modifiedFuncs := append(changedFuncs, addedFuncs...)
+ return &modifiedFuncs, nil
+}
+
+func getApiFunc(funcId string, apiFunctions *[]provapi.APIProviderFunctionDetails) (provapi.APIProviderFunctionDetails, bool) {
+ for _, function := range *apiFunctions {
+ if *function.ApiProvFuncId == funcId {
+ return function, true
+ }
+ }
+ return provapi.APIProviderFunctionDetails{}, false
+}
+