public async Task <IActionResult> PostProgram([FromRoute] int?userId, [FromBody] WorkoutProgramDTO programDTO) { if (userId == null) { return(BadRequest()); } if (!ModelState.IsValid) { return(new UnprocessableEntityObjectResult(ModelState)); } var programEntity = Mapper.Map <WorkoutProgram>(programDTO); //add the pllaned dates to each RoutineProgramEntry programEntity.RoutineProgramEntries .ToList() .ForEach(item => item.PlannedDates = programDTO.WorkoutRoutines .FirstOrDefault(r => r.ID == item.WorkoutRoutineID)?.PlannedDates); var result = await _repository.AddProgramForUser(userId, programEntity); if (result == false) { return(BadRequest("Add Failed for Prgram...")); } if (programEntity.ImageBytes != null && programEntity.ImageBytes.Length != 0) { var imageResult = await SaveProgramImage(programEntity); } var programToReturn = Mapper.Map <WorkoutProgramDTO>(programEntity); return(CreatedAtRoute( routeName: "GetProgram", routeValues: new { userId = userId, programId = programToReturn.ID }, value: programToReturn)); }