/*
**************************************************************************************
* Program Name  : AssetStatusChangeService.java
* Author        : Kawade Swapnali
* Date          : 2026
* System Name   : gswbs
* Purpose       : Service interface for Asset Status Change module.
*                 Defines business operations for Asset Status Change management.
**************************************************************************************
*/

package com.coder.asset.status.change.service;

import java.util.List;

import com.coder.asset.status.change.dto.AssetStatusChangeDTO;
import com.coder.asset.status.change.model.AssetStatusChange;
import com.coder.asset.status.change.model.SaveToAssetStatusChangeResponse;

public interface AssetStatusChangeService {

    /* ================= FETCH SINGLE ================= */
    AssetStatusChangeDTO getSingleStatusChange(String statusChangeId);

    /* ================= FETCH ALL ================= */
    List<AssetStatusChangeDTO> fetchAllStatusChanges();

    /* ================= FETCH BY CREATED BY ================= */
    List<AssetStatusChangeDTO> getAllStatusChangesByCreatedBy(String createdBy);

    /*
     * ================= SAVE MULTIPLE =================
     * ID FORMAT: STATUS/2026/001
     */
    SaveToAssetStatusChangeResponse saveAllStatusChanges(List<AssetStatusChange> statusList);

    /* ================= UPDATE ================= */
    AssetStatusChange update(String statusChangeId, AssetStatusChange statusChange);

    /* ================= DELETE MULTIPLE ================= */
    boolean multipleDelete(List<String> statusChangeIds);

    /* ================= DELETE SINGLE ================= */
    boolean deleteById(String statusChangeId);
    AssetStatusChangeDTO convertAssetStatusChangeIntoAssetStatusChangeDTO(AssetStatusChange assetStatusChange);
}