package service import ( "time" "git.kundeng.us/phoenix/swoosh/swoop/send" "git.kundeng.us/phoenix/swoosh/swoop/types" "git.kundeng.us/phoenix/textsender-models/tx0/contact" "git.kundeng.us/phoenix/textsender-models/tx0/message" "git.kundeng.us/phoenix/textsender-models/tx0/message/scheduling" "git.kundeng.us/phoenix/textsender-models/tx0/token" "github.com/google/uuid" "git.kundeng.us/phoenix/catapult/internal/app" ) type Scheduler struct { Application *app.App Token *token.Login } func (s *Scheduler) GetEvents(scheduledMessageId uuid.UUID) ([]*scheduling.ScheduledMessageEvent, error) { sme := ScheduledMessageEvent{Application: s.Application, Token: s.Token} if events, err := sme.GetEvents(scheduledMessageId); err != nil { return nil, err } else { return events, nil } } func (s *Scheduler) GetMessage(id uuid.UUID) (*message.Message, error) { msg := Message{Application: s.Application, Token: s.Token} if letter, err := msg.GetMessage(id); err != nil { return nil, err } else { return letter, nil } } func (s *Scheduler) GetContact(id uuid.UUID) (*contact.Contact, error) { ctct := Contact{Application: s.Application, Token: s.Token} if c, err := ctct.GetContact(id); err != nil { return nil, err } else { return c, nil } } func (s *Scheduler) ScheduleMessage(schMsg scheduling.ScheduledMessage, event scheduling.ScheduledMessageEvent, c contact.Contact, msg message.Message) (*types.TwilioResult, *time.Time, error) { msgSender := send.MessageSender{Config: s.Application.TwilioConfig} if res, err := msgSender.Send(msg, c, &schMsg.Scheduled); err != nil { return nil, nil, err } else { sent := time.Now() return res, &sent, nil } } func (s *Scheduler) RecordEventResponse(schMsgEvent *scheduling.ScheduledMessageEvent, userId uuid.UUID, bytes []byte, sent *time.Time) ([]*message.MessageEventResponse, error) { mre := message.MessageEventResponse{ScheduledMessageEventId: schMsgEvent.Id, UserId: userId, Response: bytes, Sent: *sent} msgEventResponse := MessageEventResponse{Application: s.Application, Token: s.Token} if responses, err := msgEventResponse.RecordEventResponse(&mre); err != nil { return nil, err } else { return responses, nil } }