public async Task <IActionResult> UserNotifications() { try { var userIdClaim = Convert.ToInt32(User.Claims.FirstOrDefault(x => x.Type.ToLower(CultureInfo.InvariantCulture).Trim() == "userId".ToLower(CultureInfo.InvariantCulture).Trim()).Value); var sessionIdClaim = User.Claims.FirstOrDefault(x => x.Type.ToLower(CultureInfo.InvariantCulture).Trim() == "sessionMobileId".ToLower(CultureInfo.InvariantCulture).Trim()).Value; /* Checks the session of the user against its Id. */ if (string.IsNullOrEmpty(await _userRepository.CheckSessionId(userIdClaim, sessionIdClaim))) { return(Ok()); } var userNotifications = await _notification.GetUserNotificationsSettings(userIdClaim); if (userNotifications == null) { return(Ok(new ApiResponse(Microsoft.AspNetCore.Http.StatusCodes.Status200OK, false, MessagesConstants.UserNotificationNotExists))); } return(Ok(new ApiResponse(Microsoft.AspNetCore.Http.StatusCodes.Status200OK, true, MessagesConstants.UserNotificationExists, userNotifications))); } catch (Exception ex) { HttpContext.RiseError(new Exception(string.Concat("API := (Notifications := UserNotifications)", ex.Message, " Stack Trace : ", ex.StackTrace, " Inner Exception : ", ex.InnerException))); return(Ok(new ApiResponse(Microsoft.AspNetCore.Http.StatusCodes.Status200OK, false, MessagesConstants.SomeIssueInProcessing))); } }
public async Task <NotificationSettingsDto> UpdateUserNotificationsSettings(int notificationId, bool isNotificationEnabled, int userId, bool allAboveEnabled) { using (var sqlConnection = await _databaseConnectionFactory.CreateConnectionAsync()) { try { if (allAboveEnabled) { var notifications = await _notifications.AllAsync(); if (notifications.ToList().Count > 0) { foreach (var item in notifications) { var result = await FindAsync(new { userId, notificationId = item.id }); if (result != null) { result.IsNotificationEnabled = true; await sqlConnection.ExecuteAsync(SQLQueryConstants.UpdateUsersNotificationSettingsQuery, new { UserId = userId, NotificationId = item.id, IsNotificationEnabled = true }); } else { var userNotification = new UserNotificationSettings(); userNotification.notificationId = item.id; userNotification.userId = userId; userNotification.IsNotificationEnabled = true; await AddAsync(userNotification); } } } } else if (notificationId <= 0) { var result = await GetDataAsync(new { userId }); if (result.ToList().Count > 0) { foreach (var item in result) { item.IsNotificationEnabled = false; await sqlConnection.ExecuteAsync(SQLQueryConstants.UpdateUsersNotificationSettingsQuery, new { UserId = userId, NotificationId = item.notificationId, IsNotificationEnabled = item.IsNotificationEnabled }); } } } else { var result = await FindAsync(new { userId, notificationId }); if (result != null) { result.IsNotificationEnabled = isNotificationEnabled; await sqlConnection.ExecuteAsync(SQLQueryConstants.UpdateUsersNotificationSettingsQuery, new { UserId = userId, NotificationId = notificationId, IsNotificationEnabled = isNotificationEnabled }); } else { var userNotification = new UserNotificationSettings(); userNotification.notificationId = notificationId; userNotification.userId = userId; userNotification.IsNotificationEnabled = isNotificationEnabled; await AddAsync(userNotification); } } return(await _notifications.GetUserNotificationsSettings(userId)); } catch (Exception) { throw; } finally { sqlConnection.Close(); sqlConnection.Dispose(); } } }