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));
        }