public ActionResult Create(int? id, bool initial = false, bool copy = false)
        {
            LayoutViewModel.ActiveLink = Links.CreateChallenge;

            var membershipUser = Membership.GetUser();

            if (membershipUser != null && membershipUser.ProviderUserKey != null)
            {
                if (LayoutViewModel.IsCouncil)
                {

                    CreateChallengeViewModel viewModel;

                    if (id != null)
                    {
                        viewModel = GetCreateChallengeViewModelForUpdate(id.Value);

                        if (viewModel == null)
                        {
                            return RedirectToAction("Index", "ChallengesAdmin");
                        }
                        if (copy == false)
                        {
                            viewModel.IsUpdate = true;
                        }
                        else
                        {
                            viewModel.IsUpdate = false;
                        }

                        LayoutViewModel.ActiveLink = Links.Challenges;
                    }
                    else
                    {
                        viewModel = new CreateChallengeViewModel();

                        var partner = new UserService().GetUserById(LayoutViewModel.CurrentAccountId);
                        viewModel.Instance_Id = partner.Instance_Id;

                        //if (initial)
                        //{
                        //    LayoutViewModel.HideTopWrapperMenu = true;
                        //    viewModel.IsInitialRegistrationStep = true;
                        //}
                    }

                    ViewModelHelper.SetDefaultsForChallengeViewModel(viewModel, membershipUser);

                    return View(viewModel);
                }
                else
                    return RedirectToAction("Index", "Home");
            }
            else
                return RedirectToAction("Index", "Home");
        }
        private CreateChallengeViewModel GetCreateChallengeViewModelForUpdate(int id)
        {
            ChallengeModel model = new ChallengesAdminService().GetChallengeDetails(id);

            //Current user doesn't have privileges to see this reward
            //can see challenges from same instance
            if (!new ChallengesAdminService().CheckInInstance(id, new Guid(LayoutViewModel.ProviderUserKey)))
            {
                return null;
            }
            //if (new Guid(LayoutViewModel.ProviderUserKey) != model.Owner_Id)
            //{
            //    return null;
            //}

            CreateChallengeViewModel viewModel = new CreateChallengeViewModel();

            Utils.CopyProperties(model, viewModel);

            //viewModel.ProfileImages = model.ProfileImages;

            return viewModel;
        }
        public ActionResult Create(CreateChallengeViewModel model, string saveAndPreviewButton, string saveAndExitButton)
        {
            LayoutViewModel.ActiveLink = Links.CreateChallenge;

            var membershipUser = Membership.GetUser();

            if (membershipUser != null && membershipUser.ProviderUserKey != null)
            {
                if (LayoutViewModel.IsCouncil)
                {

                    if (ModelState.IsValid)
                    {
                        ChallengeModel challengeModel = new ChallengeModel();

                        Utils.CopyProperties(model, challengeModel);

                        if (model.LogoPhoto != null && model.LogoPhoto.ContentLength > 0)
                        {
                            MemoryStream target = new MemoryStream();
                            model.LogoPhoto.InputStream.CopyTo(target);
                            byte[] data = target.ToArray();

                            UploadModel uploadModel = new UploadModel
                            {
                                ContentType = model.LogoPhoto.ContentType,
                                Contents = data,
                                FileName = model.LogoPhoto.FileName
                            };

                            UploadModel upload = new UploadService().UploadFile(membershipUser.ProviderUserKey.ToString(), uploadModel);
                            challengeModel.LogoImageId = upload.UploadId;
                        }

                        if (model.ProfileImage != null)
                        {
                            List<UploadModel> profileImages = new List<UploadModel>();

                            for (var i = 0; i < 4; i++)
                            {
                                var image = model.ProfileImage[i];
                                UploadModel uploadModel = new UploadModel();

                                if (image != null)
                                {
                                    MemoryStream target = new MemoryStream();
                                    image.InputStream.CopyTo(target);
                                    byte[] data = target.ToArray();

                                    uploadModel.ContentType = image.ContentType;
                                    uploadModel.Contents = data;
                                    uploadModel.FileName = image.FileName;
                                }

                                profileImages.Add(uploadModel);

                            }

                            challengeModel.ProfileImages = profileImages;
                        }

                        // rewardModel.PartnerEmail = model.PartnerEmail ?? membershipUser.Email;

                        if (model.StartDate == DateTime.MinValue)
                        {
                            challengeModel.StartDate = null;
                        }
                        if (model.EndDate == DateTime.MinValue)
                        {
                            challengeModel.EndDate = null;
                        }

                        if (model.Points == null)
                        {
                            challengeModel.Points = 0;
                        }

                        int? challengeId;
                        if (model.IsUpdate)
                        {
                            challengeId = new ChallengesAdminService().UpdateChallenge((Guid)membershipUser.ProviderUserKey, challengeModel);
                        }
                        else
                        {
                            challengeId = new ChallengesAdminService().CreateChallenge((Guid)membershipUser.ProviderUserKey, challengeModel);
                        }

                        if (challengeId != null)
                        {
                            //if (rewardModel.State == (int)RewardState.WaitingApproval)
                            //{
                            //    SendRewardSubmitEmail(rewardModel);
                            //}
                        }
                        else
                        {
                            ModelState.AddModelError("", "Unable to save changes to database");

                            ViewModelHelper.SetDefaultsForChallengeViewModel(model, membershipUser);

                            return View(model);
                        }

                        //if (saveAndApproveButton != null)
                        //{
                        //    return RedirectToAction("Create", new { id = rewardId, approve = true });
                        //}
                        if (saveAndExitButton != null)
                        {
                            return RedirectToAction("Index");
                        }
                        if (saveAndPreviewButton != null)
                        {
                            // redirect to Challenge page
                            return RedirectToAction("Details", "Challenges", new { id = challengeId });
                        }

                        return RedirectToAction("Create", new { id = challengeId });

                    }

                    ViewModelHelper.SetDefaultsForChallengeViewModel(model, membershipUser);

                    if (model.IsInitialRegistrationStep)
                    {
                        LayoutViewModel.HideTopWrapperMenu = true;
                    }

                    return View(model);
                }
                else
                    return RedirectToAction("Index", "Home");
            }
            else
                return RedirectToAction("Index", "Home");
        }