ReceiptSOTunaiQueryController.java 3.93 KB
Newer Older
akbar fauzi's avatar
akbar fauzi committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
package com.eksad.masterdata.controller;

import com.eksad.masterdata.common.dto.ReceiptSOTaskDTO;
import com.eksad.masterdata.common.dto.ReceiptSOTunaiDTO;
import com.eksad.masterdata.common.dto.ResponseReceiptSOTaskGetListDTO;
import com.eksad.masterdata.common.listEnum.ReceiptStatus;
import com.eksad.masterdata.common.listEnum.ReceiptType;
import com.eksad.masterdata.domain.ReceiptSOTask;
import com.eksad.masterdata.domain.assembler.ReceiptSOTaskAssembler;
import com.eksad.masterdata.domain.assembler.ReceiptSOTunaiAssembler;
import com.eksad.masterdata.repository.ReceiptSOTaskRepository;
import com.eksad.masterdata.repository.ReceiptSOTunaiRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

@RestController
@Slf4j
public class ReceiptSOTunaiQueryController {

    @Autowired
    private ReceiptSOTaskRepository receiptSOTaskRepository;

    @Autowired
    private ReceiptSOTunaiRepository receiptSOTunaiRepository;

    @RequestMapping(value = "/api/receipt/so/task/query/getbyahasscodeandsoid/{ahassCode}/{soID}",
            produces = MediaType.APPLICATION_JSON_VALUE,
            method = RequestMethod.GET)
    @ResponseBody
    public ResponseReceiptSOTaskGetListDTO getReceiptSOTaskBySOID(
            @PathVariable("ahassCode") String ahassCode,
            @PathVariable("soID") String soID,
            @RequestParam(defaultValue = "10", required = false) Integer pageSize,
            @RequestParam(defaultValue = "0", required = false) Integer pageNum,
            @RequestParam(defaultValue = "salesOrderDate", required = false) String sortBy,
            @RequestParam(defaultValue = "DESC", required = false) String sortDirection) throws Exception {

        ResponseReceiptSOTaskGetListDTO response = new ResponseReceiptSOTaskGetListDTO();

        Pageable page = PageRequest.of(pageNum, pageSize, Sort.by(Sort.Direction.fromString(sortDirection), sortBy));

        Page<ReceiptSOTask> domains = receiptSOTaskRepository.findAllByAhassCodeAndSoID(ahassCode, soID, page);

        response.setDatas(new ReceiptSOTaskAssembler().toDTOs(domains.getContent()));
        response.setTotalElements(domains.getTotalElements());
        response.setTotalPage(domains.getTotalPages());

        return response;
    }

    @GetMapping("/api/receipt/so/tunai/query/getByReceiptID/{receiptID}")
    public @ResponseStatus(HttpStatus.OK)
    ReceiptSOTunaiDTO getReceiptSOTunaiByReceiptID(@PathVariable("receiptID") String receiptID) {
        return new ReceiptSOTunaiAssembler().toDTO(receiptSOTunaiRepository.findOneByReceiptID(receiptID));
    }

    @RequestMapping(value = "/api/receipt/so/task/query/getReceiptSOTaskForApiGateway/{reffPONumber}/{receiptType}/{receiptStatus}",
            produces = MediaType.APPLICATION_JSON_VALUE,
            method = RequestMethod.GET)
    @ResponseBody
    public ResponseEntity<?> getReceiptSOTaskForApiGateway(
            @PathVariable("reffPONumber") String reffPONumber,
            @PathVariable("receiptStatus") ReceiptStatus receiptStatus,
            @PathVariable("receiptType") ReceiptType receiptType) throws Exception {
        ReceiptSOTask domains = receiptSOTaskRepository.findOneByReffPONumberAndReceiptTypeAndReceiptStatus(reffPONumber, receiptType, receiptStatus);
        ReceiptSOTaskDTO receiptSOTaskDTO = new ReceiptSOTaskDTO();
        if (domains == null) {
            return new ResponseEntity<>(null, HttpStatus.OK);
        } else {
            receiptSOTaskDTO = new ReceiptSOTaskAssembler().toDTO(domains);
        }
        return new ResponseEntity<>(receiptSOTaskDTO, HttpStatus.OK);
    }
}