public async Task TestAddPushNotificationSubscriptionAsync() { //Setup TestingContext testingContext = new TestingContext(); SetUpTestingContext(testingContext); INotificationService notificationService = testingContext.GetService <NotificationService>(); NotificationSubscriptionDto dto = new NotificationSubscriptionDto() { Endpoint = "Test", Keys = new KeyDto() { Auth = "TestAut", P256dh = "testp256", }, ExpirationTime = DateTime.Today.AddYears(3), }; //Act await notificationService.AddPushNotificationSubscriptionAsync(dto); //Assert ApplicationDbContext dbContext = testingContext.GetSimple <ApplicationDbContext>(); NotificationSubscription sub = await dbContext.Notifications.LastAsync(); Assert.Equal(dto.Endpoint, sub.Endpoint); Assert.True(sub.Id > 0); }
private void CopyDataSubscription(NotificationSubscriptionDto dto, NotificationSubscription entity) { entity.Endpoint = dto.Endpoint; entity.Auth = dto.Keys?.Auth; entity.P256DiffHell = dto.Keys?.P256dh; entity.ExpirationTime = dto.ExpirationTime; entity.AsString = dto.AsString; }
public async Task AddPushNotificationSubscriptionAsync(NotificationSubscriptionDto subscriptionDto) { await this._dbLogService.LogMessageAsync($"adding subscription: {subscriptionDto.Endpoint}"); if (!_context.Notifications.Any(x => x.Endpoint == subscriptionDto.Endpoint && x.Auth == subscriptionDto.Keys.Auth && x.Active)) { NotificationSubscription entity = new NotificationSubscription(); CopyData(subscriptionDto, entity); entity.User = await GetCranUserAsync(); await this._context.Notifications.AddAsync(entity); await this._context.SaveChangesAsync(); } }
public async Task <JsonResult> AddPushRegistration([FromBody] NotificationSubscriptionDto dto) { await _notificationService.AddPushNotificationSubscriptionAsync(dto); return(Json(OkReturnString)); }
protected virtual void CopyData(object dto, CranEntity entity) { if (dto is QuestionOptionDto && entity is QuestionOption) { QuestionOptionDto dtoSource = (QuestionOptionDto)dto; QuestionOption entityDestination = (QuestionOption)entity; entityDestination.IsTrue = dtoSource.IsTrue; entityDestination.Text = dtoSource.Text ?? string.Empty; entityDestination.IdQuestion = dtoSource.IdQuestion; } else if (dto is QuestionDto && entity is Question) { QuestionDto dtoSource = (QuestionDto )dto; Question entityDestination = (Question)entity; entityDestination.Title = dtoSource.Title; entityDestination.Text = dtoSource.Text ?? string.Empty; entityDestination.Explanation = dtoSource.Explanation; entityDestination.QuestionType = dtoSource.QuestionType; entityDestination.Language = Enum.Parse <Language>(dtoSource.Language); } else if (dto is RelQuestionTagDto && entity is RelQuestionTag) { RelQuestionTagDto dtoSource = (RelQuestionTagDto)dto; RelQuestionTag entityDestination = (RelQuestionTag)entity; entityDestination.IdQuestion = dtoSource.IdQuestion; entityDestination.IdTag = dtoSource.IdTag; } else if (dto is RelQuestionImageDto && entity is RelQuestionImage) { RelQuestionImageDto dtoSource = (RelQuestionImageDto)dto; RelQuestionImage entityDestination = (RelQuestionImage)entity; entityDestination.IdQuestion = dtoSource.IdQuestion; entityDestination.IdImage = dtoSource.IdImage; } else if (dto is ImageDto && entity is Image) { ImageDto dtoSource = (ImageDto)dto; Image entityDestination = (Image)entity; entityDestination.Width = dtoSource.Width; entityDestination.Height = dtoSource.Height; entityDestination.Full = dtoSource.Full; } else if (dto is CourseDto && entity is Course) { CourseDto dtoSource = (CourseDto)dto; Course entityDestination = (Course)entity; entityDestination.Title = dtoSource.Title; entityDestination.Language = Enum.Parse <Language>(dtoSource.Language); entityDestination.NumQuestionsToAsk = dtoSource.NumQuestionsToAsk; entityDestination.Description = dtoSource.Description; } else if (dto is RelCourseTagDto && entity is RelCourseTag) { RelCourseTagDto dtoSource = (RelCourseTagDto)dto; RelCourseTag entityDestination = (RelCourseTag)entity; entityDestination.IdCourse = dtoSource.IdCourse; entityDestination.IdTag = dtoSource.IdTag; } else if (dto is NotificationSubscriptionDto && entity is NotificationSubscription) { NotificationSubscriptionDto dtoSource = (NotificationSubscriptionDto)dto; NotificationSubscription entityDestination = (NotificationSubscription)entity; entityDestination.Endpoint = dtoSource.Endpoint; entityDestination.Auth = dtoSource.Keys?.Auth; entityDestination.P256DiffHell = dtoSource.Keys?.P256dh; entityDestination.ExpirationTime = dtoSource.ExpirationTime; entityDestination.AsString = dtoSource.AsString; } else { throw new NotImplementedException(); } }