/* eslint-disable camelcase */
const UserModel = require('../../../models/UserModel')
const bcrypt = require('bcryptjs')
const TokenService = require('../../../services/TokenService')
// const jwt = require('jsonwebtoken')

const loginWithUserName = async (req, res, next) => {
  try {
    // اعتبارسنجی ورودی ها
    const { user_name, password } = req.body
    if (!user_name || !password) {
      return res.status(422).json({
        error: true,
        message: 'اطلاعات ارسالی اشتباه است'
      })
    }
    // یافتن کاربر با نام کاربری
    const userLow = user_name.toLowerCase()
    const user = await UserModel.findOne({ user_name: userLow })

    if (!user) {
      return res.status(404).json({
        error: true,
        message: 'کاربری با این نام کاربری یافت نشد'
      })
    }
    if (!user.password) {
      return res.status(422).json({
        error: true,
        message: 'رمز عبور برای این کاربر تنظیم نشده است'
      })
    }
    const isPasswordValid = await bcrypt.compare(password, user.password)
    if (!isPasswordValid) {
      return res.status(422).json({
        error: true,
        message: 'نام کاربری یا رمز عبور اشتباه است'
      })
    }
    // اگر هم نام کاربری و هم رمز عبور درست بود، ارسال پیام موفقیت آمیز
    const token = TokenService.sign({ id: user._id })
    // if (user.user_name === null) {
    //   return res.json({
    //     message: 'ورود با موفقیت',
    //     page: 'username'
    //   })
    // }

    // if (!user.first_name && !user.last_name) {
    //   return res.json({
    //     message: 'ورود با موفقیت',
    //     page: 'name'
    //   })
    // }

    // if (!user.user_type) {
    //   return res.json({
    //     message: 'کد تایید صحیح بود',
    //     page: 'usertype'
    //   })
    // }
    let step = ''
    if (user.user_name === null) { step = 'user_name' } else if
    (!user.password) { step = 'password' } else if
    (!user.first_name) { step = 'first_name' } else if
    (!user.user_type) { step = 'user_type' }
    if (!user.user_type || user.user_name === null || !user.first_name || !user.last_name) {
      return res.json({
        message: 'کد تایید صحیح بود',
        token,
        step,
        user_type: null,
        page: 'auth-page',
        id: user._id
      })
    }
    return res.json({
      message: 'کد تایید صحیح بود',
      token,
      page: 'home',
      step,
      user_type: user.user_type,
      id: user._id
    })
  } catch (error) {
    next(error)
  }
}

module.exports = {
  loginWithUserName
}
