Exemple #1
0
        public TrainingPlan WorkoutPlanOperation(Token token, WorkoutPlanOperationParam param)
        {
            var securityInfo = SecurityManager.EnsureAuthentication(token);
            var service      = new WorkoutPlanService(Session, securityInfo, Configuration);

            return(service.WorkoutPlanOperation(param));
        }
Exemple #2
0
        private void usrProgressIndicatorButtons1_OkClick(object sender, CancellationSourceEventArgs e)
        {
            var param = new WorkoutPlanOperationParam();

            param.WorkoutPlanId = plan.GlobalId;
            if (Publish)
            {
                param.Operation = SupplementsCycleDefinitionOperation.Publish;
            }
            else
            {
                param.Operation = SupplementsCycleDefinitionOperation.AddToFavorites;
            }
            try
            {
                ServiceManager.WorkoutPlanOperation(param);
                WorkoutPlansReposidory.Instance.ClearCache();
                ThreadSafeClose(true);
            }
            catch (ProfileRankException ex)
            {
                UIHelper.Invoke(() => ExceptionHandler.Default.Process(ex, string.Format("PublishWorkoutPlanWindow_ErrProfileRank".TranslateStrength(), Portable.Constants.StrengthTrainingEntriesCount), ErrorWindow.MessageBox), Dispatcher);
                ThreadSafeClose(false);
            }
        }
        public void DeletePlan_DataInfo_Refresh()
        {
            var profile = (ProfileDTO)profiles[0].Tag;

            SessionData data = CreateNewSession(profile, ClientInformation);

            var plan = createWorkoutPlanObject(profile);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                plan = Service.SaveWorkoutPlan(data.Token, plan);
            });


            var dbProfile = Session.Get <Profile>(profile.GlobalId);
            var oldHash   = dbProfile.DataInfo.WorkoutPlanHash;

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                TimerService.UtcNow             = DateTime.UtcNow.AddHours(1);
                WorkoutPlanOperationParam param = new WorkoutPlanOperationParam();
                param.WorkoutPlanId             = plan.GlobalId;
                param.Operation = SupplementsCycleDefinitionOperation.Delete;
                Service.WorkoutPlanOperation(data.Token, param);
            });
            dbProfile = Session.Get <Profile>(profile.GlobalId);
            Assert.AreNotEqual(oldHash, dbProfile.DataInfo.WorkoutPlanHash);
        }
        public void DeletePlan()
        {
            var profile = (ProfileDTO)profiles[0].Tag;

            SessionData data = CreateNewSession(profile, ClientInformation);

            var plan = createWorkoutPlanObject(profile);


            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                plan = Service.SaveWorkoutPlan(data.Token, plan);
            });

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                WorkoutPlanOperationParam param = new WorkoutPlanOperationParam();
                param.WorkoutPlanId             = plan.GlobalId;
                param.Operation = SupplementsCycleDefinitionOperation.Delete;
                Service.WorkoutPlanOperation(data.Token, param);
            });
            var count = Session.QueryOver <BodyArchitect.Model.TrainingPlan>().RowCount();

            Assert.AreEqual(0, count);
        }
        public void RemoveFromFavorites_Twice()
        {
            var plan = CreatePlan(Session, profiles[1], "plan1");

            profiles[0].FavoriteWorkoutPlans.Add(plan);
            insertToDatabase(profiles[0]);

            var         profile = (ProfileDTO)profiles[0].Tag;
            SessionData data    = CreateNewSession(profile, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                var param           = new WorkoutPlanOperationParam();
                param.WorkoutPlanId = plan.GlobalId;
                param.Operation     = SupplementsCycleDefinitionOperation.RemoveFromFavorites;
                service.WorkoutPlanOperation(data.Token, param);
            });

            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                var param           = new WorkoutPlanOperationParam();
                param.WorkoutPlanId = plan.GlobalId;
                param.Operation     = SupplementsCycleDefinitionOperation.RemoveFromFavorites;
                service.WorkoutPlanOperation(data.Token, param);
            });
        }
Exemple #6
0
        private void deleteSelectedTrainingPlan()
        {
            var plan = TrainingPlan;

            if (plan == null || plan.Status == PublishStatus.Published || plan.Profile.GlobalId != UserContext.Current.CurrentProfile.GlobalId)
            {
                return;
            }
            if (!UIHelper.EnsurePremiumLicence())
            {
                return;
            }

            if (BAMessageBox.AskYesNo(StrengthTrainingEntryStrings.QRemoveTrainingPlan) == MessageBoxResult.Yes)
            {
                ParentWindow.RunAsynchronousOperation(delegate
                {
                    var param           = new WorkoutPlanOperationParam();
                    param.WorkoutPlanId = plan.GlobalId;
                    param.Operation     = SupplementsCycleDefinitionOperation.Delete;
                    ServiceManager.WorkoutPlanOperation(param);
                    WorkoutPlansReposidory.Instance.ClearCache();
                    Dispatcher.BeginInvoke(new Action <PageContext>(Fill), this.pageContext);
                }, asyncOperationStateChange);
                //try
                //{

                //}
                //catch (Exception ex)
                //{
                //    ExceptionHandler.Default.Process(ex, StrengthTrainingEntryStrings.ErrorDuringDeleteTrainingPlan, ErrorWindow.EMailReport);
                //}
            }
        }
Exemple #7
0
        public void PublishWorkoutPlan_DataInfo_Refresh()
        {
            var         profile = (ProfileDTO)profiles[0].Tag;
            SessionData data    = CreateNewSession(profile, ClientInformation);
            var         plan    = (Service.V2.Model.TrainingPlans.TrainingPlan)workoutPlans["test1-4"].Tag;

            Assert.AreEqual(BodyArchitect.Service.V2.Model.PublishStatus.Private, plan.Status);
            var oldHash = profiles[0].DataInfo.WorkoutPlanHash;

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                var param           = new WorkoutPlanOperationParam();
                param.WorkoutPlanId = plan.GlobalId;
                param.Operation     = SupplementsCycleDefinitionOperation.Publish;
                Service.WorkoutPlanOperation(data.Token, param);
            });
            var dbPlan = Session.Get <TrainingPlan>(plan.GlobalId);

            Assert.AreEqual(PublishStatus.Published, dbPlan.Status);
            Assert.IsNotNull(dbPlan.PublishDate);

            var dbProfile = Session.Get <Profile>(plan.Profile.GlobalId);

            Assert.AreNotEqual(oldHash, dbProfile.DataInfo.WorkoutPlanHash);
        }
 public TrainingPlan WorkoutPlanOperation(Token token, WorkoutPlanOperationParam param)
 {
     return(exceptionHandling(token, () =>
     {
         return InternalService.WorkoutPlanOperation(token, param);
     }));
 }
Exemple #9
0
        public TrainingPlan WorkoutPlanOperation(WorkoutPlanOperationParam param)
        {
            Log.WriteWarning("WorkoutPlanFavoritesOperation: Username={0},userDto.GlobalId={1}", SecurityInfo.SessionData.Profile.UserName, param.Operation);

            if (!SecurityInfo.Licence.IsPremium)
            {
                throw new LicenceException("This feature is allowed for Premium account");
            }

            var          session = Session;
            TrainingPlan result  = null;

            using (var tx = session.BeginSaveTransaction())
            {
                var profileDb = session.Load <Profile>(SecurityInfo.SessionData.Profile.GlobalId);

                var workoutPlanDb = session.Get <BodyArchitect.Model.TrainingPlan>(param.WorkoutPlanId);


                if (param.Operation == SupplementsCycleDefinitionOperation.AddToFavorites)
                {
                    if (workoutPlanDb.Profile == profileDb || workoutPlanDb.Status == PublishStatus.Private)
                    {
                        throw new InvalidOperationException("Cannot add/remove your workout plan to the favorite list");
                    }
                    if (profileDb.FavoriteWorkoutPlans.Contains(workoutPlanDb))
                    {
                        throw new ObjectIsFavoriteException("Plan is in favorites list already");
                    }
                    profileDb.FavoriteWorkoutPlans.Add(workoutPlanDb);
                }
                else if (param.Operation == SupplementsCycleDefinitionOperation.RemoveFromFavorites)
                {
                    if (profileDb.FavoriteWorkoutPlans.Contains(workoutPlanDb))
                    {
                        profileDb.FavoriteWorkoutPlans.Remove(workoutPlanDb);
                    }
                    else
                    {
                        throw new ObjectIsNotFavoriteException("Plan is not in favorites list");
                    }
                }
                else if (param.Operation == SupplementsCycleDefinitionOperation.Publish)
                {
                    workoutPlanDb = publishWorkoutPlan(workoutPlanDb, profileDb);
                    result        = workoutPlanDb.Map <TrainingPlan>();
                }
                else if (param.Operation == SupplementsCycleDefinitionOperation.Delete)
                {
                    DeleteWorkoutPlan(param.WorkoutPlanId);
                }
                profileDb.DataInfo.WorkoutPlanHash = Guid.NewGuid();
                session.SaveOrUpdate(profileDb);
                tx.Commit();
                return(result);
            }
        }
        private void btnAddToFavorites_Click(object sender, EventArgs e)
        {
            if (!UpgradeAccountControl.EnsureAccountType(ApplicationStrings.Feature_Premium_CreatingWorkoutPlans, this))
            {
                return;
            }
            progressBar.ShowProgress(true);
            var m = new ServiceManager <WorkoutPlanOperationCompletedEventArgs>(delegate(BodyArchitectAccessServiceClient client1, EventHandler <WorkoutPlanOperationCompletedEventArgs> operationCompleted)
            {
                var param           = new WorkoutPlanOperationParam();
                param.WorkoutPlanId = SelectedPlan.GlobalId;
                param.Operation     = SupplementsCycleDefinitionOperation.AddToFavorites;
                client1.WorkoutPlanOperationAsync(ApplicationState.Current.SessionData.Token, param);
                client1.WorkoutPlanOperationCompleted -= operationCompleted;
                client1.WorkoutPlanOperationCompleted += operationCompleted;
            });

            m.OperationCompleted += (s1, a1) =>
            {
                progressBar.ShowProgress(false);
                FaultException <BAServiceException> serviceEx = a1.Error as FaultException <BAServiceException>;
                if (serviceEx != null && serviceEx.Detail.ErrorCode == ErrorCode.LicenceException)
                {
                    BAMessageBox.ShowInfo(ApplicationStrings.ErrLicence);
                    return;
                }
                if (a1.Error != null)
                {
                    BAMessageBox.ShowError(ApplicationStrings.ErrCannotAddPlanToFavorites);
                    return;
                }
                else
                {
                    ApplicationState.Current.Cache.TrainingPlans.Items.Add(SelectedPlan.GlobalId, SelectedPlan);
                }
                updateApplicationBar();
            };

            if (!m.Run())
            {
                progressBar.ShowProgress(false);
                if (ApplicationState.Current.IsOffline)
                {
                    BAMessageBox.ShowError(ApplicationStrings.ErrOfflineMode);
                }
                else
                {
                    BAMessageBox.ShowError(ApplicationStrings.ErrNoNetwork);
                }
            }
        }
Exemple #11
0
        public void TestPublishWorkoutPlan_CrossProfile()
        {
            var         profile = (ProfileDTO)profiles[1].Tag;
            SessionData data    = CreateNewSession(profile, ClientInformation);
            var         plan    = (Service.V2.Model.TrainingPlans.TrainingPlan)workoutPlans["test1-2"].Tag;

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                var param           = new WorkoutPlanOperationParam();
                param.WorkoutPlanId = plan.GlobalId;
                param.Operation     = SupplementsCycleDefinitionOperation.Publish;
                Service.WorkoutPlanOperation(data.Token, param);
            });
        }
        public void AddToFavorites_PrivatePlan()
        {
            var         plan    = CreatePlan(Session, profiles[0], "plan1", isPublished: false);
            var         profile = (ProfileDTO)profiles[0].Tag;
            SessionData data    = CreateNewSession(profile, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                var param           = new WorkoutPlanOperationParam();
                param.WorkoutPlanId = plan.GlobalId;
                param.Operation     = SupplementsCycleDefinitionOperation.AddToFavorites;
                service.WorkoutPlanOperation(data.Token, param);
            });
        }
Exemple #13
0
        public static bool RemoveFromFavorites(this TrainingPlan plan)
        {
            if (plan == null || !plan.IsFavorite() || plan.IsMine())
            {
                return(false);
            }
            var param = new WorkoutPlanOperationParam();

            param.WorkoutPlanId = plan.GlobalId;
            param.Operation     = SupplementsCycleDefinitionOperation.RemoveFromFavorites;
            ServiceManager.WorkoutPlanOperation(param);


            WorkoutPlansReposidory.Instance.Remove(plan.GlobalId);
            return(true);
        }
        public void AddToFavorites_DataInfo_Refresh_ForPlanOwner()
        {
            var         plan     = CreatePlan(Session, profiles[0], "plan1");
            var         oldHash  = profiles[0].DataInfo.WorkoutPlanHash;
            ProfileDTO  profile1 = (ProfileDTO)profiles[1].Tag;
            SessionData data     = CreateNewSession(profile1, ClientInformation, new LoginData());

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                var param           = new WorkoutPlanOperationParam();
                param.WorkoutPlanId = plan.GlobalId;
                param.Operation     = SupplementsCycleDefinitionOperation.AddToFavorites;
                Service.WorkoutPlanOperation(data.Token, param);
            });
            var dbProfile = Session.Get <Profile>(profiles[0].GlobalId);

            Assert.AreEqual(oldHash, dbProfile.DataInfo.WorkoutPlanHash);
        }
        public void AddToFavorites_PlanFromCurrentProfile()
        {
            var         plan    = CreatePlan(Session, profiles[0], "plan1");
            var         profile = (ProfileDTO)profiles[0].Tag;
            SessionData data    = CreateNewSession(profile, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                var param           = new WorkoutPlanOperationParam();
                param.WorkoutPlanId = plan.GlobalId;
                param.Operation     = SupplementsCycleDefinitionOperation.AddToFavorites;
                service.WorkoutPlanOperation(data.Token, param);
            });
            var dbProfile = Session.Get <Profile>(profile.GlobalId);

            Assert.AreEqual(1, dbProfile.FavoriteWorkoutPlans.Count);
            Assert.AreEqual(plan.GlobalId, dbProfile.FavoriteWorkoutPlans.ElementAt(0).GlobalId);
        }
Exemple #16
0
        private void mnuRemoveFromFavorites_Click(object sender, RoutedEventArgs e)
        {
            var item = (WorkoutPlanViewModel)(sender as FrameworkElement).DataContext;

            progressBar.ShowProgress(true);
            var m = new ServiceManager <WorkoutPlanOperationCompletedEventArgs>(delegate(BodyArchitectAccessServiceClient client1, EventHandler <WorkoutPlanOperationCompletedEventArgs> operationCompleted)
            {
                WorkoutPlanOperationParam param = new WorkoutPlanOperationParam();
                param.Operation     = SupplementsCycleDefinitionOperation.RemoveFromFavorites;
                param.WorkoutPlanId = item.Plan.GlobalId;
                client1.WorkoutPlanOperationAsync(ApplicationState.Current.SessionData.Token, param);
                client1.WorkoutPlanOperationCompleted -= operationCompleted;
                client1.WorkoutPlanOperationCompleted += operationCompleted;
            });

            m.OperationCompleted += (s1, a1) =>
            {
                progressBar.ShowProgress(false);
                if (a1.Error != null)
                {
                    BAMessageBox.ShowError(ApplicationStrings.ErrCannotRemovePlanFromFavorites);
                    return;
                }
                else
                {
                    ApplicationState.Current.Cache.TrainingPlans.Items.Remove(item.Plan.GlobalId);
                    viewModel.RemoveFromFavorites(item);
                }
            };

            if (!m.Run())
            {
                progressBar.ShowProgress(false);
                if (ApplicationState.Current.IsOffline)
                {
                    BAMessageBox.ShowError(ApplicationStrings.ErrOfflineMode);
                }
                else
                {
                    BAMessageBox.ShowError(ApplicationStrings.ErrNoNetwork);
                }
            }
        }
Exemple #17
0
        public void TestPublishWorkoutPlan_Statistics()
        {
            var         profile = (ProfileDTO)profiles[0].Tag;
            SessionData data    = CreateNewSession(profile, ClientInformation);
            var         plan    = (Service.V2.Model.TrainingPlans.TrainingPlan)workoutPlans["test1-4"].Tag;

            Assert.AreEqual(BodyArchitect.Service.V2.Model.PublishStatus.Private, plan.Status);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                var param           = new WorkoutPlanOperationParam();
                param.WorkoutPlanId = plan.GlobalId;
                param.Operation     = SupplementsCycleDefinitionOperation.Publish;
                Service.WorkoutPlanOperation(data.Token, param);
            });
            var dbProfile = Session.Get <Profile>(profile.GlobalId);

            Assert.AreEqual(5, dbProfile.Statistics.WorkoutPlansCount);
        }
Exemple #18
0
        public void TestPublishWorkoutPlan_WithMissingExercise()
        {
            var missingExercise = CreateExercise(Session, null, "Missing", "--");

            missingExercise.IsDeleted = true;
            insertToDatabase(missingExercise);

            var         profile = (ProfileDTO)profiles[0].Tag;
            SessionData data    = CreateNewSession(profile, ClientInformation);
            var         plan    = createPlan(profiles[0], "test1-3", PublishStatus.Private, TrainingPlanDifficult.Beginner, TrainingType.PushPull, missingExercise);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                var param           = new WorkoutPlanOperationParam();
                param.WorkoutPlanId = plan.GlobalId;
                param.Operation     = SupplementsCycleDefinitionOperation.Publish;
                Service.WorkoutPlanOperation(data.Token, param);
            });
        }
        public void RemoveFromFavorites_DataInfo_Refresh()
        {
            var plan = CreatePlan(Session, profiles[0], "plan1");

            //now add plan to favorites
            profiles[1].FavoriteWorkoutPlans.Add(plan);
            insertToDatabase(profiles[1]);
            var         oldHash  = profiles[0].DataInfo.WorkoutPlanHash;
            ProfileDTO  profile1 = (ProfileDTO)profiles[1].Tag;
            SessionData data     = CreateNewSession(profile1, ClientInformation, new LoginData());

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                var param           = new WorkoutPlanOperationParam();
                param.WorkoutPlanId = plan.GlobalId;
                param.Operation     = SupplementsCycleDefinitionOperation.RemoveFromFavorites;
                Service.WorkoutPlanOperation(data.Token, param);
            });
            var dbProfile = Session.Get <Profile>(profile1.GlobalId);

            Assert.AreNotEqual(dbProfile.DataInfo.WorkoutPlanHash, oldHash);
        }
        public void SecurityBug()
        {
            var profile  = (ProfileDTO)profiles[0].Tag;
            var profile1 = (ProfileDTO)profiles[1].Tag;

            SessionData data = CreateNewSession(profile, ClientInformation);

            var plan = createWorkoutPlanObject(profile);


            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                plan = Service.SaveWorkoutPlan(data.Token, plan);
            });
            data = CreateNewSession(profile1, ClientInformation);
            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                WorkoutPlanOperationParam param = new WorkoutPlanOperationParam();
                param.WorkoutPlanId             = plan.GlobalId;
                param.Operation = SupplementsCycleDefinitionOperation.Delete;
                Service.WorkoutPlanOperation(data.Token, param);
            });
        }
 public static TrainingPlan WorkoutPlanOperation(WorkoutPlanOperationParam param)
 {
     return(exceptionHandling(() => Instance.WorkoutPlanOperation(Token, param)));
 }