示例#1
0
        public void Tweet(Indulgence indulgence)
        {
            _logger.DebugFormat("tweet {0}", indulgence.Confession);

            string status = "";
            if (!string.IsNullOrWhiteSpace(indulgence.Name))
            {
                status = string.Format("Bless you {0}, your sin has been absolved {1}/indulgence/{2}",
                    indulgence.Name,
                    ConfigurationManager.AppSettings["WebsiteHostName"],
                    indulgence.Guid);
            }
            else
            {
                status = string.Format("A sin has been absolved {0}/indulgence/{1}",
                    ConfigurationManager.AppSettings["WebsiteHostName"],
                    indulgence.Guid);
            }

            Auth.SetUserCredentials(ConfigurationManager.AppSettings["Twitter_ConsumerKey"],
                ConfigurationManager.AppSettings["Twitter_ConsumerSecret"],
                ConfigurationManager.AppSettings["Twitter_Token"],
                ConfigurationManager.AppSettings["Twitter_TokenSecret"]);

            try
            {
                Tweetinvi.Tweet.PublishTweet(status);
            }
            catch (Exception ex)
            {
                _logger.Warn("Could not send tweet", ex);
            }
        }
示例#2
0
        public ActionResult Index(string confession)
        {
            // store the confession as a sin
            var sin = new Sin()
            {
                Content = confession, Source = "JC"
            };

            MvcApplication.CurrentSession.Store(sin);

            Indulgence con = new Indulgence()
            {
                Confession    = confession.Truncate(150),
                DateConfessed = DateTime.Now,
                IsBlessed     = false,
                IsConfession  = true,
                SinId         = sin.Id,
                Tweeted       = false,
                Name          = "Anonymous"
            };

            MvcApplication.CurrentSession.Store(con);

            MvcApplication.CurrentSession.SaveChanges();

            return(RedirectToAction("Confess", new { id = con.Id.IdValue() }));
        }
示例#3
0
        public void Tweet(Indulgence indulgence)
        {
            _logger.DebugFormat("tweet {0}", indulgence.Confession);

            string status = "";

            if (!string.IsNullOrWhiteSpace(indulgence.Name))
            {
                status = string.Format("Bless you {0}, your sin has been absolved {1}/indulgence/{2}",
                                       indulgence.Name,
                                       ConfigurationManager.AppSettings["WebsiteHostName"],
                                       indulgence.Guid);
            }
            else
            {
                status = string.Format("A sin has been absolved {0}/indulgence/{1}",
                                       ConfigurationManager.AppSettings["WebsiteHostName"],
                                       indulgence.Guid);
            }

            Auth.SetUserCredentials(ConfigurationManager.AppSettings["Twitter_ConsumerKey"],
                                    ConfigurationManager.AppSettings["Twitter_ConsumerSecret"],
                                    ConfigurationManager.AppSettings["Twitter_Token"],
                                    ConfigurationManager.AppSettings["Twitter_TokenSecret"]);

            try
            {
                Tweetinvi.Tweet.PublishTweet(status);
            }
            catch (Exception ex)
            {
                _logger.Warn("Could not send tweet", ex);
            }
        }
示例#4
0
        private static void SendIndulgenceEmail(Indulgence indulgence, string indulgenceFilePath)
        {
            MailMessage message = new MailMessage();

            message.From = new MailAddress(ConfigurationManager.AppSettings["emailFromAddress"], "IndulgeMe.cc");
            message.To.Add(new MailAddress(indulgence.DonorEmailAddress, indulgence.Name));

            var    templateDoc = XDocument.Load(HostingEnvironment.MapPath("~/content/emailTemplates/indulgenceEmail.xml"));
            string subject     = templateDoc.Element("email").Element("subject").Value;
            string textBody    = templateDoc.Element("email").Element("body").Element("text").Value;
            string htmlBody    = templateDoc.Element("email").Element("body").Element("html").Value;

            subject = subject
                      .Replace("@DonorName", indulgence.Name)
                      .Replace("@CharityName", indulgence.CharityName);
            textBody = textBody
                       .Replace("@DonorName", indulgence.Name)
                       .Replace("@CharityName", indulgence.CharityName);
            htmlBody = htmlBody
                       .Replace("@DonorName", indulgence.Name)
                       .Replace("@CharityName", indulgence.CharityName);

            message.Subject = subject;
            message.Body    = textBody;
            message.Attachments.Add(new Attachment(indulgenceFilePath));
            SmtpClient smtp = new SmtpClient();

            smtp.Port        = int.Parse(ConfigurationManager.AppSettings["smtpPort"]);
            smtp.Host        = ConfigurationManager.AppSettings["smtpServer"];
            smtp.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["smtpUsername"],
                                                                ConfigurationManager.AppSettings["smtpPassword"]);
            smtp.EnableSsl = true;
            smtp.Send(message);
        }
示例#5
0
        static void Main(string[] args)
        {
            Stopwatch sw = new Stopwatch();

            sw.Start();
            var ig = new btwc.IndulgenceGeneratoriTextSharp(new FileSystemStorage());

            try
            {
                var indulgence = new Indulgence()
                {
                    Id            = 1,
                    Confession    = Text,
                    Name          = "Andrew",
                    AmountDonated = 200,
                    CharityName   = "test charity",
                    DateConfessed = DateTime.Now
                };

                ig.Generate(indulgence,
                            Path.Combine(Environment.CurrentDirectory, "fonts"),
                            Path.Combine(Environment.CurrentDirectory, "content"),
                            "parchment3",
                            "1.pdf", "1_1.png", "1_2.png", "1_3.png", "1_4.png");
            } catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            sw.Stop();
            Console.WriteLine(string.Format("Took {0}", sw.Elapsed));
        }
示例#6
0
        public ActionResult BeginConfession(string confession)
        {
            // store the confession as a sin
            Indulgence indulgence = null;
            var        sin        = new Sin()
            {
                Content = confession, Source = "JC", Guid = Guid.NewGuid()
            };

            indulgence = new Indulgence()
            {
                Confession          = confession.Truncate(150),
                DateConfessed       = DateTime.Now,
                IsBlessed           = false,
                IsConfession        = true,
                Sin                 = sin,
                Tweeted             = false,
                Name                = "Anonymous",
                Guid                = Guid.NewGuid(),
                BackgroundImageName = "parchment3"
            };
            _indulgeMeService.SaveIndulgence(indulgence);

            return(RedirectToAction("Confess", new { guid = indulgence.Guid }));
        }
示例#7
0
        public void EmailTest()
        {
            var indulgence = new Indulgence()
            {
                Name              = "andrew myhre",
                CharityName       = "test charity",
                DonorEmailAddress = "*****@*****.**"
            };

            indulgenceEmailer.Send(indulgence, @"C:\workspace\git\BlessTheWeb\BlessTheWeb\Content\indulgences\6145.pdf");
        }
示例#8
0
 public void GenerateIndulgence(Indulgence indulgence, string fontsDirectory, string contentDirectory)
 {
     _indulgenceGenerator.Generate(indulgence,
                                   fontsDirectory,
                                   contentDirectory,
                                   indulgence.BackgroundImageName,
                                   string.Format("{0}{1}.pdf", ConfigurationManager.AppSettings["IndulgencePdfRelativePath"], indulgence.Guid),
                                   string.Format("{0}{1}_1.png", ConfigurationManager.AppSettings["IndulgenceThumbnailRelativePath"], indulgence.Guid),
                                   string.Format("{0}{1}_2.png", ConfigurationManager.AppSettings["IndulgenceThumbnailRelativePath"], indulgence.Guid),
                                   string.Format("{0}{1}_3.png", ConfigurationManager.AppSettings["IndulgenceThumbnailRelativePath"], indulgence.Guid),
                                   string.Format("{0}{1}_4.png", ConfigurationManager.AppSettings["IndulgenceThumbnailRelativePath"], indulgence.Guid));
 }
示例#9
0
 public void Send(Indulgence indulgence, string indulgenceFilePath)
 {
     MvcApplication.EmailFacade.AddEmailToQueue(
         new string[] { indulgence.DonorEmailAddress },
         "IndulgenceCreated",
         new Dictionary <string, string>()
     {
         { "DonorName", indulgence.Name },
         { "CharityName", indulgence.CharityName },
         { "IndulgenceId", indulgence.Id },
         { "ServerAuthority", "http://" + HttpContext.Current.Request.Url.Authority }
     },
         new FileInfo[] { new FileInfo(indulgenceFilePath) });
 }
示例#10
0
        public ActionResult Absolve(int id)
        {
            var sin = MvcApplication.CurrentSession.Load <Sin>("sins/" + id.ToString());
            var con = new Indulgence()
            {
                Confession    = sin.Content.Truncate(250),
                DateConfessed = DateTime.Now,
                IsBlessed     = false,
                IsConfession  = false,
                SinId         = sin.Id
            };

            MvcApplication.CurrentSession.Store(con);
            MvcApplication.CurrentSession.SaveChanges();
            ViewData["cid"] = con.Id.IdValue();
            return(View("Absolve", con));
        }
        public async Task Send(Indulgence indulgence, string indulgenceFilePath)
        {
            dynamic sg             = new SendGrid.SendGridAPIClient(_sendGridApiKey);
            var     fromAddress    = ConfigurationManager.AppSettings["SendGridFromAddress"];
            var     fromName       = ConfigurationManager.AppSettings["SendGridFromName"];
            var     indulgenceLink = string.Format("{0}/indulgence/pdf/{1}",
                                                   ConfigurationManager.AppSettings["WebsiteHostName"], indulgence.Guid);
            string data = @"{
'content': [
    {
      'type': 'text/html', 
      'value': '<html><p>Hello good person,</p><p>Please accept this *genuine plenary indulgence. Be sure to present it when you are received in purgatory.</p><p><a href=\'" + indulgenceLink + @"\'>Click here for the PDF version</a></p><p>Send this to your friends, gloat about it, and encourage them to perform good acts too!</p><p><small>*not endorsed by the Catholic church</small></p></html>'
    }
  ],
'from': {
    'email': '" + fromAddress + @"', 
    'name': '" + fromName + @"'
  },
'personalizations': 
[
    {
        'to': [{
          'email': '" + indulgence.DonorEmailAddress + @"', 
          'name': '" + (string.IsNullOrWhiteSpace(indulgence.DonorEmailAddress) ? "" : indulgence.DonorEmailAddress) + @"'
        }]
    }
], 
  'reply_to': {
    'email': '" + fromAddress + @"', 
    'name': '" + fromName + @"'
  }, 
  'subject': 'Bless you! Please accept your indulgence'
}";

            Object json = JsonConvert.DeserializeObject <Object>(data);

            data = json.ToString();
            dynamic response = await sg.client.mail.send.post(requestBody : data);

            _log.InfoFormat("sent an email to " + indulgence.DonorEmailAddress);
            _log.InfoFormat("response code: {0}, result: {1}, headers: {2}",
                            response.StatusCode, response.Body.ReadAsStringAsync().Result, response.Headers.ToString());
        }
示例#12
0
        public Indulgence CreateIndulgenceForSin(string guid)
        {
            var sin = _session.CreateCriteria <Sin>()
                      .Add(Restrictions.Eq("Guid", Guid.Parse(guid)))
                      .UniqueResult <Sin>();

            var ind = new Indulgence()
            {
                Confession    = sin.Content.Substring(0, sin.Content.Length <= 250 ? sin.Content.Length : 250),
                DateConfessed = DateTime.Now,
                IsBlessed     = false,
                IsConfession  = false,
                Sin           = sin
            };

            _session.Save(ind);
            _session.Flush();
            return(ind);
        }
示例#13
0
        private static void SendTweet(Indulgence indulgence)
        {
            logger.DebugFormat("tweet {0}", indulgence.Confession);

            string status = "";

            status = string.Format("Bless you {0}, your sin has been absolved http://{1}/indulgences/{2}", indulgence.Name,
                                   ConfigurationManager.AppSettings["WebsiteUrlAuthority"], indulgence.Id);

            try
            {
                /*FluentTwitter
                 *  .CreateRequest()
                 *  .AuthenticateWith(consumerKey, consumerSecret, token, tokenSecret)
                 *  .Statuses()
                 *  .Update(status)
                 *  .AsJson()
                 *  .Request();*/
            }
            catch (Exception ex)
            {
                logger.Warn("Could not send tweet", ex);
            }
        }
示例#14
0
        public byte[] GetIndulgencePdf(Indulgence indulgence)
        {
            string pdfFilename = string.Format("{0}{1}.pdf", ConfigurationManager.AppSettings["IndulgencePdfRelativePath"], indulgence.Guid);

            return(_fileStorage.Get(pdfFilename));
        }
示例#15
0
 public void SaveIndulgence(Indulgence indulgence)
 {
     _session.Save(indulgence);
     _session.Save(indulgence.Sin);
     _session.Flush();
 }
示例#16
0
 public void Tweet(Indulgence indulgence)
 {
     _tweeter.Tweet(indulgence);
 }
示例#17
0
        public byte[] GetIndulgenceImage(Indulgence indulgence, int size)
        {
            string imageFileName = string.Format("{0}{1}_{2}.png", ConfigurationManager.AppSettings["IndulgenceThumbnailRelativePath"], indulgence.Guid, size);

            return(_fileStorage.Get(imageFileName));
        }