protected virtual TEntity CopyTo(TEntity entity, TContract contract) { entity.CheckArgument(nameof(entity)); contract.CheckArgument(nameof(contract)); entity.Id = contract.Id; entity.Name = contract.Name; entity.UniqueName = contract.UniqueName; entity.OwnerName = contract.OwnerName; entity.Email = contract.Email; entity.State = contract.State; entity.NextOpen = contract.NextOpen; entity.NextClose = contract.NextClose; entity.OpenState = contract.OpenState; return(entity); }
internal async Task <TEntity> LoadCustomerRestaurantAsync(int id) { var result = default(TEntity); var restaurant = await Set.Include(e => e.OpeningHours) .Include(e => e.SepcialOpeningHours) .SingleOrDefaultAsync(e => e.Id == id) .ConfigureAwait(false); if (restaurant != null) { var now = DateTime.Now; var timeTable = Time.TimeTable.LoadTimeTable(restaurant, now); var fromTo = timeTable.FirstOrDefault(e => e.IsBetween(now)); result = new TEntity(); result.Id = restaurant.Id; result.Name = restaurant.Name; result.UniqueName = restaurant.UniqueName; result.OwnerName = restaurant.OwnerName; result.Email = restaurant.Email; result.State = restaurant.State; if (fromTo != null) { result.OpenState = fromTo.State; if ((result.OpenState & SpecialOpenState.Open) > 0) { result.NextClose = fromTo.To; } else if ((result.OpenState & SpecialOpenState.Closed) > 0) { var next = timeTable.FirstOrDefault(e => e.From.ToDateSecondStamp() > fromTo.To.ToDateSecondStamp() && (e.State & SpecialOpenState.Open) > 0); if (next != null) { result.NextOpen = next.To; } } } result.TimeTable = timeTable; } return(result); }