public async Task <IActionResult> GetByCrewAndPosition(int id, int position) { Models.Crew crew = await _context.Crews.Include("Athletes.Athlete").FirstOrDefaultAsync(x => x.BroeCrewId == id); if (crew == null) { return(NotFound()); } if ((crew.BoatClass == Models.BoatClass.Eight && position > 9) || (crew.BoatClass == Models.BoatClass.CoxedFour && position > 5) || ((crew.BoatClass == Models.BoatClass.CoxlessFour || crew.BoatClass == Models.BoatClass.QuadScull) && position > 4) || (crew.BoatClass == Models.BoatClass.CoxedPair && position > 3) || ((crew.BoatClass == Models.BoatClass.CoxlessPair || crew.BoatClass == Models.BoatClass.DoubleScull) && position > 2) || (crew.BoatClass == Models.BoatClass.SingleScull && position > 1)) { return(BadRequest()); } Models.CrewAthlete crewAthlete = crew.Athletes.FirstOrDefault(x => x.Position == position); if (crewAthlete == null) { return(NotFound()); } return(Ok(_mapper.Map <Athlete>(crewAthlete))); }
public async Task <IActionResult> DeleteByCrewAndPosition(int id, int position) { Models.Crew crew = await _context.Crews.Include(x => x.Athletes).FirstOrDefaultAsync(x => x.BroeCrewId == id); if (crew == null) { return(NotFound()); } Models.CrewAthlete athlete = crew.Athletes.FirstOrDefault(x => x.Position == position); if (athlete == null) { return(NotFound()); } crew.Athletes.Remove(athlete); await _context.SaveChangesAsync(); return(NoContent()); }
public async Task <IActionResult> PutByCrewAndPosition(int id, int position, [FromBody] Athlete athlete) { if (athlete is null) { return(BadRequest()); } Models.Crew crew = await _context.Crews.Include("Athletes.Athlete").FirstAsync(x => x.BroeCrewId == id); Models.CrewAthlete crewAthlete = crew.Athletes.FirstOrDefault(x => x.Position == position); bool created = false; if (crewAthlete == null) { Models.Athlete dbAthlete = await _context.Athletes.FirstOrDefaultAsync(x => x.MembershipNumber == athlete.MembershipNumber); if (dbAthlete == null) { crew.Athletes.Add(_mapper.Map <Models.CrewAthlete>(athlete)); created = true; } else { crewAthlete = new Models.CrewAthlete { Athlete = dbAthlete }; crew.Athletes.Add(crewAthlete); _mapper.Map(athlete, crewAthlete); } } else { if (crewAthlete.Athlete.MembershipNumber == athlete.MembershipNumber) { _mapper.Map(athlete, crewAthlete); } else { Models.Athlete dbAthlete = await _context.Athletes.FirstOrDefaultAsync(x => x.MembershipNumber == athlete.MembershipNumber); crew.Athletes.Remove(crewAthlete); if (dbAthlete == null) { crew.Athletes.Add(_mapper.Map <Models.CrewAthlete>(athlete)); created = true; } else { Models.CrewAthlete newCrewAthlete = new Models.CrewAthlete { Athlete = dbAthlete }; crew.Athletes.Add(newCrewAthlete); _mapper.Map(athlete, newCrewAthlete); } } } await _context.SaveChangesAsync(); if (created) { return(CreatedAtRoute("GetByCrewAndPosition", new { id = crew.BroeCrewId, position = athlete.Position })); } else { return(NoContent()); } }