⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tickethandler.java

📁 CRM源码This file describes some issues that should be implemented in future and how it should be imple
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        } else if(RES_BVERSION_ID_FIELD_NAME.equalsIgnoreCase(elementID)) {
            EntityReferenceDataRequest theRequest = (EntityReferenceDataRequest) request;
            FieldData productData = context.getFieldData(formIndex,
                    PRODUCT_ID_FIELD_NAME);
            FieldData cloned = productData.cloneData();
            cloned.setFieldID(BVERSION_FILTER_FIELD_NAME);
            theRequest.setAdditionalFilterForRequestingEntity(cloned);
        } else if(REP_ENV_ID_FIELD_NAME.equalsIgnoreCase(elementID)) {
            EntityReferenceDataRequest theRequest = (EntityReferenceDataRequest) request;
            theRequest.clearAdditionalFilter();//clear previous filters, because it might be singleton-event-object.

            FieldData productData = context.getFieldData(formIndex,
                    PRODUCT_ID_FIELD_NAME);
            if(!productData.isEmpty()) {
                FieldData cloned = productData.cloneData();
                cloned.setFieldID(ENV_FILTER_FIELD_NAME);
                theRequest.addAdditionalFilterForRequestingEntity(cloned);
            }
            EntityReferenceData customerIdData = (EntityReferenceData) context.getFieldData(
                    formIndex, CUSTOMER_ID_FIELD_NAME);
            if(customerIdData.getSelectedRowID() != null) {
                FieldData data = new TextboxFieldData(CUSTOMER_TICKET_ENTITY_PKEYFIELD_NAME, customerIdData.getSelectedRowID().toString());
                theRequest.addAdditionalFilter(data, CUSTOMER_TICKET_ENTITY_NAME);
            }
        } else if(TEST_ENV_ID_FIELD_NAME.equalsIgnoreCase(elementID)) {
            EntityReferenceDataRequest theRequest = (EntityReferenceDataRequest) request;
            FieldData productData = context.getFieldData(formIndex,
                    PRODUCT_ID_FIELD_NAME);
            //FieldData customerData = form.getModel().getElementData(CUSTOMER_ID_FIELD_NAME);
            FieldData cloned = productData.cloneData();
            //FieldData cloned_cust = (FieldData) customerData.cloneData();
            cloned.setFieldID(ENV_FILTER_FIELD_NAME);
            //cloned_cust.setFieldID(ENVCUST_FILTER_FIELD_NAME);
            theRequest.setAdditionalFilterForRequestingEntity(cloned);
            //theRequest.setAdditionalFilter(cloned_cust);
        } else if(SUB_CATEGORY_FIELD_NAME.equalsIgnoreCase(elementID)) {
            ListboxDataRequest listBoxReq = (ListboxDataRequest) request;
            ListboxFieldData categoryData = (ListboxFieldData) context.getFieldData(
                    formIndex, CATEGORY_FIELD_NAME);
            boolean isChange = compareFieldData(oldCategoryData, categoryData);
            if(!isChange) {
                return;
            }
            //if(!categoryData.isEmpty()) {
            FieldData cloned = categoryData.cloneData();
            cloned.setFieldID(CATEGORY_FIELD_IN_SUBCATEGORY_ENTITY);
            listBoxReq.setAdditionalFilter(cloned);
            //}
            oldCategoryData = (ListboxFieldData) categoryData.cloneData();
        }
        super.handleControlDataRequest(request);
    }

    public void setInitialFieldsData(FieldData[] fieldsData){
        initialFieldsData = fieldsData;
    }

    protected void lockAndEditResponse(boolean success,
                                       EntityData[] entitiesList,
                                       EntityData[] externalFieldsList,
                                       Collection gridData) {

        super.lockAndEditResponse(success, entitiesList, externalFieldsList,
                gridData);
        
        if(!success || eventId == null) return;

        FamgMeta.Index formIndex = getFormIndex();
        FormOperations context = getOperationContext().getFormOperations();
        EntityReferenceData ownerField = new EntityReferenceData(OWNER);
        ownerField.setSelectedRowID(new Long(getUserId()));
        ownerField.setSelectedFilter(getUserFullname());
        context.setFieldData(formIndex, ownerField);
        
        ListboxFieldData statusField = new ListboxFieldData(STATUS, new SubsetData(new long[]{STATUS_OWNED}));
        context.setFieldData(formIndex, statusField);
        
        //EntityReferenceData ownerField = (EntityReferenceData) context.getFieldData(OWNER, index);
        //ListboxFieldData statusField = (ListboxFieldData) context.getFieldData(STATUS, index);
        //statusField.setItemsSelected(new SubsetData(new long[]{STATUS_OWNED}));
        //ownerField.setSelectedRowID(new Long(getUserId()));
        //ownerField.setSelectedFilter(getUserFullname());
        eventId = null;

    }

    protected void createRecordProtorypeResponse(boolean success,
                                                 FieldData[] fields,
                                                 Long rowId) {
        super.createRecordProtorypeResponse(success, fields, rowId);

        if(!success) {
            return;
        }

        FamgMeta.Index formIndex = getFormIndex();
        if(initialFieldsData != null && initialFieldsData.length > 0) {
            FormOperations formContext = getOperationContext().getFormOperations();
            for(int i = 0; i < initialFieldsData.length; i++) {
                if(initialFieldsData[i] != null) {
                    formContext.setFieldData(formIndex, initialFieldsData[i]);
                }
            }
            String originInterId = ((TextboxFieldData) formContext.getFieldData(
                    formIndex, CUR_INTERACTION_ID_FIELD)).getText();
            curOriginInteractionId = (originInterId != null) ? originInterId : "0";
            initialFieldsData = null;
        } else {
            curOriginInteractionId = "0";
        }
    }

    protected void insertRecordResponse(boolean success,
                                        EntityData[] entitiesList,
                                        EntityData[] externalFieldsList,
                                        Collection gridData,
                                        RowData updatedRow) {
        super.insertRecordResponse(success, entitiesList, externalFieldsList, gridData, updatedRow);

        FormOperations formContext = getOperationContext().getFormOperations();

        if(!success) return;
        if(!curOriginInteractionId.equals("0")){
            FamgMeta.Index formIndex = getFormIndex();
            long ticketId = formContext.getSelectedRecordId(formIndex).longValue();
            String interId = ((TextboxFieldData) formContext.getFieldData(
                    formIndex, INTERACTION_ID_FIELD)).getText();
            if( FormState.NEW_STATE == getOperationContext().getFormOperations().getFormState(formIndex) &&
                    curOriginInteractionId.equals(interId) ){
                linkToTicketDataset(formIndex, ticketId);
            }
            curOriginInteractionId = "0";
        }
    }

    private void linkToTicketDataset(FamgMeta.Index interationIndex, long ticketId){
        FormOperations formContext = getOperationContext().getFormOperations();
        MultiselectFieldData linksData = (MultiselectFieldData) formContext.getFieldData(
                interationIndex, LINKET_TICKETS_FIELD);
        long[] selLinks = linksData.getItemsSelected().getSelectedIDs();
        long[] newSelLinks = {ticketId};
        if(selLinks != null){
            newSelLinks = new long[selLinks.length+1];
            for(int i=0;i<selLinks.length;i++)
                if(selLinks[i] != ticketId)
                    newSelLinks[i] = selLinks[i];
                else{
                    DialogHelper.showModalMessageDialog("The link to Ticket # "+ticketId+" already exists.");
                    return;
                }
            newSelLinks[newSelLinks.length-1]= ticketId;
        }
        MultiselectFieldData newLinksData = new MultiselectFieldData(LINKET_TICKETS_FIELD, new SubsetData(newSelLinks));
        formContext.setFieldData(interationIndex, newLinksData);
    }

    public void handleCustomButtonEvent(String buttonId) {
        FamgMeta.Index formIndex = getFormIndex();
        FormOperations formContext = getOperationContext().getFormOperations();
        int state = formContext.getFormState(formIndex);
        if( buttonId.equalsIgnoreCase(LINK_TO_INTERACTION_BUTTON) ){
            switch(state){
                case FormState.SELECTED_STATE:
                case FormState.EDIT_STATE:
                    //DialogHelper.showModalMessageDialog("Under construction...");
                    linkTicketToInteraction(formIndex);
                    break;
                default:
                    DialogHelper.showModalMessageDialog("This button is available only in EDIT or SELECTED state.");
            }
        } else if(buttonId.equalsIgnoreCase(NEW_SOLUTION_BUTTON)) {
            switch(state) {
                case FormState.SELECTED_STATE:
                    createSolutionFromNewState(formIndex);
                    break;
                default:
                    DialogHelper.showModalMessageDialog(
                            "This button is available only in SELECTED state.");
                    break;
            }
        } else if(buttonId.equals(ATTACH_FILE)) {
            switch (state) {
                case FormState.SELECTED_STATE:
                    createNewAttachment(formIndex);
                    break;
                default:
                    DialogHelper.showModalMessageDialog("This button is available only in SELECTED state.");
            }
        } else if(buttonId.equals(SEND_EMAIL_BUTTON)) {
            switch (state) {
                case FormState.SELECTED_STATE:
                    sendReplyEmail(formIndex);
                    break;
                default:
                    DialogHelper.showModalMessageDialog("This button is available only in SELECTED state.");
            }
        }
    }

    private void sendReplyEmail(FamgMeta.Index formIndex) {
        replyInitVals = new HashMap();

        FormOperations context = getOperationContext().getFormOperations();
        FieldData ticketIdFld = context.getFieldData(formIndex,
                TICKET_ID_FIELD_NAME);
        FieldData custIdFld =   context.getFieldData(formIndex,
                CUSTOMER_ID_FIELD_NAME);
        FieldData empIdFld =    context.getFieldData(formIndex,
                EMPLOYEE_ID_FIELD_NAME);
        FieldData subjectFld =  context.getFieldData(formIndex,
                SUBJECT_FIELD_NAME);
        FieldData messageFld =  context.getFieldData(formIndex,
                DESCRIPTION_FIELD_NAME);
        
        int objectType = OperationsHelper.TICKET_OBJECT_TYPE;
        long objectId = Long.parseLong( ((TextboxFieldData)ticketIdFld).getText() );
        
        String oldSubject = "";
        if(!subjectFld.isEmpty()){
            oldSubject = ((TextboxFieldData)subjectFld).getText();
        }
        
        String newSubject = ("QueWeb "+ TICKET_ID_CAPTION + objectId+" : "+oldSubject).substring(0,255);
        replyInitVals.put(EmailComposeHelper.SUBJECT_MAP_FIELD, newSubject);
        //DialogHelper.showModalMessageDialog("newSubject "+newSubject);
        Long initCustomerId = null; boolean isCustomer = false;
        if(!custIdFld.isEmpty()){
            initCustomerId = ((EntityReferenceData)custIdFld).getSelectedRowID();
            isCustomer = true;
        } else if(!empIdFld.isEmpty()){
            initCustomerId = ((EntityReferenceData)empIdFld).getSelectedRowID();
            isCustomer = false;
        }
        //DialogHelper.showModalMessageDialog("initCustomerId "+initCustomerId);
        //DialogHelper.showModalMessageDialog("oldSubject "+oldSubject);
        String oldMessage = "";
        if(!messageFld.isEmpty()){
            oldMessage = ((TextareaFieldData)messageFld).getText();
        }
        //DialogHelper.showModalMessageDialog("oldMessage "+oldMessage);
        if(initCustomerId != null ){
            FromAndToEmailAsyncCallback callback = new FromAndToEmailAsyncCallback(objectType, objectId, oldSubject, oldMessage);
            CustomRPC.getCustomRPC().getFromAndToEmail(objectType, objectId, isCustomer, initCustomerId, callback);
        } else {
            DialogHelper.showModalMessageDialog("Can't get customer or internal custore to determine recipient address.");
        }
    }
    
    private void linkTicketToInteraction(FamgMeta.Index formIndex){
        FormOperations context = getOperationContext().getFormOperations();
        Long ticketId = context.getSelectedRecordId(formIndex);
        FamgMeta.Index interactionIndex = (FamgMeta.Index) getOperationContext().getMetaData().getIndexByID(interFormId);
        Long interId = context.getSelectedRecordId(interactionIndex);
        if(interId == null){
            DialogHelper.showModalMessageDialog("Interaction Record must be selected on the Interaction Tab.\nPlease navigate to it, select desired Interaction and click Link again.");
        } else {
            int answer = DialogHelper.showModalQuestionDialog(
                    "The link between ticket # " + ticketId
                            + " and interaction # " + interId
                            + " is going to be created.");
            if(DialogHelper.YES == answer) {
                if(FormState.NEW_STATE == context.getFormState(interactionIndex)) {
                    linkToTicketDataset(interactionIndex, ticketId.longValue());
                } else {
                    RPC.QAsyncCallback callback = new CreateLinkAsyncCallback();
                    CustomRPC.getCustomRPC().createTicketInteractionLink(
                            ticketId, interId, callback);
                }
            }
        }
    }

    private void createNewAttachment(FamgMeta.Index formIndex) {
        FormOperations formContext = getOperationContext().getFormOperations();
        FieldData ticketId = formContext.getFieldData(formIndex,
                TICKET_ID_FIELD_NAME);
        FieldData clonedTicketId = ticketId.cloneData();
        FieldData[] initData = new FieldData[6];
        initData[0] = clonedTicketId;

        attachHandler.setInitialFieldsData(initData);
        OperationsHelper.createNewRecord(attachTicketFormId, getOperationContext());
    }

    public void handleLinkEvent(String fromLinkFieldId) {

        FamgMeta.Index formIndex = getFormIndex();
        OperationContext context = getOperationContext();
        FormOperations formContext = context.getFormOperations();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -