Передача значений из кода на стороне клиента на сторону обслуживания через Apex - PullRequest
0 голосов
/ 22 марта 2020

Я новичок в разработке Apex. Я пытаюсь создать компонент молнии, где пользователю представлены флажки записей, и пытаюсь создать записи для записей, выбранных на компоненте.

У меня проблемы с этой функцией сохранения, когда кажется, что она неправильно запускает / выполняет код на стороне сервера. когда я пытаюсь вызвать другой метод в том же классе Apex, функция, кажется, проходит через.

Можете ли вы помочь мне понять, что не так?

FolderShareConfig.cmp

<aura:component implements="force:lightningQuickAction, force:hasRecordId" controller="FolderShareConfig">
<aura:handler name="init" value="{!this}" action="{!c.init}"/>

<aura:attribute name='recordId' type='String'/>
<aura:attribute name='hasShareList' type='User[]' />
<aura:attribute name='hasNoShareList' type='User[]' />

<h2>Remove access from:</h2>
<aura:iteration items="{!v.hasShareList}" var="userWithShare">
    <lightning:input aura:id="remCheck" type="checkbox" label="{!userWithShare.Name}" checked="{!true}"></lightning:input>
</aura:iteration>

<hr></hr>

<h2>Grant access to:</h2>
<aura:iteration items="{!v.hasNoShareList}" var="userWithNoShare">
    <lightning:input aura:id="addCheck" type="checkbox" label="{!userWithNoShare.Name}"></lightning:input>
</aura:iteration>

<lightning:button label="Save" onclick="{!c.save}"></lightning:button>

FolderShareConfigController . js

({
init : function(component, event, helper) {
    var action = component.get("c.getFolderShareList");
    action.setParams({'folderId': component.get('v.recordId')});
    action.setCallback(this, function (response) {
        var state = response.getState();
        if (state === "SUCCESS") {
            console.log(response.getReturnValue());
            let responseMap = JSON.parse(response.getReturnValue());
            component.set('v.hasShareList', responseMap['has-share']);
            component.set('v.hasNoShareList', responseMap['no-share']);
        }else if (state === "ERROR") {
            var errors = response.getError();
        }
    });
    $A.enqueueAction(action); 
},

save : function(component, event, helper) {   
    var action = component.get("c.createFolderShare");
            alert('hello1');
    var addcheckCmp = component.find("addCheck");
    alert('hello2');
        var checkboxesChecked = [];
    for (var i=0; i<checkboxes.length; i++){
        if (checkboxes[i].get("v.value")== true){
            checkboxesChecked.push(checkboxes[i])
        }
    };

    action.setParams({
        'folderId': component.get('v.recordId')
    });      
    action.setCallback(this, function(response) {
    var state = response.getState();
        if (state === "SUCCESS") {
            var name = response.getReturnValue();
            alert("Share Configured Successfully");
        }
        else if (state === "ERROR")
        {
            alert("Share Configuration Failed. Please try again.");
        }
     });
$A.enqueueAction(action);
}

})

FolderShareConfig.apx c

public without sharing class FolderShareConfig {
@AuraEnabled
public static String getFolderShareList(String folderId){
    Map<Id, User> allUserMap = new Map<Id, User>([SELECT Id, Name FROM User order by Name ASC]);
    List<Folder__Share> shares = [select id, parentid, UserOrGroup.Name, UserOrGroupId from Folder__share where parentid =: folderId ORDER BY UserOrGroup.Name asc];
    Map<String, List<User>> userMap = new Map<String, List<User>>{
        'has-share' => new List<User>(),
        'no-share' => new List<User>()
    };

    Set<Id> sharedUserIdSet = new Set<Id>();
    for(Folder__Share share: shares){
        if(allUserMap.containsKey(share.UserOrGroupId)){
            sharedUserIdSet.add(share.UserOrGroupId);
            userMap.get('has-share').add(allUserMap.get(share.UserOrGroupId));                
        }
    }

    for(User u: allUserMap.values()){
        if(!sharedUserIdSet.contains(u.Id)){
            userMap.get('no-share').add(u);
        }
    }

    return JSON.serialize(userMap);
}
public static String createFolderShare(String[] checkboxesChecked){

    system.debug (checkboxesChecked);
    return JSON.serialize(checkboxesChecked);
   //for (Integer i=0;i<3;i++)
    //{
       // Folder__Share fs = new Folder__Share(UserOrGroupId, AccessLevel = 'Read Only', ParentId = :folderId)
    //}
       //try{
          // insert ;
           //return ;
      // } catch(Exception e) {
            // system.debug('Error:' + e);
            // return null;
      // }
}

}

...