using GB5Shared.DTO.Framework.Criteria;
using GB5Shared.DTO.Framework.Login;
using MMDAL.DTO.Shift;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MMBLL.Shift
{
///
/// Business Logic Layer interface for managing Shift operations.
/// Provides methods to retrieve, insert/update, list, and delete shifts with business rules applied.
///
public interface IShiftBLL
{
///
/// Retrieves the details of a single shift by its unique identifier.
///
/// The unique identifier of the shift.
/// The current user's login details.
/// A JSON string representing the shift details.
Task GetShift(int ShiftId, LoginDTO LoginDTO);
///
/// Inserts a new shift or updates an existing shift.
/// Automatically applies any business rules, such as setting Created/Modified fields.
///
/// The shift data to save or update.
/// The current user's login details.
/// A JSON string indicating the success of the operation, optionally with the ShiftId.
Task SaveShift(ShiftDTO ShiftDTO, LoginDTO LoginDTO);
///
/// Retrieves a list of shifts based on specified criteria.
/// Typically used to populate dropdowns or selection lists in the UI.
///
/// Filter criteria for selecting shifts.
/// The current user's login details.
/// A JSON string representing a list of shifts.
Task GetSelectListShift(CriteriaDTO CriteriaDTO, LoginDTO LoginDTO);
///
/// Deletes a shift by its unique identifier.
///
/// The unique identifier of the shift to delete.
/// The current user's login details.
/// A JSON string indicating success or failure of the delete operation.
Task DeleteShift(int ShiftId, LoginDTO LoginDTO);
}
}