private async Task <bool> SendMessage(EmailCommunication email) { try { Mail mail = new Mail(); mail.From = new Email(email.Sender); mail.Subject = email.Subject; mail.AddContent(new Content("text/plain", email.Body)); AddRecipients(email, mail); AddAttachments(email, mail); string type = Constants.MetaSettings.Types.Api; string code = Constants.MetaSettings.Codes.SendGridApiKey; IMetaSettingRepository settingRepository = _DataRepositoryFactory.GetDataRepository <IMetaSettingRepository>(); string apiKey = settingRepository.GetSetting(type, code).Value; dynamic sg = new SendGrid.SendGridAPIClient(apiKey, "https://api.sendgrid.com"); dynamic response = await sg.client.mail.send.post(requestBody : mail.Get()); return(true); } catch (Exception e) { throw e; } }
public MetaSetting GetSetting(string type, string code, bool enabledOnly = true) { return(ExecuteFaultHandledOperation(() => { IMetaSettingRepository settingRepository = _DataRepositoryFactory.GetDataRepository <IMetaSettingRepository>(); MetaSetting setting = settingRepository.GetSetting(type, code, enabledOnly); if (setting == null) { NotFoundFault fault = new NotFoundFault(string.Format("No setting found for type-code: [{0}]-[{1}].", type, code)); throw new FaultException <NotFoundFault>(fault, fault.Message); } return setting; })); }
public Signal PushSignalToSubscribers(int signalId) { Signal pushedEntity = null; IMetaSettingRepository settingsRepository = _DataRepositoryFactory.GetDataRepository <IMetaSettingRepository>(); string type = Constants.MetaSettings.Types.Communication; string code = Constants.MetaSettings.Codes.EmailSender; string name = settingsRepository.GetSetting(type, code).Value; using (IMailer mailer = _MailerFactory.GetMailer(name)) using (IDbContextRepository <Signal> signalRepository = _DataRepositoryFactory.GetDataRepository <ISignalRepository>()) { Signal signal = signalRepository.EntitySet.FirstOrDefault(s => s.SignalID == signalId); List <Subscription> subscriptions = signal.Product.Subscriptions; // send signal to subscribers foreach (var subscription in subscriptions) { string sender = "*****@*****.**"; string recipients = subscription.Account.LoginEmail; string subject = string.Format("Alert - New MarketMiner Signal - {0} - {1}", signal.Instrument, signal.Granularity); string side = signal.Side == "S" ? "SELL" : signal.Side == "B" ? "BUY" : "NONE"; DateTime time = Convert.ToDateTime(signal.SignalTime).ToUniversalTime(); string body = string.Format("New Signal - {0} : {1} : {2} : {3} : {4} : {5}", signal.Type, side, signal.Instrument, signal.Granularity, signal.SignalPrice, time); mailer.SendMail(sender, recipients, subject, body); } // postmark the signal signal.SendPostmark = DateTime.UtcNow; signalRepository.Context.SaveChanges(); pushedEntity = signalRepository.Entity(signal); } return(pushedEntity); }
private void SendAlgorithmStatusNotifications(object state) { IMetaSettingRepository settingsRepository = _DataRepositoryFactory.GetDataRepository <IMetaSettingRepository>(); string type = Constants.MetaSettings.Types.Communication; string code = Constants.MetaSettings.Codes.EmailSender; string name = settingsRepository.GetSetting(type, code).Value; string sender = "*****@*****.**"; string subject = "Algorithm Status Notifications"; string body = ""; _notifications.Distinct().ToList().ForEach(notification => body += string.Format("\n{0}", notification)); using (IMailer mailer = _MailerFactory.GetMailer(name)) { // refactor this later to send emails to all admins string recipients = "*****@*****.**"; mailer.SendMail(sender, recipients, subject, body); } _notifications.Clear(); }