public Models.Workout.WorkoutAdvice Create(Models.Requests.Workout.WorkoutAdviceCreate adviceCreate, UserInfo userInfo) { Client dbClient = _context.Clients.Find(adviceCreate.ClientId); if (dbClient == null) { throw new ResourceNotFoundException($"Client with id {adviceCreate.ClientId} not found"); } if (userInfo.Role == "EMPLOYEE") { Trainer dbTrainer = _context.Trainers.Find(adviceCreate.TrainerId); if (dbTrainer == null) { throw new ResourceNotFoundException($"Trainer with id {adviceCreate.TrainerId} not found"); } } else { adviceCreate.TrainerId = userInfo.Id; } WorkoutAdvice dbWorkoutAdvice = WorkoutAdviceMapper.toDb(adviceCreate); _context.WorkoutAdvices.Add(dbWorkoutAdvice); _context.SaveChanges(); return(GetById(dbWorkoutAdvice.Id)); }
public Models.Workout.WorkoutAdvice GetById(int id) { var dbAdvice = _context.WorkoutAdvices .Include(x => x.Client) .ThenInclude(x => x.AppUser) .Include(x => x.Trainer) .ThenInclude(x => x.AppUser) .Where(x => x.Id == id) .FirstOrDefault(); if (dbAdvice == null) { throw new ResourceNotFoundException($"Workour advice with id {id} not found"); } return(WorkoutAdviceMapper.fromDb(dbAdvice)); }
public List <Models.Workout.WorkoutAdvice> GetAll(WorkoutAdviceQueryParams queryParams, UserInfo userInfo) { var query = _context.WorkoutAdvices .Include(x => x.Client) .ThenInclude(x => x.AppUser) .Include(x => x.Trainer) .ThenInclude(x => x.AppUser) .AsQueryable(); if (userInfo.Role == "EMPLOYEE") { if (queryParams.ClientId != null) { query = query.Where(x => x.ClientId == queryParams.ClientId); } if (queryParams.TrainerId != null) { query = query.Where(x => x.TrainerId == queryParams.TrainerId); } } else if (userInfo.Role == "TRAINER") { query = query.Where(x => x.TrainerId == userInfo.Id); } else { query = query.Where(x => x.ClientId == userInfo.Id); if (queryParams.TrainerId != null) { query = query.Where(x => x.TrainerId == queryParams.TrainerId); } } return(query.Select(x => WorkoutAdviceMapper.fromDb(x)) .ToList()); }