/// <summary>
        ///
        /// </summary>
        /// <param name="beginDate"></param>
        /// <param name="shiftType"></param>
        /// <param name="lineType"></param>
        /// <returns></returns>
        public Task <ProductPlanning> GetProductPlanningByDateAndShiftAndLine(DateTime beginDate,
                                                                              PlanShiftHardCodeType shiftType, PlanLineHardCodeType lineType)
        {
            var key = string.Format(PRODUCT_PLANNING_BY_DATE_SHIFT_LINE_KEY, beginDate.Date.ToShortDateString(), shiftType, lineType);

            return(_cacheManager.Get(key, () =>
            {
                var startTime = new DateTime(beginDate.Year, beginDate.Month, beginDate.Day, 0, 0, 0);
                var endTime = startTime.AddDays(1);

                return _productPlanningRepositoryAsync.Table.FirstOrDefaultAsync(x => x.CreatedDate < endTime && x.CreatedDate >= startTime && x.Shift == shiftType && x.Line == lineType);
            }));
        }
        public static Task <ProductPlanning> GetProductPlanningByDateShiftLineAsync(this IRepositoryAsync <ProductPlanning> repository, DateTime dateTime, PlanShiftHardCodeType shift, PlanLineHardCodeType line)
        {
            var startTime = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, 0, 0, 0);
            var endTime   = startTime.AddDays(1);

            return(repository
                   .Table
                   .FirstOrDefaultAsync(x => x.CreatedDate < endTime && x.CreatedDate >= startTime && x.Shift == shift && x.Line == line));
        }