using LSFE.Infrastructure.Dto;
using LSFE.Infrastructure.Dto.Doctor;
using LSFE.Infrastructure.Dto.Planning;
using LSFE.Infrastructure.Entities.Maintenance;
using LSFE.Infrastructure.Entities.Planning;
using LSFE.Infrastructure.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LSFE.Domain.Contracts.Planning
{
    public interface IPlanningRepo
    {
        Task<Response> SoftDeleteAsync(int doctorId);
        Task<List<MRRawPlan>> GetPlan(PlanningDto dto);
        Task<List<DoctorById>> GetDoctorById(DoctorDto dto);
        Task<List<DoctorWithPlan>> GetDoctorWithPlan(DoctorDto dto);
        Task<List<PendingApproval>> GetPendingApprovals(PlanningDto dto);
        Task<List<MRRawPlan>> GetAllMissReschedule(CredentialDto dto);
        Task<List<MRRawPlan>> GetAllAppointmentToday(CredentialDto dto);
        Task<List<MRRawPlansDto>> GetMRRawPlans(PlanByUserIdRequest dto);
        
        Task<List<InventoryTransaction>> GetSampleTransaction(Guid mrRawPlanId);
        Task<List<ProductTransaction>> GetProductTransaction(Guid mrRawPlanId);

        Task<Response> PostPutPlan(PlanningDto dto);
        Task<Response> CopyMonthlyMRRawPlans(PlanningDto dto);
        Task<Response> ApprovePlan(ApprovePlanDto dto);
    }
}
