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);
            });
        }
Ejemplo n.º 2
0
        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));
            });
        }
Ejemplo n.º 8
0
        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)));
 }
Ejemplo n.º 10
0
        public IList <WeightReperitionReportResultItem> ReportWeightRepetitions(Token token, ReportWeightRepetitionsParams param)
        {
            var securityInfo = SecurityManager.EnsureAuthentication(token);
            var service      = new ReportService(Session, securityInfo, Configuration);

            return(service.ReportWeightRepetitions(param));
        }
Ejemplo n.º 11
0
 public static IList <WeightReperitionReportResultItem> ReportWeightRepetitions(ReportWeightRepetitionsParams param)
 {
     return(exceptionHandling(() => Instance.ReportWeightRepetitions(Token, param)));
 }