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);
        }
Esempio n. 2
0
        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 }));
        }