/// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='request'>
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <object> TrackProgressAsync(this IGoals operations, TrackProgressRequest request, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.TrackProgressWithHttpMessagesAsync(request, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
        public async Task <ActionResult <ProgressModel> > TrackProgress(TrackProgressRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.GetErrorMessages()));
            }

            try
            {
                var result = await _repository.TrackProgress(
                    User.Claims.GetUserId(),
                    new GoalProgressEntity
                {
                    GoalId = request.GoalId,
                    Weight = request.Weight,
                    Date   = request.Date
                });

                var response = new ProgressModel
                {
                    ProgressId = result.ProgressId,
                    Weight     = result.Weight,
                    GoalId     = result.GoalId,
                    Date       = result.Date
                };

                return(response);
            }
            catch (DbException ex)
            {
                if (ex.Code == 50100)
                {
                    return(Forbid());
                }

                return(BadRequest(ex.Message));
            }
            catch (Exception)
            {
                return(StatusCode(500));
            }
        }
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='request'>
 /// </param>
 public static object TrackProgress(this IGoals operations, TrackProgressRequest request)
 {
     return(Task.Factory.StartNew(s => ((IGoals)s).TrackProgressAsync(request), operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult());
 }