unserver-unify
Version:
198 lines (193 loc) • 6.95 kB
JavaScript
;
angular.module('bamboo.course').service('certBizModel', function(ApiService, $q, CertService, loginService, $filter, userBizModel, CommonService, $timeout) {
var self = this;
var user = loginService.user;
/**
* @certTpl - cert template
* @serial - cert NO
* @cert - cert data
* @ICID - Fin Number
*/
var certTpl, serial, cert, ICID, certOrientation;
function getCertTplByCourseId(courseId) {
var deferred = $q.defer();
var promise = deferred.promise;
CertService.getCertTplByCourseId(courseId, function(data) {
console.log(data);
certTpl = data.cert;
serial = data.serial;
certOrientation = data.orientation;
deferred.resolve(data);
});
return promise;
}
function getCertById(certId) {
var deferred = $q.defer();
var promise = deferred.promise;
var info = {
action: 'getcert',
id: certId
};
ApiService.post('/user', info).then(function(result) {
console.log(result);
if (result.data.success) {
cert = result.data.data;
deferred.resolve(result.data.data);
}
}, function(error) {
deferred.reject(result.data.data);
});
return promise;
}
function getICID() {
var deferred = $q.defer();
var promise = deferred.promise;
userBizModel.getProfile().then(function(profile) {
console.log(profile);
ICID = profile.icId;
deferred.resolve(ICID);
}, function(error) {
deferred.reject(error);
});
return promise;
}
function drawCertification(certinfo) {
console.log(certinfo);
var circle_canvas = document.getElementById(certinfo.ElementId);
var context = circle_canvas.getContext("2d");
var background = new Image();
background.setAttribute('crossOrigin', 'anonymous');
var data = certinfo.certBase64Data;
console.log(certinfo);
background.onload = function() {
console.log('--- step background onload ---');
circle_canvas.width = background.width * 1;
circle_canvas.height = background.height * 1;
console.log(circle_canvas);
context.drawImage(background, 0, 0, circle_canvas.width, circle_canvas.height);
if(CommonService.isIE()){
CommonService.convertPNG(data,circle_canvas.width, (circle_canvas.height-120),function(res){
console.log(res);
if(res.success){
var img = new Image();
var url = res.data;
img.onload = function() {
console.log('--- step img onload ---');
context.drawImage(img, 0, 120);
};
img.src = url;
$timeout(function() {
console.log('no user input');
}, 500);
}
});
} else {
var img = new Image();
var url = 'data:image/svg+xml;base64,' + window.btoa((unescape(encodeURIComponent(data))));
console.log(url);
img.onload = function() {
console.log('--- step img onload ---');
context.drawImage(img, 0, 120);
};
img.src = url;
}
}
background.src = certinfo.template;
}
self.getTplDataByConf = function(config) {
console.log(config);
var promises = [];
//promises.push(getCertById(config.certId));
var deferred = $q.defer();
var promise = deferred.promise;
getCertById(config.certId).then(function(res){
if(loginService.isLogged&&config.courseId){
promises.push(getCertTplByCourseId(config.courseId));
promises.push(getICID());
} else if(cert.courseId) {
console.log(cert.courseId);
promises.push(getCertTplByCourseId(cert.courseId));
}
$q.all(promises).then(function(result) {
var certInfo = {
ElementId: config.ElementId,
template: certTpl,
paddingtop: config.paddingtop,
userfullname: cert.fullName,
coursename: cert.courseName,
schoolname: config.schoolname,
schoolIconUrl: config.schoolIconUrl,
time: cert.time,
certNo: serial + "_" + $filter("numberFixedLen")(cert.index, 5),
icid: ICID,
classStart: (cert.classStart)?$filter('date')(cert.classStart,"dd-MMM-yyyy"):'',
classStop: (cert.classStop)?$filter('date')(cert.classStop,"dd-MMM-yyyy"):'',
orientation: certOrientation,
//certBase64Data: config.certBase64Data
};
console.log(certInfo);
//CertService.drawCanvas(certInfo);
deferred.resolve(certInfo);
}, function() {
deferred.reject(result);
console.error("cert biz model draw failed .");
});
}, function() {
deferred.reject(res);
console.error("cert biz model draw failed .");
});
return promise;
}
self.drawCERT = function(config) {
var promises = [];
promises.push(getCertTplByCourseId(config.courseId));
promises.push(getCertById(config.certId));
promises.push(getICID());
$q.all(promises).then(function(result) {
var certInfo = {
ElementId: config.ElementId,
template: certTpl,
paddingtop: config.paddingtop,
userfullname: cert.fullName,
coursename: cert.courseName,
schoolname: config.schoolname,
schoolIconUrl: config.schoolIconUrl,
time: cert.time,
certNo: serial + "_" + $filter("numberFixedLen")(cert.index, 5),
icid: ICID,
orientation: config.orientation,
certBase64Data: config.certBase64Data
};
console.log(certInfo);
CertService.drawCanvas(certInfo);
}, function() {
console.error("cert biz model draw failed .");
});
}
self.renderCERT = function(certInfo) {
drawCertification(certInfo);
}
self.downloadCERT = function(name, canvasID, pdfConf) {
if((!loginService.isLogged||!pdfConf.courseId)&&cert&&cert.courseId){
pdfConf.courseId = cert.courseId;
}
CertService.getCertOriByCourseId(pdfConf.courseId).then(function(data) {
//retrun
console.log(data);
var ori = data.orientation;
pdfConf.orientation=data.orientation;
var dtcanvas = document.getElementById(canvasID);
var fullQualityImgDataURL = dtcanvas.toDataURL('image/jpeg', 1.0);
//pdfConf.orientation = pdfConf.orientation || 'landscape';
var doc = new jsPDF(pdfConf);
if (ori === 'portrait') {
doc.addImage(fullQualityImgDataURL, 'JPEG', 0, 0, 210, 297);
} else {
console.log('--- not portrait');
doc.addImage(fullQualityImgDataURL, 'JPEG', 0, 0, 297, 210);
// doc.addImage(fullQualityImgDataURL, 'JPEG', 0, 0, 210, 297);
}
doc.save(name);
});
};
});