public ActionResult AddUser(EditUserDTO user,int inActive)
        {
            var validationIds = new List<string>();
            var validationMessage = Validate(user, true, out validationIds);
            if (!validationMessage.Any())
            {
                UserManagement.AddUser(user.ToUser());
            }

            var users = UserManagement.GetAllUserList();
            if (inActive == 0)
            {
                users = users.Where(x => x.IsDeleted == false);
            }
            else if (inActive == 1)
            {
                users = users.Where(x => x.IsDeleted);
            }

            var totalUsersPage = (int)Math.Ceiling(((double)users.Count() / (double)pageSize));
            return Json(new
            {
                users = ApplyPaging(users, 1),
                passed = !validationMessage.Any(),
                validationIds,
                totalUsersPage,
                validationMessage = string.Join("</br>", validationMessage)
            });
        }
        public List<string> Validate(EditUserDTO user, bool isCreating, out List<string> invalidIds)
        {
            var validationMessage = new List<string>();
            var validationId = new List<string>();

            if (isCreating && string.IsNullOrEmpty(user.UserName))
            {
                validationMessage.Add("Username is empty.");
                validationId.Add("Username");
            }

            if (isCreating && !string.IsNullOrEmpty(user.UserName))
            {
                if (UserManagement.IsValidUsername(user.UserName))
                {
                    validationMessage.Add("Username already exists in the database.");
                    validationId.Add("Username");
                }
            }

            if (isCreating && !string.IsNullOrEmpty(user.Password) && (user.ConfirmPassword != user.Password))
            {
                validationMessage.Add("Confirm Password does not match with the password.");
                validationId.Add("ConfirmPassword");

            }

            if (isCreating && !string.IsNullOrEmpty(user.UserName))
            {
                if (UserManagement.IsValidUsername(user.UserName))
                {
                    validationMessage.Add("Username already exists in the database.");
                }
            }

            if (isCreating && !string.IsNullOrEmpty(user.Password) && (user.ConfirmPassword != user.Password))
            {
                validationMessage.Add("Confirm Password does not match with the password.");

            }

            if (isCreating && string.IsNullOrEmpty(user.Password))
            {
                validationMessage.Add("Password is empty.");
                validationId.Add("Password");
            }

            if (string.IsNullOrEmpty(user.FirstName))
            {
                validationMessage.Add("First Name is empty.");
                validationId.Add("Firstname");
            }

            if (string.IsNullOrEmpty(user.SurName))
            {
                validationMessage.Add("Surname is empty.");
                validationId.Add("Surname");
            }

            if (string.IsNullOrEmpty(user.FirmName))
            {
                validationMessage.Add("Firmname is empty.");
                validationId.Add("Firmname");
            }

            if (string.IsNullOrEmpty(user.Email))
            {
                validationMessage.Add("Email is empty.");
                validationId.Add("Email");
            }
            else
            {

                var regex = new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$");
                var match = regex.Match(user.Email);
                if (!match.Success)
                {
                    validationMessage.Add("Invalid email format.");
                    validationId.Add("Email");
                }
            }

            if (isCreating && !string.IsNullOrEmpty(user.Password))
            {
                var regex = new Regex(@"^.*(?=.{6,})(?=.*[a-z])(?=.*[A-Z])(?=.*\d).+$");
                var match = regex.Match(user.Password);
                if (!match.Success)
                {
                    validationMessage.Add("Invalid Password. Password must contain at least a digit, a uppercase and a lowercase letter. Mininum 6 characters are required. ");
                    validationId.Add("Password");
                }
            }

            invalidIds = validationId;
            return validationMessage;
        }