
import 'package:dart_framework/utils/slack/slack_data.dart';

//Format info
//https://api.slack.com/reference/surfaces/formatting

class SlackTemplate {
  static DataSlack getAttachments(String channel) {
    DataSlack data = DataSlack(channel);

    data.attachments = [];
    var attachment = SlackAttachment();
    attachment.fallback = 'Plain-text summary of the attachment.';
    attachment.color = '#2eb886';
    attachment.pretext = 'Optional text that appears above the attachment block';
    attachment.author_name = 'Bobby Tables';
    attachment.author_link = 'http://flickr.com/bobby/';
    attachment.author_icon = 'http://flickr.com/icons/bobby.jpg';
    attachment.title = 'Slack API Documentation';
    attachment.title_link = 'https://api.slack.com/';
    attachment.text = 'Optional text that appears within the attachment';
    attachment.fields = [
      SlackField.withParam('Priority', 'High', short: false),
    ];
    attachment.image_url = 'https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/Flat_tick_icon.svg/1024px-Flat_tick_icon.svg.png';
    attachment.thumb_url = 'https://cdn-icons-png.flaticon.com/512/3771/3771140.png';
    attachment.footer = 'Slack API';
    attachment.footer_icon = 'https://platform.slack-edge.com/img/default_application_icon.png';
    attachment.ts = '123456789';
    data.attachments!.add(attachment);
    return data;
  }

  static DataSlack getBlocks(String channel) {
    DataSlack data = DataSlack(channel);

    data.attachments = [];
    var attachment = SlackAttachment();
    data.blocks = [];
    var blockSection = SlackBlockSection();
    blockSection.text = SlackBlockText();
    blockSection.text!.text = 'Danny Torrence left the following review for your property:';
    data.blocks!.add(blockSection);

    blockSection = SlackBlockSection();
    blockSection.text = SlackBlockText();
    blockSection.text!.text = '<https://example.com|Overlook Hotel> \n :star: \n Doors had too many axe holes, guest in room 237 was far too rowdy, whole place felt stuck in the 1920s.';
    blockSection.accessory = SlackAccessory();
    blockSection.accessory!.type = SlackActionType.image;
    blockSection.accessory!.image_url = 'https://is5-ssl.mzstatic.com/image/thumb/Purple3/v4/d3/72/5c/d3725c8f-c642-5d69-1904-aa36e4297885/source/256x256bb.jpg';
    blockSection.accessory!.alt_text = 'Haunted hotel image';
    data.blocks!.add(blockSection);
    
    blockSection = SlackBlockSection();
    blockSection.block_id = 'section789';
    blockSection.fields = [];
    var field = SlackBlockText();
    field.text = '*Average Rating*\n1.0';
    blockSection.fields!.add(field);
    data.blocks!.add(blockSection);
    
    attachment.blocks = [];
    blockSection = SlackBlockSection();
    blockSection.text = SlackBlockText();
    blockSection.text!.text = '*Alternative hotel options*';
    attachment.blocks!.add(blockSection);

    blockSection = SlackBlockSection();
    blockSection.text = SlackBlockText();
    blockSection.text!.text = '<https://example.com|Bates Motel> :star::star:';
    blockSection.accessory = SlackAccessory();
    blockSection.accessory!.type = SlackActionType.button;
    blockSection.accessory!.url = 'https://www.google.com';
    blockSection.accessory!.text = SlackBlockText();
    blockSection.accessory!.text!.type = SlackTextType.plain_text;
    blockSection.accessory!.text!.text = 'View';
    blockSection.accessory!.text!.emoji = true;
    blockSection.accessory!.value = 'view_alternate_1';
    attachment.blocks!.add(blockSection);

    blockSection = SlackBlockSection();
    blockSection.text = SlackBlockText();
    blockSection.text!.text = '<https://example.com|The Great Northern Hotel> :star::star::star::star:';
    blockSection.accessory = SlackAccessory();
    blockSection.accessory!.type = SlackActionType.button;
    blockSection.accessory!.url = 'https://www.naver.com';
    blockSection.accessory!.text = SlackBlockText();
    blockSection.accessory!.text!.type = SlackTextType.plain_text;
    blockSection.accessory!.text!.text = 'View';
    blockSection.accessory!.text!.emoji = true;
    blockSection.accessory!.value = 'view_alternate_2';
    attachment.blocks!.add(blockSection);

    data.attachments!.add(attachment);
    return data;
  }
}