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); }
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); }
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); }
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); }