public static OperationGroup ToEntity(this OperationGroupModel anOperationGroupModel) { return(new OperationGroup() { OperGroupId = anOperationGroupModel.Id, Name = anOperationGroupModel.Name }); }
public IEnumerable <OperationGroupModel> GetOperationsByDay(DateTime startDay, DateTime endDay) { var dayStartHour = _settings.DayStartHour; startDay = startDay.Date.AddHours(dayStartHour); endDay = endDay.Date.AddHours(24 + dayStartHour); var operations = _context.Operations .Include(x => x.Details) .Where(x => x.Moment >= startDay && x.Moment <= endDay) .OrderByDescending(x => x.Moment) .ToList(); if (!operations.Any()) { yield break; } var firstDateTime = operations.FirstOrDefault().Moment; var tempDate = firstDateTime.Hour < dayStartHour ? firstDateTime.Date.Subtract(TimeSpan.FromDays(1)) : firstDateTime.Date; var cash = _cashService.GetCashRegistrations(tempDate); var group = new OperationGroupModel { Date = tempDate, StartCash = cash.Item1, EndCash = cash.Item2 }; yield return(group); for (var i = 0; i < operations.Count; i++) { var current = operations[i]; var previous = i > 0 ? operations[i - 1] : null; if (previous == null) { group.Operations.Add(current); continue; } if (current.Moment.Hour < dayStartHour && previous.Moment.Hour >= dayStartHour) { tempDate = current.Moment.Date.Subtract(TimeSpan.FromDays(1)); cash = _cashService.GetCashRegistrations(tempDate); group = new OperationGroupModel { Date = tempDate, StartCash = cash.Item1, EndCash = cash.Item2 }; yield return(group); } else if (current.Moment.Date < previous.Moment.Date && group.Date > current.Moment.Date) { tempDate = current.Moment.Hour < dayStartHour ? current.Moment.Date.Subtract(TimeSpan.FromDays(1)) : current.Moment.Date; cash = _cashService.GetCashRegistrations(tempDate); group = new OperationGroupModel { Date = tempDate, StartCash = cash.Item1, EndCash = cash.Item2 }; yield return(group); } group.Operations.Add(current); } }