public JsonResult HandlePartyImageForm(PartyImageForm partyImageForm)
        {
            FormResponse formResponse = new FormResponse();

            if (this.ModelState.IsValid)
            {
                PartyHost partyHost = (PartyHost)this.Members.GetCurrentPartier();

                IPartyImage partyImage = (IPartyImage)this.Umbraco.TypedMedia(partyImageForm.PartyImage);

                // if new image is a csm default and old is a custom upload, then delete the custom upload
                if (partyImage is Image & partyHost.PartyImage is PartyImage)
                {
                    partyHost.PartyImage = null;
                }

                // set new
                partyHost.PartyImage = partyImage;

                formResponse.Success = true;
            }
            else
            {
                formResponse.Errors = this.ModelState.GetErrors();
            }

            return(Json(formResponse, "text/plain"));
        }
        public JsonResult HandleCustomPartyImageForm(CustomPartyImageForm customPartyImageForm)
        {
            FormResponse formResponse = new FormResponse();

            if (this.ModelState.IsValid && customPartyImageForm.CustomPartyImage.ContentLength > 0 && customPartyImageForm.CustomPartyImage.InputStream.IsImage())
            {
                PartyHost partyHost = (PartyHost)this.Members.GetCurrentMember();

                // get any existing party image
                IPartyImage partyImage = partyHost.PartyImage;

                string url = string.Empty;

                if (partyImage == null || partyImage is Image) // not set, or a cms default
                {
                    // create new custom party image
                    partyImage = PartyImages.CreatePartyImage(customPartyImageForm.CustomPartyImage);

                    // get new url
                    url = partyImage.Url;

                    // ensure reference
                    partyHost.PartyImage = partyImage;
                }
                else // if (partyImage is PartyImage) // it's already a custom image so update the file only within the same media item
                {
                    // update existing media item file reference
                    url = ((PartyImage)partyImage).UploadImage(customPartyImageForm.CustomPartyImage);
                }

                formResponse.Message = JsonConvert.SerializeObject(new { id = partyImage.Id, url = url }); //TODO:S3URL

                formResponse.Success = true;
            }

            return(Json(formResponse, "text/plain"));
        }