private void HandlePinClick(object sender, EventArgs e) { var vm = (SpeakerDetailsViewModel)DataContext; var uri = "/SpeakerDetails.xaml?key=" + vm.Key; var imageUri = default(Uri); try { imageUri = SpeakerImage.SaveAsTile("Speaker-" + vm.ID); } catch (Exception) { } var foundTile = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains(uri)); if (foundTile != null) { foundTile.Delete(); } var tile = new StandardTileData { Title = vm.Name, BackContent = string.Format("{0} at {1}", vm.Title, vm.Company), BackTitle = vm.Name, BackgroundImage = (imageUri != null) ? imageUri : new Uri("/Background.png", UriKind.RelativeOrAbsolute), }; ShellTile.Create(new Uri(uri, UriKind.Relative), tile); }
public async Task <ActionResult> NewImage(int speakerId, SpeakerImage speakerImage, HttpPostedFileBase imageFile) { var speaker = await dbContext.Speakers.Include(sp => sp.Images.Select(i => i.ImageType)).SingleAsync(s => s.Id == speakerId); var imageType = await dbContext.ImageTypes.FirstOrDefaultAsync(it => it.Id == speakerImage.ImageTypeId); if (imageType == null) { throw new InvalidOperationException("Unknown image type"); } string errorMessage = null; if (imageFile != null && imageFile.ContentLength > 0) { if (imageFile.ContentLength < 10 * 1024 * 1024) { try { string imageUrl; using (var memStream = new MemoryStream()) { imageFile.InputStream.CopyTo(memStream); imageUrl = _imageUploader.UploadToStorage(memStream, speaker.Slug + "-" + imageType.Slug, _speakerImageContainerName); } speakerImage.ImageUrl = imageUrl; speaker.Images.Add(speakerImage); await dbContext.SaveChangesAsync(); return(RedirectToAction("Speaker", new { id = speakerId })); } catch (ImageUploadException e) { errorMessage = e.Message; ModelState.AddModelError("ImageFile", e.Message); } } else { errorMessage = "Max file size of image is ~10MB"; ModelState.AddModelError("ImageFile", "Max file size of image is ~10MB"); } } return(RedirectToAction("Speaker", new { id = speakerId, errorMsg = errorMessage })); }