def resolve_daterange(self, dateranges, entry):
        # pylint: disable=too-many-return-statements,too-many-statements,
        # pylint: disable=too-many-branches,too-many-locals
        """
        Try to solve dateranges (special cases)

        :param dateranges: dateranges
        :type dateranges: list
        :param entry: property of timeperiod
        :type entry: string
        :return: None
        """
        res = re.search(
            r'(\d{4})-(\d{2})-(\d{2}) - (\d{4})-(\d{2})-(\d{2}) / (\d+)[\s\t]*([0-9:, -]+)', entry
        )
        if res is not None:
            (syear, smon, smday, eyear, emon, emday, skip_interval, other) = res.groups()
            data = {'syear': syear, 'smon': smon, 'smday': smday, 'swday': 0,
                    'swday_offset': 0, 'eyear': eyear, 'emon': emon, 'emday': emday,
                    'ewday': 0, 'ewday_offset': 0, 'skip_interval': skip_interval,
                    'other': other}
            dateranges.append(CalendarDaterange(data))
            return

        res = re.search(r'(\d{4})-(\d{2})-(\d{2}) / (\d+)[\s\t]*([0-9:, -]+)', entry)
        if res is not None:
            (syear, smon, smday, skip_interval, other) = res.groups()
            eyear = syear
            emon = smon
            emday = smday
            data = {'syear': syear, 'smon': smon, 'smday': smday, 'swday': 0,
                    'swday_offset': 0, 'eyear': eyear, 'emon': emon, 'emday': emday,
                    'ewday': 0, 'ewday_offset': 0, 'skip_interval': skip_interval,
                    'other': other}
            dateranges.append(CalendarDaterange(data))
            return

        res = re.search(
            r'(\d{4})-(\d{2})-(\d{2}) - (\d{4})-(\d{2})-(\d{2})[\s\t]*([0-9:, -]+)', entry
        )
        if res is not None:
            (syear, smon, smday, eyear, emon, emday, other) = res.groups()
            data = {'syear': syear, 'smon': smon, 'smday': smday, 'swday': 0,
                    'swday_offset': 0, 'eyear': eyear, 'emon': emon, 'emday': emday,
                    'ewday': 0, 'ewday_offset': 0, 'skip_interval': 0,
                    'other': other}
            dateranges.append(CalendarDaterange(data))
            return

        res = re.search(r'(\d{4})-(\d{2})-(\d{2})[\s\t]*([0-9:, -]+)', entry)
        if res is not None:
            (syear, smon, smday, other) = res.groups()
            eyear = syear
            emon = smon
            emday = smday
            data = {'syear': syear, 'smon': smon, 'smday': smday, 'swday': 0,
                    'swday_offset': 0, 'eyear': eyear, 'emon': emon, 'emday': emday,
                    'ewday': 0, 'ewday_offset': 0, 'skip_interval': 0,
                    'other': other}
            dateranges.append(CalendarDaterange(data))
            return

        res = re.search(
            r'([a-z]*) ([\d-]+) ([a-z]*) - ([a-z]*) ([\d-]+) ([a-z]*) / (\d+)[\s\t]*([0-9:, -]+)',
            entry
        )
        if res is not None:
            (swday, swday_offset, smon, ewday,
             ewday_offset, emon, skip_interval, other) = res.groups()
            smon_id = Daterange.get_month_id(smon)
            emon_id = Daterange.get_month_id(emon)
            swday_id = Daterange.get_weekday_id(swday)
            ewday_id = Daterange.get_weekday_id(ewday)
            data = {'syear': 0, 'smon': smon_id, 'smday': 0, 'swday': swday_id,
                    'swday_offset': swday_offset, 'eyear': 0, 'emon': emon_id, 'emday': 0,
                    'ewday': ewday_id, 'ewday_offset': ewday_offset, 'skip_interval': skip_interval,
                    'other': other}
            dateranges.append(MonthWeekDayDaterange(data))
            return

        res = re.search(r'([a-z]*) ([\d-]+) - ([a-z]*) ([\d-]+) / (\d+)[\s\t]*([0-9:, -]+)', entry)
        if res is not None:
            (t00, smday, t01, emday, skip_interval, other) = res.groups()
            if t00 in Daterange.weekdays and t01 in Daterange.weekdays:
                swday = Daterange.get_weekday_id(t00)
                ewday = Daterange.get_weekday_id(t01)
                swday_offset = smday
                ewday_offset = emday
                data = {'syear': 0, 'smon': 0, 'smday': 0, 'swday': swday,
                        'swday_offset': swday_offset, 'eyear': 0, 'emon': 0, 'emday': 0,
                        'ewday': ewday, 'ewday_offset': ewday_offset,
                        'skip_interval': skip_interval, 'other': other}
                dateranges.append(WeekDayDaterange(data))
                return

            if t00 in Daterange.months and t01 in Daterange.months:
                smon = Daterange.get_month_id(t00)
                emon = Daterange.get_month_id(t01)
                data = {'syear': 0, 'smon': smon, 'smday': smday, 'swday': 0, 'swday_offset': 0,
                        'eyear': 0, 'emon': emon, 'emday': emday, 'ewday': 0, 'ewday_offset': 0,
                        'skip_interval': skip_interval, 'other': other}
                dateranges.append(MonthDateDaterange(data))
                return

            if t00 == 'day' and t01 == 'day':
                data = {'syear': 0, 'smon': 0, 'smday': smday, 'swday': 0, 'swday_offset': 0,
                        'eyear': 0, 'emon': 0, 'emday': emday, 'ewday': 0, 'ewday_offset': 0,
                        'skip_interval': skip_interval, 'other': other}
                dateranges.append(MonthDayDaterange(data))
                return

        res = re.search(r'([a-z]*) ([\d-]+) - ([\d-]+) / (\d+)[\s\t]*([0-9:, -]+)', entry)
        if res is not None:
            (t00, smday, emday, skip_interval, other) = res.groups()
            if t00 in Daterange.weekdays:
                swday = Daterange.get_weekday_id(t00)
                swday_offset = smday
                ewday = swday
                ewday_offset = emday
                data = {'syear': 0, 'smon': 0, 'smday': 0, 'swday': swday,
                        'swday_offset': swday_offset, 'eyear': 0, 'emon': 0, 'emday': 0,
                        'ewday': ewday, 'ewday_offset': ewday_offset,
                        'skip_interval': skip_interval, 'other': other}
                dateranges.append(WeekDayDaterange(data))
                return

            if t00 in Daterange.months:
                smon = Daterange.get_month_id(t00)
                emon = smon
                data = {'syear': 0, 'smon': smon, 'smday': smday, 'swday': 0, 'swday_offset': 0,
                        'eyear': 0, 'emon': emon, 'emday': emday, 'ewday': 0, 'ewday_offset': 0,
                        'skip_interval': skip_interval, 'other': other}
                dateranges.append(MonthDateDaterange(data))
                return

            if t00 == 'day':
                data = {'syear': 0, 'smon': 0, 'smday': smday, 'swday': 0, 'swday_offset': 0,
                        'eyear': 0, 'emon': 0, 'emday': emday, 'ewday': 0, 'ewday_offset': 0,
                        'skip_interval': skip_interval, 'other': other}
                dateranges.append(MonthDayDaterange(data))
                return

        res = re.search(
            r'([a-z]*) ([\d-]+) ([a-z]*) - ([a-z]*) ([\d-]+) ([a-z]*) [\s\t]*([0-9:, -]+)', entry
        )
        if res is not None:
            (swday, swday_offset, smon, ewday, ewday_offset, emon, other) = res.groups()
            smon_id = Daterange.get_month_id(smon)
            emon_id = Daterange.get_month_id(emon)
            swday_id = Daterange.get_weekday_id(swday)
            ewday_id = Daterange.get_weekday_id(ewday)
            data = {'syear': 0, 'smon': smon_id, 'smday': 0, 'swday': swday_id,
                    'swday_offset': swday_offset, 'eyear': 0, 'emon': emon_id, 'emday': 0,
                    'ewday': ewday_id, 'ewday_offset': ewday_offset, 'skip_interval': 0,
                    'other': other}
            dateranges.append(MonthWeekDayDaterange(data))
            return

        res = re.search(r'([a-z]*) ([\d-]+) - ([\d-]+)[\s\t]*([0-9:, -]+)', entry)
        if res is not None:
            (t00, smday, emday, other) = res.groups()
            if t00 in Daterange.weekdays:
                swday = Daterange.get_weekday_id(t00)
                swday_offset = smday
                ewday = swday
                ewday_offset = emday
                data = {'syear': 0, 'smon': 0, 'smday': 0, 'swday': swday,
                        'swday_offset': swday_offset, 'eyear': 0, 'emon': 0, 'emday': 0,
                        'ewday': ewday, 'ewday_offset': ewday_offset, 'skip_interval': 0,
                        'other': other}
                dateranges.append(WeekDayDaterange(data))
                return

            if t00 in Daterange.months:
                smon = Daterange.get_month_id(t00)
                emon = smon
                data = {'syear': 0, 'smon': smon, 'smday': smday, 'swday': 0,
                        'swday_offset': 0, 'eyear': 0, 'emon': emon, 'emday': emday,
                        'ewday': 0, 'ewday_offset': 0, 'skip_interval': 0,
                        'other': other}
                dateranges.append(MonthDateDaterange(data))
                return

            if t00 == 'day':
                data = {'syear': 0, 'smon': 0, 'smday': smday, 'swday': 0,
                        'swday_offset': 0, 'eyear': 0, 'emon': 0, 'emday': emday,
                        'ewday': 0, 'ewday_offset': 0, 'skip_interval': 0,
                        'other': other}
                dateranges.append(MonthDayDaterange(data))
                return

        res = re.search(r'([a-z]*) ([\d-]+) - ([a-z]*) ([\d-]+)[\s\t]*([0-9:, -]+)', entry)
        if res is not None:
            (t00, smday, t01, emday, other) = res.groups()
            if t00 in Daterange.weekdays and t01 in Daterange.weekdays:
                swday = Daterange.get_weekday_id(t00)
                ewday = Daterange.get_weekday_id(t01)
                swday_offset = smday
                ewday_offset = emday
                data = {'syear': 0, 'smon': 0, 'smday': 0, 'swday': swday,
                        'swday_offset': swday_offset, 'eyear': 0, 'emon': 0, 'emday': 0,
                        'ewday': ewday, 'ewday_offset': ewday_offset, 'skip_interval': 0,
                        'other': other}
                dateranges.append(WeekDayDaterange(data))
                return

            if t00 in Daterange.months and t01 in Daterange.months:
                smon = Daterange.get_month_id(t00)
                emon = Daterange.get_month_id(t01)
                data = {'syear': 0, 'smon': smon, 'smday': smday, 'swday': 0,
                        'swday_offset': 0, 'eyear': 0, 'emon': emon, 'emday': emday,
                        'ewday': 0, 'ewday_offset': 0, 'skip_interval': 0,
                        'other': other}
                dateranges.append(MonthDateDaterange(data))
                return

            if t00 == 'day' and t01 == 'day':
                data = {'syear': 0, 'smon': 0, 'smday': smday, 'swday': 0,
                        'swday_offset': 0, 'eyear': 0, 'emon': 0, 'emday': emday,
                        'ewday': 0, 'ewday_offset': 0, 'skip_interval': 0,
                        'other': other}
                dateranges.append(MonthDayDaterange(data))
                return

        res = re.search(r'([a-z]*) ([\d-]+) ([a-z]*)[\s\t]*([0-9:, -]+)', entry)
        if res is not None:
            (t00, t02, t01, other) = res.groups()
            if t00 in Daterange.weekdays and t01 in Daterange.months:
                swday = Daterange.get_weekday_id(t00)
                smon = Daterange.get_month_id(t01)
                emon = smon
                ewday = swday
                ewday_offset = t02
                data = {'syear': 0, 'smon': smon, 'smday': 0, 'swday': swday,
                        'swday_offset': t02, 'eyear': 0, 'emon': emon, 'emday': 0,
                        'ewday': ewday, 'ewday_offset': ewday_offset, 'skip_interval': 0,
                        'other': other}
                dateranges.append(MonthWeekDayDaterange(data))
                return
            if not t01:
                if t00 in Daterange.weekdays:
                    swday = Daterange.get_weekday_id(t00)
                    swday_offset = t02
                    ewday = swday
                    ewday_offset = swday_offset
                    data = {'syear': 0, 'smon': 0, 'smday': 0, 'swday': swday,
                            'swday_offset': swday_offset, 'eyear': 0, 'emon': 0, 'emday': 0,
                            'ewday': ewday, 'ewday_offset': ewday_offset, 'skip_interval': 0,
                            'other': other}
                    dateranges.append(WeekDayDaterange(data))
                    return
                if t00 in Daterange.months:
                    smon = Daterange.get_month_id(t00)
                    emon = smon
                    emday = t02
                    data = {'syear': 0, 'smon': smon, 'smday': t02, 'swday': 0,
                            'swday_offset': 0, 'eyear': 0, 'emon': emon, 'emday': emday,
                            'ewday': 0, 'ewday_offset': 0, 'skip_interval': 0,
                            'other': other}
                    dateranges.append(MonthDateDaterange(data))
                    return
                if t00 == 'day':
                    emday = t02
                    data = {'syear': 0, 'smon': 0, 'smday': t02, 'swday': 0,
                            'swday_offset': 0, 'eyear': 0, 'emon': 0, 'emday': emday,
                            'ewday': 0, 'ewday_offset': 0, 'skip_interval': 0,
                            'other': other}
                    dateranges.append(MonthDayDaterange(data))
                    return

        res = re.search(r'([a-z]*)[\s\t]+([0-9:, -]+)', entry)
        if res is not None:
            (t00, other) = res.groups()
            if t00 in Daterange.weekdays:
                day = t00
                data = {'day': day, 'other': other}
                dateranges.append(StandardDaterange(data))
                return
        logger.info("[timeentry::%s] no match for %s", self.get_name(), entry)
        self.invalid_entries.append(entry)
Try to solve dateranges (special cases)

        :param dateranges: dateranges
        :type dateranges: list
        :param entry: property of timeperiod
        :type entry: string
        :return: None