コード例 #1
0
        public async Task <IActionResult> ProgramImages(int id)
        {
            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)));
            }

            PsProgram program;

            try
            {
                program = await _performerSchedulingService.GetProgramByIdAsync(id,
                                                                                includeImages : true);
            }
            catch (GraException gex)
            {
                ShowAlertDanger("Unable to view program images: ", gex);
                return(RedirectToAction(nameof(Dashboard)));
            }

            program.Images.ForEach(_ => _.Filename = _pathResolver.ResolveContentPath(_.Filename));

            var viewModel = new ProgramImagesViewModel
            {
                IsEditable    = schedulingStage == PsSchedulingStage.RegistrationOpen,
                MaxUploadMB   = MaxUploadMB,
                ProgramImages = program.Images,
                ProgramId     = program.Id,
                ProgramTitle  = program.Title
            };

            return(View(viewModel));
        }
コード例 #2
0
        public async Task <IActionResult> ProgramImages(int id, bool?list = null,
                                                        int?ageGroup      = null)
        {
            var settings = await _performerSchedulingService.GetSettingsAsync();

            var schedulingStage = _performerSchedulingService.GetSchedulingStage(settings);

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

            PsProgram program;

            try
            {
                program = await _performerSchedulingService.GetProgramByIdAsync(id,
                                                                                includeImages : true,
                                                                                onlyApproved : true);
            }
            catch (GraException gex)
            {
                ShowAlertDanger("Unable to view program images: ", gex);
                return(RedirectToAction(nameof(Programs)));
            }

            program.Images.ForEach(_ => _.Filename = _pathResolver
                                                     .ResolveContentPath(_.Filename));

            var viewModel = new ProgramImagesViewModel
            {
                Program = program
            };

            if (list == true)
            {
                viewModel.List     = list;
                viewModel.AgeGroup = ageGroup;
            }

            return(View(viewModel));
        }
コード例 #3
0
        public async Task <IActionResult> ProgramImagesDelete(ProgramImagesViewModel 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 program = await _performerSchedulingService.GetProgramByIdAsync(model.ProgramId);

            if (program == null)
            {
                return(RedirectToAction(nameof(Dashboard)));
            }

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

            if (imageIds.Count > 0)
            {
                foreach (var imageId in imageIds)
                {
                    await _performerSchedulingService.RemoveProgramImageByIdAsync(imageId);
                }
                ShowAlertSuccess("Image(s) deleted!");
            }
            return(RedirectToAction(nameof(ProgramImages), new { id = program.Id }));
        }
コード例 #4
0
        public async Task <IActionResult> ProgramImages(ProgramImagesViewModel 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)));
            }

            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.AddProgramImageAsync(
                                model.ProgramId, ms.ToArray(), Path.GetExtension(image.FileName));
                        }
                    }
                }
                ShowAlertSuccess("Image(s) added!");
                return(RedirectToAction(nameof(ProgramImages), new { id = model.ProgramId }));
            }

            PsProgram program;

            try
            {
                program = await _performerSchedulingService.GetProgramByIdAsync(model.ProgramId,
                                                                                includeImages : true);
            }
            catch (GraException gex)
            {
                ShowAlertDanger("Unable to view program images: ", gex);
                return(RedirectToAction(nameof(Index)));
            }

            program.Images.ForEach(_ => _.Filename = _pathResolver.ResolveContentPath(_.Filename));

            model.IsEditable    = schedulingStage == PsSchedulingStage.RegistrationOpen;
            model.MaxUploadMB   = MaxUploadMB;
            model.ProgramTitle  = program.Title;
            model.ProgramImages = program.Images;
            return(View(model));
        }