public ShopWorkingCalendarDto ConvertObsolete(ShopCalendarMonth <WorkerScheduleRecord> model, HashSet <Guid> workerIdSet, int version) { var workingCalendarMap = new Dictionary <Guid, WorkingCalendarDayInfoDto[]>(); var month = model.Month; foreach (var grouping in model.ShopCalendarDays .SelectMany(x => x.WorkerCalendarDays) .GroupBy(x => x.WorkerId) .Where(x => workerIdSet.Contains(x.Key))) { var dict = grouping.ToDictionary(x => x.Date.Day, x => mapperWrapper.Map <WorkingCalendarDayInfoDto>(x)); var daysForWorker = Enumerable.Range(1, DateTime.DaysInMonth(month.Year, month.Month)) .Select(x => dict.TryGetValue(x, out var dto) ? dto : GetDefaultDay(new DateTime(month.Year, month.Month, x))) .ToArray(); workingCalendarMap.Add(grouping.Key, daysForWorker); } return(new ShopWorkingCalendarDto { Version = version, Month = month, WorkingCalendarMap = workingCalendarMap, }); }
private ShopCalendarMonthBuilder(Guid shopId, DateTime month) { shopCalendarMonth = new ShopCalendarMonth <T> { ShopId = shopId, Month = month, ShopCalendarDays = new ShopCalendarDay <T> [0], }; }
private static ShopCalendarMonth <T> GetCalendarByRange(ShopCalendarMonth <T> shopCalendarMonth, DateTime from, DateTime to) { return(new ShopCalendarMonth <T> { ShopId = shopCalendarMonth.ShopId, Month = shopCalendarMonth.Month, ShopCalendarDays = shopCalendarMonth.ShopCalendarDays .Where(t => t.Date >= from && t.Date <= to) .ToArray() }); }