public HttpResponseMessage Post([FromBody] FollowSpeakerRequest request)
        {
            HttpResponseMessage response;
            int appUserId;
            int speakerId;

            try
            {
                FollowSpeakerResponse followSpeakerResponse = new FollowSpeakerResponse();
                appUserId = Convert.ToInt32(request.AppUserId);
                speakerId = Convert.ToInt32(request.SpeakerId);
                using (TechReady.Portal.Models.TechReadyDbContext ctx = new TechReady.Portal.Models.TechReadyDbContext())
                {
                    var appuser = (from c in ctx.AppUsers
                                   where c.AppUserID == appUserId
                                   select c).
                                  FirstOrDefault();

                    if (appuser != null)
                    {
                        var speaker = (from c in ctx.Speakers
                                       where c.SpeakerID == speakerId
                                       select c).FirstOrDefault();

                        if (appuser.FollowedSpeakers == null)
                        {
                            appuser.FollowedSpeakers = new List <Speaker>();
                        }

                        if (request.Follow)
                        {
                            if (speaker != null)
                            {
                                appuser.FollowedSpeakers.Add(speaker);
                            }
                        }
                        else
                        {
                            appuser.FollowedSpeakers.Remove(speaker);
                        }
                        ctx.SaveChanges();
                    }
                }

                response = this.Request.CreateResponse(HttpStatusCode.OK, followSpeakerResponse);
                response.Content.Headers.Expires = new DateTimeOffset(DateTime.Now.AddSeconds(300));
            }
            catch (Exception ex)
            {
                HttpError myCustomError = new HttpError(ex.Message)
                {
                    { "IsSuccess", false }
                };
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, myCustomError));
            }
            return(response);
        }
        public HttpResponseMessage Post([FromBody] WatchedLearningResourceRequest request)
        {
            HttpResponseMessage response;
            int appUserId;
            int learningResourceId;

            try
            {
                WatchedLearningResourceResponse followWatchedLearningResourceResponse = new WatchedLearningResourceResponse();

                appUserId          = Convert.ToInt32(request.AppUserId);
                learningResourceId = Convert.ToInt32(request.WatchedLearningResourceId);

                using (TechReady.Portal.Models.TechReadyDbContext ctx = new TechReady.Portal.Models.TechReadyDbContext())
                {
                    var appuser = (from c in ctx.AppUsers
                                   where c.AppUserID == appUserId
                                   select c).
                                  FirstOrDefault();

                    if (appuser != null)
                    {
                        var watchedLearningResource = (from c in ctx.LearningResources
                                                       where c.LearningResourceID == learningResourceId
                                                       select c).FirstOrDefault();


                        if (appuser.WatchedLearningResources == null)
                        {
                            appuser.WatchedLearningResources = new List <LearningResource>();
                        }
                        if (watchedLearningResource != null)
                        {
                            appuser.WatchedLearningResources.Add(watchedLearningResource);
                            ctx.SaveChanges();
                        }
                    }
                }

                response = this.Request.CreateResponse(HttpStatusCode.OK, followWatchedLearningResourceResponse);
                response.Content.Headers.Expires = new DateTimeOffset(DateTime.Now.AddSeconds(300));
            }
            catch (Exception ex)
            {
                HttpError myCustomError = new HttpError(ex.Message)
                {
                    { "IsSuccess", false }
                };
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, myCustomError));
            }
            return(response);
        }
Пример #3
0
        public HttpResponseMessage Post([FromBody] FeedbackRequest request)
        {
            HttpResponseMessage response;

            try
            {
                FeedbackResponse feedbackResponse = new FeedbackResponse();

                using (TechReady.Portal.Models.TechReadyDbContext ctx = new TechReady.Portal.Models.TechReadyDbContext())
                {
                    var appUserId = Convert.ToInt32(request.AppUserId);
                    var appuser   = (from c in ctx.AppUsers
                                     where c.AppUserID == appUserId select c).
                                    FirstOrDefault();

                    if (appuser != null)
                    {
                        AppFeedback feedback = new AppFeedback()
                        {
                            AppUserID    = appUserId,
                            Email        = request.Email,
                            FeedbackText = request.Feedback,
                            FeedbackType = request.FeedbackType,
                            Name         = request.Name
                        };

                        ctx.AppFeedbacks.Add(feedback);

                        ctx.SaveChanges();

                        feedbackResponse.ResponseText = "Thank you for sharing your feedback!";
                    }
                    else
                    {
                        feedbackResponse.ResponseText = "User is not registered, Please register to provide feedback";
                    }
                }

                response = this.Request.CreateResponse(HttpStatusCode.OK, feedbackResponse);
                response.Content.Headers.Expires = new DateTimeOffset(DateTime.Now.AddSeconds(300));
            }
            catch (Exception ex)
            {
                HttpError myCustomError = new HttpError(ex.Message)
                {
                    { "IsSuccess", false }
                };
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, myCustomError));
            }
            return(response);
        }
Пример #4
0
        public HttpResponseMessage Post([FromBody] MarkNotificationRequest request)
        {
            HttpResponseMessage response;

            try
            {
                MarkNotificationResponse notificationsResponse = new MarkNotificationResponse();

                using (DbModel.TechReadyDbContext ctx = new DbModel.TechReadyDbContext())
                {
                    var appUserId      = Convert.ToInt32(request.AppUserId);
                    var notificationId = Convert.ToInt32(request.NotificationId);

                    var appUser = (from c in ctx.AppUserNotificationActions
                                   where c.AppUserID == appUserId && c.NotificationID == notificationId
                                   select c).FirstOrDefault();

                    if (appUser != null)
                    {
                        appUser.Read = true;
                    }
                    ctx.SaveChanges();
                }



                response = this.Request.CreateResponse(HttpStatusCode.OK, notificationsResponse);
                response.Content.Headers.Expires = new DateTimeOffset(DateTime.Now.AddSeconds(300));
            }
            catch (Exception ex)
            {
                HttpError myCustomError = new HttpError(ex.Message)
                {
                    { "IsSuccess", false }
                };
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, myCustomError));
            }
            return(response);
        }
Пример #5
0
        public async Task <HttpResponseMessage> Post([FromBody] ProfileRequest request)
        {
            HttpResponseMessage response;

            try
            {
                var profileResponse = new ProfileResponse();

                using (DbModel.TechReadyDbContext ctx = new   DbModel.TechReadyDbContext())
                {
                    var appUser = (from c in ctx.AppUsers
                                   where
                                   c.AuthProviderName == request.AuthProvider &&
                                   c.AuthProviderUserId == request.AuthProviderUserId
                                   select c).FirstOrDefault();

                    if (appUser == null)
                    {
                        appUser = new   DbModel.AppUser();
                        ctx.AppUsers.Add(appUser);
                        appUser.RegistrationDateTime = DateTime.Now;
                    }

                    appUser.CityName = request.City.CityName;
                    appUser.Town     = request.Town;
                    if (request.Location != null)
                    {
                        appUser.Location = ConvertGeoCode(request.Location);
                    }
                    appUser.AudienceOrgID      = request.SelectedAudienceOrgType.AudienceOrgId;
                    appUser.AuthProviderName   = request.AuthProvider;
                    appUser.AuthProviderUserId = request.AuthProviderUserId;
                    appUser.Email    = request.Email;
                    appUser.FullName = request.FullName;



                    if (appUser.TechnologyTags == null)
                    {
                        appUser.TechnologyTags = new List <DbModel.PrimaryTechnology>();
                    }

                    foreach (var tech in request.SecondaryTechnologies)
                    {
                        var c = (from t in ctx.PrimaryTechnologies
                                 where t.PrimaryTechnologyID == tech.PrimaryTechnologyId
                                 select t).FirstOrDefault();
                        if (c != null)
                        {
                            if (tech.IsSelected)
                            {
                                appUser.TechnologyTags.Add(c);
                            }
                            else
                            {
                                if (
                                    appUser.TechnologyTags.FirstOrDefault(
                                        x => x.PrimaryTechnologyID == c.PrimaryTechnologyID) != null)
                                {
                                    appUser.TechnologyTags.Remove(c);
                                }
                            }
                        }
                    }
                    ctx.SaveChanges();
                    if (request.PushEnabled && !string.IsNullOrEmpty(request.PushId))
                    {
                        //Create/Update if the Platform Changes or Notifications are Enabled
                        if ((appUser.DevicePlatform != request.DevicePlatform) ||
                            (appUser.PushEnabled != request.PushEnabled) ||
                            string.IsNullOrEmpty(appUser.DeviceId) ||
                            appUser.PushId != request.PushId
                            )
                        {
                            appUser.DeviceId = await hub.CreateRegistrationIdAsync();

                            RegistrationDescription registration = null;
                            switch (request.DevicePlatform)
                            {
                            case "mpns":
                                registration = new MpnsRegistrationDescription(request.PushId);
                                break;

                            case "wns":
                                registration = new WindowsRegistrationDescription(request.PushId);
                                break;

                            case "apns":
                                registration = new AppleRegistrationDescription(request.PushId);
                                break;

                            case "gcm":
                                registration = new GcmRegistrationDescription(request.PushId);
                                break;

                            default:
                                throw new HttpResponseException(HttpStatusCode.BadRequest);
                            }
                            registration.RegistrationId = appUser.DeviceId;

                            registration.Tags =
                                new HashSet <string>(appUser.TechnologyTags.Select(x => x.PrimaryTech).ToList().Select(x => x.Replace(" ", "_")).ToList());
                            registration.Tags.Add(request.SelectedAudienceType.AudienceTypeName.Replace(" ", "_"));
                            registration.Tags.Add("userId:" + appUser.AppUserID);

                            if (appUser.FollowedEvents != null)
                            {
                                foreach (var followedEvent in appUser.FollowedEvents)
                                {
                                    registration.Tags.Add("eventId:" + followedEvent.EventID.ToString());
                                }
                            }
                            if (appUser.FollowedSpeakers != null)
                            {
                                foreach (var followedSpeaker in appUser.FollowedSpeakers)
                                {
                                    registration.Tags.Add("speakerId:" + followedSpeaker.SpeakerID.ToString());
                                }
                            }


                            await hub.CreateOrUpdateRegistrationAsync(registration);
                        }
                    }
                    else
                    {
                        if (!string.IsNullOrEmpty(appUser.DeviceId))
                        {
                            await hub.DeleteRegistrationAsync(appUser.DeviceId);

                            appUser.DeviceId = null;
                        }
                    }

                    appUser.DevicePlatform = request.DevicePlatform;
                    appUser.LastAccessTime = DateTime.Now;
                    appUser.PushEnabled    = request.PushEnabled;
                    appUser.PushId         = request.PushId;

                    ctx.SaveChanges();

                    profileResponse.UserId =
                        appUser.AppUserID;
                }
                response = this.Request.CreateResponse(HttpStatusCode.OK, profileResponse);
                response.Content.Headers.Expires = new DateTimeOffset(DateTime.Now.AddSeconds(300));
            }
            catch (Exception ex)
            {
                HttpError myCustomError = new HttpError(ex.Message)
                {
                    { "IsSuccess", false }
                };
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, myCustomError));
            }
            return(response);
        }