Example #1
0
        public async Task <IActionResult> ImagesDelete(PerformerImagesViewModel model)
        {
            var settings = await _performerSchedulingService.GetSettingsAsync();

            var schedulingStage = _performerSchedulingService.GetSchedulingStage(settings);

            if (schedulingStage != PsSchedulingStage.RegistrationOpen)
            {
                return(RedirectToAction(nameof(Index)));
            }

            var userId    = GetId(ClaimType.UserId);
            var performer = await _performerSchedulingService.GetPerformerByUserIdAsync(userId);

            if (performer?.RegistrationCompleted != true)
            {
                return(RedirectToAction(nameof(Information)));
            }

            var imageIds = Newtonsoft.Json.JsonConvert
                           .DeserializeObject <List <int> >(model.ImagesToDelete);

            if (imageIds.Count > 0)
            {
                foreach (var imageId in imageIds)
                {
                    await _performerSchedulingService.RemovePerformerImageByIdAsync(imageId);
                }
                ShowAlertSuccess("Image(s) deleted!");
            }
            return(RedirectToAction(nameof(Images)));
        }
Example #2
0
        public async Task <IActionResult> Images()
        {
            var settings = await _performerSchedulingService.GetSettingsAsync();

            var schedulingStage = _performerSchedulingService.GetSchedulingStage(settings);

            if (schedulingStage < PsSchedulingStage.RegistrationOpen)
            {
                return(RedirectToAction(nameof(Index)));
            }

            var userId    = GetId(ClaimType.UserId);
            var performer = await _performerSchedulingService.GetPerformerByUserIdAsync(userId,
                                                                                        includeImages : true);

            if (performer?.RegistrationCompleted != true)
            {
                return(RedirectToAction(nameof(Information)));
            }

            var performerImages = performer.Images.ToList();

            performerImages.ForEach(_ => _.Filename = _pathResolver.ResolveContentPath(_.Filename));

            var viewModel = new PerformerImagesViewModel
            {
                IsEditable      = schedulingStage == PsSchedulingStage.RegistrationOpen,
                MaxUploadMB     = MaxUploadMB,
                PerformerImages = performerImages
            };

            return(View(viewModel));
        }
Example #3
0
        public async Task <IActionResult> Images(PerformerImagesViewModel model)
        {
            var settings = await _performerSchedulingService.GetSettingsAsync();

            var schedulingStage = _performerSchedulingService.GetSchedulingStage(settings);

            if (schedulingStage != PsSchedulingStage.RegistrationOpen)
            {
                return(RedirectToAction(nameof(Index)));
            }

            var userId    = GetId(ClaimType.UserId);
            var performer = await _performerSchedulingService.GetPerformerByUserIdAsync(userId,
                                                                                        includeImages : true);

            if (performer?.RegistrationCompleted != true)
            {
                return(RedirectToAction(nameof(Information)));
            }

            if (model.Images == null)
            {
                ModelState.AddModelError("Images", "Please attach an image to submit.");
            }
            else if (model.Images.Count > 0)
            {
                var extensions = model.Images.Select(_ => Path.GetExtension(_.FileName).ToLower());
                if (extensions.Any(_ => !ValidImageExtensions.Contains(_)))
                {
                    ModelState.AddModelError("Images", $"Image must be one of the following types: {string.Join(", ", ValidImageExtensions)}");
                }
                else if (model.Images.Sum(_ => _.Length) > MaxUploadMB * MBSize)
                {
                    ModelState.AddModelError("Images", $"Please limit uploads to a max of {MaxUploadMB}MB.");
                }
            }
            if (ModelState.IsValid)
            {
                foreach (var image in model.Images)
                {
                    using (var fileStream = image.OpenReadStream())
                    {
                        using (var ms = new MemoryStream())
                        {
                            fileStream.CopyTo(ms);
                            await _performerSchedulingService.AddPerformerImageAsync(
                                performer.Id, ms.ToArray(), Path.GetExtension(image.FileName));
                        }
                    }
                }
                ShowAlertSuccess("Image(s) added!");
                return(RedirectToAction(nameof(Images)));
            }

            var performerImages = performer.Images.ToList();

            performerImages.ForEach(_ => _.Filename = _pathResolver.ResolveContentPath(_.Filename));

            model.IsEditable      = schedulingStage == PsSchedulingStage.RegistrationOpen;
            model.MaxUploadMB     = MaxUploadMB;
            model.PerformerImages = performerImages;
            return(View(model));
        }