예제 #1
0
 protected void Page_Load(object sender, EventArgs e)
 {
     try
     {
         if (Request["r"] != null)
         {
             long           rid      = Convert.ToInt64(Request["r"]);
             aqufitEntities entities = new aqufitEntities();
             RecipeExtended re       = entities.RecipeExtendeds.Include("Image").FirstOrDefault(r => r.UserStream.Id == rid);
             if (Request["f"] != null)
             {
                 // TODO: cache
                 if (re.Image != null)
                 {
                     Affine.Data.Image image = entities.Image.FirstOrDefault(i => i.Id == re.Image.ImageLargeKey);
                     Response.ContentType = re.Image.ContentType;
                     if (image != null)
                     {
                         Response.OutputStream.Write(image.Bytes, 0, image.Bytes.Length);
                     }
                     else
                     {
                         Response.OutputStream.Write(re.Image.Bytes, 0, re.Image.Bytes.Length);
                     }
                 }
                 else
                 {
                     Response.ContentType = "image/jpg";
                     byte[] ret = System.IO.File.ReadAllBytes(Server.MapPath("~/DesktopModules/ATI_Base/resources/images/meal.jpg"));
                     Response.OutputStream.Write(ret, 0, ret.Length);
                 }
                 Response.Flush();
                 Response.End();
                 return;
             }
             else
             {
                 // TODO: cache
                 if (re.Image != null)
                 {
                     Response.ContentType = re.Image.ContentType;
                     Response.OutputStream.Write(re.Image.Bytes, 0, re.Image.Bytes.Length);
                 }
                 else
                 {
                     Response.ContentType = "image/jpg";
                     byte[] ret = System.IO.File.ReadAllBytes(Server.MapPath("~/DesktopModules/ATI_Base/resources/images/meal.jpg"));
                     Response.OutputStream.Write(ret, 0, ret.Length);
                 }
                 Response.Flush();
                 Response.End();
                 return;
             }
         }
     }
     catch (Exception)
     {
         // fall through
     }
     Response.ContentType = "image/jpg";
     byte[] ret2 = System.IO.File.ReadAllBytes(Server.MapPath("~/DesktopModules/ATI_Base/resources/images/meal.jpg"));
     Response.OutputStream.Write(ret2, 0, ret2.Length);
     Response.Flush();
     Response.End();
 }
예제 #2
0
        public long SaveRecipe(long uid, long pid, Affine.Data.json.StreamData recipe)
        {
            aqufitEntities entities = new aqufitEntities();
            UserSettings settings = entities.UserSettings.FirstOrDefault(us => us.UserKey == uid && us.PortalKey == pid);
            Recipe r = null;
            RecipeExtended re = null;
            if (recipe.Id > 0)
            {
                r = entities.UserStreamSet.OfType<Recipe>().Include("RecipeExtendeds").FirstOrDefault(us => us.UserSetting.UserKey == uid && us.PortalKey == pid && us.Id == recipe.Id);
                re = r.RecipeExtendeds.First();
                RecipeIngredient[] riOld = entities.RecipeIngredients.Where(ri => ri.RecipeExtended.Id == re.Id).ToArray();
                foreach (RecipeIngredient ri in riOld)
                {
                    entities.DeleteObject(ri);  // delete and re add new ing
                }
            }else{
                r = new Recipe();
                re = new RecipeExtended();
                re.NumRatings = 1;
                re.NumStrictness = 1;
                re.UserStream = r;
                entities.AddToUserStreamSet(r);
                r.Date = DateTime.Now.ToUniversalTime();
            }
            r.PortalKey = pid;
            r.UserSetting = settings;
            r.TimeStamp = DateTime.Now.ToUniversalTime();
            r.Title = recipe.Title;
            r.Description = recipe.Description;
            r.AvrStrictness = recipe.AvrStrictness;
            r.AvrRating = recipe.AvrRating;
            r.NumServings = recipe.NumServings;
            r.Tags = recipe.Tags;
            r.TimeCook = recipe.TimeCook;
            r.TimePrep = recipe.TimePrep;
            re.Directions = recipe.RecipeExtended.Directions;
            RecipeIngredient[] riArray = recipe.RecipeExtended.Ingredients.Select(i => new RecipeIngredient() { Text = i.Name, RecipeExtended = re }).ToArray();
            entities.SaveChanges();

            // Update the metrics for this user
            if (recipe.Id == 0) // if thie is NOT an edit
            {
                Metric met = entities.Metrics.FirstOrDefault(m => m.UserSetting.UserKey == uid && m.UserSetting.PortalKey == pid && m.MetricType == (int)Affine.Utils.MetricUtil.MetricType.NUM_RECIPES);
                if (met == null)
                {
                    met = new Metric()
                    {
                        UserSetting = settings,
                        MetricType = (int)Affine.Utils.MetricUtil.MetricType.NUM_RECIPES,
                        MetricValue = "1"       // This is the first recipe they have saved
                    };
                    entities.AddToMetrics(met);
                }
                else
                {
                    met.MetricValue = "" + (Convert.ToInt32(met.MetricValue) + 1);
                }
                entities.SaveChanges();
                UserStream ret = entities.UserStreamSet.OfType<Recipe>().Where(u => u.PortalKey == pid && u.UserSetting.UserKey == uid).OrderByDescending(u => u.Id).FirstOrDefault();
                return ret.Id;

            }
            return recipe.Id;
        }