package com.jwipc.supplier.controller.pc;

import com.jwipc.page.PageView;
import com.jwipc.supplier.dto.SupplierTemplateBaseDTO;
import com.jwipc.supplier.dto.SupplierTemplateFieldsDTO;
import com.jwipc.supplier.dto.SupplierTemplateSaveDTO;
import com.jwipc.supplier.logic.SupplierTemplateLogic;
import com.jwipc.supplier.model.query.SupplierTemplateQuery;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

import static com.jwipc.supplier.constant.ModuleConst.MODULE_ROOT;

/**
 * <p> </p>
 *
 * @author ZhangJie
 * @version 1.0
 * @since JDK 1.8
 */
@RestController
@RequestMapping(MODULE_ROOT + "/template/rest")
@RequiredArgsConstructor
@Slf4j
public class SupplierTemplateRestController {
    private final SupplierTemplateLogic moduleTemplateLogic;

    @GetMapping("list")
    public PageView list(SupplierTemplateQuery query) {
        PageView pageView = moduleTemplateLogic.getList(query);
        return pageView;
    }

    @GetMapping("listAll")
    public ResponseEntity listAll() {
        List<SupplierTemplateBaseDTO> supplierTemplateBaseDTOS = moduleTemplateLogic.getListAll();
        return ResponseEntity.ok(supplierTemplateBaseDTOS);
    }

    @GetMapping("fields/listAll")
    public PageView fieldsListAll() {
        PageView pageView = moduleTemplateLogic.getFieldsListAll();
        return pageView;
    }

    @GetMapping("getFields")
    public ResponseEntity getField(Long templateId) {
        SupplierTemplateFieldsDTO templateFieldsDTO = moduleTemplateLogic.getField(templateId);
        return ResponseEntity.ok(templateFieldsDTO);
    }

    @PostMapping("saveOrUpdate")
    public ResponseEntity saveOrUpdate(@RequestBody SupplierTemplateSaveDTO supplierTemplateSaveDTO) {
        moduleTemplateLogic.saveOrUpdate(supplierTemplateSaveDTO);
        return ResponseEntity.ok().build();
    }

    @PostMapping("remove")
    public ResponseEntity remove(Long id) {
        moduleTemplateLogic.remove(id);
        return ResponseEntity.ok().build();
    }

}
