public with sharing class buttonAssetCtl {
    @AuraEnabled
    public static InitData init(String recordId){
        InitData res = new initData();
        try{
            Asset report =  [SELECT Product2Id,Order_No__c,SerialNumber,Asset_day__c,Posting_Date__c,InstallDate,Asset_Owner__c,AssetMark__c,Id,NoPartRiskDate_F__c,Product_ID__c,AccountId,HP_Id__c,Hospital__c,Hospital__r.Id,Hospital__r.name,Department_Class__c,Department_Class__r.Id,Name
            //WYL 贸易合规2期 add start
            ,Hospital__r.TradeComplianceStatus__c,Product2.Asset_Model_No__c
            //WYL 贸易合规2期 add end
             FROM Asset WHERE Id =: recordId LIMIT 1];
            //20231108 ymh add strat
            Product2 product =[SELECT id,PartSupplyFinishDate__c
              //WYL 贸易合规2期 add start
                ,USRatio_US_OUT10__c,CountryOfOrigin__c,ProTradeComplianceStatus__c 
                //WYL 贸易合规2期 add end 
                 from Product2 WHERE Id =: report.Product2Id];
             //20231108 ymh add end
            System.debug(LoggingLevel.INFO, '*** opp: ' + report);

            res.AssetMarkC = report.AssetMark__c;
            res.AssetOwnerC = report.Asset_Owner__c;
            res.InstallDate = report.InstallDate;
            res.PostingDateC = report.Posting_Date__c;
            res.AssetDayC = report.Asset_day__c;
            res.SerialNumber = report.SerialNumber;
            res.OrderNoC = report.Order_No__c;


            res.Id = report.Id;
            res.Name = report.Name;
            res.NoPartRiskDateFC = report.NoPartRiskDate_F__c;
            res.ProductIDC = report.Product_ID__c;
            res.AccountId = report.AccountId;
            res.HPIdC = report.HP_Id__c;
            res.HospitalC = report.Hospital__c;
            res.HospitalN = report.Hospital__r.name;
            res.DepartmentClassC = report.Department_Class__c;
            res.HospitalId = report.Hospital__r.Id;
            res.DepartmentClassId = report.Department_Class__r.Id;
            //20231108 ymh add strat
            res.partSupplyFinishDate = product.PartSupplyFinishDate__c;
            //20231108 ymh add end
            //WYL 贸易合规2期 add start
            res.hosTradeComplianceStatus = report.Hospital__r.TradeComplianceStatus__c;
            res.ProductCompliance = product.ProTradeComplianceStatus__c;
            res.Asset_Model_No = report.Product2.Asset_Model_No__c;
            res.state = report.Hospital__r.TradeComplianceStatus__c;
            //WYL 贸易合规2期 add end
            res.userID = UserInfo.getUserId();

            res.day = Date.today();
            res.day1 = Date.today().addDays(-10);
            res.day2 = Date.today().addDays(+365);
         res.notCreateRepairFromAssetButton=   System.Label.notCreateRepairFromAssetButton;
         res.notCreateRepairFromAssetButton02=   System.Label.notCreateRepairFromAssetButton02;

            System.debug(LoggingLevel.INFO, '*** res: ' + res);
            if (System.Test.isrunningTest()) {
                throw new ControllerUtil.myException('test。');
            }
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }   

    // 查找UserName
    @AuraEnabled
    public static List<User> initUserName(String userId){
        List<User> res = new List<User>();
        try{
            res = [SELECT Id,name,RepairSalesPoint_Province_China__c,Employee_No__c FROM User WHERE Id=: userId ];
            if (System.Test.isrunningTest()) {
                throw new ControllerUtil.myException('test。');
            }
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }
    
     //查询Account修理画面“修理品返送地”问题调查-后续 
     @AuraEnabled
     public static List<Account> selecctAccountBySegmentId(String segmentId){
         try {
           List<Account> accounts = [SELECT id,ParentId,Parent.RecordTypeId, Parent.Parent.FSE_GI_Main_Leader__r.Work_Location__c,Parent.Parent.FSE_SP_Main_Leader__r.Work_Location__c FROM Account WHERE Id=:segmentId];
           return accounts;
           
       } catch (Exception e) {
             throw new AuraHandledException(e.getMessage());
          }
      }

      //查询Product2
    @AuraEnabled
    public static List<Product2> selecctProduct2ById(String Id){
        try {
          List<Product2> accounts = [SELECT id,Name,Can_Repair__c from Product2 where ID=:Id];
          return accounts;
          
      } catch (Exception e) {
            throw new AuraHandledException(e.getMessage());
         }
     }

     //查询QIS_Report__c
    @AuraEnabled
    public static List<QIS_Report__c> selecctQISReportByFomatToday(String AssetId,Date fomatToday){
        try {
          List<QIS_Report__c> accounts = [SELECT id,Name,QIS_Submit_day__c from QIS_Report__c where nonyushohin__c=:AssetId and QIS_Submit_day__c != null and QIS_Submit_day__c >=:fomatToday];
          return accounts;
          
      } catch (Exception e) {
            throw new AuraHandledException(e.getMessage());
         }
     }

     //查询Repair__c
    @AuraEnabled
    public static List<Repair__c> selecctRepairByFomatToday(String AssetId, Date fomatToday){
        try {
          List<Repair__c> accounts = [SELECT Name from Repair__c where Delivered_Product__c =:AssetId and Status2__c!='00.删除' and Status2__c!='00.取消' and FSE_ApplyForRepair_Day__c >=: fomatToday order by FSE_ApplyForRepair_Day__c desc limit 1];
          return accounts;
          
      } catch (Exception e) {
            throw new AuraHandledException(e.getMessage());
         }
     }

     @AuraEnabled
     public static List<QIS_Report__c> selecctQISReportrByFomatToday(String AssetId, Date fomatToday){
         try {
           List<QIS_Report__c> accounts = [SELECT id,QIS_Submit_day__c from QIS_Report__c where nonyushohin__c=:AssetId and QIS_Submit_day__c != null and QIS_Submit_day__c >=: fomatToday];
           return accounts;
           
       } catch (Exception e) {
             throw new AuraHandledException(e.getMessage());
          }
      }

         //查询Repair__c
    @AuraEnabled
    public static List<Account> selecctAccountByAccountId(String AccountId){
        try {
          List<Account> accounts = [SELECT id,Parent.RecordTypeId, Parent.RecordType_DeveloperName__c ,Parent.Parent.FSE_GI_Main_Leader__c, Parent.Parent.FSE_GI_Main_Leader__r.Name,Parent.Parent.FSE_SP_Main_Leader__r.Name,Parent.Parent.FSE_SP_Main_Leader__c,Parent.Parent.FSE_GI_Main_Leader__r.Work_Location__c,Parent.Parent.FSE_SP_Main_Leader__r.Work_Location__c FROM Account WHERE ID=: AccountId];
          return accounts;
          
      } catch (Exception e) {
            throw new AuraHandledException(e.getMessage());
         }
     }

     @AuraEnabled
     public static String  selectCASE(String AssetOwnerC){
        String res='';
        if(AssetOwnerC.equals('病院資産')){
            res='病院資産';
        }else if(AssetOwnerC.equals('购买')){
            res='购买';
        }
        else if(AssetOwnerC.equals('Olympus')){
            res='Olympus';
        }
        else if(AssetOwnerC.equals('备品')){
            res='备品';
        }
        else if(AssetOwnerC.equals('リース会社')){
            res='リース会社';
        }
        else if(AssetOwnerC.equals('其他')){
            res='其他';
        }
        else if(AssetOwnerC.equals('经销商资产')){
            res='经销商资产';
        }else{
            res='';
        }
        return res;
      }

      @AuraEnabled
      public static String selectNullvalue(String InstallDate,String PostingDateC,String AssetDayC){
        String res='';
        if(InstallDate!=null){
            res=InstallDate;
        }else {
            if(PostingDateC!=null){
                res=PostingDateC;
            }else {
                res=AssetDayC;
            }
        }
        return res;
       }
    // WYL 贸易合规2期 发送邮件 add  start
     //邮件通知人员：恽经理、FSE担当
    @AuraEnabled
    public static Boolean accSendEmailFW(String accname,String mcid,String type,String state,String Asset_Model_No,String useremail,String FseEmail) {
        //发送邮件
        List<Messaging.SingleEmailMessage> sendMails = new List<Messaging.SingleEmailMessage>();
        List<String>  MailsList = new List<String>();
        String myUserID = UserInfo.getUserId();
        User currentUser = [SELECT email,Name FROM user Where Id = :myUserID];

        MailsList.add('olympus@prec-tech.com');
        // MailsList.add('Lina_Yun@olympus.com.cn');
        MailsList.add(System.Label.LegalDepartmentEmail);

        if (useremail!= null && useremail != '') {
            MailsList.add(useremail);
        }
        // fse 担当
        String fseName = '';

        if (FseEmail!= null && FseEmail != '') {
            User FseUser = [SELECT email,Name FROM user Where id = :FseEmail limit 1];
            fseName = FseUser.name;
            MailsList.add(FseUser.email);
        }else {
            MailsList.add(currentUser.email);
            fseName = currentUser.name;
        }

        if (MailsList!=null&&MailsList.size()>0){
            String title = '';
            String body = '';
            //title = '医院/经销商涉及黑名单';
            String accname1 = accname==null ? '' :accname; // 医院
            if (type == '1') {
                title = '【贸易合规】'+accname1+'涉及'+state;
                body += state+'的客户为：' + accname1 + '<br/>';
                body += '<a href="' + System.Label.Environment_Url + mcid + '">'
                        + System.Label.Environment_Url+ mcid +'</a><br/>'; 
                body += '谢谢！';
            }else {
                body += '医院或经销商名称:'+accname1+'<br/>';
                body += '医院或经销商状态:'+state+'<br/>';
                User currentUser2 = null;
                if(useremail!= null && useremail != ''){
                     currentUser2 = [SELECT email,Name FROM user Where email = :useremail limit 1];
                }else {
                    currentUser2 = [SELECT email,Name FROM user Where id = :myUserID limit 1];
                }
                if (type == '2' ) {
                    title = '【贸易合规】--保有设备新建QIS涉及警示产品';
                    body += 'FSE担当（操作人）:'+fseName+'<br/>';
                }else if (type == '3') {
                    title = '【贸易合规】--提交QIS涉及警示产品';
                    body += 'FSE担当（操作人）:'+fseName+'<br/>';
                }else if (type == '4') {
                    title = '【贸易合规】--OCSM判定提交待审批涉及警示产品';
                    body += 'OCSM判定担当（操作人）:'+currentUser2.name+'<br/>';
                }else if (type == '5') {
                    title = '【贸易合规】--OSH判定提交待审批1涉及警示产品';
                    body += 'OSH判定担当（操作人）:'+currentUser2.name+'<br/>';
                }else if (type == '6') {
                    title = '【贸易合规】--发送QIS至SPO涉及警示产品';
                    body += 'FSE担当（操作人）:'+fseName+'<br/>';
                }else if (type == '7') {
                    title = '【贸易合规】--QIS新建修理涉及警示产品';
                    body += 'OCSM判定担当（操作人）:'+currentUser2.name+'<br/>';
                } else if (type == '8') {
                    title = '【贸易合规】--申请修理涉及警示产品';
                    body += 'FSE担当（操作人）:'+fseName+'<br/>';
                }  else if (type == '9') {
                    title = '【贸易合规】--报修子单申请修理涉及警示产品';
                    body += 'FSE担当（操作人）:'+fseName+'<br/>';
                } 
                
               
                body += '涉及的警示产品型号:'+Asset_Model_No+'<br/>';
                
            }
            
  
            Messaging.SingleEmailMessage messageNEW = new Messaging.SingleEmailMessage();
            messageNEW.setSubject(title);
            messageNEW.setHtmlBody(body);
            messageNEW.setCharset('UTF-8');
            messageNEW.setToAddresses(MailsList); 
            
            sendMails.add(messageNEW);

        }
        boolean rs = true;
        if (sendMails.size() > 0) {
            Messaging.Email[] allMails = new Messaging.Email[]{};
            for(Integer j = 0; j < sendMails.size(); j++) {
                allMails.add(sendMails.get(j));
            }
            system.debug('222===:'+allMails);
        
            Messaging.SendEmailResult[] results = Messaging.sendEmail(allMails);
            System.debug('results 结果 :'+results);
            for (Integer i = 0; i < results.size(); i++) {
                if (results[i].success == false) {
                    system.debug('=====send mail error:' + results[i].errors[0].message);
                    rs = false;
                }   
            }
        }
        return rs;      
    }
     // WYL 贸易合规2期 发送邮件 add  end
    public class InitData{
        @AuraEnabled
        public String AssetMarkC;
        @AuraEnabled
        public String AssetOwnerC;
        @AuraEnabled
        public Date InstallDate;
        @AuraEnabled
        public Date PostingDateC;
        @AuraEnabled
        public Date AssetDayC;
        @AuraEnabled
        public String SerialNumber;
        @AuraEnabled
        public String OrderNoC;

        @AuraEnabled
        public String Id;
        @AuraEnabled
        public String userID;
        @AuraEnabled
        public Date day;
        @AuraEnabled
        public Date day2;
        @AuraEnabled
        public Date day1;
        @AuraEnabled
        public String Name;
        @AuraEnabled
        public Date NoPartRiskDateFC;
        @AuraEnabled
        public String ProductIDC;
        @AuraEnabled
        public String AccountId;
        @AuraEnabled
        public String HPIdC;
        @AuraEnabled
        public String HospitalC;
        @AuraEnabled
        public String DepartmentClassC;
        @AuraEnabled
        public String HospitalId;
        @AuraEnabled
        public String DepartmentClassId;
        @AuraEnabled
        public String notCreateRepairFromAssetButton;
        @AuraEnabled
        public String notCreateRepairFromAssetButton02;
         //20231108 ymh add strat
         @AuraEnabled
        public Date partSupplyFinishDate;
         //20231108 ymh add end
        //WYL 贸易合规2期 start
         @AuraEnabled
         public String hosTradeComplianceStatus;
         @AuraEnabled
         public String ProductCompliance;
         @AuraEnabled
         public String HospitalN;
         @AuraEnabled
         public String Asset_Model_No;
         @AuraEnabled
         public String state;
          //WYL 贸易合规2期 end
     }
}