コード例 #1
0
        public async Task <bool> RegisterForSession(ArloRegistration rego, ArloSession session)
        {
            var evRego = new ArloEventSessionRegistration
            {
                Link = new List <Link>()
            };

            var linkSession = new Link
            {
                Rel   = Constants.Rel.RelatedSession,
                Type  = Constants.XmlType,
                Title = "Session",
                Href  = _systemService.GetRealUrl(string.Format(Constants.Endpoints.EventSessionPattern, session.SessionID))
            };

            var linkRego = new Link
            {
                Rel   = Constants.Rel.ParentRegistration,
                Type  = Constants.XmlType,
                Title = "ParentRegistration",
                Href  = _systemService.GetRealUrl(string.Format(Constants.Endpoints.ParentRegistrationPattern, rego.RegistrationID))
            };

            evRego.Link.Add(linkRego);
            evRego.Link.Add(linkSession);

            var result = await _regoRepo.PostResult(evRego,
                                                    string.Format(Constants.Endpoints.SessionRegistrationsPattern, rego.RegistrationID));

            if (result.IsSuccessCode)
            {
                await GetSessionRegistrations(rego, true); //recache this

                _logService.TrackTrace("Register", XSeverityLevel.Information,

                                       new Dictionary <string, string>
                {
                    {
                        "text", result.Result
                    },
                    { "rego", rego.RegistrationID },
                    { "sessionid", session.SessionID }
                });
            }
            else
            {
                _logService.TrackTrace("Unregister issue", XSeverityLevel.Error,

                                       new Dictionary <string, string>
                {
                    {
                        "text", result.Result
                    },
                    { "rego", rego.RegistrationID },
                    { "sessionid", session.SessionID }
                });
            }

            return(result.IsSuccessCode);
        }
コード例 #2
0
        public async Task <ArloEventSessionRegistration> IsRegistered(ArloRegistration rego, string sessionCode, bool forceRefresh)
        {
            var registrations = await GetSessionRegistrations(rego, forceRefresh);

            var thisRego = registrations.FirstOrDefault(_ => _.Session?.Code == sessionCode);

            return(thisRego);
        }
コード例 #3
0
        public async Task <bool> UnregisterFromSession(ArloRegistration rego, ArloEventSessionRegistration session)
        {
            var result = await _regoRepo.UploadRaw(null,
                                                   $"{rego.FindLink(Constants.Rel.Self)}{string.Format(Constants.Endpoints.SessionRegistrationsPattern2, session.RegistrationID)}",
                                                   "DELETE");

            if (result.IsSuccessCode)
            {
                await GetSessionRegistrations(rego, true); //recache this

                _logService.TrackTrace("Unregsiter", XSeverityLevel.Error,

                                       new Dictionary <string, string>
                {
                    {
                        "text", result.Result
                    },
                    { "rego", rego.RegistrationID },
                    { "registrationactualId", session.RegistrationID }
                });
            }
            else
            {
                _logService.TrackTrace("Unregister issue", XSeverityLevel.Error,

                                       new Dictionary <string, string>
                {
                    {
                        "text", result.Result
                    },
                    { "rego", rego.RegistrationID },
                    { "registrationactualId", session.RegistrationID }
                });
            }

            return(result.IsSuccessCode);
        }
コード例 #4
0
        public async Task <List <ArloEventSessionRegistration> > GetSessionRegistrations(ArloRegistration rego, bool forceRefresh)
        {
            if (!forceRefresh)
            {
                var cache = await GetEntity <List <ArloEventSessionRegistration> >(rego.RegistrationID);

                if (cache != null)
                {
                    return(cache);
                }
            }

            var l = rego.FindLink(Constants.Rel.SessionRegistrations);

            var list = await LoadEntity <EventSessionRegistrationList>(l, l, forceRefresh, Constants.Cache.ShortTimespan);

            var expandedList = await LoadLinkEntities <ArloEventSessionRegistration>(list, l,
                                                                                     Constants.Rel.EventSessionRegistration, false);

            //Tryng out something with tasks and Local Functions
            async Task SessionDetailGetter(ArloEventSessionRegistration sessionRego)
            {
                var session =
                    await _sessionService.GetEventSession(sessionRego.FindLink(Constants.Rel.RelatedSession), forceRefresh);

                sessionRego.Session = session;
            }

            await expandedList.WhenAllList(SessionDetailGetter);

            expandedList = expandedList.OrderBy(_ => _.Session.DateTime_Start).ToList();

            await SetEntity(rego.RegistrationID, expandedList);

            return(expandedList);
        }