public async Task <AuthenticateUserResultDto> AuthenticateUser(string connectionString, string userNameOrEmail, string password, int refreshTokenExpiry)
        {
            if (string.IsNullOrEmpty(connectionString))
            {
                throw new ArgumentException("connection string not provided!");
            }


            var printingBIDbContextFactory = new PrintingBIDbContextFactory();
            var context = printingBIDbContextFactory.Create(connectionString);

            var user = context.PrinterBIUsers
                       .FirstOrDefault(m => m.UserName.ToLower() == userNameOrEmail.ToLower() ||
                                       m.Email.ToLower() == userNameOrEmail.ToLower());

            if (user == null)
            {
                return new AuthenticateUserResultDto {
                           IsAuthenticated = false, IsSuperAdmin = false, IsPasswordChange = false
                }
            }
            ;

            if (user.Password != password)
            {
                return new AuthenticateUserResultDto {
                           IsAuthenticated = false, IsSuperAdmin = false, IsPasswordChange = false
                }
            }
            ;

            else
            {
                string refreshToken = Guid.NewGuid().ToString();

                user.RefreshToken           = refreshToken;
                user.RefreshTokenExpiryDate = DateTime.Now.AddMinutes(refreshTokenExpiry);
                context.PrinterBIUsers.Update(user);
                context.SaveChanges();

                AuthenticateUserResultDto obj = new AuthenticateUserResultDto();
                obj.IsAuthenticated = true;
                obj.RefreshToken    = refreshToken;
                obj.Email           = user.Email;
                obj.FullName        = user.FullName;
                obj.UserName        = user.UserName;
                obj.UserId          = user.Id;

                if (user.DepartmentId.HasValue)
                {
                    obj.DepartmentId = user.DepartmentId.ToString();
                }

                if (user.RoleRightsId.HasValue)
                {
                    obj.RoleRightsId = user.RoleRightsId.ToString();
                }

                if (user.IsSuperAdmin)
                {
                    obj.IsSuperAdmin = true;
                }
                else
                {
                    obj.IsSuperAdmin = false;
                }

                if (user.IsPassChange)
                {
                    obj.IsPasswordChange = true;
                }
                else
                {
                    obj.IsPasswordChange = false;
                }
                return(obj);
            }
        }
 private static List <ClaimModel> SetClaims(CustomerInitialInfoModel intialInfo, AuthenticateUserResultDto result)
 {
     return(new List <ClaimModel>
     {
         new ClaimModel(AuthConstants.DbServer, intialInfo.TenantDBServer),
         new ClaimModel(AuthConstants.DbName, intialInfo.TenantDBName),
         new ClaimModel(AuthConstants.DbUser, intialInfo.TenantDBUser),
         new ClaimModel(AuthConstants.DbPwd, intialInfo.TenantDBPassword),
         new ClaimModel(AuthConstants.PBAppId, intialInfo.ApplicationId),
         new ClaimModel(AuthConstants.PBUserName, intialInfo.PowerBIUserName),
         new ClaimModel(AuthConstants.PBPass, intialInfo.PowerBIUserPass),
         new ClaimModel(AuthConstants.WorkspaceID, intialInfo.WorkSpaceId),
         new ClaimModel(AuthConstants.IsSuperAdmin, result.IsSuperAdmin.ToString()),
         new ClaimModel(AuthConstants.FTabName, string.IsNullOrEmpty(intialInfo.FilterTableName) ? "" : intialInfo.FilterTableName),
         new ClaimModel(AuthConstants.FColumnName, string.IsNullOrEmpty(intialInfo.FilterColumnName) ? "" : intialInfo.FilterColumnName),
         new ClaimModel(AuthConstants.FUserColumname, string.IsNullOrEmpty(intialInfo.FilterUserColumnName) ? "" : intialInfo.FilterUserColumnName)
     });
 }