Esempio n. 1
0
 void Start()
 {
     WallOfDeath = WOD.GetComponent <Rigidbody2D>();
     inputField  = GameObject.FindGameObjectWithTag("Respawn");
     pl          = GameObject.FindGameObjectWithTag("Player");
     plContr     = pl.GetComponent <Movement>();
     StartCoroutine(api.Get());
     inputeado  = false;
     nuevoJuego = false;
 }
Esempio n. 2
0
        public async Task <ActionResult> Edit([Bind(Include = "Id,Name,Scoring,Description")] WOD wod)
        {
            if (ModelState.IsValid)
            {
                db.Entry(wod).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            return(View(wod));
        }
Esempio n. 3
0
        public async Task <ActionResult> AddToDates(AddWODToDatesViewModel model)
        {
            List <Class> classes = db.Classes.ToList().Where(c => c.Time.Value.Date >= model.StartDate.Date && c.Time.Value.Date <= model.EndDate.Date).ToList();
            WOD          wod     = await db.WODs.SingleAsync(w => w.Name.Equals(model.WODName));

            foreach (var cls in classes)
            {
                cls.WOD = wod;
            }
            await db.SaveChangesAsync();

            ViewBag.Success = true;
            return(RedirectToAction("Index", new { controller = "Classes" }));
        }
Esempio n. 4
0
        // GET: WOD/Details/5
        public async Task <ActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            WOD wOD = await db.WODs.FindAsync(id);

            if (wOD == null)
            {
                return(HttpNotFound());
            }
            return(View(wOD));
        }
        public async Task DwnOWD()
        {
            IsBusy = true;
            WODS.Clear();
            Exs.Clear();
            SSP = false;

            try
            {
                var t = (await WODStore.GetItemsAsync(true)).GetEnumerator();
                if (t != null)
                {
                    while (t.MoveNext())
                    {
                        if (t.Current.Date < DateTime.Now)
                        {
                            WODS.Add(t.Current);
                        }
                        else
                        {
                            upWOD = t.Current;
                            SSP   = true;
                        }
                    }
                }

                if (upWOD != null)
                {
                    if (upWOD.Exercises != null)
                    {
                        foreach (var ite in upWOD.Exercises)
                        {
                            Exs.Add(ite);
                        }
                    }

                    Ca = upWOD.Calories;
                    Dt = upWOD.Date;
                }
            }
            catch (Exception e)
            {
            }
            finally
            {
                IsBusy = false;
            }
        }
Esempio n. 6
0
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            WOD wod = await db.WODs.FindAsync(id);

            List <Class> classes = db.Classes.Where(c => c.WOD.Id.Equals(wod.Id)).ToList();

            foreach (var cls in classes)
            {
                cls.WOD = null;
            }

            db.WODs.Remove(wod);
            await db.SaveChangesAsync();

            return(RedirectToAction("Index", new { controller = "WOD" }));
        }
Esempio n. 7
0
 public IActionResult Edit([FromBody] WOD item)
 {
     try
     {
         if (item == null || !ModelState.IsValid)
         {
             return(BadRequest("Invalid State"));
         }
         ItemRepository.Update(item);
     }
     catch (Exception)
     {
         return(BadRequest("Error while creating"));
     }
     return(NoContent());
 }
Esempio n. 8
0
        public async Task <ActionResult> AddToClass(AddWODToClassViewModel model)
        {
            Class cls = db.Classes.Find(model.ClassId);

            try
            {
                WOD wod = db.WODs.Single(w => w.Name == model.WODName);
                cls.WOD = wod;
                await db.SaveChangesAsync();

                return(RedirectToAction("Details", new { controller = "Classes", id = model.ClassId }));
            } catch
            {
                model.ClassType = cls.Type;
                ViewBag.Error   = "No WOD was found by that name.";
                return(View(model));
            }
        }
        private void constructWorkoutInfo(WOD wod)
        {
            lWorkoutInfo.Text = "";
            int    i       = 1;
            string timecap = string.Empty;

            if (wod.TimeSpan.HasValue)
            {
                timecap = " (" + Utils.UnitsUtil.durationToTimeString(wod.TimeSpan.Value) + ")  hh:mm:ss";
            }
            lWorkoutInfo.Text = "Workout Style: <b>" + wod.WODType.Name + "</b>" + timecap + "<br /><br />";
            foreach (WODSet set in wod.WODSets)
            {
                lWorkoutInfo.Text += "<span class=\"wodSet\">Set: " + (i++) + "</span>";
                foreach (WODExercise we in set.WODExercises)
                {
                    lWorkoutInfo.Text += "<span class=\"wodEx\">";
                    string additional = string.Empty;
                    if (we.MenDist.HasValue && we.MenDist.Value > 0)
                    {
                        additional += "Men: " + Affine.Utils.UnitsUtil.systemDefaultToUnits(we.MenDist.Value, Affine.Utils.UnitsUtil.MeasureUnit.UNIT_M) + Affine.Utils.UnitsUtil.unitToStringName(Affine.Utils.UnitsUtil.MeasureUnit.UNIT_M);
                    }
                    if (we.WomenDist.HasValue && we.WomenDist.Value > 0)
                    {
                        additional += ", Women: " + Affine.Utils.UnitsUtil.systemDefaultToUnits(we.MenDist.Value, Affine.Utils.UnitsUtil.MeasureUnit.UNIT_M) + Affine.Utils.UnitsUtil.unitToStringName(Affine.Utils.UnitsUtil.MeasureUnit.UNIT_M);
                    }
                    if (we.MenRx.HasValue && we.MenRx.Value > 0)
                    {
                        additional += "Men: " + Affine.Utils.UnitsUtil.systemDefaultToUnits(we.MenRx.Value, Affine.Utils.UnitsUtil.MeasureUnit.UNIT_LBS) + Affine.Utils.UnitsUtil.unitToStringName(Affine.Utils.UnitsUtil.MeasureUnit.UNIT_LBS);
                    }
                    if (we.WomenRx.HasValue && we.WomenRx.Value > 0)
                    {
                        additional += ", Women: " + Affine.Utils.UnitsUtil.systemDefaultToUnits(we.WomenRx.Value, Affine.Utils.UnitsUtil.MeasureUnit.UNIT_LBS) + Affine.Utils.UnitsUtil.unitToStringName(Affine.Utils.UnitsUtil.MeasureUnit.UNIT_LBS);
                    }

                    lWorkoutInfo.Text += we.Reps + " X " + we.Exercise.Name + (!string.IsNullOrWhiteSpace(additional) ? " (" + additional + ")" : "") + (!string.IsNullOrWhiteSpace(we.Notes) ? " Notes: " + we.Notes : "") + "<br />";
                    lWorkoutInfo.Text += "</span>";
                }
            }
        }
Esempio n. 10
0
        private void LoadChartData()
        {
            System.Web.Script.Serialization.JavaScriptSerializer jsSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
            // need a list of people in the group
            aqufitEntities entities = new aqufitEntities();
            long[] memberIds = entities.UserFriends.Where(f => (f.SrcUserSettingKey == GroupSettings.Id || f.DestUserSettingKey == GroupSettings.Id) && f.Relationship >= (int)Affine.Utils.ConstsUtil.Relationships.GROUP_OWNER ).Select(f => f.SrcUserSettingKey == GroupSettings.Id ? f.DestUserSettingKey : f.SrcUserSettingKey).ToArray();
            // How many members are there in the group.. this will determin how far back in time we will look for workouts
            int numMembers = memberIds.Length;
            // For now we will always look over the last 7 days..
            DateTime today = DateTime.Today;
            DateTime past = today.AddDays(-7);

            IQueryable<UserStream> streamSet = entities.UserStreamSet
                                        .Include("UserSetting").Include("WOD")
                                        .Where(w => w.Date.CompareTo(past) > 0)
                                        .Where(LinqUtils.BuildContainsExpression<UserStream, long>(w => w.UserSetting.Id, memberIds));          
            // TODO: we need to get a better idea of who is going to need hydrating before we do it.

            streamSet.Select(w => w.UserSetting).ToArray();     // THIS IS BAD.. Hydrating a lot of users profiles..
            IQueryable<IGrouping<long?, Workout>> groupWorkouts = streamSet.OfType<Workout>().GroupBy(w => w.WorkoutTypeKey);
            // Lets find out what this group is all about ... IE what type of workouts dominate
            long ukey = -1;
            long key = -1;
            int usize = 0;
            int size = 0;
            foreach (IGrouping<long?, Workout> g in groupWorkouts)
            {
                UserSettings us = g.Select(w => w.UserSetting).First();
                // first see if we can find anything that the current user is in
                if (UserSettings != null && g.FirstOrDefault(w => (long)w.UserSettingReference.EntityKey.EntityKeyValues[0].Value == UserSettings.Id) != null)
                {
                    int c = g.Count();
                    if ( c > size)
                    {
                        ukey = g.Key.Value;
                        usize = c;
                    }
                }else{
                    int c = g.Count();
                    if ( c > size)
                    {
                        key = g.Key.Value;
                        size = c;
                    }
                }
            }   
            if( ukey > 0 ){ // we found something that this user is in
                key = ukey;
                size = usize;
            }
            IGrouping<long?, Workout> workouts = groupWorkouts.Where(g => g.Key == key).FirstOrDefault();
            Affine.Data.Managers.IDataManager dataMan = Affine.Data.Managers.LINQ.DataManager.Instance;
            Affine.Data.json.LeaderBoardWOD[] leaderBoard = dataMan.CalculatCrossFitLeaderBoard(base.GroupSettings.Id);
            atiLeaderBoard.Visible = true;


            WODSchedule scheduled = entities.WODSchedules.Include("WOD").Where(w => w.UserSetting.Id == GroupSettings.Id).OrderByDescending(w => w.Id).FirstOrDefault();
            litTodaysWOD.Text = "<h3>Last Scheduled Workout:";
            if (scheduled != null)
            {
                WOD wod = scheduled.WOD;
                litTodaysWOD.Text += " <a style=\"font-size: 16px; color: #0095cd; font-weight: bold;\" href=\"/workouts/" + wod.Id + "\">" + wod.Name + "</a></h3>";
                Affine.WebService.StreamService ss = new WebService.StreamService();
                string jsonEveryone = ss.getStreamDataForWOD(wod.Id, -1, 0, 25, true, true, -1, -1, -1);

                string jsonYou = string.Empty;
                string js = string.Empty;
                js += " Aqufit.Page." + atiWorkoutHighChart.ID + ".fromStreamData('" + jsonEveryone + "'); ";
                if (base.UserSettings != null)
                {
                    jsonYou = ss.getStreamDataForWOD(wod.Id, base.UserSettings.Id, 0, 10, true, true, -1, -1, -1);
                    js += " Aqufit.Page." + atiWorkoutHighChart.ID + ".fromYourStreamData('" + jsonYou + "'); ";
                }


                js += " Aqufit.Page." + atiWorkoutHighChart.ID + ".drawChart(); ";

                RadAjaxManager1.ResponseScripts.Add(" $(function(){ Aqufit.Page." + atiLeaderBoard.ID + ".loadLeaderBoardFromJson('" + jsSerializer.Serialize(leaderBoard) + "'); " + js + " });");
            }
            else
            {
                litTodaysWOD.Text += " <em>Unavailble</em></h3>";
                atiWorkoutHighChart.Visible = false;
            }
            // so now KEY is the most (type) of workout
            // There are now a couple special cases... (crossfit workouts)
         /*
            if (key == (int)Utils.WorkoutUtil.WorkoutType.CROSSFIT)
            {
                Affine.Data.Managers.IDataManager dataMan = Affine.Data.Managers.LINQ.DataManager.Instance;
                Affine.Data.json.LeaderBoardWOD[] females = dataMan.CalculatCrossFitLeaderBoard(base.GroupSettings.Id, "F");
                Affine.Data.json.LeaderBoardWOD[] males = dataMan.CalculatCrossFitLeaderBoard(base.GroupSettings.Id, "M");
                atiLeaderBoardMale.Visible = true;
                atiLeaderBoardMale.LeaderWODList = males;
                atiLeaderBoardFemale.Visible = true;
                atiLeaderBoardFemale.LeaderWODList = females;
            }
            else
            {
                if (workouts != null)
                {
                    // TODO: now for some reason we can not hydrate the "UserSettings" so we need to get them now
                    long[] ids = workouts.Select(w => (long)w.UserSettingReference.EntityKey.EntityKeyValues[0].Value).ToArray();

                    // for now the other types of workout are just a quick grab...

                }
            }
          */
          //  ScriptManager.RegisterStartupScript(this, Page.GetType(), "wt", "alert('" +  jsSerializer.Serialize( title ) + "');", true);
        }
Esempio n. 11
0
        private void SaveCompWorkoutPR()
        {
            Affine.Data.Managers.IDataManager dataMan = Affine.Data.Managers.LINQ.DataManager.Instance;
            aqufitEntities entities = new aqufitEntities();
            int            exCount  = 0;

            try
            {
                if (atiTimeSpanFran.Time > 0)
                {   // houston we have a fran time...
                    bool addFran = true;
                    if (!string.IsNullOrWhiteSpace(hiddenFranId.Value))
                    {
                        long    wId  = Convert.ToInt64(hiddenFranId.Value);
                        Workout fran = entities.UserStreamSet.OfType <Workout>().FirstOrDefault(w => w.Id == wId);
                        if (fran.Duration.Value == atiTimeSpanFran.Time)
                        {
                            addFran = false;
                        }
                    }
                    if (addFran)
                    {
                        WOD fran = entities.WODs.FirstOrDefault(w => w.Id == Affine.Utils.ConstsUtil.FRAN_ID);
                        dataMan.SaveWorkout(UserSettings, (long)Affine.Utils.WorkoutUtil.WorkoutType.CROSSFIT, (int)Affine.Utils.WorkoutUtil.DataSrc.MANUAL_NO_MAP, DateTime.Now, atiTimeSpanFran.Time, "Entered PR for Competition data", true, fran.Id, null, null);
                    }
                }
            }
            catch (Exception) { exCount++; }

            try
            {
                if (atiTimeSpanHelen.Time > 0)
                {   // houston we have a Helen time...
                    bool addHelen = true;
                    if (!string.IsNullOrWhiteSpace(hiddenHelenKey.Value))
                    {
                        long    wId   = Convert.ToInt64(hiddenHelenKey.Value);
                        Workout Helen = entities.UserStreamSet.OfType <Workout>().FirstOrDefault(w => w.Id == wId);
                        if (Helen.Duration.Value == atiTimeSpanHelen.Time)
                        {
                            addHelen = false;
                        }
                    }
                    if (addHelen)
                    {
                        WOD Helen = entities.WODs.FirstOrDefault(w => w.Id == Affine.Utils.ConstsUtil.HELEN_ID);
                        dataMan.SaveWorkout(UserSettings, (long)Affine.Utils.WorkoutUtil.WorkoutType.CROSSFIT, (int)Affine.Utils.WorkoutUtil.DataSrc.MANUAL_NO_MAP, DateTime.Now, atiTimeSpanHelen.Time, "Entered PR for Competition data", true, Helen.Id, null, null);
                    }
                }
            }
            catch (Exception) { exCount++; }

            try
            {
                if (atiTimeSpanFilthyFifty.Time > 0)
                {   // houston we have a Helen time...
                    bool addFF = true;
                    if (!string.IsNullOrWhiteSpace(hiddenFilthyFiftyKey.Value))
                    {
                        long    wId = Convert.ToInt64(hiddenFilthyFiftyKey.Value);
                        Workout FF  = entities.UserStreamSet.OfType <Workout>().FirstOrDefault(w => w.Id == wId);
                        if (FF.Duration.Value == atiTimeSpanFilthyFifty.Time)
                        {
                            addFF = false;
                        }
                    }
                    if (addFF)
                    {
                        WOD FF = entities.WODs.FirstOrDefault(w => w.Id == Affine.Utils.ConstsUtil.FILTHY50_ID);
                        dataMan.SaveWorkout(UserSettings, (long)Affine.Utils.WorkoutUtil.WorkoutType.CROSSFIT, (int)Affine.Utils.WorkoutUtil.DataSrc.MANUAL_NO_MAP, DateTime.Now, atiTimeSpanFilthyFifty.Time, "Entered PR for Competition data", true, FF.Id, null, null);
                    }
                }
            }
            catch (Exception) { exCount++; }

            try
            {
                if (atiTimeSpanGrace.Time > 0)
                {   // houston we have a Helen time...
                    bool addGrace = true;
                    if (!string.IsNullOrWhiteSpace(hiddenGraceKey.Value))
                    {
                        long    wId   = Convert.ToInt64(hiddenGraceKey.Value);
                        Workout grace = entities.UserStreamSet.OfType <Workout>().FirstOrDefault(w => w.Id == wId);
                        if (grace.Duration.Value == atiTimeSpanGrace.Time)
                        {
                            addGrace = false;
                        }
                    }
                    if (addGrace)
                    {
                        WOD grace = entities.WODs.FirstOrDefault(w => w.Id == Affine.Utils.ConstsUtil.GRACE_ID);
                        dataMan.SaveWorkout(UserSettings, (long)Affine.Utils.WorkoutUtil.WorkoutType.CROSSFIT, (int)Affine.Utils.WorkoutUtil.DataSrc.MANUAL_NO_MAP, DateTime.Now, atiTimeSpanGrace.Time, "Entered PR for Competition data", true, grace.Id, null, null);
                    }
                }
            }
            catch (Exception) { exCount++; }

            try
            {
                if (!string.IsNullOrWhiteSpace(txtFGB.Text))
                {
                    bool   addFGB = true;
                    double score  = Convert.ToDouble(txtFGB.Text);
                    if (!string.IsNullOrWhiteSpace(hiddenFGBKey.Value))
                    {
                        long    wId = Convert.ToInt64(hiddenFGBKey.Value);
                        Workout fgb = entities.UserStreamSet.OfType <Workout>().FirstOrDefault(w => w.Id == wId);
                        if (fgb.Score.Value == score)
                        {
                            addFGB = false;
                        }
                    }
                    if (addFGB)
                    {
                        WOD fgb = entities.WODs.FirstOrDefault(w => w.Id == Affine.Utils.ConstsUtil.FGB_ID);
                        dataMan.SaveWorkout(UserSettings, (long)Affine.Utils.WorkoutUtil.WorkoutType.CROSSFIT, (int)Affine.Utils.WorkoutUtil.DataSrc.MANUAL_NO_MAP, DateTime.Now, null, "Entered PR for Competition data", true, fgb.Id, score, null);
                    }
                }
            }
            catch (Exception) { exCount++; }

            try
            {
                if (!string.IsNullOrWhiteSpace(txtMaxPullups.Text))
                {   // houston we have a Helen time...
                    bool   addMaxPullups = true;
                    double score         = Convert.ToDouble(txtMaxPullups.Text);
                    if (!string.IsNullOrWhiteSpace(hiddenMaxPullupKey.Value))
                    {
                        long    wId        = Convert.ToInt64(hiddenMaxPullupKey.Value);
                        Workout maxPullups = entities.UserStreamSet.OfType <Workout>().FirstOrDefault(w => w.Id == wId);
                        if (maxPullups.Score.Value == score)
                        {
                            addMaxPullups = false;
                        }
                    }
                    if (addMaxPullups)
                    {
                        WOD maxPullups = entities.WODs.FirstOrDefault(w => w.Id == Affine.Utils.ConstsUtil.MAX_PULLUPS_ID);
                        dataMan.SaveWorkout(UserSettings, (long)Affine.Utils.WorkoutUtil.WorkoutType.CROSSFIT, (int)Affine.Utils.WorkoutUtil.DataSrc.MANUAL_NO_MAP, DateTime.Now, null, "Entered PR for Competition data", true, maxPullups.Id, score, null);
                    }
                }
            }
            catch (Exception) { exCount++; }

            try
            {
                if (!string.IsNullOrWhiteSpace(txtMaxBS.Text))
                {   // houston we have a Helen time...
                    bool   addMaxBS = true;
                    double w1       = Convert.ToDouble(txtMaxBS.Text);
                    double weight   = Affine.Utils.UnitsUtil.unitsToSystemDefualt(w1, atiMaxBSUnits.Value);
                    if (!string.IsNullOrWhiteSpace(hiddenMaxBackSquatKey.Value))
                    {
                        long    wId   = Convert.ToInt64(hiddenMaxBackSquatKey.Value);
                        Workout maxBS = entities.UserStreamSet.OfType <Workout>().FirstOrDefault(w => w.Id == wId);
                        if (maxBS.Max.Value == weight)
                        {
                            addMaxBS = false;
                        }
                    }
                    if (addMaxBS)
                    {
                        WOD maxBS = entities.WODs.FirstOrDefault(w => w.Id == Affine.Utils.ConstsUtil.MAX_BACK_SQUAT_ID);
                        dataMan.SaveWorkout(UserSettings, (long)Affine.Utils.WorkoutUtil.WorkoutType.CROSSFIT, (int)Affine.Utils.WorkoutUtil.DataSrc.MANUAL_NO_MAP, DateTime.Now, null, "Entered PR for Competition data", true, maxBS.Id, w1, (int)atiMaxBSUnits.Value);
                    }
                }
            }
            catch (Exception) { exCount++; }

            try
            {
                if (!string.IsNullOrWhiteSpace(txtMaxClean.Text))
                {   // houston we have a Helen time...
                    bool   addMaxClean = true;
                    double w1          = Convert.ToDouble(txtMaxClean.Text);
                    double weight      = Affine.Utils.UnitsUtil.unitsToSystemDefualt(w1, atiMaxCleanUnits.Value);
                    if (!string.IsNullOrWhiteSpace(hiddenMaxCleanKey.Value))
                    {
                        long    wId      = Convert.ToInt64(hiddenMaxCleanKey.Value);
                        Workout maxClean = entities.UserStreamSet.OfType <Workout>().FirstOrDefault(w => w.Id == wId);
                        if (maxClean.Max.Value == weight)
                        {
                            addMaxClean = false;
                        }
                    }
                    if (addMaxClean)
                    {
                        WOD maxClean = entities.WODs.FirstOrDefault(w => w.Id == Affine.Utils.ConstsUtil.MAX_CLEAN_ID);
                        dataMan.SaveWorkout(UserSettings, (long)Affine.Utils.WorkoutUtil.WorkoutType.CROSSFIT, (int)Affine.Utils.WorkoutUtil.DataSrc.MANUAL_NO_MAP, DateTime.Now, null, "Entered PR for Competition data", true, maxClean.Id, w1, (int)atiMaxCleanUnits.Value);
                    }
                }
            }
            catch (Exception) { exCount++; }

            try
            {
                if (!string.IsNullOrWhiteSpace(txtMaxDeadlift.Text))
                {   // houston we have a Helen time...
                    bool   addMaxDeadlift = true;
                    double w1             = Convert.ToDouble(txtMaxDeadlift.Text);
                    double weight         = Affine.Utils.UnitsUtil.unitsToSystemDefualt(w1, atiMaxDeadliftUnits.Value);
                    if (!string.IsNullOrWhiteSpace(hiddenMaxDeadliftKey.Value))
                    {
                        long    wId         = Convert.ToInt64(hiddenMaxDeadliftKey.Value);
                        Workout maxDeadlift = entities.UserStreamSet.OfType <Workout>().FirstOrDefault(w => w.Id == wId);
                        if (maxDeadlift.Max.Value == weight)
                        {
                            addMaxDeadlift = false;
                        }
                    }
                    if (addMaxDeadlift)
                    {
                        WOD maxDeadlift = entities.WODs.FirstOrDefault(w => w.Id == Affine.Utils.ConstsUtil.MAX_DEADLIFT_ID);
                        dataMan.SaveWorkout(UserSettings, (long)Affine.Utils.WorkoutUtil.WorkoutType.CROSSFIT, (int)Affine.Utils.WorkoutUtil.DataSrc.MANUAL_NO_MAP, DateTime.Now, null, "Entered PR for Competition data", true, maxDeadlift.Id, w1, (int)atiMaxDeadliftUnits.Value);
                    }
                }
            }
            catch (Exception) { exCount++; }

            try
            {
                if (!string.IsNullOrWhiteSpace(txtMaxSnatch.Text))
                {   // houston we have a Helen time...
                    bool   addMaxSnatch = true;
                    double w1           = Convert.ToDouble(txtMaxSnatch.Text);
                    double weight       = Affine.Utils.UnitsUtil.unitsToSystemDefualt(w1, atiMaxSnatchUnits.Value);
                    if (!string.IsNullOrWhiteSpace(hiddenMaxSnatchKey.Value))
                    {
                        long    wId       = Convert.ToInt64(hiddenMaxSnatchKey.Value);
                        Workout maxSnatch = entities.UserStreamSet.OfType <Workout>().FirstOrDefault(w => w.Id == wId);
                        if (maxSnatch.Max.Value == weight)
                        {
                            addMaxSnatch = false;
                        }
                    }
                    if (addMaxSnatch)
                    {
                        WOD maxSnatch = entities.WODs.FirstOrDefault(w => w.Id == Affine.Utils.ConstsUtil.MAX_SNATCH_ID);
                        dataMan.SaveWorkout(UserSettings, (long)Affine.Utils.WorkoutUtil.WorkoutType.CROSSFIT, (int)Affine.Utils.WorkoutUtil.DataSrc.MANUAL_NO_MAP, DateTime.Now, null, "Entered PR for Competition data", true, maxSnatch.Id, w1, (int)atiMaxSnatchUnits.Value);
                    }
                }
            }
            catch (Exception) { exCount++; }

            //    RadAjaxManager1.ResponseScripts.Add("alert('ex Count: "+exCount+"');");
        }
Esempio n. 12
0
        protected void bAjaxPostback_Click(object sender, EventArgs e)
        {
            try
            {
                Affine.Data.Managers.IDataManager dataMan = Affine.Data.Managers.LINQ.DataManager.Instance;
                aqufitEntities entities = new aqufitEntities();
                switch (hiddenAjaxAction.Value)
                {
                case "AddWOD":
                    long wodKey   = Convert.ToInt64(hiddenAjaxValue.Value);
                    int  compType = Convert.ToInt32(hiddenAjaxValue2.Value);
                    long poolKey  = 0;
                    if (compType == (int)Affine.Utils.WorkoutUtil.CompetitionCategory.TEAM)
                    {
                        poolKey = Convert.ToInt32(hiddenAjaxValue3.Value);
                    }
                    WOD         wod  = entities.WODs.Include("WODType").FirstOrDefault(w => w.Id == wodKey);
                    Competition comp = entities.Competitions.Include("CompetitionWODs").FirstOrDefault(c => c.Id == CompetitionKey);
                    if (wod != null && comp != null)
                    {
                        CompetitionWOD compWod = new CompetitionWOD()
                        {
                            WOD                 = wod,
                            Order               = comp.CompetitionWODs.Count,
                            Competition         = comp,
                            CompetitionCategory = entities.CompetitionCategories.FirstOrDefault(c => c.Id == compType),
                            CompetitionTeamPool = entities.CompetitionTeamPools.FirstOrDefault(tp => tp.Id == poolKey)
                        };
                        entities.AddToCompetitionWODs(compWod);
                        entities.SaveChanges();
                        RadAjaxManager1.ResponseScripts.Add(" Aqufit.Windows.WorkoutFinder.close(); Aqufit.Page.Actions.refreshGrid(" + compType + "); ");
                    }
                    break;

                case "DeleteWOD":
                    long           compWodKey = Convert.ToInt64(hiddenAjaxValue.Value);
                    CompetitionWOD compW      = entities.CompetitionWODs.Include("CompetitionCategory").FirstOrDefault(c => c.Id == compWodKey && c.Competition.Id == CompetitionKey);
                    if (compW != null)
                    {
                        RadAjaxManager1.ResponseScripts.Add(" Aqufit.Page.Actions.refreshGrid(" + compW.CompetitionCategory.Id + "); ");
                        entities.DeleteObject(compW);
                        entities.SaveChanges();
                        // rebuild the order of the workouts now..
                        CompetitionWOD[] orderList = entities.CompetitionWODs.Where(c => c.Competition.Id == CompetitionKey).OrderBy(c => c.Order).ToArray();
                        int order = 0;
                        foreach (CompetitionWOD cw in orderList)
                        {
                            cw.Order = (order++);
                        }
                        entities.SaveChanges();
                    }
                    break;

                case "AddTeamPool":
                    string name = Convert.ToString(hiddenAjaxValue.Value);
                    CompetitionTeamPool pool = new CompetitionTeamPool()
                    {
                        Name        = name,
                        Competition = entities.Competitions.FirstOrDefault(c => c.Id == CompetitionKey)
                    };
                    entities.AddToCompetitionTeamPools(pool);
                    entities.SaveChanges();
                    RadAjaxManager1.ResponseScripts.Add(" Aqufit.Windows.TeamPoolWin.close(); Aqufit.Page.Actions.refreshTeamPoolGrid(); ");
                    break;

                case "LoadTeamPool":
                    long     tpKey        = Convert.ToInt64(hiddenAjaxValue.Value);
                    string[] teamKeyArray = entities.CompetitionRegistrations.Where(r => r.CompetitionRegistration2TeamPool
                                                                                    .FirstOrDefault(c => c.CompetitionTeamPool.Id == tpKey) != null)
                                            .Select(r => r.Id).Cast <string>().ToArray();
                    string jsTeamArray = "[]";
                    if (teamKeyArray.Length > 0)
                    {
                        jsTeamArray = "[" + teamKeyArray.Aggregate((i, j) => "" + i + "," + j) + "]";
                    }
                    RadAjaxManager1.ResponseScripts.Add("Aqufit.Windows.TeamPoolManagerWin.loadData(" + jsTeamArray + "); ");
                    break;

                case "SaveTeamPool":
                    long tPoolKey = Convert.ToInt64(hiddenAjaxValue.Value);
                    CompetitionRegistration2TeamPool[] clearArray = entities.CompetitionRegistration2TeamPool.Where(c => c.CompetitionTeamPool.Id == tPoolKey).ToArray();
                    foreach (CompetitionRegistration2TeamPool clear in clearArray)
                    {
                        entities.DeleteObject(clear);
                    }
                    entities.SaveChanges();
                    CompetitionTeamPool tpool = entities.CompetitionTeamPools.FirstOrDefault(tp => tp.Id == tPoolKey);
                    foreach (RadListBoxItem item in RadListBoxPoolDest.Items)
                    {
                        long rId = Convert.ToInt64(item.Value);
                        CompetitionRegistration2TeamPool c2t = new CompetitionRegistration2TeamPool()
                        {
                            CompetitionTeamPool     = tpool,
                            CompetitionRegistration = entities.CompetitionRegistrations.FirstOrDefault(r => r.Id == rId)
                        };
                        entities.AddToCompetitionRegistration2TeamPool(c2t);
                    }
                    entities.SaveChanges();
                    RadListBoxTeamSource.DataSource = entities.CompetitionRegistrations.Where(r => r.Competition.Id == CompetitionKey && r.CompetitionCategory.Id == (int)Affine.Utils.WorkoutUtil.CompetitionCategory.TEAM).Select(r => new { Name = r.TeamName, Value = r.Id }).ToArray();
                    RadAjaxManager1.ResponseScripts.Add(" Aqufit.Windows.TeamPoolManagerWin.close(); Aqufit.Page.Actions.refreshTeamPoolGrid(); ");
                    break;
                }
            }
            catch (Exception ex)
            {
                RadAjaxManager1.ResponseScripts.Add("Aqufit.Page.Actions.ShowFail('ERROR: There was a problem with the action (" + ex.StackTrace.Replace("'", "").Replace("\r", "").Replace("\n", "") + ")');");
            }
        }
Esempio n. 13
0
        public WOD GetItem(string id)
        {
            WOD item = ItemRepository.Get(id);

            return(item);
        }
Esempio n. 14
0
        private void constructWorkoutInfo(WOD wod)
        {
            lWorkoutInfo.Text = "";
            int i = 1;
            string timecap = string.Empty;
            if (wod.TimeSpan.HasValue)
            {
                timecap = " ("+ Utils.UnitsUtil.durationToTimeString(wod.TimeSpan.Value) + ")  hh:mm:ss";
            }
            lWorkoutInfo.Text = "Workout Style: <b>" + wod.WODType.Name + "</b>" + timecap + "<br /><br />";
            foreach (WODSet set in wod.WODSets)
            {
                lWorkoutInfo.Text += "<span class=\"wodSet\">Set: " + (i++) + "</span>";
                foreach (WODExercise we in set.WODExercises)
                {
                    lWorkoutInfo.Text += "<span class=\"wodEx\">";
                    string additional = string.Empty;
                    if (we.MenDist.HasValue && we.MenDist.Value > 0)
                    {
                        additional += "Men: " + Affine.Utils.UnitsUtil.systemDefaultToUnits(we.MenDist.Value, Affine.Utils.UnitsUtil.MeasureUnit.UNIT_M) + Affine.Utils.UnitsUtil.unitToStringName(Affine.Utils.UnitsUtil.MeasureUnit.UNIT_M);
                    }
                    if (we.WomenDist.HasValue && we.WomenDist.Value > 0)
                    {
                        additional += ", Women: " + Affine.Utils.UnitsUtil.systemDefaultToUnits(we.MenDist.Value, Affine.Utils.UnitsUtil.MeasureUnit.UNIT_M) + Affine.Utils.UnitsUtil.unitToStringName(Affine.Utils.UnitsUtil.MeasureUnit.UNIT_M);
                    }
                    if (we.MenRx.HasValue && we.MenRx.Value > 0)
                    {
                        additional += "Men: " + Affine.Utils.UnitsUtil.systemDefaultToUnits(we.MenRx.Value, Affine.Utils.UnitsUtil.MeasureUnit.UNIT_LBS) + Affine.Utils.UnitsUtil.unitToStringName(Affine.Utils.UnitsUtil.MeasureUnit.UNIT_LBS);
                    }
                    if (we.WomenRx.HasValue && we.WomenRx.Value > 0)
                    {
                        additional += ", Women: " + Affine.Utils.UnitsUtil.systemDefaultToUnits(we.WomenRx.Value, Affine.Utils.UnitsUtil.MeasureUnit.UNIT_LBS) + Affine.Utils.UnitsUtil.unitToStringName(Affine.Utils.UnitsUtil.MeasureUnit.UNIT_LBS);
                    }

                    lWorkoutInfo.Text +=  we.Reps + " X " + we.Exercise.Name + (!string.IsNullOrWhiteSpace(additional) ? " (" + additional + ")" : "") + (!string.IsNullOrWhiteSpace(we.Notes) ? " Notes: " + we.Notes : "") + "<br />";
                    lWorkoutInfo.Text += "</span>";
                }
            }
        }
Esempio n. 15
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// Page_Load runs when the control is loaded
        /// </summary>
        /// <remarks>
        /// </remarks>
        /// <history>
        /// </history>
        /// -----------------------------------------------------------------------------
        protected void Page_Load(System.Object sender, System.EventArgs e)
        {
            base.Page_Load(sender, e);
            try
            {               
                this.BackgroundImageUrl = ResolveUrl("~/DesktopModules/ATI_Base/services/images/profile.aspx")+"?u=-1&p=0&bg=1";
                if (!Page.IsPostBack && !Page.IsCallback)
                {
                    baseUrl = ResolveUrl("~/");
                    aqufitEntities entities = new aqufitEntities();
                    ServiceReference service = new ServiceReference("~/DesktopModules/ATI_Base/resources/services/StreamService.asmx");
                    service.InlineScript = true;
                    ScriptManager.GetCurrent(Page).Services.Add(service);

                    imgSearch.Src = ResolveUrl("~/DesktopModules/ATI_Base/resources/images/iSearch.png");
                    if (GroupSettings == null)
                    {       // Let people search for a group in this case..
                        atiGroupListPanel.Visible = true;
                        atiGroupProfile.Visible = false;

                        if (this.UserSettings == null)
                        {
                            pageMyGroups.Visible = false;
                            tabMyGroups.Visible = false;
                        }

                        if (this.UserSettings != null && (this.UserSettings.LatHome != null && this.UserSettings.LatHome.Value > 0.0))
                        {
                            atiGMap.Lat = this.UserSettings.LatHome.Value;
                            atiGMap.Lng = this.UserSettings.LngHome.Value;
                            atiGMap.Zoom = 13;
                        }
                        imgAd.Src = ResolveUrl("~/portals/0/images/adTastyPaleo.jpg");
                        WebService.StreamService streamService = new WebService.StreamService();
                        if (this.UserSettings != null)
                        {   // TODO: need to hide the "My Group" section
                            string json = streamService.getGroupListData(this.UserSettings.Id, 0, 25);
                            ScriptManager.RegisterStartupScript(this, Page.GetType(), "MyGroups", "$(function(){ Aqufit.Page.atiMyGroupList.generateStreamDom('" + json + "'); });", true);
                        }
                       // string search = streamService.searchGroupListData(PortalId, null, 0, 15);

                        atiMyGroupList.IsOwner = true;

                        SetupFeaturedGroups();

                        // we need to setup for a location based group search                    
                       // ScriptManager.RegisterStartupScript(this, Page.GetType(), "GroupSearch", "$(function(){ Aqufit.Page.atiGroupSearch.generateStreamDom('" + search + "'); });", true);
                    }
                    else
                    {
                        atiWebLinksList.ProfileSettings = GroupSettings;
                        aHistory.HRef = baseUrl + GroupSettings.UserName + "/workout-history";
                        aLeaders.HRef = baseUrl + GroupSettings.UserName + "/achievements";
                        aMembers.HRef = baseUrl + GroupSettings.UserName + "/friends";
                        atiProfile.ProfileSettings = GroupSettings;
                        this.ProfileCSS = GroupSettings.CssStyle;
                        atiWorkoutScheduler.ProfileSettings = GroupSettings;
                       
                        litGroupName.Text = "<h2>" + GroupSettings.UserFirstName + "</h2>";
                        imgAdRight.Src = ResolveUrl("/portals/0/images/adTastyPaleo.jpg");
                        LoadChartData();

                        if (Request["w"] != null)
                        {
                            RadAjaxManager1.ResponseScripts.Add("$(function(){ Aqufit.Page.Tabs.SwitchTab(1); });");
                            long wId = Convert.ToInt64(Request["w"]);
                            WOD wod = entities.WODs.Include("WODType").FirstOrDefault(w => w.Id == wId);
                            if (wod != null)
                            {
                                atiWorkoutScheduler.SetControlToWOD = wod;
                            }
                        }

                        long[] friendIds = entities.UserFriends.Where(f => (f.SrcUserSettingKey == this.GroupSettings.Id || f.DestUserSettingKey == this.GroupSettings.Id) && f.Relationship >= (int)Affine.Utils.ConstsUtil.Relationships.GROUP_OWNER).Select(f => (f.SrcUserSettingKey == this.GroupSettings.Id ? f.DestUserSettingKey : f.SrcUserSettingKey)).ToArray();
                        IQueryable<Affine.Data.User> friends = entities.UserSettings.OfType<User>().Where(LinqUtils.BuildContainsExpression<User, long>(s => s.Id, friendIds)).OrderBy(s => s.Id);
                        int fcount = friends.Count();
                        UserSettings[] firendSettings = null;
                        if (fcount > 6)
                        {
                            Random rand = new Random((int)DateTime.Now.Millisecond);
                            int skip = rand.Next(fcount - 6);
                            firendSettings = friends.Skip(skip).Take(6).ToArray();
                        }
                        else
                        {
                            firendSettings = friends.Take(6).ToArray();
                        }
                        // PERMISSIONS: The action panel is only visible to OWNERS                     
                        if (GroupPermissions == ConstsUtil.Relationships.GROUP_OWNER || GroupPermissions == ConstsUtil.Relationships.GROUP_ADMIN)  // Need to find if user is an admin
                        {
                            atiProfile.IsOwner = true;
                            tabWorkout.Visible = true;
                            pageScheduleWOD.Visible = true;
                            bJoinGroup.Visible = false;     // for now owners can never leave the group ... mu ha ha ha
                            RadAjaxManager1.AjaxSettings.AddAjaxSetting(atiCommentPanel, atiCommentPanel, RadAjaxLoadingPanel1);
                        }
                        else if (GroupPermissions == ConstsUtil.Relationships.GROUP_MEMBER)
                        {
                            bJoinGroup.Text = "Leave Group";
                            RadAjaxManager1.AjaxSettings.AddAjaxSetting(atiCommentPanel, atiCommentPanel, RadAjaxLoadingPanel1);
                            RadAjaxManager1.AjaxSettings.AddAjaxSetting(bJoinGroup, bJoinGroup, RadAjaxLoadingPanel1);
                        }
                        else
                        {
                            tabComment.Visible = false;
                            pageViewComment.Visible = false;
                            RadAjaxManager1.AjaxSettings.AddAjaxSetting(bJoinGroup, bJoinGroup, RadAjaxLoadingPanel1);
                        }                      
                        // settup the users web links                    
                        this.BackgroundImageUrl = ResolveUrl("~/DesktopModules/ATI_Base/services/images/profile.aspx") + "?us=" + GroupSettings.Id + "&bg=1";
                        this.ProfileCSS = GroupSettings.CssStyle;                         
                        
                    }
                }
                
            }
            catch (Exception exc) //Module failed to load
            {
                Exceptions.ProcessModuleLoadException(this, exc);
            }         
        }
Esempio n. 16
0
        protected void bAjaxPostback_Click(object sender, EventArgs e)
        {
            try
            {
                aqufitEntities entities = new aqufitEntities();
                switch (hiddenAjaxAction.Value)
                {
                case "addWorkout":
                    // few things to do here...
                    // 1) check to see if this route is already in the fav.
                    long        wid   = Convert.ToInt64(hiddenAjaxValue.Value);
                    User2WODFav check = entities.User2WODFav.FirstOrDefault(w => w.UserSetting.Id == this.UserSettings.Id && w.WOD.Id == wid);
                    if (check != null)
                    {
                        // TODO: postback a message saying that the route is already there.
                        //    status = "Route already in list.  TODO: dialog with a way to 'view my routes' | 'record workout for route'";
                    }
                    else
                    {       // add the WOD.
                        WOD          wod = entities.WODs.First(w => w.Id == wid);
                        UserSettings us  = entities.UserSettings.First(u => u.Id == UserSettings.Id);
                        User2WODFav  fav = new User2WODFav()
                        {
                            UserSetting = us,
                            WOD         = wod
                        };
                        entities.AddToUser2WODFav(fav);
                        entities.SaveChanges();
                        //TODO: dialog with a way to 'view my workouts' | 'record this workout'";
                    }
                    // TODO: should not see this for when the check is null above..
                    RadAjaxManager1.ResponseScripts.Add(" Aqufit.Windows.WorkoutAddedDialog.open(); ");
                    break;

                case "remWorkout":
                    long        remid = Convert.ToInt64(hiddenAjaxValue.Value);
                    User2WODFav toRem = entities.User2WODFav.FirstOrDefault(w => w.UserSetting.Id == this.UserSettings.Id && w.WOD.Id == remid);
                    if (toRem != null)
                    {
                        // remove the route from fav... any workouts will still be logged though.
                        entities.DeleteObject(toRem);
                        entities.SaveChanges();
                    }
                    break;

                case "delStream":
                    long sid = Convert.ToInt64(hiddenAjaxValue.Value);
                    Affine.Data.Managers.LINQ.DataManager.Instance.deleteStream(UserSettings, sid);
                    break;

                case "delComment":
                    long cid = Convert.ToInt64(hiddenAjaxValue.Value);
                    Affine.Data.Managers.LINQ.DataManager.Instance.deleteComment(UserSettings, cid);
                    break;

                case "AddSuggestFriend":
                    try
                    {
                        long   usid   = Convert.ToInt64(hiddenAjaxValue.Value);
                        string status = Affine.Data.Managers.LINQ.DataManager.Instance.sendFriendRequest(UserSettings.Id, usid);
                        RadAjaxManager1.ResponseScripts.Add(" Aqufit.Page.atiProfile.ShowOk('A Friend request has been sent');");
                    }
                    catch (Exception ex)
                    {
                        RadAjaxManager1.ResponseScripts.Add("Aqufit.Page.Actions.ShowFail('Error: " + ex.Message + "');");
                    }
                    break;
                }
            }
            catch (Exception ex)
            {
                // TODO: better error handling
                RadAjaxManager1.ResponseScripts.Add(" alert('" + ex.Message + "');");
            }
        }
Esempio n. 17
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// Page_Load runs when the control is loaded
        /// </summary>
        /// <remarks>
        /// </remarks>
        /// <history>
        /// </history>
        /// -----------------------------------------------------------------------------
        protected void Page_Load(System.Object sender, System.EventArgs e)
        {
            base.Page_Load(sender, e);

            try
            {
                ServiceReference service = new ServiceReference("~/DesktopModules/ATI_Base/resources/services/StreamService.asmx");
                service.InlineScript = true;
                ScriptManager.GetCurrent(Page).Services.Add(service);
                imgAd.Src         = ResolveUrl("/portals/0/images/adTastyPaleo.jpg");
                imgCheck.ImageUrl = ResolveUrl("~/DesktopModules/ATI_Base/resources/images/iCheck.png");

                if (!Page.IsPostBack && !Page.IsCallback)
                {
                    baseUrl = ResolveUrl("~/");
                    long wId = 0;
                    if (HttpContext.Current.Items["w"] != null)
                    {
                        wId = Convert.ToInt64(HttpContext.Current.Items["w"]);
                    }
                    else if (Request["w"] != null)
                    {
                        wId = Convert.ToInt64(Request["w"]);
                    }

                    // Are we viewing a specific workout ?
                    if (wId > 0)
                    {
                        divMainLinks.Visible = true;

                        atiProfile.Visible     = false;
                        hiddenWorkoutKey.Value = "" + wId;
                        aqufitEntities entities = new aqufitEntities();
                        WOD            wod      = entities.WODs.Include("WODType").Include("WODSets").Include("WODSets.WODExercises").Include("WODSets.WODExercises.Exercise").FirstOrDefault(w => w.Id == wId);
                        if (base.UserSettings != null && wod.Standard == 0)
                        {
                            User2WODFav fav = entities.User2WODFav.FirstOrDefault(mr => mr.WOD.Id == wod.Id && mr.UserSetting.Id == UserSettings.Id);
                            bAddWorkout.Visible    = fav == null;
                            bRemoveWorkout.Visible = fav != null;
                        }
                        lWorkoutTitle.Text = wod.Name;

                        //  lWorkoutDescription.Text = wod.Description;

                        // constructWorkoutInfo(wod);
                        lWorkoutInfo.Text = wod.Description;
                        if (wod.Standard > 0)
                        {
                            imgCrossFit.Visible   = true;
                            imgCrossFit.Src       = ResolveUrl("~/DesktopModules/ATI_Base/resources/images/xfit.png");
                            atiProfileImg.Visible = false;
                        }
                        else
                        {
                            atiProfileImg.Settings = entities.UserSettings.FirstOrDefault(us => us.Id == wod.UserSettingsKey);
                        }
                        atiWorkoutPanel.Visible  = false;
                        atiWorkoutViewer.Visible = true;

                        // Get the leader board
                        IQueryable <Workout> stream = entities.UserStreamSet.OfType <Workout>().Where(w => w.WOD.Id == wId);
                        long typeId = entities.WODs.Where(w => w.Id == wId).Select(w => w.WODType.Id).FirstOrDefault();
                        switch (typeId)
                        {
                        case (long)Affine.Utils.WorkoutUtil.WodType.AMRAP:
                        case (long)Affine.Utils.WorkoutUtil.WodType.SCORE:
                            atiScoreRangePanel.Visible = true;
                            stream = stream.OrderByDescending(w => w.Score);
                            break;

                        case (long)Affine.Utils.WorkoutUtil.WodType.MAX_WEIGHT:
                            atiMaxRangePanel.Visible = true;
                            atiMaxWeightUnitsFirst.UnitList.Add(Affine.Utils.UnitsUtil.MeasureUnit.UNIT_LBS);
                            atiMaxWeightUnitsFirst.UnitList.Add(Affine.Utils.UnitsUtil.MeasureUnit.UNIT_KG);
                            atiMaxWeightUnitsFirst.Selected = WeightUnits;
                            atiMaxWeightUnitsLast.UnitList.Add(Affine.Utils.UnitsUtil.MeasureUnit.UNIT_LBS);
                            atiMaxWeightUnitsLast.UnitList.Add(Affine.Utils.UnitsUtil.MeasureUnit.UNIT_KG);
                            atiMaxWeightUnitsLast.Selected = WeightUnits;
                            stream = stream.OrderByDescending(w => w.Max);
                            break;

                        case (long)Affine.Utils.WorkoutUtil.WodType.TIMED:
                            atiTimeSpanePanel.Visible = true;
                            stream = stream.OrderBy(w => w.Duration);
                            break;

                        default:
                            stream = stream.OrderByDescending(w => w.TimeStamp);
                            break;
                        }
                        string js = string.Empty;
                        atiShareLink.ShareLink  = "http://" + Request.Url.Host + "/workout/" + wod.Id;
                        atiShareLink.ShareTitle = "FlexFWD.com crossfit WOD " + wod.Name;

                        workoutTabTitle.Text = "&nbsp;" + (string.IsNullOrWhiteSpace(wod.Name) ? "Untitled" : wod.Name) + "&nbsp;";
                        Affine.WebService.StreamService ss = new WebService.StreamService();
                        string jsonEveryone = ss.getStreamDataForWOD(wod.Id, -1, 0, 15, true, true, -1, -1, -1);

                        string jsonYou = string.Empty;

                        js += " Aqufit.Page." + atiWorkoutHighChart.ID + ".fromStreamData('" + jsonEveryone + "'); ";
                        if (base.UserSettings != null)
                        {
                            hlLogWorkout.HRef = baseUrl + UserSettings.UserName + "?w=" + wId;
                            hlWorkouts.HRef   = baseUrl + UserSettings.UserName + "/workout-history";
                            jsonYou           = ss.getStreamDataForWOD(wod.Id, base.UserSettings.Id, 0, 10, true, true, -1, -1, -1);
                            js += "Aqufit.Page.atiYouStreamScript.generateStreamDom('" + jsonYou + "');";
                            js += " Aqufit.Page." + atiWorkoutHighChart.ID + ".fromYourStreamData('" + jsonYou + "'); ";
                            // TODO: this could be improved on...
                            Workout thisWod = entities.UserStreamSet.OfType <Workout>().FirstOrDefault(w => w.UserSetting.Id == UserSettings.Id && w.WOD.Id == wId);
                            if (thisWod != null)
                            {   // graphs of this wod
                                hlGraph.HRef = ResolveUrl("~/") + UserSettings.UserName + "/workout/" + thisWod.Id;
                            }
                            else
                            {   // just grab any workout then..
                                Workout any = entities.UserStreamSet.OfType <Workout>().OrderByDescending(w => w.Id).FirstOrDefault(w => w.UserSetting.Id == UserSettings.Id);
                                if (any != null)
                                {
                                    hlGraph.HRef = ResolveUrl("~/") + UserSettings.UserName + "/workout/" + any.Id;
                                }
                                else
                                {   // no workouts ??? say what.. slack man :) hide graph
                                    hlGraph.Visible = false;
                                }
                            }
                        }
                        else
                        {
                            hlGraph.HRef                 = ResolveUrl("~/Login");
                            hlLogWorkout.HRef            = hlGraph.HRef;
                            hlWorkouts.HRef              = hlGraph.HRef;
                            atiPanelYourProgress.Visible = false;
                        }
                        hlCreateWOD.HRef  = baseUrl + "Profile/WorkoutBuilder";
                        hlMyWorkouts.HRef = baseUrl + "Profile/MyWorkouts";
                        js += " Aqufit.Page." + atiWorkoutHighChart.ID + ".drawChart(); ";



                        ScriptManager.RegisterStartupScript(this, Page.GetType(), "SimilarRouteList", "$(function(){ " + js + " Aqufit.Page.atiEveryoneStreamScript.generateStreamDom('" + jsonEveryone + "'); });", true);



                        YouTubeQuery query = new YouTubeQuery(YouTubeQuery.DefaultVideoUri);
                        //order results by the number of views (most viewed first)
                        query.OrderBy          = "viewCount";
                        query.NumberToRetrieve = 3;
                        query.SafeSearch       = YouTubeQuery.SafeSearchValues.Moderate;

                        YouTubeRequestSettings settings = new YouTubeRequestSettings(ConfigurationManager.AppSettings["youtubeApp"], ConfigurationManager.AppSettings["youtubeKey"]);
                        YouTubeRequest         request  = new YouTubeRequest(settings);
                        const int     NUM_ENTRIES       = 50;
                        IList <Video> videos            = new List <Video>();
                        IList <Video> groupVideo        = new List <Video>();
                        // first try to find videos with regard to users group
                        Feed <Video> videoFeed = null;

                        if (this.UserSettings != null)
                        {
                            long[] groupIds = entities.UserFriends.Where(f => (f.SrcUserSettingKey == UserSettings.Id || f.DestUserSettingKey == UserSettings.Id) && f.Relationship >= (int)Affine.Utils.ConstsUtil.Relationships.GROUP_OWNER).Select(f => f.SrcUserSettingKey == UserSettings.Id ? f.DestUserSettingKey : f.SrcUserSettingKey).ToArray();
                            Group  business = entities.UserSettings.OfType <Group>().Where(Utils.Linq.LinqUtils.BuildContainsExpression <Group, long>(us => us.Id, groupIds)).FirstOrDefault(g => g.GroupType.Id == 1);
                            if (business != null)
                            {   // TODO: need the business name...
                                query.Query = business.UserName;
                            }
                            else
                            {
                                UserSettings creator = entities.UserSettings.FirstOrDefault(u => u.Id == wod.UserSettingsKey);
                                if (creator is Group)
                                {   // TODO: need the business name...
                                    query.Query = creator.UserFirstName + " " + creator.UserLastName;
                                }
                                else
                                {
                                    query.Query = UserSettings.UserFirstName + " " + UserSettings.UserLastName;
                                }
                            }
                            videoFeed = request.Get <Video>(query);
                            foreach (Video v in videoFeed.Entries)
                            {
                                groupVideo.Add(v);
                            }
                        }
                        if (videos.Count < NUM_ENTRIES)
                        {   // now try the crossfit WOD name
                            query.NumberToRetrieve = NUM_ENTRIES - videos.Count;
                            query.Query            = "crossfit wod " + wod.Name;
                            videoFeed = request.Get <Video>(query);
                            foreach (Video v in videoFeed.Entries)
                            {
                                videos.Add(v);
                            }
                            if (videos.Count < NUM_ENTRIES)
                            {   // this is last resort .. just get videos about crossfit...
                                query.NumberToRetrieve = NUM_ENTRIES - videos.Count;
                                query.Query            = "crossfit wod";
                                videoFeed = request.Get <Video>(query);
                                foreach (Video v in videoFeed.Entries)
                                {
                                    videos.Add(v);
                                }
                            }
                        }

                        const int TAKE = 3;
                        if (videos.Count > TAKE)
                        {
                            Random random = new Random((int)DateTime.Now.Ticks);
                            int    rand   = random.Next(videos.Count - TAKE);
                            videos = videos.Skip(rand).Take(TAKE).ToList();
                            if (groupVideo.Count > 0)
                            {
                                // always replace one of the main videos with a gorup one.. (if possible)
                                rand      = random.Next(groupVideo.Count - 1);
                                videos[0] = groupVideo[rand];
                            }
                            atiYoutubeThumbList.VideoFeed = videos;
                        }
                        else
                        {
                            atiVideoPanel.Visible = false;
                        }
                    }
                    else
                    {
                        atiVideoPanel.Visible     = false;
                        atiPanelQuickView.Visible = false;
                        hlGraph.Visible           = false;
                        aqufitEntities entities      = new aqufitEntities();
                        var            exerciseArray = entities.Exercises.OrderBy(x => x.Name).Select(x => new{ Text = x.Name, Value = x.Id }).ToArray();
                        RadListBoxExcerciseSource.DataSource = exerciseArray;
                        RadListBoxExcerciseSource.DataBind();

                        string order = orderDate.Checked ? "date" : "popular";
                        if (Settings["Configure"] != null && Convert.ToString(Settings["Configure"]).Equals("ConfigureMyWorkouts"))
                        {
                            this.IsMyWorkouts          = true;
                            atiProfile.ProfileSettings = base.UserSettings;
                            atiProfile.IsOwner         = true;
                            atiProfile.IsSmall         = true;
                            atiWorkoutPanel.Visible    = true;
                            workoutTabTitle.Text       = "My Workouts";
                            liMyWorkouts.Visible       = false;
                            liFindWorkout.Visible      = true;
                            WebService.StreamService streamService = new WebService.StreamService();
                            string json = streamService.GetWorkouts(base.UserSettings.Id, 0, 30, order, null);
                            ScriptManager.RegisterStartupScript(this, Page.GetType(), "WorkoutList", "$(function(){ Aqufit.Page.atiWorkoutListScript.isMyRoutes = true; Aqufit.Page.atiWorkoutListScript.generateStreamDom('" + json + "'); });", true);
                        }
                        else
                        {
                            this.IsMyWorkouts        = false;
                            atiProfile.Visible       = false;
                            workoutTabTitle.Text     = "Workouts";
                            atiWorkoutPanel.Visible  = true;
                            atiWorkoutViewer.Visible = false;
                            WebService.StreamService streamService = new WebService.StreamService();
                            string json = streamService.GetWorkouts(-1, 0, 30, order, null);
                            ScriptManager.RegisterStartupScript(this, Page.GetType(), "WorkoutList2", "$(function(){ Aqufit.Page.atiWorkoutListScript.generateStreamDom('" + json + "'); });", true);
                        }
                    }
                }
            }
            catch (Exception exc) //Module failed to load
            {
                Exceptions.ProcessModuleLoadException(this, exc);
            }
        }
        protected void bSaveWOD_Click(object sender, EventArgs e)
        {
            string status = string.Empty;

            try
            {
                JavaScriptSerializer serializer = new JavaScriptSerializer();
                Affine.Data.json.WOD wodJson    = serializer.Deserialize <Affine.Data.json.WOD>(atiWodJson.Value);
                aqufitEntities       entities   = new aqufitEntities();

                // TODO: check if there is already a WOD of the same name
                long wodTypeId = Convert.ToInt64(ddlWODType.SelectedValue);
                int  standard  = UserInfo.IsSuperUser ? 1 : 0;
                long userKey   = GroupSettings != null ? this.GroupSettings.Id : this.UserSettings.Id;
                WOD  wod       = new WOD()
                {
                    Difficulty      = wodJson.Difficulty,
                    Standard        = (short)standard,
                    Name            = Affine.Utils.Web.WebUtils.MakeWebSafeString(txtWorkoutName.Text),
                    WODType         = entities.WODTypes.First(t => t.Id == wodTypeId),
                    UserSettingsKey = userKey,
                    Description     = Affine.Utils.Web.WebUtils.MakeWebSafeString(txtDescription.Text),
                    UserName        = GroupSettings != null ? this.GroupSettings.UserName : this.UserSettings.UserName,
                    CreationDate    = DateTime.Now.ToUniversalTime()
                };
                if (wodTypeId == (int)Affine.Utils.WorkoutUtil.WodType.AMRAP)
                {
                    wod.TimeSpan = atiTimeSpan.Time;
                }
                entities.AddToWODs(wod);
                foreach (Affine.Data.json.WODSet setJson in wodJson.WODSets)
                {
                    WODSet wodSet = new WODSet()
                    {
                        WOD = wod
                    };
                    //Affine.Data.Exercise[] exerciseArray = entities.Exercises.Where(Affine.Utils.Linq.LinqUtils.BuildContainsExpression<Affine.Data.Exercise, long>(ex => ex.Id, setJson.WODExercises.Select(ee => ee.ExcercisKey ).ToArray() )).ToArray();
                    foreach (Affine.Data.json.WODExercise exJson in setJson.WODExercises)
                    {
                        double      mdist   = exJson.MenDist > 0 ? Utils.UnitsUtil.unitsToSystemDefualt(exJson.MenDist, Utils.UnitsUtil.ToUnit(exJson.MenDistUnits)) : -1;
                        double      wdist   = exJson.WomenDist > 0 ? Utils.UnitsUtil.unitsToSystemDefualt(exJson.WomenDist, Utils.UnitsUtil.ToUnit(exJson.WomenDistUnits)) : -1;
                        double      mweight = exJson.MenRx > 0 ? Utils.UnitsUtil.unitsToSystemDefualt(exJson.MenRx, Utils.UnitsUtil.ToUnit(exJson.MenRxUnits)) : -1;
                        double      wweight = exJson.WomenRx > 0 ? Utils.UnitsUtil.unitsToSystemDefualt(exJson.WomenRx, Utils.UnitsUtil.ToUnit(exJson.WomenRxUnits)) : -1;
                        WODExercise wodEx   = new WODExercise()
                        {
                            MenDist   = mdist,
                            WomenDist = wdist,
                            WODSet    = wodSet,
                            MenRx     = mweight,
                            WomenRx   = wweight,
                            Reps      = exJson.Reps,
                            Order     = exJson.Order,
                            Notes     = Affine.Utils.Web.WebUtils.MakeWebSafeString(exJson.Notes),
                            Exercise  = entities.Exercises.First(ee => ee.Id == exJson.ExcercisKey)
                        };
                    }
                }
                entities.SaveChanges();
                // Now we add to peoples favs
                // ** This no longer happens here.. it happens when the workout is "scheduled" for the group that it gets added to the list..
                WOD newWOD = entities.WODs.Where(w => w.UserSettingsKey == userKey).OrderByDescending(w => w.Id).First();
                if (GroupSettings == null)
                {   // simply add for this user..
                    User2WODFav fav = new User2WODFav()
                    {
                        UserSetting = entities.UserSettings.First(us => us.Id == UserSettings.Id),
                        WOD         = newWOD
                    };
                    entities.AddToUser2WODFav(fav);
                    entities.SaveChanges();
                }
                else
                {
                    User2WODFav fav = new User2WODFav()
                    {
                        UserSetting = entities.UserSettings.First(us => us.Id == GroupSettings.Id),
                        WOD         = newWOD
                    };
                    entities.AddToUser2WODFav(fav);
                    entities.SaveChanges();
                }
                if (GroupSettings != null)
                {   // if this was a group wod.. we want to bounce back to the scheduling page now...
                    Response.Redirect(ResolveUrl("~") + "group/" + GroupSettings.UserName + "?w=" + newWOD.Id, true);
                    return;
                }
                string baseUrl = ResolveUrl("~");
                RadAjaxManager1.ResponseScripts.Add("Aqufit.Windows.WorkoutSavedDialog.open(" + newWOD.Id + ");");
                //status = "Your Workout has been saved.  It will now show up in your Workout List";
            }
            catch (Exception ex)
            {
                status = "There was a problem saving your workout: " + ex.Message + " " + ex.InnerException;
            }
            RadAjaxManager1.ResponseScripts.Add(" UpdateStatus('" + status + "');");
        }
        protected void bSaveWOD_Click(object sender, EventArgs e)
        {
            string status = string.Empty;
            try
            {
                JavaScriptSerializer serializer = new JavaScriptSerializer();
                Affine.Data.json.WOD wodJson = serializer.Deserialize<Affine.Data.json.WOD>(atiWodJson.Value);
                aqufitEntities entities = new aqufitEntities();

                // TODO: check if there is already a WOD of the same name
                long wodTypeId = Convert.ToInt64(ddlWODType.SelectedValue);
                int standard = UserInfo.IsSuperUser ? 1 : 0;
                long userKey = GroupSettings != null ? this.GroupSettings.Id : this.UserSettings.Id;
                WOD wod = new WOD()
                {
                    Difficulty = wodJson.Difficulty,
                    Standard = (short)standard,
                    Name = Affine.Utils.Web.WebUtils.MakeWebSafeString( txtWorkoutName.Text ),
                    WODType = entities.WODTypes.First(t => t.Id == wodTypeId),
                    UserSettingsKey = userKey,
                    Description = Affine.Utils.Web.WebUtils.MakeWebSafeString(txtDescription.Text),
                    UserName = GroupSettings != null ? this.GroupSettings.UserName : this.UserSettings.UserName,
                    CreationDate = DateTime.Now.ToUniversalTime()
                };
                if (wodTypeId == (int)Affine.Utils.WorkoutUtil.WodType.AMRAP)
                {
                    wod.TimeSpan = atiTimeSpan.Time;
                }
                entities.AddToWODs(wod);
                foreach (Affine.Data.json.WODSet setJson in wodJson.WODSets)
                {
                    WODSet wodSet = new WODSet()
                    {
                        WOD = wod
                    };
                    //Affine.Data.Exercise[] exerciseArray = entities.Exercises.Where(Affine.Utils.Linq.LinqUtils.BuildContainsExpression<Affine.Data.Exercise, long>(ex => ex.Id, setJson.WODExercises.Select(ee => ee.ExcercisKey ).ToArray() )).ToArray();
                    foreach (Affine.Data.json.WODExercise exJson in setJson.WODExercises)
                    {
                        double mdist = exJson.MenDist > 0 ? Utils.UnitsUtil.unitsToSystemDefualt(exJson.MenDist, Utils.UnitsUtil.ToUnit(exJson.MenDistUnits)) : -1;
                        double wdist = exJson.WomenDist > 0 ? Utils.UnitsUtil.unitsToSystemDefualt(exJson.WomenDist, Utils.UnitsUtil.ToUnit(exJson.WomenDistUnits)) : -1;
                        double mweight = exJson.MenRx > 0 ? Utils.UnitsUtil.unitsToSystemDefualt(exJson.MenRx, Utils.UnitsUtil.ToUnit(exJson.MenRxUnits)) : -1;
                        double wweight = exJson.WomenRx > 0 ? Utils.UnitsUtil.unitsToSystemDefualt(exJson.WomenRx, Utils.UnitsUtil.ToUnit(exJson.WomenRxUnits)) : -1;
                        WODExercise wodEx = new WODExercise()
                        {
                            MenDist = mdist,
                            WomenDist = wdist,
                            WODSet = wodSet,
                            MenRx = mweight,
                            WomenRx = wweight,
                            Reps = exJson.Reps,
                            Order = exJson.Order,
                            Notes = Affine.Utils.Web.WebUtils.MakeWebSafeString(exJson.Notes),
                            Exercise = entities.Exercises.First(ee => ee.Id == exJson.ExcercisKey)
                        };
                    }
                }
                entities.SaveChanges();
                // Now we add to peoples favs
                // ** This no longer happens here.. it happens when the workout is "scheduled" for the group that it gets added to the list..
                WOD newWOD = entities.WODs.Where(w => w.UserSettingsKey == userKey).OrderByDescending(w => w.Id).First();
                if (GroupSettings == null)
                {   // simply add for this user..
                    User2WODFav fav = new User2WODFav()
                    {
                        UserSetting = entities.UserSettings.First(us => us.Id == UserSettings.Id),
                        WOD = newWOD
                    };
                    entities.AddToUser2WODFav(fav);
                    entities.SaveChanges();
                }
                else
                {
                    User2WODFav fav = new User2WODFav()
                    {
                        UserSetting = entities.UserSettings.First(us => us.Id == GroupSettings.Id),
                        WOD = newWOD
                    };
                    entities.AddToUser2WODFav(fav);
                    entities.SaveChanges();
                }
                if (GroupSettings != null)
                {   // if this was a group wod.. we want to bounce back to the scheduling page now...
                    Response.Redirect(ResolveUrl("~") + "group/" + GroupSettings.UserName + "?w=" + newWOD.Id, true);
                    return;
                }
                string baseUrl = ResolveUrl("~");
                RadAjaxManager1.ResponseScripts.Add("Aqufit.Windows.WorkoutSavedDialog.open(" + newWOD.Id + ");");
                //status = "Your Workout has been saved.  It will now show up in your Workout List";
            }
            catch (Exception ex)
            {
                status = "There was a problem saving your workout: " + ex.Message + " " + ex.InnerException;
            }
            RadAjaxManager1.ResponseScripts.Add(" UpdateStatus('"+status+"');");
        }