public with sharing class NewHighProductsOppController {
	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 NewHighProductsOppController() {
		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,OwnerID__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' && 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;
		}

        Id recordTypeId =Schema.SObjectType.Opportunity.getRecordTypeInfosByName().get('SSBD_HighendProducts').getRecordTypeId();
        system.debug(recordTypeId);
		opp = new Opportunity();
		opp.RecordTypeId = recordTypeId;
		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');
		//opp.OwnerId = acc.OwnerID__c;

		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 {
			return saveBtnYes();
		}
		return null;
	}

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

		Savepoint sp = Database.setSavepoint();
		try {
			
			opp.RecordTypeId =  System.Label.SSBD_HighendProducts;

			insert opp;

			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;
	}
}