private async void Model_AddedNew(object sender, Csla.Core.AddedNewEventArgs <FileReference> e) { if (IsAdding) { return; } IsAdding = true; var newItem = e.NewObject; var destinationDirectory = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); var fileName = GenerateUniqueFileNameFor(destinationDirectory); PrepareToShowModal(); var fullFileName = await DependencyService.Get <IPhotoPicker>().GetCopiedFilePath(destinationDirectory, fileName); if (fullFileName == null) { if (newItem != null) { Model.Remove(newItem); } return; } newItem.FileName = fullFileName; var photoVM = new PhotoViewModel(newItem); await photoVM.InitializeAsync(); PhotoViewModels.Add(photoVM); IsAdding = false; }
public Photos(FileReferenceList fileReferenceList) { IsAdding = false; Model = fileReferenceList; _choosePhotoCommand = new Command(ChoosePhoto); _deletePhotoCommand = new Command(async obj => { var photoVM = (PhotoViewModel)obj; PhotoViewModels.Remove(photoVM); var fileRef = photoVM.FileReference; Model.Remove(fileRef); var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); var fullPath = Path.Combine(documentsPath, fileRef.FileName); if (File.Exists(fullPath)) { await Task.Run(() => File.Delete(fullPath)); } }); Model.AddedNew += async(o, e) => { if (IsAdding) { return; } IsAdding = true; var newItem = e.NewObject; var destinationDirectory = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); var fileName = GenerateUniqueFileNameFor(destinationDirectory); PrepareToShowModal(); var fullFileName = await DependencyService.Get <IPhotoPicker>().GetCopiedFilePath(destinationDirectory, fileName); if (fullFileName == null) { if (newItem != null) { Model.Remove(newItem); } return; } newItem.FileName = fullFileName; var photoVM = new PhotoViewModel(newItem); await photoVM.InitializeAsync(); PhotoViewModels.Add(photoVM); IsAdding = false; }; PhotoViewModels = new ObservableCollection <PhotoViewModel>(); }
protected override async Task <FileReferenceList> DoInitAsync() { var photoViewModels = Model.Select(_ => new PhotoViewModel(_)).ToList(); var initTasks = new List <Task>(); foreach (var viewModel in photoViewModels) { PhotoViewModels.Add(viewModel); initTasks.Add(viewModel.InitializeAsync()); } await Task.WhenAll(initTasks); return(Model); }
public Photos(FileReferenceList fileReferenceList) { Model = fileReferenceList; _choosePhotoCommand = new Command(ChoosePhoto); _deletePhotoCommand = new Command(async obj => { var photoVM = (PhotoViewModel)obj; PhotoViewModels.Remove(photoVM); var fileRef = photoVM.FileReference; Model.Remove(fileRef); var file = await FileSystem.Current.GetFileFromPathAsync(fileRef.FileName); await file.DeleteAsync(); }); PhotoViewModels = new ObservableCollection <PhotoViewModel>(); }
public Photos(FileReferenceList fileReferenceList) { IsAdding = false; Model = fileReferenceList; _choosePhotoCommand = new Command(ChoosePhoto); _deletePhotoCommand = new Command(obj => { var photoVM = (PhotoViewModel)obj; PhotoViewModels.Remove(photoVM); var fileRef = photoVM.FileReference; Model.Remove(fileRef); var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); var fullPath = Path.Combine(documentsPath, fileRef.FileName); if (File.Exists(fullPath)) { File.Delete(fullPath); } }); PhotoViewModels = new ObservableCollection <PhotoViewModel>(); }
public PlaceViewModels GetPlace(int id) { var place = _context.Places .Include(p => p.User) .Include(p => p.Reviews) .Include(p => p.Photos) .FirstOrDefault(p => p.Id == id); if (place == null) { throw new Exception("Place does not found"); } var placeModel = new PlaceViewModels() { Id = place.Id, Title = place.Title, Description = place.Description, UserId = place.UserId, UserName = place.User.UserName }; var mainPhoto = place.Photos.FirstOrDefault(p => p.PlaceId == place.Id && p.IsMain); if (mainPhoto != null) { placeModel.MainPhotoPath = mainPhoto.FilePath; } if (place.Photos.Count > 0) { var photosList = new List <PhotoViewModels>(); foreach (var photo in place.Photos) { var photoItem = new PhotoViewModels() { Id = photo.Id, FileName = photo.FileName, FilePath = photo.FilePath, IsMain = photo.IsMain, UploadDate = photo.UploadDate, PlaceId = photo.PlaceId, UserId = photo.UserId, UserName = photo.User.UserName }; photosList.Add(photoItem); } placeModel.Photos = photosList; } if (place.Reviews.Count() > 0) { var reviewsList = new List <ReviewViewModels>(); foreach (var review in place.Reviews) { var reviewItem = new ReviewViewModels() { Id = review.Id, Text = review.Text, Date = review.Date, Rating = review.Rating, UserId = review.UserId, UserName = review.User.UserName, PlaceId = review.PlaceId }; reviewsList.Add(reviewItem); } placeModel.Reviews = reviewsList.OrderByDescending(r => r.Date).ToList(); placeModel.Rating = Math.Round(place.Reviews.Sum(r => r.Rating) / (double)place.Reviews.Count, 1); } else { placeModel.Rating = 0; } return(placeModel); }