public without sharing class CustomizedReportController{
public String selectedReportID {get;set;}
public String additionalEmails {get;set;}
public Contact reportWrapper {get;set;}
public String bgColor {public get; public set;}
public String borderColor {public get; public set;}
public String fontColor {public get; public set;}
public String colHeaderColor {public get; public set;}
public String styleBackgroundTemplate { public get; public set; }
public boolean editStyle {get;set;}
private Map<String, String> mapReports;
public CustomizedReportController() {
additionalEmails = '';
mapReports = new Map<String, String>();
reportWrapper = new Contact();
if(ApexPages.currentPage().getParameters().containsKey('reportId')){
selectedReportID = ApexPages.currentPage().getParameters().get('reportId');
}
editStyle = false;
initDefaultTheme();
updateReportWrapper();
styleBackgroundTemplate = 'background: #START_COLOR;';
styleBackgroundTemplate += 'background: -moz-linear-gradient(top, #START_COLOR 0%, #END_COLOR 100%);';
styleBackgroundTemplate += 'background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#START_COLOR), color-stop(100%,#END_COLOR));';
styleBackgroundTemplate += 'background: -webkit-linear-gradient(top, #START_COLOR 0%,#END_COLOR 100%);';
styleBackgroundTemplate += 'background: -o-linear-gradient(top, #START_COLOR 0%,#END_COLOR 100%);';
styleBackgroundTemplate += 'background: -ms-linear-gradient(top, #START_COLOR 0%,#END_COLOR 100%);';
styleBackgroundTemplate += 'filter: progid:DXImageTransform.Microsoft.gradient(startColorStr=\'#START_COLOR\', EndColorStr=\'#END_COLOR\');';
}
private void initDefaultTheme(){
bgColor = 'FFFFFF';
borderColor = '000000';
fontColor = '000000';
colHeaderColor = '000000';
}
public PageReference updateEditStyle(){
editStyle = true;
return null;
}
public List<SelectOption> getAllReports() {
List<SelectOption> lstOption = new List<SelectOption>();
lstOption.add(new SelectOption('','----None----'));
for(Report report : [SELECT Id,Name FROM Report WHERE Format='Tabular' Order By Name Limit 100]) {
lstOption.add(new SelectOption(String.valueOf(report.Id).substring(0,15),report.Name));
mapReports.put(String.valueOf(report.Id).substring(0,15),report.Name);
}
return lstOption;
}
public pageReference updateReportWrapper(){
if(selectedReportID != null && selectedReportID != ''){
List<Contact> lstreportWrap = new List<Contact>([SELECT Id, Name, email,
FirstName, LastName,MobilePhone,Phone,Level__c,Title
FROM Contact WHERE Id = :selectedReportID]);
if(lstreportWrap.size() > 0){
reportWrapper = lstreportWrap[0];
bgColor = lstreportWrap[0].Background_Color__c;
borderColor = lstreportWrap[0].Border_color__c;
fontColor = lstreportWrap[0].Font_Color__c;
colHeaderColor = lstreportWrap[0].Column_Header_Color__c;
}
else{
reportWrapper = new Contact ();
}
if(reportWrapper != null){
if(reportWrapper.Report_Header__c == null){
//reportWrapper.Report_Header__c = mapReports.get(selectedReportID);
}
if(reportWrapper.Report_Title__c == null){
reportWrapper.Report_Title__c = '<span style="font-weight:bold;font-size:22px;">'+mapReports.get(selectedReportID)+'</span>';
}
if(reportWrapper.Report_Footer__c == null){
reportWrapper.Report_Footer__c = mapReports.get(selectedReportID);
}
}
}
else{
reportWrapper = new Contact ();
}
return null;
}
public PageReference saveData(){
if(selectedReportID != null && selectedReportID.trim() != ''){
reportWrapper.FirstName = bgColor;
reportWrapper.LastName = borderColor;
reportWrapper.Font_Color__c = fontColor;
reportWrapper.Column_Header_Color__c = colHeaderColor;
reportWrapper.Report_Id__c = selectedReportID.subString(0,15);
upsert reportWrapper;
}
return null;
}
public void cancel(){
editStyle = false;
}
public PageReference sendEmail(){
PageReference pgRef = Page.ContactTestPage;
pgRef.getParameters().put('reportId', selectedReportID);
pgRef.setRedirect(true);
Blob pdfval = pgRef.getContentAsPdf();
Messaging.EmailFileAttachment attch = new Messaging.EmailFileAttachment();
attch.setBody(pdfval);
attch.setFileName('ReportPdf.pdf');
// Send an email to the Apex job's submitter notifying of job completion.
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
List<String> emailAddresses = getEmailAddresses();
mail.setToAddresses(emailAddresses);
mail.setSubject('Report Results');
mail.setPlainTextBody('Report Pdf');
mail.setSaveAsActivity(false);
mail.setFileAttachments(new List<Messaging.EmailFileAttachment>{attch});
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
saveData();
return null;
}
public List getEmailAddresses(){
public without sharing class CustomizedReportController{
public String selectedReportID {get;set;}
public String additionalEmails {get;set;}
public Contact reportWrapper {get;set;}
public String bgColor {public get; public set;}
public String borderColor {public get; public set;}
public String fontColor {public get; public set;}
public String colHeaderColor {public get; public set;}
public String styleBackgroundTemplate { public get; public set; }
public boolean editStyle {get;set;}
private Map<String, String> mapReports;
public CustomizedReportController() {
additionalEmails = '';
mapReports = new Map<String, String>();
reportWrapper = new Contact();
if(ApexPages.currentPage().getParameters().containsKey('reportId')){
selectedReportID = ApexPages.currentPage().getParameters().get('reportId');
}
editStyle = false;
initDefaultTheme();
updateReportWrapper();
styleBackgroundTemplate = 'background: #START_COLOR;';
styleBackgroundTemplate += 'background: -moz-linear-gradient(top, #START_COLOR 0%, #END_COLOR 100%);';
styleBackgroundTemplate += 'background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#START_COLOR), color-stop(100%,#END_COLOR));';
styleBackgroundTemplate += 'background: -webkit-linear-gradient(top, #START_COLOR 0%,#END_COLOR 100%);';
styleBackgroundTemplate += 'background: -o-linear-gradient(top, #START_COLOR 0%,#END_COLOR 100%);';
styleBackgroundTemplate += 'background: -ms-linear-gradient(top, #START_COLOR 0%,#END_COLOR 100%);';
styleBackgroundTemplate += 'filter: progid:DXImageTransform.Microsoft.gradient(startColorStr=\'#START_COLOR\', EndColorStr=\'#END_COLOR\');';
}
private void initDefaultTheme(){
bgColor = 'FFFFFF';
borderColor = '000000';
fontColor = '000000';
colHeaderColor = '000000';
}
public PageReference updateEditStyle(){
editStyle = true;
return null;
}
public List<SelectOption> getAllReports() {
List<SelectOption> lstOption = new List<SelectOption>();
lstOption.add(new SelectOption('','----None----'));
for(Report report : [SELECT Id,Name FROM Report WHERE Format='Tabular' Order By Name Limit 100]) {
lstOption.add(new SelectOption(String.valueOf(report.Id).substring(0,15),report.Name));
mapReports.put(String.valueOf(report.Id).substring(0,15),report.Name);
}
return lstOption;
}
public pageReference updateReportWrapper(){
if(selectedReportID != null && selectedReportID != ''){
List<Contact> lstreportWrap = new List<Contact>([SELECT Id, Name, email,
FirstName, LastName,MobilePhone,Phone,Level__c,Title
FROM Contact WHERE Id = :selectedReportID]);
if(lstreportWrap.size() > 0){
reportWrapper = lstreportWrap[0];
bgColor = lstreportWrap[0].Background_Color__c;
borderColor = lstreportWrap[0].Border_color__c;
fontColor = lstreportWrap[0].Font_Color__c;
colHeaderColor = lstreportWrap[0].Column_Header_Color__c;
}
else{
reportWrapper = new Contact ();
}
if(reportWrapper != null){
if(reportWrapper.Report_Header__c == null){
//reportWrapper.Report_Header__c = mapReports.get(selectedReportID);
}
if(reportWrapper.Report_Title__c == null){
reportWrapper.Report_Title__c = '<span style="font-weight:bold;font-size:22px;">'+mapReports.get(selectedReportID)+'</span>';
}
if(reportWrapper.Report_Footer__c == null){
reportWrapper.Report_Footer__c = mapReports.get(selectedReportID);
}
}
}
else{
reportWrapper = new Contact ();
}
return null;
}
public PageReference saveData(){
if(selectedReportID != null && selectedReportID.trim() != ''){
reportWrapper.FirstName = bgColor;
reportWrapper.LastName = borderColor;
reportWrapper.Font_Color__c = fontColor;
reportWrapper.Column_Header_Color__c = colHeaderColor;
reportWrapper.Report_Id__c = selectedReportID.subString(0,15);
upsert reportWrapper;
}
return null;
}
public void cancel(){
editStyle = false;
}
public PageReference sendEmail(){
PageReference pgRef = Page.ContactTestPage;
pgRef.getParameters().put('reportId', selectedReportID);
pgRef.setRedirect(true);
Blob pdfval = pgRef.getContentAsPdf();
Messaging.EmailFileAttachment attch = new Messaging.EmailFileAttachment();
attch.setBody(pdfval);
attch.setFileName('ReportPdf.pdf');
// Send an email to the Apex job's submitter notifying of job completion.
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
List<String> emailAddresses = getEmailAddresses();
mail.setToAddresses(emailAddresses);
mail.setSubject('Report Results');
mail.setPlainTextBody('Report Pdf');
mail.setSaveAsActivity(false);
mail.setFileAttachments(new List<Messaging.EmailFileAttachment>{attch});
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
saveData();
return null;
}
public List<String> getEmailAddresses(){
List<String> emailAddresses = new List<String>();
if(reportWrapper.Id != null){
for(Contact con : [SELECT Email FROM Contact WHERE Id = :reportWrapper.Id]){
if(con.Email != null){
emailAddresses.add(con.Email);
}
}
}
if(reportWrapper.Id != null){
for(Lead ld : [SELECT Email FROM Lead WHERE Id = :reportWrapper.Id]){
if(ld.Email != null){
emailAddresses.add(ld.Email);
}
}
}
if(reportWrapper.Id != null){
for(User usr : [SELECT Email FROM User WHERE Id = :reportWrapper.Id]){
if(usr.Email != null){
emailAddresses.add(usr.Email);
}
}
}
if(!String.IsBlank(additionalEmails)){
for(String str : additionalEmails.split(',')){
emailAddresses.add(str.trim());
}
}
return emailAddresses;
}
}
}
}