public void AnotherProfile_Friends_ForMyFriend() { setPrivacy(Privacy.FriendsOnly); profiles[0].Friends.Add(profiles[1]); profiles[1].Friends.Add(profiles[0]); insertToDatabase(profiles[0]); insertToDatabase(profiles[1]); AddTrainingDaySet(profiles[0], null, DateTime.UtcNow.AddDays(-10).Date, exercises[0], new Tuple <int?, decimal?>(11, 40), new Tuple <int?, decimal?>(5, null)); AddTrainingDaySet(profiles[0], null, DateTime.UtcNow.AddDays(-5).Date, exercises[0], new Tuple <int?, decimal?>(5, 56)); AddTrainingDaySet(profiles[0], null, DateTime.UtcNow.AddDays(-5).Date, exercises[1], new Tuple <int?, decimal?>(5, 67)); var profile = (ProfileDTO)profiles[1].Tag; SessionData data = CreateNewSession(profile, ClientInformation); RunServiceMethod(delegate(InternalBodyArchitectService service) { var param = new ReportWeightRepetitionsParams(); param.UserId = profiles[0].GlobalId; param.Exercises.Add(exercises[0].GlobalId); var list = service.ReportWeightRepetitions(data.Token, param); Assert.AreEqual(2, list.Count); }); }
public IEnumerable RetrieveReportData(object arg) { ReportWeightRepetitionsParams param = null; param = settingsControl.GetReportParameters(); if (user != null) { param.UserId = user.GlobalId; } if (customer != null) { param.CustomerId = customer.GlobalId; } var list = ServiceManager.ReportWeightRepetitions(param); return(list); }
public void ForCustomer_AnotherProfile() { var customer = CreateCustomer("cust", profiles[0]); AddTrainingDaySet(profiles[0], customer, DateTime.UtcNow.AddDays(-10).Date, exercises[0], new Tuple <int?, decimal?>(11, 40), new Tuple <int?, decimal?>(5, null)); AddTrainingDaySet(profiles[0], null, DateTime.UtcNow.AddDays(-5).Date, exercises[0], new Tuple <int?, decimal?>(5, 56)); AddTrainingDaySet(profiles[1], null, DateTime.UtcNow.AddDays(-5).Date, exercises[0], new Tuple <int?, decimal?>(5, 67)); var profile = (ProfileDTO)profiles[1].Tag; SessionData data = CreateNewSession(profile, ClientInformation); RunServiceMethod(delegate(InternalBodyArchitectService service) { var param = new ReportWeightRepetitionsParams(); param.CustomerId = customer.GlobalId; param.Exercises.Add(exercises[0].GlobalId); service.ReportWeightRepetitions(data.Token, param); }); }
public void ToDate() { AddTrainingDaySet(profiles[0], null, DateTime.UtcNow.AddDays(-10).Date, exercises[0], new Tuple <int?, decimal?>(11, 40), new Tuple <int?, decimal?>(5, 60)); AddTrainingDaySet(profiles[0], null, DateTime.UtcNow.AddDays(-5).Date, exercises[0], new Tuple <int?, decimal?>(5, 56)); AddTrainingDaySet(profiles[0], null, DateTime.UtcNow.AddDays(-5).Date, exercises[0], new Tuple <int?, decimal?>(5, 67)); var profile = (ProfileDTO)profiles[0].Tag; SessionData data = CreateNewSession(profile, ClientInformation); RunServiceMethod(delegate(InternalBodyArchitectService service) { var param = new ReportWeightRepetitionsParams(); param.Exercises.Add(exercises[0].GlobalId); param.EndDate = DateTime.UtcNow.Date.AddDays(-6); var list = service.ReportWeightRepetitions(data.Token, param); assert(list, new Tuple <int?, decimal?>(5, 60), new Tuple <int?, decimal?>(11, 40)); }); }
public ReportWeightRepetitionsParams GetReportParameters() { var param = new ReportWeightRepetitionsParams(); UIHelper.Invoke(() => { var exercises = GetSelectedExercises(); param.StartDate = this.usrDateRange1.DateFrom; param.EndDate = this.usrDateRange1.DateTo; param.Exercises.AddRange(exercises.Select(x => x.GlobalId)); param.UseAllEntries = usrReportingEntryStatus1.UseAllEntries; param.SuperSlow = chkSuperSlow.IsChecked; param.RestPause = chkRestPause.IsChecked; param.SetTypes.AddRange(getSelectedSetType()); param.MyPlaces.AddRange(getSelectedPlaces()); param.DoneWays.AddRange(getSelectedDoneWays()); }, Dispatcher); return(param); }
public void EntriesWithDifferentDoneWays_ReturnAll() { var myPlace = CreateMyPlace("place1", profiles[0]); var item = AddTrainingDaySet(profiles[0], null, DateTime.UtcNow.AddDays(-10).Date, exercises[0], new Tuple <int?, decimal?>(11, 40), new Tuple <int?, decimal?>(5, 60)); item.Entries.ElementAt(0).DoneWay = ExerciseDoneWay.Barbell; insertToDatabase(item); AddTrainingDaySet(profiles[0], null, DateTime.UtcNow.AddDays(-5).Date, exercises[0], new Tuple <int?, decimal?>(5, 56)); AddTrainingDaySet(profiles[0], null, DateTime.UtcNow.AddDays(-5).Date, exercises[0], new Tuple <int?, decimal?>(5, 67)); var profile = (ProfileDTO)profiles[0].Tag; SessionData data = CreateNewSession(profile, ClientInformation); RunServiceMethod(delegate(InternalBodyArchitectService service) { var param = new ReportWeightRepetitionsParams(); param.Exercises.Add(exercises[0].GlobalId); var list = service.ReportWeightRepetitions(data.Token, param); assert(list, new Tuple <int?, decimal?>(11, 40), new Tuple <int?, decimal?>(5, 67)); }); }
public void SpecificSetType() { var item = AddTrainingDaySet(profiles[0], null, DateTime.UtcNow.AddDays(-10).Date, exercises[0], new Tuple <int?, decimal?>(11, 40), new Tuple <int?, decimal?>(5, 60)); item.Entries.ElementAt(0).Series.ElementAt(0).SetType = Model.SetType.Max; insertToDatabase(item); AddTrainingDaySet(profiles[0], null, DateTime.UtcNow.AddDays(-5).Date, exercises[0], new Tuple <int?, decimal?>(5, 56)); AddTrainingDaySet(profiles[0], null, DateTime.UtcNow.AddDays(-5).Date, exercises[0], new Tuple <int?, decimal?>(5, 67)); var profile = (ProfileDTO)profiles[0].Tag; SessionData data = CreateNewSession(profile, ClientInformation); RunServiceMethod(delegate(InternalBodyArchitectService service) { var param = new ReportWeightRepetitionsParams(); param.Exercises.Add(exercises[0].GlobalId); param.SetTypes.Add(SetType.Max); var list = service.ReportWeightRepetitions(data.Token, param); assert(list, new Tuple <int?, decimal?>(11, 40)); }); }
public IList <WeightReperitionReportResultItem> ReportWeightRepetitions(ReportWeightRepetitionsParams param) { if (!SecurityInfo.Licence.IsPremium) { throw new LicenceException("Reports are available in Premium or Instructor account only"); } StrengthTrainingEntry entry = null; TrainingDay day = null; Serie set = null; StrengthTrainingItem item = null; //var query = Session.QueryOver<TrainingDay>(() => day). // JoinAlias(x => day.Objects, () => entry). // JoinAlias(x => entry.Entries, () => item). // JoinAlias(x => item.Series, () => set); var query = Session.QueryOver <StrengthTrainingItem>(() => item). JoinAlias(x => item.StrengthTrainingEntry, () => entry). JoinAlias(x => entry.TrainingDay, () => day). JoinAlias(x => item.Series, () => set) .Where(x => entry.Status == EntryObjectStatus.Done);//reports are generated only for done entries //optimalization: for not retrieving exercises one by one var exercisesQuery = Session.QueryOver <Exercise>(); var dbMyProfile = Session.Load <Profile>(SecurityInfo.SessionData.Profile.GlobalId); var dbProfile = dbMyProfile; if (param.UserId.HasValue) { dbProfile = Session.Get <Profile>(param.UserId.Value); } if (param.CustomerId != null && dbProfile.GlobalId != SecurityInfo.SessionData.Profile.GlobalId) { throw new CrossProfileOperationException("This customer doesn't belong to your profile"); } if (ServiceHelper.IsPrivateCalendar(dbProfile, dbMyProfile)) { return(new List <WeightReperitionReportResultItem>()); } query = query.Where(x => day.Profile == dbProfile); if (param.CustomerId.HasValue) { Customer customer = Session.Get <Customer>(param.CustomerId.Value); if (customer.Profile != dbProfile) { throw new CrossProfileOperationException("This customer doesn't belong to your profile"); } query = query.Where(x => day.Customer == customer); } else { query = query.Where(x => day.Customer == null); } var purposeOr = Restrictions.Disjunction(); var exerciseOr = Restrictions.Disjunction(); foreach (var exerciseId in param.Exercises) { purposeOr.Add <StrengthTrainingItem>(x => item.Exercise.GlobalId == exerciseId); exerciseOr.Add <Exercise>(x => x.GlobalId == exerciseId); } query = query.And(purposeOr); exercisesQuery = exercisesQuery.And(exerciseOr); if (!param.UseAllEntries) { query = query.Where(x => entry.ReportStatus == ReportStatus.ShowInReport); } if (param.StartDate.HasValue) { query = query.Where(x => day.TrainingDate >= param.StartDate); } if (param.EndDate.HasValue) { query = query.Where(x => day.TrainingDate <= param.EndDate); } if (param.MyPlaces.Count > 0) { var myPlacesOr = Restrictions.Disjunction(); foreach (var myPlaceId in param.MyPlaces) { myPlacesOr.Add <StrengthTrainingItem>(x => entry.MyPlace.GlobalId == myPlaceId); } query = query.And(myPlacesOr); } if (param.SetTypes.Count > 0) { var setTypeOf = Restrictions.Disjunction(); foreach (var setType in param.SetTypes) { setTypeOf.Add <StrengthTrainingItem>(x => set.SetType == (SetType)setType); } query = query.And(setTypeOf); } if (param.RestPause.HasValue) { query = query.Where(x => set.IsRestPause == param.RestPause); } if (param.SuperSlow.HasValue) { query = query.Where(x => set.IsSuperSlow == param.SuperSlow); } if (param.DoneWays.Count > 0) { var doneWaysOr = Restrictions.Disjunction(); foreach (ExerciseDoneWay way in param.DoneWays) { doneWaysOr.Add <StrengthTrainingItem>(x => x.DoneWay == (BodyArchitect.Model.ExerciseDoneWay)way); } query = query.And(doneWaysOr); } query = query.Where(x => set.RepetitionNumber != null && set.Weight != null && set.Weight > 0).OrderBy(x => set.RepetitionNumber.Value).Asc .SelectList(l => l .SelectMax(x => set.Weight.Value) .SelectGroup(x => set.RepetitionNumber.Value) .SelectGroup(x => item.Exercise) .Select(x => item.GlobalId) //.SelectGroup(x => item.GlobalId) ); exercisesQuery.Future(); var future = query.Future <object[]>(); var result = future.Select(x => new WeightReperitionReportResultItem() { Repetitions = (decimal)x[1], Weight = (decimal)x[0], Exercise = x[2].Map <ExerciseLightDTO>(), StrengthTrainingItemId = (Guid)x[3] }).ToList(); return(result); }
public IList <WeightReperitionReportResultItem> ReportWeightRepetitions(Token token, ReportWeightRepetitionsParams param) { return(exceptionHandling(token, () => InternalService.ReportWeightRepetitions(token, param))); }
public IList <WeightReperitionReportResultItem> ReportWeightRepetitions(Token token, ReportWeightRepetitionsParams param) { var securityInfo = SecurityManager.EnsureAuthentication(token); var service = new ReportService(Session, securityInfo, Configuration); return(service.ReportWeightRepetitions(param)); }
public static IList <WeightReperitionReportResultItem> ReportWeightRepetitions(ReportWeightRepetitionsParams param) { return(exceptionHandling(() => Instance.ReportWeightRepetitions(Token, param))); }