package ru.soune.nocopy.dto.file;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import ru.soune.nocopy.entity.file.FileStatus;
import ru.soune.nocopy.entity.file.permission.PermissionType;

import java.util.List;
import java.util.Map;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class FileEntityRequest {
    @JsonProperty("action")
    private String action;

    @JsonProperty("file_id")
    private String fileId;

    @JsonProperty("file_ids")
    private List<String> fileIds;

    @JsonProperty("full_delete")
    private Integer fullDelete;

    @JsonProperty("upload_session_id")
    private String uploadSessionId;

    @JsonProperty("query")
    private String query;

    @JsonProperty("page")
    private Integer page;

    @JsonProperty("page_size")
    private Integer pageSize;

    @JsonProperty("token")
    private String token;

    @JsonProperty("sort_by")
    private String sortBy;

    @JsonProperty("sort_order")
    private String sortOrder;

    @JsonProperty("type")
    private String type;

    @JsonProperty("file_status")
    private FileStatus fileStatus;

    @JsonProperty("date_filter")
    private String dateFilter;

    @JsonProperty("comment")
    private String comment;

    @JsonProperty("appeal_reason")
    private String appealReason;

    @JsonProperty("additional_info")
    private String additionalInfo;

    @JsonProperty("appeal_id")
    private String appealId;

    @JsonProperty("approve")
    private Boolean approve;

    @JsonProperty("reason_text")
    private String reasonText;

    @JsonProperty("search_query")
    private String searchQuery;

    @JsonProperty("permissions")
    private Map<String, Boolean> permissions;
}
