示例#1
0
        public PagedResult <MyTrainingDTO> GetMyTrainings(Token token, GetMyTrainingsParam param, PartialRetrievingInfo pageInfo)
        {
            var securityInfo = SecurityManager.EnsureAuthentication(token);
            var service      = new MyTrainingService(Session, securityInfo, Configuration);

            return(service.GetMyTrainings(param, pageInfo));
        }
        public PagedResult <MyTrainingDTO> GetMyTrainings(GetMyTrainingsParam param, PartialRetrievingInfo retrievingInfo)
        {
            Log.WriteWarning("GetMyTrainings:Username={0}", SecurityInfo.SessionData.Profile.UserName);

            using (var transactionScope = Session.BeginGetTransaction())
            {
                MyTraining _temp   = null;
                var        idQuery = Session.QueryOver <MyTraining>(() => _temp);
                idQuery = (QueryOver <MyTraining, MyTraining>)getMyTrainingsCriterias(idQuery, param);
                if (idQuery == null)
                {
                    return(new PagedResult <MyTrainingDTO>(new List <MyTrainingDTO>(), 0, 0));
                }

                var fetchQuery = Session.QueryOver <MyTraining>(() => _temp)
                                 .Fetch(x => x.EntryObjects).Eager
                                 .Fetch(x => ((SuplementsEntry)x.EntryObjects.First()).Items).Eager
                                 .Fetch(x => (((SuplementsEntry)x.EntryObjects.First()).Items).First().Suplement).Eager
                                 .Fetch(x => ((StrengthTrainingEntry)x.EntryObjects.First()).Entries).Eager
                                 .Fetch(x => (((StrengthTrainingEntry)x.EntryObjects.First()).Entries).First().Exercise).Eager
                                 .Fetch(x => x.EntryObjects.First().LoginData).Eager
                                 .Fetch(x => x.EntryObjects.First().LoginData.ApiKey).Eager
                                 .Fetch(x => x.EntryObjects.First().Reminder).Eager
                                 .Fetch(x => x.EntryObjects.First().TrainingDay).Eager
                                 .Fetch(x => x.EntryObjects.First().TrainingDay.Objects).Lazy;

                var listPack = fetchQuery.ToExPagedResults <MyTrainingDTO, MyTraining>(retrievingInfo, idQuery);
                transactionScope.Commit();
                return(listPack);
            }
        }
        protected override PagedResult <MyTrainingDTO> GetItemsMethod(PartialRetrievingInfo pageInfo)
        {
            GetMyTrainingsParam param = new GetMyTrainingsParam();

            param.CustomerId = key.CustomerId;
            param.UserId     = key.ProfileId;
            return(ServiceManager.GetMyTrainings(param, new PartialRetrievingInfo()));
        }
示例#4
0
        public void All()
        {
            var         profile = (ProfileDTO)profiles[0].Tag;
            SessionData data    = CreateNewSession(profile, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                GetMyTrainingsParam param = new GetMyTrainingsParam();
                var entries = service.GetMyTrainings(data.Token, param, new PartialRetrievingInfo());
                Assert.AreEqual(myTrainings.Count, entries.AllItemsCount);
                Assert.AreEqual(myTrainings.Count, entries.Items.Count);
            });
        }
示例#5
0
        public void ForCustomer_GetMyTrainings_CustomerFromAnotherProfile()
        {
            setPrivacy(Privacy.Public);
            var         profile = (ProfileDTO)profiles[1].Tag;
            SessionData data    = CreateNewSession(profile, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                GetMyTrainingsParam param = new GetMyTrainingsParam();
                param.CustomerId          = customer.GlobalId;
                service.GetMyTrainings(data.Token, param, new PartialRetrievingInfo());
            });
        }
示例#6
0
        public void ById_GetMyTrainings_CustomerFromAnotherProfile()
        {
            setPrivacy(Privacy.Public);
            var         profile = (ProfileDTO)profiles[1].Tag;
            SessionData data    = CreateNewSession(profile, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                GetMyTrainingsParam param = new GetMyTrainingsParam();
                param.MyTrainingId        = customerTraining.GlobalId;
                var result = service.GetMyTrainings(data.Token, param, new PartialRetrievingInfo());
                Assert.AreEqual(0, result.AllItemsCount);
            });
        }
示例#7
0
        public void WithSpecifiedTrainingEnd()
        {
            var         profile = (ProfileDTO)profiles[0].Tag;
            SessionData data    = CreateNewSession(profile, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                GetMyTrainingsParam param = new GetMyTrainingsParam();
                param.TrainingEnds.Add(Service.V2.Model.TrainingEnd.Complete);
                var entries = service.GetMyTrainings(data.Token, param, new PartialRetrievingInfo());

                assert(entries, 0, 1, 4);
            });
        }
示例#8
0
        public void FromStartDate()
        {
            var         profile = (ProfileDTO)profiles[0].Tag;
            SessionData data    = CreateNewSession(profile, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                GetMyTrainingsParam param = new GetMyTrainingsParam();
                param.StartDate           = DateTime.UtcNow.Date.AddDays(-4);
                var entries = service.GetMyTrainings(data.Token, param, new PartialRetrievingInfo());

                assert(entries, 0, 3);
            });
        }
示例#9
0
        public void ForCustomer()
        {
            setPrivacy(Privacy.Public);
            var         profile = (ProfileDTO)profiles[0].Tag;
            SessionData data    = CreateNewSession(profile, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                GetMyTrainingsParam param = new GetMyTrainingsParam();
                param.CustomerId          = customer.GlobalId;
                var entries = service.GetMyTrainings(data.Token, param, new PartialRetrievingInfo());
                Assert.AreEqual(1, entries.AllItemsCount);
                Assert.AreEqual("a6w3", entries.Items[0].Name);
            });
        }
示例#10
0
        public void GetMyTrainings_Public()
        {
            setPrivacy(Privacy.Public);

            var data = CreateNewSession((ProfileDTO)profiles[1].Tag, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                GetMyTrainingsParam param = new GetMyTrainingsParam();
                param.UserId = profiles[0].GlobalId;
                var entries  = service.GetMyTrainings(data.Token, param, new PartialRetrievingInfo());

                Assert.AreEqual(myTrainings.Count, entries.AllItemsCount);
            });

            data = CreateNewSession((ProfileDTO)profiles[2].Tag, ClientInformation);
            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                GetMyTrainingsParam param = new GetMyTrainingsParam();
                param.UserId = profiles[0].GlobalId;
                var entries  = service.GetMyTrainings(data.Token, param, new PartialRetrievingInfo());
                Assert.AreEqual(myTrainings.Count, entries.AllItemsCount);
            });
        }
示例#11
0
        private IQueryOver <MyTraining, MyTraining> getMyTrainingsCriterias(IQueryOver <MyTraining, MyTraining> queryProducts, GetMyTrainingsParam param)
        {
            queryProducts = queryProducts.ApplyUser(param, Session, SecurityInfo);
            if (queryProducts == null)
            {
                return(null);
            }

            if (param.MyTrainingId.HasValue)
            {
                queryProducts = queryProducts.Where(day => day.GlobalId == param.MyTrainingId.Value);
            }
            if (param.StartDate.HasValue)
            {
                queryProducts = queryProducts.Where(day => day.StartDate >= param.StartDate);
            }
            if (param.EndDate.HasValue)
            {
                queryProducts = queryProducts.Where(day => day.StartDate <= param.EndDate);
            }


            if (param.TrainingEnds.Count > 0)
            {
                var langOr = Restrictions.Disjunction();
                foreach (var lang in param.TrainingEnds)
                {
                    langOr.Add <MyTraining>(x => x.TrainingEnd == (TrainingEnd)lang);
                }
                queryProducts = queryProducts.And(langOr);
            }

            IQueryOverOrderBuilder <MyTraining, MyTraining> orderBuilder;

            switch (param.SortOrder)
            {
            case MyTrainingSortOrder.StartDate:
                orderBuilder = queryProducts.OrderBy(x => x.StartDate);
                break;

            case MyTrainingSortOrder.PercentageCompleted:
                orderBuilder = queryProducts.OrderBy(x => x.PercentageCompleted);
                break;

            default:
                orderBuilder = queryProducts.OrderBy(x => x.Name);
                break;
            }
            if (param.SortAscending)
            {
                queryProducts = orderBuilder.Asc;
            }
            else
            {
                queryProducts = orderBuilder.Desc;
            }
            return(queryProducts);
        }
 public PagedResult <MyTrainingDTO> GetMyTrainings(Token token, GetMyTrainingsParam param, PartialRetrievingInfo pageInfo)
 {
     return(exceptionHandling(token, () => InternalService.GetMyTrainings(token, param, pageInfo)));
 }