private async void SaveAsync()
        {
            IsBusy = true;
            _context.DoneWorkouts.Add(DoneWorkout);
            _context.SaveChanges();
            DoneWorkout.CompleteTime = Time;
            DoneWorkout.UserId       = CurrentUser.Id;
            _context.DoneWorkouts.Update(DoneWorkout);
            await _context.SaveChangesAsync();

            try
            {
                var networkService = new NetworkService();
                var response       = await networkService.PostDoneWorkout(CurrentUser.Id, DoneWorkout);

                if (response.IsSuccessStatusCode)
                {
                    DoneWorkout sDoneWorkout = await GetObjectFromResponseAsync <DoneWorkout>(response);

                    DoneWorkout.ServerId = sDoneWorkout.ServerId;
                    DoneWorkout.State    = Common.Enumerations.StoreItemState.EqualsWithServer;

                    _context.DoneWorkouts.Update(DoneWorkout);
                    await _context.SaveChangesAsync();
                }
            }
            catch
            {
                await Page.DisplayAlert(AppResources.Error, AppResources.ConnectionError, AppResources.Ok);
            }
            NavigateAsync(nameof(MainPage));
            IsBusy = false;
        }
 public CompleteWorkoutPageViewModel(INavigationService navigationService, IDatabaseService dbService) :
     base(navigationService, dbService)
 {
     IsRunning   = false;
     IsEnd       = false;
     DoneWorkout = new DoneWorkout();
     Time        = new TimeSpan(0, 0, 0);
 }
 public override void OnNavigatedTo(NavigationParameters parameters)
 {
     if (parameters[NavigationParamterKeys.WorkoutId] is string workoutId)
     {
         DoneWorkout = new DoneWorkout()
         {
             WorkoutId         = _context.Workouts.SingleOrDefault(w => w.Id.Equals(workoutId)).Id,
             DoneExerciseItems = _context.ExerciseItems.Include(e => e.Exercise)
                                 .Where(e => e.Workout.Id.Equals(workoutId))
                                 .Select(e => new DoneExerciseItem {
                 ExerciseItem = e
             }).ToList(),
             Date = DateTime.Now,
         };
     }
     SubsrcibeForEvents();
 }
예제 #4
0
        public async Task <IActionResult> PostDoneWorkout([FromRoute] string userId,
                                                          [FromBody] DoneWorkout doneWorkout)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            List <DoneExerciseItem> newDoneExerciseItems = new List <DoneExerciseItem>();

            foreach (var dEItem in doneWorkout.DoneExerciseItems)
            {
                var newDEItem = new DoneExerciseItem()
                {
                    CompleteTime = dEItem.CompleteTime,
                    // ExerciseItem = _context.ExerciseItems.SingleOrDefault(u => u.ClientId.Equals(dEItem.ClientId)),

                    IsCompleted = dEItem.IsCompleted,
                };
                newDoneExerciseItems.Add(newDEItem);
            }
            var newDoneWorkout = new DoneWorkout()
            {
                CompleteTime      = doneWorkout.CompleteTime,
                DoneExerciseItems = newDoneExerciseItems,
                Date   = doneWorkout.Date,
                Rating = doneWorkout.Rating,
                // Workout = _context.Workouts.SingleOrDefault(w => w.ClientId.Equals(doneWorkout.Workout.ClientId)),
            };

            _context.DoneWorkouts.Add(newDoneWorkout);
            newDoneWorkout.ServerId = newDoneWorkout.Id;
            var user = _context.Users.SingleOrDefault(u => u.Id.Equals(userId));

            user.DoneWorkouts.Add(newDoneWorkout);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetDoneWorkout", new { id = newDoneWorkout.Id }, newDoneWorkout));
        }
예제 #5
0
        public async Task <HttpResponseMessage> PostDoneWorkout(string userId, DoneWorkout w)
        {
            var response = await PostAsync(new Uri(serverUrl, $"/api/DoneWorkouts/{userId}"), w);

            return(response);
        }