示例#1
0
        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)));
            }
        }
示例#2
0
        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();
                }
            }
        }