package cn.reghao.oss.console.account.model.dto;

import cn.reghao.oss.console.account.model.po.Menu;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * @author reghao
 * @date 2021-07-15 14:06:13
 */
@NoArgsConstructor
@Data
public class MenuUpdateDTO implements Serializable {
    private static final long serialVersionUID = 1L;

    @NotNull(message = "菜单 ID 不能为 NULL")
    private Integer menuId;
    @NotBlank(message = "菜单名不能为空白字符串")
    private String name;
    @NotBlank(message = "URL 地址不能为空白字符串，目录类型使用可使用 # 字符")
    private String url;
    private String icon;
    // 父级菜单 ID
    @NotNull(message = "父级菜单不能为 NULL")
    private Integer pid;
    // 在同一个 pid 组内的位置，作为排序使用
    private Integer pos;

    public MenuUpdateDTO(Menu menu) {
        this.menuId = menu.getId();
        this.name = menu.getName();
        this.url = menu.getUrl();
        this.icon = menu.getIcon();
        this.pid = menu.getPid();
        this.pos = menu.getPos();
    }

    public Menu to() {
        Menu menu = new Menu();
        menu.setId(this.getMenuId());
        menu.setName(this.getName());
        menu.setUrl(this.getUrl());
        menu.setIcon(this.getIcon());
        menu.setPid(this.getPid());
        menu.setPos(this.getPos());
        return menu;
    }
}
