using GxPress.Repository.Interface;
using GxPress.Repository.Interface.WorkFlow;
using GxPress.Repository.Interface.WorkProcess;
using GxPress.Service.Interface;
using GxPress.Service.Interface.Notice;
using Microsoft.AspNetCore.Hosting;
using GxPress.Repository.Interface.FlowAttachment;

namespace GxPress.Service.Implement
{
    public partial class FlowService : IFlowService
    {
        private readonly IWebHostEnvironment _environment;
        private readonly IProcessRepository _processRepository;
        private readonly IProcessFieldRepository _processFieldRepository;
        private readonly IProcessNodeRepository _processNodeRepository;
        private readonly IRuleCarbonCopyRepository _ruleCarbonCopyRepository;
        private readonly IRuleApproverCheckRepository _ruleApproverCheckRepository;
        private readonly IRuleConditionRepository _ruleConditionRepository;
        private readonly IFlowRepository _flowRepository;
        private readonly IFlowMessageRepository _flowMessageRepository;
        private readonly IFlowTodoRepository _flowTodoRepository;
        private readonly IFlowFieldValueRepository _flowFieldValueRepository;
        private readonly IProcessService _processService;
        private readonly IUserRepository _userRepository;
        private readonly IDepartmentRepository _departmentRepository;
        private readonly INoticeService _noticeService;
        private readonly IFlowAttachmentRepository flowAttachmentRepository;
        private readonly IMiddleRepository middleRepository;

        public FlowService(
            IWebHostEnvironment environment,
            IProcessRepository processRepository,
            IProcessFieldRepository processFieldRepository,
            IProcessNodeRepository processNodeRepository,
            IRuleCarbonCopyRepository ruleCarbonCopyRepository,
            IRuleApproverCheckRepository ruleApproverCheckRepository,
            IRuleConditionRepository ruleConditionRepository,
            IFlowRepository flowRepository,
            IFlowMessageRepository flowMessageRepository,
            IFlowTodoRepository flowTodoRepository,
            IFlowFieldValueRepository flowFieldValueRepository,
            IProcessService processService,
            IUserRepository userRepository,
            IDepartmentRepository departmentRepository, INoticeService noticeService, IFlowAttachmentRepository flowAttachmentRepository, IMiddleRepository middleRepository
            )
        {
            _environment = environment;
            _processRepository = processRepository;
            _processFieldRepository = processFieldRepository;
            _processNodeRepository = processNodeRepository;
            _ruleCarbonCopyRepository = ruleCarbonCopyRepository;
            _ruleApproverCheckRepository = ruleApproverCheckRepository;
            _ruleConditionRepository = ruleConditionRepository;
            _flowRepository = flowRepository;
            _flowMessageRepository = flowMessageRepository;
            _flowTodoRepository = flowTodoRepository;
            _flowFieldValueRepository = flowFieldValueRepository;
            _processService = processService;
            _userRepository = userRepository;
            _departmentRepository = departmentRepository;
            _noticeService = noticeService;
            this.flowAttachmentRepository = flowAttachmentRepository;
            this.middleRepository = middleRepository;
        }



        //public void OnFlowAdded(FlowDto flow)
        //{
        //    flow.
        //}
    }
}