Ejemplo n.º 1
0
        public ApiResponseModel RegisterUser(MasterUser data)
        {
            var response    = new ApiResponseModel();
            var validations = new List <Validation>();

            _uow.OpenConnection(base.SQLDBConn);

            var saltSize = _uow.GetAppSettings("SaltSize");

            var currentData    = new MasterUser();
            var UserRepository = new MasterUserRepository(_uow);

            try
            {
                currentData = UserRepository.GetSingleData(data);

                if (currentData != null)
                {
                    validations.Add(new Validation()
                    {
                        Key = "Username", Value = "Username already exists"
                    });
                }
                else
                {
                    data.UserID              = Helper.GeneratedID(Convert.ToInt32(_uow.GetAppSettings("LengthRandomString")), data.UserName);
                    data.PasswordSalt        = Helper.GenerateRandomCryptographicKey(Convert.ToInt32(saltSize));
                    data.Password            = Helper.HashWithSalt(data.Password, data.PasswordSalt, SHA384.Create());
                    data.IsActive            = true;
                    data.PasswordExpiredDate = DateTime.Now.AddMonths(6);
                    data.CreatedBy           = data.UserID;

                    _uow.BeginTransaction();

                    UserRepository.Insert(data);

                    _uow.CommitTransaction();

                    response.Message = "User has been registered successfully";
                    response.Result  = data;
                }

                response.Validations = validations;
                return(response);
            }
            catch
            {
                _uow.RollbackTransaction();
                throw;
            }
            finally
            {
                _uow.Dispose();
            }
        }