Exemple #1
0
        /// <summary>
        /// Creates a new member by notifying the backend server
        /// </summary>
        /// <param name="m"></param>
        /// <returns>UserManagerResponseStatus</returns>
        public async Task <UserManagerResponseStatus> CreateMember(Member m)
        {
            var client = new RestClient(GlobalConstants.EndPointURL);

            var request = new RestRequest
            {
                Resource = GlobalConstants.CreateMemberEndPointRequestURL,
                Timeout  = GlobalConstants.RequestTimeout,
                Method   = Method.POST
            };

            PropertyInfo[] properties = typeof(Member).GetProperties();
            foreach (PropertyInfo property in properties)
            {
                request.AddParameter(property.Name, property.GetValue(m));
            }

            try
            {
                var response = await client.ExecuteTaskAsync(request);

                if (response.Content != null)
                {
                    UserManagerResponse data = JsonConvert.DeserializeObject <UserManagerResponse>(response.Content);

                    switch (data.Status)
                    {
                    case "MissingFields": return(UserManagerResponseStatus.MissingFields);

                    case "Success":
                        SessionKey = data.Key;
                        return(UserManagerResponseStatus.Success);

                    case "UserExists": return(UserManagerResponseStatus.UserExists);

                    default: return(UserManagerResponseStatus.UnknownResponse);
                    }
                }
            }

            catch (Exception e)
            {
                var property = new Dictionary <string, string> {
                    { "Category", "UserManager" }
                };
                Crashes.TrackError(e, property);

                return(UserManagerResponseStatus.NetworkError);
            }

            return(UserManagerResponseStatus.InvalidRequest);
        }
Exemple #2
0
        /// <summary>
        /// Logs user into the FBLA backend
        /// </summary>
        /// <param name="email"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public async Task <UserManagerResponseStatus> Login(string email, string password)
        {
            var client = new RestClient(GlobalConstants.EndPointURL);

            var request = new RestRequest
            {
                Resource = GlobalConstants.LoginEndPointRequestURL,
                Timeout  = GlobalConstants.RequestTimeout,
                Method   = Method.POST
            };

            request.AddParameter("email", email);
            request.AddParameter("password", password);

            try
            {
                var response = await client.ExecuteTaskAsync(request);

                if (response.Content != null)
                {
                    UserManagerResponse data = JsonConvert.DeserializeObject <UserManagerResponse>(response.Content);

                    if (data.Status != null)
                    {
                        switch (data.Status)
                        {
                        case "Invalid form data": return(UserManagerResponseStatus.InvalidRequest);

                        case "LoggedIn":
                            SessionKey = data.Key;
                            Profile    = data.Profile;
                            return(UserManagerResponseStatus.Success);

                        case "InvalidCredentials": return(UserManagerResponseStatus.InvalidCredentials);

                        default: return(UserManagerResponseStatus.UnknownResponse);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                var properties = new Dictionary <string, string> {
                    { "Category", "UserManager" }
                };
                Crashes.TrackError(e, properties);

                return(UserManagerResponseStatus.NetworkError);
            }

            return(UserManagerResponseStatus.InvalidRequest);
        }
Exemple #3
0
        public async Task <UserManagerResponseStatus> SaveProfileImage(string encodedImage)
        {
            var client = new RestClient(GlobalConstants.EndPointURL);

            var request = new RestRequest
            {
                Resource = GlobalConstants.EditProfileImageRequestURL,
                Timeout  = GlobalConstants.RequestTimeout,
                Method   = Method.POST
            };

            request.AddParameter("profileImageSource", encodedImage);

            AddAuthorization(request);


            try
            {
                var response = await client.ExecuteTaskAsync(request);

                if (response.Content != null)
                {
                    UserManagerResponse data = JsonConvert.DeserializeObject <UserManagerResponse>(response.Content);

                    if (data.Status != null)
                    {
                        switch (data.Status)
                        {
                        case "Success": return(UserManagerResponseStatus.Success);

                        case "NotLoggedIn": return(UserManagerResponseStatus.InvalidCredentials);

                        default: return(UserManagerResponseStatus.UnknownResponse);
                        }
                    }
                }
            }

            catch (Exception e)
            {
                var properties = new Dictionary <string, string> {
                    { "Category", "UserManager" }
                };
                Crashes.TrackError(e, properties);

                return(UserManagerResponseStatus.NetworkError);
            }

            return(UserManagerResponseStatus.InvalidRequest);
        }
Exemple #4
0
        /// <summary>
        /// Allows the user to signup for a particular meeting with a password provided by the meeting organizer
        /// </summary>
        /// <param name="meeting">Meeting member wants to sign up for</param>
        /// <param name="password">Password code for meeting</param>
        /// <returns></returns>
        public async Task <UserManagerResponseStatus> MeetingSignup(Meeting meeting, string password = "")
        {
            var client = new RestClient(GlobalConstants.EndPointURL);

            var request = new RestRequest
            {
                Resource = GlobalConstants.MeetingSignupEndPointRequestURL,
                Timeout  = GlobalConstants.RequestTimeout,
                Method   = Method.POST
            };

            request.AddParameter("meetingid", meeting.MeetingId);
            request.AddParameter("password", password);

            AddAuthorization(request);

            try
            {
                var response = await client.ExecuteTaskAsync(request);

                if (response.Content != null)
                {
                    UserManagerResponse data = JsonConvert.DeserializeObject <UserManagerResponse>(response.Content);

                    if (data.Status != null)
                    {
                        switch (data.Status)
                        {
                        case "NotLoggedIn": return(UserManagerResponseStatus.NotLoggedIn);

                        case "InvalidCredentials": return(UserManagerResponseStatus.InvalidCredentials);

                        case "Success":

                            if (data.Meeting != null)
                            {
                                meeting.EventName   = data.Meeting.EventName;
                                meeting.AllDay      = data.Meeting.AllDay;
                                meeting.Capacity    = data.Meeting.Capacity;
                                meeting.Color       = data.Meeting.Color;
                                meeting.ContactId   = data.Meeting.ContactId;
                                meeting.Description = data.Meeting.Description;
                                meeting.From        = data.Meeting.From;
                                meeting.MeetingId   = data.Meeting.MeetingId;
                                meeting.Organizer   = data.Meeting.Organizer;
                                meeting.To          = data.Meeting.To;
                                meeting.Type        = data.Meeting.Type;
                                meeting.MeetingAttendees.Clear();
                                foreach (var attendee in data.Meeting.MeetingAttendees)
                                {
                                    meeting.MeetingAttendees.Add(attendee);
                                }
                                meeting.OnPropertyChanged("MeetingAttendees");
                            }

                            return(UserManagerResponseStatus.Success);

                        default: return(UserManagerResponseStatus.UnknownResponse);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                var properties = new Dictionary <string, string> {
                    { "Category", "UserManager" }
                };
                Crashes.TrackError(e, properties);

                return(UserManagerResponseStatus.NetworkError);
            }

            return(UserManagerResponseStatus.InvalidRequest);
        }