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 MMDAL.CustomCode.Shift
{
///
/// Data Access Layer interface for managing Shift records in the database.
/// Provides methods to retrieve, insert, update, and delete shifts.
///
public interface IShiftDAL
{
///
/// Retrieves 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);
///
/// Retrieves a list of shifts based on specified criteria.
/// Typically used for populating dropdowns or picklists.
///
/// 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);
///
/// Inserts a new shift record into the database.
///
/// The shift data to save.
/// The current user's login details.
/// The number of rows affected (should be 1 if successful).
Task SaveShift(ShiftDTO ShiftDTO, LoginDTO LoginDTO);
///
/// Updates an existing shift record in the database.
///
/// The updated shift data.
/// The current user's login details.
/// The number of rows affected (should be 1 if successful).
Task UpdateShift(ShiftDTO ShiftDTO, LoginDTO LoginDTO);
///
/// Deletes a shift record 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);
}
}