@RestResource(urlMapping='/OFSEventCreate/*') global with sharing class OFSEventCreateRest { private static final String HOSPITAL_STRING = '病院'; private static final String AGENCY_STRING = '販売店'; private static final String CAMPAIGN_STRING = '社外イベント'; private static final String DEP_TYPE = '診療科'; private static final String AGY_TYPE = '販売店'; @HttpPost global static void doPost(String sub, String at2, String pt, String dt, Long stime, Long etime, String accid, String mainPlace, String cid, String oid, String mid, String loc) { system.debug('OFSEventCreateRest.start'); RestResponse res = RestContext.response; res.addHeader('Content-Type', 'application/json'); String jsonResponse; Date startDate; if (String.isBlank(dt) == false) { startDate = Date.valueOf(dt); // yyyy-MM-dd の形式 } else { startDate = Date.today(); } Event e = new Event( OwnerId = UserInfo.getUserId(), ActivityDate = startDate, StartDateTime = Datetime.newInstance(stime), EndDateTime = Datetime.newInstance(etime), Activity_Type2__c = at2, Purpose_Type__c = pt, Main_Visit_Location__c = mainPlace ); if (!String.isBlank(sub)) { e.Subject = sub; }else{ //no subject } if(!String.isBlank(loc)){ e.Location = loc; }else{ //no Location } // 顧客 String aid = accid; if (!String.isBlank(aid)) { Account acc = null; List accs = [select Id, RecordType.Name, Name from Account where Id = :aid]; if (accs.size() <= 0) { //TODO error system.debug('Restaid:'+ aid); } else { acc = accs[0]; e.whatid__c = acc.Id; e.Location = acc.Name; } // 診療科 if (acc.RecordType.Name.startsWith(DEP_TYPE)) { if (String.isBlank(at2)) { e.Activity_Type2__c = HOSPITAL_STRING; } // 引合 if (!String.isBlank(oid)) { List opp = [select Id, Name from Opportunity where Id = :oid and AccountId = :aid and StageName in ('引合','注残','出荷') and RecordTypeId =:System.label.OFSEvent_1]; //niwu OFSEvent_1 -01210000000QekK // 念のためマッチするかを判断 if (opp.size() > 0) { e.Related_Opportunity1__c = opp[0].Name; e.Related_Opportunity1_ID__c = opp[0].Id; } } // サビコン if (!String.isBlank(mid)) { List mc = [select Id, Name from Maintenance_Contract__c where Id = :mid and Department__c = :aid]; // 念のためマッチするかを判断 if (mc.size() > 0) { e.Related_Service1__c = mc[0].Name; e.Related_Service1_ID__c = mc[0].Id; } } // 販売店 } else if (acc.RecordType.Name.startsWith(AGY_TYPE)) { if (String.isBlank(at2)) { e.Activity_Type2__c = AGENCY_STRING; } // 引合 if (!String.isBlank(oid)) { List opp = [select Id, Name from Opportunity where Id = :oid and (Agency1__c = :aid or Agency2__c = :aid) and StageName in ('引合','注残','出荷') and RecordTypeId =:System.Label.OFSEvent_1]; // 念のためマッチするかを判断 if (opp.size() > 0) { e.Related_Opportunity1__c = opp[0].Name; e.Related_Opportunity1_ID__c = opp[0].Id; } } } else { // なにもしない by yu 20141215 } // Campaign } else if (!String.isBlank(cid)) { Campaign cam = [select Id, Name from Campaign where Id = :cid]; e.Location = cam.Name; e.whatid__c = cam.Id; if (String.isBlank(at2)) { e.Activity_Type2__c = CAMPAIGN_STRING; } } else { // TODO error } try { insert e; res.statusCode = 200; jsonResponse = '{"'+ System.Label.OFSErrorStatus +'": "'+ System.Label.OFSErrorSuccess +'", "'+ System.Label.OFSErrorMessage +'": "'+ e.Id +'", "refreshDate":"'+ startDate +'"}'; res.responseBody = blob.valueOf(jsonResponse); return; } catch ( Exception ex ) { //error message:cannot update exception res.statusCode = 200; jsonResponse = '{"'+ System.Label.OFSErrorStatus +'": "'+ System.Label.OFSErrorFailure +'", "'+ System.Label.OFSErrorMessage +'": "'+ ex +'"}'; res.responseBody = blob.valueOf(jsonResponse); return; } } }