public async Task <IActionResult> UserPrices(DateTime date) { var userId = User.GetUserId(); var user = await _context.RegisteredUsers.Include(u => u.Weeks).ThenInclude(w => w.Records).SingleAsync(u => u.Id.Equals(userId)); var weekDate = date.ToStartOfWeek(); var week = user.Weeks.SingleOrDefault(w => w.WeekDate.Equals(weekDate)); if (week == null) { week = new Week { WeekDate = weekDate }; user.Weeks.Add(week); await _context.SaveChangesAsync(); } var model = new BoardPricesModel { WeekDate = weekDate, Users = new List <PricesUserModel> { _mapper.Map <PricesUserModel>(week) } }; return(Ok(model)); }
public async Task <IActionResult> BoardPrices(long boardId, DateTime date) { var board = await GetBoard(boardId); if (board == null || board.Deleted) { return(NotFound()); } var weekDate = date.ToStartOfWeek(); var users = _context.BoardUsers.Where(u => u.BoardId.Equals(boardId) && !u.Deleted).Select(u => u.RegisteredUserId).ToList(); var weeks = _context.Weeks.Include(w => w.Records).Where(w => w.WeekDate.Equals(weekDate) && users.Contains(w.UserId)); var modelUsers = new List <PricesUserModel>(); foreach (var week in weeks) { var u = _mapper.Map <PricesUserModel>(week); var user = board.Users.Single(bu => bu.RegisteredUserId.Equals(week.UserId)); u.Name = user.Name; u.UserId = u.UserId; modelUsers.Add(u); } var model = new BoardPricesModel { WeekDate = weekDate, Users = modelUsers }; return(Ok(model)); }