import {GenericMessageEvent} from "@slack/bolt";
import {getConnection} from "typeorm";
import uuid from 'uuid';

import {Attachment} from "../../entity/attachment";
import {Message} from "../../entity/message";
import {Ticket} from "../../entity/ticket";
import ticketWs from '../../ws/ticket.ws';

export class TicketMessagePostedFromSlackWorkflow {

  public static async messagePosted(slackMessage: GenericMessageEvent) {
    // console.log('s huja li', slackMessage);
    // const ticket = await Ticket.findBySlackThreadTs(slackMessage.thread_ts);
    //
    // const message = new Message();
    // message.ticket = Promise.resolve(ticket);
    // message.body = slackMessage.text;
    // message.sentBy = 'Support';
    // await message.save();
    //
    // ticketWs.postTicketMessage(ticket, message);
    await getConnection().transaction(async transactionalEntityManager => {
      const ticket = await Ticket.findBySlackThreadTs(slackMessage.thread_ts);

      const message = new Message();
      message.ticket = Promise.resolve(ticket);
      message.body = slackMessage.text;
      message.sentBy = 'Support';
      await transactionalEntityManager.save(message);

      if (slackMessage.files) {
        for (const file of slackMessage.files) {
          const attachment = new Attachment();
          attachment.message = Promise.resolve(message);
          attachment.isLocal = false;
          attachment.url = file.url_private;
          attachment.size = file.size;
          attachment.type = file.mimetype;
          await transactionalEntityManager.save(attachment);
        }
      }

      ticketWs.postTicketMessage(ticket, message);
    });
  }

}
