private void DeletePhoto(int id)
 {
     IsLoading = true;
     if (GalleryItemModels.Any())
     {
         var model = GalleryItemModels.FirstOrDefault(x => x.Id == id);
         if (model != null)
         {
             GalleryItemModels.Remove(model);
         }
     }
     IsLoading = false;
 }
        private async Task TakeVideo()
        {
            bool permissionResult = await _permissionService.AskPermission();

            if (permissionResult)
            {
                IsLoading = true;
                var model = await _mediaHelper.TakeVideoAsync().ConfigureAwait(false);

                if (model != null)
                {
                    model.NoteId  = _noteId;
                    model.IsVideo = true;

                    var videoName =
                        model.VideoPath.Substring(
                            model.VideoPath.LastIndexOf(@"/", StringComparison.InvariantCulture) + 1);
                    var imageName = videoName.Substring(0, videoName.Length - 4) + "_thumb.jpg";

                    byte[] imageContent =
                        _mediaService.GenerateThumbImage(model.VideoPath,
                                                         ConstantsHelper.ThumbnailTimeFrame);

                    byte[] resizedImage = _mediaService.ResizeImage(imageContent,
                                                                    ConstantsHelper.ResizedImageWidth,
                                                                    ConstantsHelper.ResizedImageHeight);

                    string path      = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
                    string imagePath = Path.Combine(path, imageName);

                    File.WriteAllBytes(imagePath, resizedImage);
                    model.ImagePath = imagePath;
                    model.Thumbnail = imagePath;

                    await _transformHelper.ResizeAsync(imagePath, model).ConfigureAwait(false);

                    Device.BeginInvokeOnMainThread(() =>
                    {
                        GalleryItemModels.Add(model);
                    });
                }
            }
            Device.BeginInvokeOnMainThread(() =>
            {
                IsLoading = false;
            });
        }
        public override Task InitializeAsync(object navigationData)
        {
            _noteId = (int)navigationData;

            if (_noteId == 0)
            {
                Title = Resmgr.Value.GetString(ConstantsHelper.CreateNote, CultureInfo.CurrentCulture);
            }
            else
            {
                IsEditMode  = true;
                _note       = App.NoteRepository.Value.GetNoteAsync(_noteId);
                Title       = _note.EditDate.ToString("d");
                Description = _note.Description;
                GalleryItemModels.ReplaceRangeWithoutUpdating(_note.GalleryItems);
                GalleryItemModels.RaiseCollectionChanged();
                OnPropertyChanged(nameof(IsGalleryVisible));
            }
            return(base.InitializeAsync(navigationData));
        }
        private async void MultiMediaPickerServiceOnMediaPickedCompleted(object sender, IList <MediaFile> e)
        {
            _multiMediaPickerService.OnMediaPickedCompleted -= MultiMediaPickerServiceOnMediaPickedCompleted;

            IsLoading = true;

            foreach (var item in e)
            {
                var model = await GetGalleryItemModelFromMediaFile(item)
                            .ConfigureAwait(false);

                Device.BeginInvokeOnMainThread(() =>
                {
                    lock (Obj)
                    {
                        GalleryItemModels.Add(model);
                    }
                });
            }

            IsLoading = false;
        }
        private async Task TakePhoto()
        {
            bool permissionResult = await _permissionService.AskPermission();

            if (permissionResult)
            {
                IsLoading = true;
                try
                {
                    var model = await _mediaHelper.TakePhotoAsync();

                    if (model != null)
                    {
                        GalleryItemModels.Add(model);
                    }
                }
                catch (Exception ex)
                {
                    await UserDialogs.Instance.AlertAsync(ex.Message);
                }
            }
            IsLoading = false;
        }
        private async Task SaveNote(string text)
        {
            ShouldPromptUser = false;
            Description      = text;

            IsLoading = true;
            if (_noteId == 0)
            {
                await NavigationService.NavigateBackAsync();

                Task.Run(() =>
                {
                    var note = new Note
                    {
                        CreationDate = DateTime.Now,
                        EditDate     = DateTime.Now,
                        Description  = Description,
                        GalleryItems = GalleryItemModels.ToList(),
                        UserId       = Settings.CurrentUserId
                    };
                    App.NoteRepository.Value.Save(note);
                    MessagingCenter.Send(this, ConstantsHelper.NoteCreated);
                });
            }
            else
            {
                var note = App.NoteRepository.Value.GetNoteAsync(_noteId);
                note.Description  = Description;
                note.EditDate     = DateTime.Now;
                note.GalleryItems = GalleryItemModels.ToList();
                App.NoteRepository.Value.Save(note);
                MessagingCenter.Send(this, ConstantsHelper.NoteEdited, _noteId);
            }
            IsLoading = false;

            IsToolbarItemVisible = false;
        }