package com.qsd.orange.controller;

import com.qsd.orange.global.HttpResult;
import com.qsd.orange.global.R;
import com.qsd.orange.po.SysUser;
import com.qsd.orange.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.userdetails.User;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("user")
public class UserController {

    @Autowired
    private UserService userService;

    @PostMapping("info")
    public R info(Authentication authentication){
        User users = (User)authentication.getPrincipal();
        String username = users.getUsername();
        SysUser info = userService.getInfo(username);
        return R.success().data("item", info);
    }

    @PostMapping("update/info")
    public R updateInfo(SysUser user, Authentication authentication){
        User users = (User)authentication.getPrincipal();
        String username = users.getUsername();
        user.setUsername(username);
        return R.choose(userService.update(user) > 0);
    }

    @PostMapping("update/password")
    public R updatePassword(String oldPassword, String newPassword, Authentication authentication){
        User users = (User)authentication.getPrincipal();
        String username = users.getUsername();
        int i = userService.updatePassword(username, oldPassword, newPassword);
        switch (i){
            case -2:
                return R.error(HttpResult.USERNAME_OR_PASSWORD_ERROR);
            case -1:
                return  R.error(HttpResult.PASSWORD_NOT_SAME);
            case 1:
                return R.success();
            default:
                return R.error();
        }
    }

}