public static bool AddToFavorites(this ExerciseDTO exercise) { if (!CanAddToFavorites(exercise)) { return(false); } ServiceCommand command = new ServiceCommand(() => { try { ExerciseOperationParam param = new ExerciseOperationParam(); param.ExerciseId = exercise.GlobalId; param.Operation = FavoriteOperation.Add; ServiceManager.ExerciseOperation(param); } catch (ObjectIsFavoriteException) { } catch { ExercisesReposidory.Instance.Remove(exercise.GlobalId); throw; } }); ServicePool.Add(command); ExercisesReposidory.Instance.Add(exercise); return(true); }
public void ExerciseOperation(Token token, ExerciseOperationParam param) { var securityInfo = SecurityManager.EnsureAuthentication(token); var service = new ExerciseService(Session, securityInfo, Configuration); service.ExerciseOperation(param); }
public void RemoveFromFavorites_Twice() { var exercise = CreateExercise(Session, profiles[1], "ex1", "ex1"); profiles[0].FavoriteExercises.Add(exercise); insertToDatabase(profiles[0]); var profile = (ProfileDTO)profiles[0].Tag; SessionData data = CreateNewSession(profile, ClientInformation); RunServiceMethod(delegate(InternalBodyArchitectService service) { var param = new ExerciseOperationParam(); param.ExerciseId = exercise.GlobalId; param.Operation = FavoriteOperation.Remove; service.ExerciseOperation(data.Token, param); }); RunServiceMethod(delegate(InternalBodyArchitectService service) { var param = new ExerciseOperationParam(); param.ExerciseId = exercise.GlobalId; param.Operation = FavoriteOperation.Remove; service.ExerciseOperation(data.Token, param); }); }
public void AddToFavorites_ExerciseFromCurrentProfile() { var exercise = CreateExercise(Session, profiles[0], "ex1", "ex1"); var profile = (ProfileDTO)profiles[0].Tag; SessionData data = CreateNewSession(profile, ClientInformation); RunServiceMethod(delegate(InternalBodyArchitectService service) { var param = new ExerciseOperationParam(); param.ExerciseId = exercise.GlobalId; param.Operation = FavoriteOperation.Add; service.ExerciseOperation(data.Token, param); }); }
public void ExerciseOperation(ExerciseOperationParam param) { Log.WriteWarning("ExerciseOperationParam: Username={0},userDto.GlobalId={1}, Exercise={2}", SecurityInfo.SessionData.Profile.UserName, param.Operation, param.ExerciseId); if (!SecurityInfo.Licence.IsPremium) { throw new LicenceException("This feature is allowed for Premium account"); } var session = Session; using (var tx = session.BeginSaveTransaction()) { var profileDb = session.Load <Profile>(SecurityInfo.SessionData.Profile.GlobalId); var exercise = session.Get <Exercise>(param.ExerciseId); if (exercise.Profile == profileDb) { throw new InvalidOperationException("Cannot add/remove your exercise to the favorite list"); } if (param.Operation == FavoriteOperation.Add) { if (profileDb.FavoriteExercises.Contains(exercise)) { throw new ObjectIsFavoriteException("Exercise is in favorites list already"); } profileDb.FavoriteExercises.Add(exercise); } else { if (profileDb.FavoriteExercises.Contains(exercise)) { profileDb.FavoriteExercises.Remove(exercise); } else { throw new ObjectIsNotFavoriteException("Exercise is not in favorites list"); } } profileDb.DataInfo.ExerciseHash = Guid.NewGuid(); session.SaveOrUpdate(profileDb); tx.Commit(); } }
public void AddToFavorites_DataInfo() { var exercise = CreateExercise(Session, profiles[1], "ex1", "ex1"); var profile = (ProfileDTO)profiles[0].Tag; SessionData data = CreateNewSession(profile, ClientInformation); var oldHash = profiles[0].DataInfo.ExerciseHash; RunServiceMethod(delegate(InternalBodyArchitectService service) { var param = new ExerciseOperationParam(); param.ExerciseId = exercise.GlobalId; param.Operation = FavoriteOperation.Add; service.ExerciseOperation(data.Token, param); }); var dbProfile = Session.Get <Profile>(profile.GlobalId); Assert.AreNotEqual(dbProfile.DataInfo.ExerciseHash, oldHash); }
public void AddToFavorites() { var exercise = CreateExercise(Session, profiles[1], "ex1", "ex1"); var profile = (ProfileDTO)profiles[0].Tag; SessionData data = CreateNewSession(profile, ClientInformation); RunServiceMethod(delegate(InternalBodyArchitectService service) { var param = new ExerciseOperationParam(); param.ExerciseId = exercise.GlobalId; param.Operation = FavoriteOperation.Add; service.ExerciseOperation(data.Token, param); }); var dbProfile = Session.Get <Profile>(profile.GlobalId); Assert.AreEqual(1, dbProfile.FavoriteExercises.Count); Assert.AreEqual(exercise.GlobalId, dbProfile.FavoriteExercises.ElementAt(0).GlobalId); }
public void ExerciseOperation(Token token, ExerciseOperationParam param) { exceptionHandling(token, () => InternalService.ExerciseOperation(token, param)); }