public with sharing class DealerPersonnelController {
    public DealerPersonnelController() {

    }
    @AuraEnabled
    public static String processData(String fileData,String sobjectName,List<String> fields) {
        system.debug('fileData===============>'+fileData);
        String errorMage = '';
        String str = '';
        try {
            if(fileData != null){
                String[] fileLines = new String[]{};
                fileLines = fileData.split('\n');
                system.debug('fileLines===================>'+fileLines);
                // 记录类型
                List<String> recordTypeList = new List<String>();  
                // 客户名
                List<String> accountNameList = new List<String>();  
                // 导入的数据
                List<List<String>> inputList = new List<List<String>>();
                for (Integer i = 1,j = fileLines.size(); i < j; i++) {
                    List<String> inputValues = new List<String>();
                    inputValues = fileLines[i].split(',');
                    System.debug('inputValues=============>'+inputValues);
                    if(inputValues != null){
                        if(inputValues[0] == '' || inputValues[0] == null){
                            errorMage += 'errorMage: 第' + i + '行,记录类型不能为空!';
                            errorMage += '=';
                        } 
                        if(inputValues[1] == '' || inputValues[1]== null){
                            errorMage += 'errorMage: 第' + i + '行,姓氏不能为空!';
                            errorMage += '=';
                        } 
                        if(inputValues[2] == '' || inputValues[2] == null){
                            errorMage += 'errorMage: 第' + i + '行,名字不能为空!';
                            errorMage += '=';
                        } 
                        if(inputValues[3] == '' || inputValues[3] ==null){
                            errorMage += 'errorMage: 第' + i + '行,手机不能为空!';
                            errorMage += '=';
                        }
                        boolean mobileNumberFlag = mobileNumberVerification(inputValues[3]);
                    System.debug('mobileNumberFlag=============>'+mobileNumberFlag);

                        if(mobileNumberFlag == false){
                            errorMage += 'errorMage: 你的手机号码不太正确,请检查您的手机是否正确!';
                            errorMage += '=';
                        }
                        if(inputValues[4] == '' || inputValues[4] == null){
                            errorMage += 'errorMage: 第' + i + '行,邮箱不能为空!';
                            errorMage += '=';
                        }
                        boolean mailboxFlag = mailboxVerification(inputValues[4]);
                    System.debug('mailboxFlag=============>'+mailboxFlag);

                        if(mailboxFlag == false){
                            errorMage += 'errorMage: 你的邮箱不太正确,请检查您的邮箱格式!';
                            errorMage += '=';
                        }
                        if(inputValues[5] == '' || inputValues[5] == null){
                            errorMage += 'errorMage: 第' + i + '行,客户名不能为空!';
                            errorMage += '=';
                        }
                       
                        str = inputValues[5];
                        recordTypeList.add(inputValues[0]);
                        accountNameList.add(str);
                        //导入的数据
                        inputList.add(inputvalues);
                        
                        System.debug('inputValues[0]===============>'+ inputValues[0]);
                        System.debug('inputValues[1]===============>'+ inputValues[1]);
                        System.debug('inputValues[2]===============>'+ inputValues[2]);
                        System.debug('inputValues[3]===============>'+ inputValues[3]);
                        System.debug('inputValues[4]===============>'+ inputValues[4]);
                        System.debug('inputValues[5]===============>'+ inputValues[5]);
                        System.debug('inputValues[6]===============>'+ inputValues[6]);
                    }
                }
                
                Map<String,Account> accountMap = new Map<String,Account>();
                List<String> accountIdList = new List<String>();
                Map<String,RecordType> recordTypeMap = new Map<String,RecordType>();
                List<String> recordTypeIdList = new List<String>();
                List<Account> accountList = [select id, Name from Account where Name in: accountNameList];
                List<RecordType> rectCo = [select Id,Name from RecordType where IsActive = true and SobjectType = 'Contact' and Name in: recordTypeList];
                for(Account ac : accountList){ 
                    accountMap.put(ac.Name, ac);
                    accountIdList.add(ac.Id);
                }
                system.debug('accountList===============>'+accountList);
                system.debug('accountNameList===============>'+accountNameList);
                system.debug('accountMap===============>'+accountMap);
                for(RecordType re : rectCo){ 
                    recordTypeMap.put(re.Name, re);
                    recordTypeIdList.add(re.Id);
                }
                List<Contact> cnList = new List<Contact>();
                Integer lineNumber = 1;
                for(List<String> lineList :inputList){
                    Contact con = new Contact();
                    if(recordTypeMap.containsKey(lineList[0])){ 
                        con.RecordTypeId = recordTypeMap.get(lineList[0]).id;
                    }else{
                        errorMage += 'error: 第'+ lineNumber +'行数据,记录类型'+lineList[0]+'不存在';
                        errorMage += '=';
                    }
                    if(lineList[1] != null && lineList[1] != ''){
                        con.LastName  = lineList[1];
                    }else{
                        errorMage += 'error: 第'+ lineNumber +'行数据,姓氏'+lineList[1]+'不存在';
                        errorMage += '=';
                    }   
                    if(lineList[2] != null && lineList[2] != ''){
                        con.FirstName  = lineList[2];
                    }else{
                        errorMage += 'error: 第'+ lineNumber +'行数据,名字'+lineList[2]+'不存在';
                        errorMage += '=';
                    }  
                    if(lineList[3] != null && lineList[3] != ''){
                        if(mobileNumberVerification(lineList[3])){
                            con.MobilePhone = lineList[3];
                        }else{
                            errorMage += 'error: 第'+ lineNumber +'行数据,手机'+lineList[3]+'不正确!';
                            errorMage += '=';
                        }
                    }else{
                        errorMage += 'error: 第'+ lineNumber +'行数据,手机'+lineList[3]+'不存在';
                        errorMage += '=';
                    }
                    if(lineList[4] != null && lineList[4] != ''){
                        if(mailboxVerification(lineList[4])){
                            con.Email = lineList[4];
                        }else{
                            errorMage += 'error: 第'+ lineNumber +'行数据,电子邮件'+lineList[4]+'不正确!';
                            errorMage += '=';
                        }
                    }else{
                        errorMage += 'error: 第'+ lineNumber +'行数据,电子邮件'+lineList[4]+'不存在';
                        errorMage += '=';
                    }
                    if(accountMap.containsKey(lineList[5])){ 
                        con.AccountId = accountMap.get(lineList[5]).id;
                    }else{
                        errorMage += 'error: 第'+ lineNumber +'行数据,客户名'+lineList[5]+'不存在';
                        errorMage += '=';
                    }
                    if(lineList[6] == 'TRUE'){
                        con.Agency_User__c =  true; 
                    }else{
                        con.Agency_User__c =  false; 
                    }
                    lineNumber++;
                    cnList.add(con);
                }
                if(errorMage != ''){
                    system.debug('errorMage==========>'+errorMage);
                    return errorMage;
                }
                // 新增周报明细
                if(cnList.size() > 0 ){
                    insertContact(cnList);
                }
            }
            return 'success';
        } catch (Exception e) {
            System.debug('exception'+e);
            return 'exception'+e; 
        }
    }
      // 电子邮件的验证
    public static boolean mailboxVerification(String mailbox){
        String  check =  '^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$';  
        Pattern regex = Pattern.compile(check);  
        Matcher matcher = regex.matcher(mailbox);  
        if (matcher.matches()){
            return true;
        }
        return false;
    }
      // 手机号的验证
    public static boolean mobileNumberVerification(String phoneNumber){
        String check = '^((17[0-9])|(14[0-9])|(13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$'; 
        Pattern regex = Pattern.compile(check); 
        Matcher matcher = regex.matcher(phoneNumber); 
        if(matcher.matches()){
            return true;
        } 
        return false;
    }
    //新增客户人员；
    public static void insertContact(List<Contact> data) {
        // System.debug('data==============>'+data);
        // List<String> lastNameList = new List<String>();
        // List<String> firstNameList = new List<String>();
        // for(Contact con:data){
        //     lastNameList.add(con.LastName);
        //     firstNameList.add(con.FirstName);
        // }
        // List<Contact> contactList = [select id, Name,Agency_User__c from contact where LastName in: lastNameList AND FirstName in: firstNameList];
        // if(contactList.size() >= 0){
        //     return '';
        // }
        // System.debug('strNameList==============>'+strNameList);
        insert data;
    }

}