Exemple #1
0
        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;
            }
        }
Exemple #2
0
        public MetaSetting[] GetSettings(string type, bool enabledOnly = true)
        {
            return(ExecuteFaultHandledOperation(() =>
            {
                IMetaSettingRepository settingRepository = _DataRepositoryFactory.GetDataRepository <IMetaSettingRepository>();
                IEnumerable <MetaSetting> settings = settingRepository.GetSettings(type, enabledOnly);

                return settings.ToArray();
            }));
        }
Exemple #3
0
        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);
        }
Exemple #5
0
        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();
        }