練習用のネタトリガです。
初心者のApexトリガ学習の参考に(なるのか?)
1.どこから登録すれば良いのか。
Chatterが出たばっかりのときは、オブジェクト構成が色々複雑でめんどくさかったのですが、今はシンプルになってて楽ちんです。
- Feedに対するトリガ:[設定] -> [カスタマイズ] -> [Chatter] -> [トリガ] -> [FeedItem トリガ]
- Commentに対するトリガ:[設定] -> [カスタマイズ] -> [Chatter] -> [トリガ] -> [FeedComment トリガ]
2.Feedトリガ
サンプルコードは以下です。
今回は手を抜いて練習用なのでわかりやすくするために、トリガ直書きしてますが、実際には先人達が積み上げてくれたあのテンプレとか、このテンプレとかそのテンプレを使ったりしていい感じに実装しましょう。
trigger EX_FeedItemTrigger on FeedItem(after insert, after update) {
ID responseUserId = '005280000030xHe';
List<FeedComment> insComments = new List<FeedComment>();
if(Trigger.isInsert && Trigger.isAfter) {
for(FeedItem f : Trigger.new) {
//ぬるぽしたら、ガッ!する
if(f.Body.contains('ぬるぽ')) {
insComments.add(new FeedComment(
FeedItemId = f.Id
, CommentBody = '<b><i>ガッ!</i></b>'
, CommentType ='TextComment'
, CreatedById = responseUserId
, IsRichText = true
));
}
}
}
if(Trigger.isUpdate && Trigger.isAfter) {
for(FeedItem f : Trigger.new) {
//更新で新たにぬるぽした場合も、ガッ!する
if(f.Body.contains('ぬるぽ')
&& !(Trigger.oldMap.get(f.Id).Body.contains('ぬるぽ'))) {
insComments.add(new FeedComment(
FeedItemId = f.Id
, CommentBody = '<b><i>ガッ!</i></b>'
, CommentType ='TextComment'
, CreatedById = responseUserId
, CreatedDate = f.CreatedDate
, IsRichText = true
));
}
}
}
if(!insComments.isEmpty()) insert insComments;
}
3.Commentトリガ
見てるオブジェクトが違うだけど、ほぼFeedトリガと一緒です。
trigger EX_FeedCommenTrigger on FeedComment(after insert, after update) {
ID responseUserId = '005280000030xHe';
List<FeedComment> insComments = new List<FeedComment>();
if(Trigger.isInsert && Trigger.isAfter) {
for(FeedComment c : Trigger.new) {
//ぬるぽしたら、ガッ!する
if(c.CommentBody.contains('ぬるぽ')) {
insComments.add(new FeedComment(
FeedItemId = c.FeedItemId
, CommentBody = '<b><i>ガッ!</i></b>'
, CommentType = 'TextComment'
, CreatedById = responseUserId
, IsRichText = true
));
}
}
}
if(Trigger.isUpdate && Trigger.isAfter) {
for(FeedComment c : Trigger.new) {
//更新で新たにぬるぽした場合も、ガッ!する
if(c.CommentBody.contains('ぬるぽ')
&& !(Trigger.oldMap.get(c.Id).CommentBody.contains('ぬるぽ'))) {
insComments.add(new FeedComment(
FeedItemId = c.FeedItemId
, CommentBody = '<b><i>ガッ!</i></b>'
, CommentType = 'TextComment'
, CreatedById = responseUserId
, CreatedDate = c.CreatedDate
, IsRichText = true
));
}
}
}
if(!insComments.isEmpty()) insert insComments;
}