Пример #1
0
        public async Task <IActionResult> PostWorkout([FromBody] SaveWorkoutResource saveWorkout)
        {
            //throw new Exception ();
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            /*Workout duplicate = await _context.Workouts.SingleOrDefaultAsync(w => w.Title == saveWorkout.Title &&
             *  w.Date == saveWorkout.Date);
             * if (duplicate != null)
             * {
             *  return Conflict();
             * }*/

            string userId = GetUserId();

            var workout = mapper.Map <SaveWorkoutResource, Workout> (saveWorkout);

            // workout = MapUrl(workout);
            workout.UserId = userId;

            repository.Add(workout);

            await unitOfWork.CompleteAsync();

            var result = mapper.Map <Workout, WorkoutResource> (workout);

            return(CreatedAtAction("GetWorkout", new { id = result.WorkoutId }, result));
        }
Пример #2
0
        public async Task <IActionResult> PutWorkout(int id, [FromBody] SaveWorkoutResource saveWorkout)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var workout = await repository.Get(id);

            if (workout == null)
            {
                return(NotFound());
            }

            if (workout.UserId != GetUserId())
            {
                return(Forbid());
            }

            mapper.Map <SaveWorkoutResource, Workout> (saveWorkout, workout);

            // workout = MapUrl(workout);

            try {
                await unitOfWork.CompleteAsync();
            } catch (DbUpdateConcurrencyException) {
                if (!repository.IfExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            var result = mapper.Map <Workout, WorkoutResource> (workout);

            return(Ok(result));
        }