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)); }
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)); }
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 })); }
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)); }