package com.ics.admin.domain;

import com.baomidou.mybatisplus.annotation.IEnum;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ics.admin.handler.BannerImageHandler;
import com.ics.common.core.domain.BaseEntity;
import com.ics.system.domain.User;
import lombok.Data;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 工单管理对象 ics_repair
 *
 * @author ics
 * @date 2021-03-25
 */
@Data
@TableName("ics_repair")
public class Repair extends BaseEntity<Repair> {
    private static final long serialVersionUID = 1L;

    /**
     * 报修单号
     */
    private String sn;

    /**
     * 报修人
     */
    private String name;

    /**
     * 联系电话
     */
    private String phone;

    /**
     * 报修区域
     */
    private String area;

    /**
     * 状态:待分配,待评估,处理中,已处理, 已处理,待评价,已评价
     */
    private Status status;

    public enum Status implements IEnum<Integer> {
        /**
         * 待分配
         */
        PENDING_ASSIGN("待分配", 0),

        /**
         * 待处理
         */
        PENDING_PROCESS("待处理", 1),

        /**
         * 已完成
         */
        COMPLETED("已完成", 2),

        /**
         * 已评价
         */
        SCORE("已评价", 3),

        /**
         * 已取消
         */
        CANCELED("已取消", 4);

        private String name;
        private int    value;

        Status(String name, int value) {
            this.name  = name;
            this.value = value;
        }

        @Override
        public Integer getValue() {
            return this.value;
        }

        public String getName() {
            return this.name;
        }

        public static Status parse(Integer value) {
            for (Status status : values()) {
                if (status.getValue().equals(value)) {
                    return status;
                }
            }
            return null;
        }

    }


    /**
     * 描述
     */
    private String content;

    /**
     * 报修时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date repairTime;

    /**
     * 报修图片
     */
    @TableField(typeHandler = BannerImageHandler.class)
    private List<BannerImage> repairImages = new ArrayList<>();

    /**
     * 维修费
     */
    private Long repairFee;

    /**
     * 评价
     */
    private Long repairScore;

    /**
     * 维修材料
     */
    private String repairMateriel;

    /**
     * 开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date beginDate;

    /**
     * 结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endDate;

    /**
     * 意见建议
     */
    private String remark;

    /**
     * 评价工人
     */
    private Long workerScore;

    /**
     * 维修工人
     */
    private Long workerId;

    /**
     * 公司ID
     */
    private Long customerId;

    /**
     * 公司
     */
    @TableField(exist = false)
    private Customer customer;

    /**
     * 园区
     */
    @TableField(exist = false)
    private Park park;

    /**
     * 用户
     */
    @TableField(exist = false)
    private User user;

    private Long parkId;


}
