global with sharing class AL_MobileApp_Controller {
|
|
global class AL_MobileApp_Controller_Exception extends Exception {}
|
|
// 写真登録用 リクエスト
|
global class CreateAttachmentRequest {
|
@TestVisible global String id { get; private set;} // 登録先の土地のオブジェクトID
|
@TestVisible global String photo { get; private set;} // 写真 Base64エンコードされてる
|
@TestVisible global String fname { get; private set;} // 写真 ファイル名
|
@TestVisible global String contentType { get; private set;} // 写真 C/T
|
@TestVisible global String photoType { get; private set;} // 写真種類
|
@TestVisible global Long ms { get; private set;} //アップした日時(ms)
|
@TestVisible global String latitude { get; public set; } // 緯度
|
@TestVisible global String longitude { get; public set; } // 経度
|
}
|
|
// 写真登録用 レスポンス
|
global class CreateAttachmentResponse {
|
global String id { get; private set;} // 登録した添付ファイル=写真のオブジェクトID
|
global Boolean success { get; public set; }
|
global String error { get; public set; }
|
public CreateAttachmentResponse() {
|
this.id = null;
|
this.success = false;
|
this.error = null;
|
}
|
}
|
|
@RemoteAction
|
global static CreateAttachmentResponse createAttachment(CreateAttachmentRequest req) {
|
System.debug('received data: '+req);
|
Datetime dt = DateTime.newInstance(req.ms);
|
CreateAttachmentResponse res = new CreateAttachmentResponse();
|
Savepoint sp = Database.setSavepoint();
|
try {
|
String objectName = SchemaGlobalDescribe.findObjectNameFromRecordIdPrefix(req.id); //idをもとに、オブジェクトAPI名を取得
|
SObject s = Database.query('SELECT Name, ' + req.photoType+'_date1__c FROM ' + objectName + ' where id=\''+req.id+'\'');
|
s.put('photoType__c' , req.photoType); //写真種類をセットする
|
s.put(req.photoType+'_date__c' , dt); //写真をアップした日時をセットする
|
if(s.get(req.photoType + '_date1__c') == null){ //初めてアップロード
|
s.put(req.photoType+'_date1__c' , dt);
|
}
|
update s;
|
|
String extension = req.fname.split('\\.(?=[^\\.]+$)')[1]; //拡張子
|
|
ContentVersion v = new ContentVersion();
|
v.versionData = EncodingUtil.base64Decode(req.photo);
|
v.title = String.valueOf(s.get('Name')) + '_' + req.photoType + '_' + dt.format('yyyyMMddHHmmss')+'.'+extension;
|
v.pathOnClient = '/aaaaaa.png';
|
insert v;
|
|
ContentVersion tmp1 = [select id,latitude__c,longitude__c,ContentDocumentId from ContentVersion where id = :v.id];
|
ContentWorkspace shareWorkspace = [select id from ContentWorkspace where name = 's1_photo' limit 1];
|
|
ContentWorkspaceDoc docLink = new ContentWorkspaceDoc();
|
docLink.ContentDocumentId = tmp1.ContentDocumentId;
|
docLink.ContentWorkspaceId = shareWorkspace.id;
|
insert docLink;
|
|
tmp1.latitude__c = req.latitude;
|
tmp1.longitude__c = req.longitude;
|
update tmp1;
|
|
ContentDocumentLink cdl = new ContentDocumentLink(ContentDocumentId = tmp1.ContentDocumentId, LinkedEntityId = req.id,ShareType='V');
|
insert cdl;
|
|
Event e = new Event();
|
e.StartDateTime = dt;
|
e.EndDateTime = dt.addMinutes(15);
|
//TODO sunbridge_ga テーブル名(漢字)と req.photoType (漢字) にする可能性が高い 2016.10.20
|
e.Subject = '拍摄了'+req.photoType+'的照片';
|
e.WS_flg__c = false;
|
if(objectName == 'Rental_Apply__c'){
|
Rental_Apply__c ra = [select account__c,account__r.name from Rental_Apply__c where id=:req.id][0];
|
e.Location = ra.account__r.name;
|
e.whatid__c = ra.account__c;
|
//e.Location = [select account__r.name from Rental_Apply__c where id=:req.id][0].account__r.name;
|
} else if (objectName == 'Repair__c'){
|
Repair__c rp = [select account__c,account__r.name from Repair__c where id=:req.id][0];
|
e.whatid__c = rp.account__c;
|
e.whatid__c = rp.account__c;
|
//e.Location = [select account__r.name from Repair__c where id=:req.id][0].account__r.name;
|
} else if (objectName == 'Asset'){
|
Asset ast = [select account.id,account.name from Asset where id=:req.id][0];
|
e.Location = ast.account.name;
|
e.whatid__c = ast.account.id;
|
//e.Location = [select account.name from Asset where id=:req.id][0].account.name;
|
}
|
insert e;
|
res.id = v.id;
|
res.success = true;
|
}
|
catch (Exception e) {
|
Database.rollback(sp);
|
res.success = false;
|
res.error = e.getMessage();
|
System.debug(Logginglevel.ERROR, e.getStackTraceString());
|
}
|
return res;
|
}
|
|
}
|