Exemplo n.º 1
0
        public ActionResult Create(FormCollection form)
        {
            var userId   = Int32.Parse(form["userId"]);
            var siteName = form["sites"];

            var ctx  = new App_Data.StackFlairDataContext();
            var site = ctx.StackSites.Where(s => s.Url == siteName).Single();

            var associationId = StackyWrapper.GetAssociationId(userId, site);
            var options       = "";

            if (form.GetValues("beta").Contains("true"))
            {
                options += ",noBeta";
            }
            if (!form.GetValues("combined").Contains("true"))
            {
                options += ",only=" + site.KeyName;
            }
            ;
            if (!form["themes"].Equals("default"))
            {
                options += ",theme=" + form["themes"];
            }
            if (!string.IsNullOrEmpty(options))
            {
                options = "/options/" + options.Substring(1);
            }
            string url = "~/Generate" + options + "/" + associationId.ToString() + "." + form["format"];

            //return Content(url);
            return(Redirect(url));
            //return View("Default");
        }
Exemplo n.º 2
0
        private StackData GetStackData(Guid associationId, bool noBeta = false)
        {
            StackData     stackData     = null;
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(StackData));

            // Check for existing flair
            var ctx           = new StackFlairDataContext(cfg.ConnectionStrings["DefaultConnectionString"].ConnectionString);
            var existingFlair = ctx.StackFlairs.Where(f => f.Guid == associationId).SingleOrDefault();

            if (existingFlair != null)
            {
                // Check for expiration
                DateTime storedTimestamp = existingFlair.Timestamp;
                DateTime expiryTimestamp = storedTimestamp.AddHours(Int32.Parse(ConfigurationManager.AppSettings["FlairDuration"]));
                if (expiryTimestamp > DateTime.Now)
                {
                    stackData = (StackData)xmlSerializer.Deserialize(new StringReader(existingFlair.Flair));
                }
                else
                {
                    stackData               = StackyWrapper.GetFlairData(associationId);
                    existingFlair.Flair     = stackData.Serialize();
                    existingFlair.Timestamp = DateTime.Now;
                    ctx.SubmitChanges();
                }
            }
            else
            {
                stackData = StackyWrapper.GetFlairData(associationId);
                ctx.StackFlairs.First();

                ctx.StackFlairs.InsertOnSubmit(new App_Data.StackFlair()
                {
                    Flair = stackData.Serialize(), Guid = associationId, Timestamp = DateTime.Now
                });
                ctx.SubmitChanges();
            }
            return(stackData);
        }