public with sharing class NewCrossRegionalSalesController {
    public boolean hasError { get; set; }
    public boolean isDealerPage { get; set; }

    public Opportunity opp { get; set; }

    public String accId { get; set; }
    public String conId { get; set; }
    private Account acc;
    private Contact con;

    public String baseUrl { get; set; }
    public String rtUrl { get; set; }

    public String ProductSegment { get; set; }

    public Boolean isIEDealer{get; set; }

    public NewCrossRegionalSalesController() {
        baseUrl = URL.getSalesforceBaseUrl().toExternalForm();
        String path = URL.getCurrentRequestUrl().getPath();
        if (path.indexOf('/apex') > 0) {
            baseUrl += path.substring(0,path.indexOf('/apex'));
        } else if (path.indexOf('production/') > 0) {
            baseUrl += '/production';
        }
        rtUrl = System.currentPageReference().getParameters().get('retURL');
        if (rtUrl == null || rtUrl == 'null') {
            rtUrl = '';
        }
    }

    public PageReference init() {
        hasError = false;

        accId = System.currentPageReference().getParameters().get('accid');
        conId = System.currentPageReference().getParameters().get('conId');

        List<Account> accList = [select Id, Name, ProductSegment__c,compo_Acc__c,UserType__c from Account where Id = :accId];
        if (accList.size() > 0) {
            acc = accList[0];
        }

        List<Contact> conList = [select Id, Name from Contact where Id = :conId];
        if (conList.size() > 0) {
            con = conList[0];
        }
        ProductSegment = acc.ProductSegment__c;

        //isDealerPage = UserInfo.getUserType() == 'PowerPartner'

        isDealerPage = UserInfo.getUserType() == 'PowerPartner' && acc.ProductSegment__c != 'BS' && acc.ProductSegment__c != 'IE' && acc.ProductSegment__c != 'RVI' && acc.RecordTypeId != System.Label.RT_SSBD_Service;
        
        String dealerName = '';
        String dealerId = '';
        if (UserInfo.getUserType() == 'PowerPartner' && acc.ProductSegment__c != 'BS') {
            User dealerUser = [select id, DealerName__c, DealerId__c from User where id = :UserInfo.getUserId()];
            dealerName = dealerUser.DealerName__c;
            dealerId = dealerUser.DealerId__c;
        }

        //no.6 gwy 2021-06-03
        opp = new Opportunity();
        if(acc.compo_Acc__c == 'COMPO客户' && acc.ProductSegment__c == 'IE'){
            opp.compo_opp__c = true;
        }
        if(acc.UserType__c == 'OEM客户' && acc.ProductSegment__c == 'BS'){
            opp.useing__c = 'OEM';
        }
        opp.AccountId = acc.Id;
        opp.Account = acc;
        opp.ProductSegment__c = acc.ProductSegment__c;
        opp.Type = 'Not Traget';
        opp.SalesChannel__c = 'dealer';
        opp.NewInquiryDate__c = Date.today();
        opp.StageName = 'Prospect Created';
        opp.CloseDate = Date.valueOf('1900-01-01');
        if (UserInfo.getUserType() == 'PowerPartner' && acc.ProductSegment__c != 'BS') {
            opp.Dealer__c = dealerId;
        }

        return null;
    }

    public PageReference saveBtn() {
        List<Opportunity> checkList = [select id, Name from Opportunity where AccountId = :opp.AccountId and Name = :opp.Name];
        if (checkList.size() > 0) {
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Info, '该客户下有名称一样的询价，是否继续创建该询价？'));
            hasError = true;
        } else {
             if(opp.Have_Computer__c && opp.Association_Opportunity__c == null){
               
                ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Info, '请选择关联的询价'));
                return null;
                
            }else if(opp.Have_Computer__c == false && opp.Association_Opportunity__c != null){
                ApexPages.addMessage(new ApexPages.message(ApexPages.severity.Info, '请在包含电脑的询价中选择主机询价。'));
                return null;
            }else if(opp.Have_Computer__c && opp.Association_Opportunity__c != null){
                Opportunity opp1 = [select id,Have_Computer__c from Opportunity where id = :opp.Association_Opportunity__c];
                if(opp1.Have_Computer__c){
                    ApexPages.addMessage(new ApexPages.message(ApexPages.severity.Info, '选择的询价是电脑询价，请确认询价信息后再保存。'));
                    return null;
                }
            }
            return saveBtnYes();
        }
        return null;
    }

    public PageReference saveBtnYes() {
        system.debug('=====saveBtnYes');

        Savepoint sp = Database.setSavepoint();
        try {
            //测试环境ID
            //opp.RecordTypeId = '0120T0000002Vh9';
            //正式环境ID
            opp.RecordTypeId = '0120K000000OpaG';
            opp.CrossCooperativeProject__c = true;

            insert opp;
            if(opp.Have_Computer__c && opp.Association_Opportunity__c != null){

                StaticParameter.OppChangeopp = true;
                StaticParameter.OppCanChangeOpp = true;
                Opportunity newopp = new Opportunity();
                newopp.Id = opp.Association_Opportunity__c;
                newopp.Association_Opportunity__c = opp.Id;
                system.debug(opp.Association_Opportunity__c);
                update newopp;
            }
            OpportunityContactRole ocr = new OpportunityContactRole();
            ocr.OpportunityId = opp.Id;
            ocr.ContactId = con.Id;
            ocr.Role = 'End user';
            ocr.IsPrimary = true;
            insert ocr;

            hasError = false;

            String url = baseUrl + '\\' + opp.Id;
            return new Pagereference(url);
        } catch (Exception e) {
            Database.rollback(sp);
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, e.getMessage()));
            hasError = false;
        }

        return null;
    }

    public PageReference saveBtnNo() {
        system.debug('=====saveBtnNo');
        hasError = false;

        return null;
    }
}