コード例 #1
0
        public async Task <ActionResult> Edit(AppSubmitViewModel model)
        {
            // Check if current user can modify the app.
            if (!User.IsSuperSubmitter() && !await _submitterService.IsOwnerAsync(User.GetSubmittership().SubmitterID, model.Submission.SubmissionID))
            {
                return(View("NeedPermission"));
            }

            // final check
            var finalCheck = _appService.ValidateAppIdCharacters(model.Submission.Nickname) &&
                             await _appService.ValidateAppIdVersionIsUniqueAsync(model.Submission.Nickname, model.Submission.Version, model.Submission.SubmissionID);

            if (!finalCheck)
            {
                await LoadViewDataForSubmit();

                ModelState.AddModelError("AppId", "unique");
                return(View("Submit", model));
            }

            // save
            var submission = await _appService.UpdateAsync(User.GetSubmittership(), model.Submission, model.MetadataList, model.Packages, Request.Files.GetAppImages(), model.GetSettingStatusOfImages(), new AppImageAzureStorageService());

            // go to App Verify
            return(RedirectToRoute(SiteRouteNames.App_Verify, new { submissionId = submission.SubmissionID, showThanks = true }));
        }
コード例 #2
0
        public async Task <ActionResult> Clone(int?submissionId)
        {
            if (!submissionId.HasValue)
            {
                return(RedirectToRoute(SiteRouteNames.App_Submit));
            }

            var submission = await _appService.GetSubmissionAsync(submissionId.Value);

            // Per the rule in the old site,
            // if the submission id doesn't refer to a submission in database,
            // the page will show an empty form and allow user to submit a new app.
            if (submission == null)
            {
                return(RedirectToRoute(SiteRouteNames.App_Submit));
            }

            // Check if current user can clone the app specified by the submission id.
            // Only the owner and a super submitter can do that.
            if (!User.IsSuperSubmitter() && !await _submitterService.IsOwnerAsync(User.GetSubmittership().SubmitterID, submission.SubmissionID))
            {
                return(View("NeedPermission"));
            }

            var model = AppSubmitViewModel.Clone(submission,
                                                 await _appService.GetMetadataAsync(submission.SubmissionID),
                                                 await _appService.GetPackagesAsync(submission.SubmissionID)
                                                 );

            await LoadViewDataForSubmit();

            return(View("Submit", model));
        }
コード例 #3
0
        public async Task <ActionResult> New(AppSubmitViewModel model)
        {
            // new apps are no longer accepted for Web PI
            if (await _appService.IsNewAppAsync(model.Submission.Nickname))
            {
                return(View("NoNewApps"));
            }

            return(await Create(model));
        }
コード例 #4
0
        public async Task <ActionResult> New(bool?testMode)
        {
            var model = (testMode.HasValue && testMode.Value)
                        ? AppSubmitViewModel.Fake()
                        : AppSubmitViewModel.Empty();

            model.IsNewSubmission = true;

            await LoadViewDataForSubmit();

            return(View("Submit", model));
        }
コード例 #5
0
        public async Task <ActionResult> Edit(int?submissionId)
        {
            if (!submissionId.HasValue)
            {
                return(RedirectToRoute(SiteRouteNames.App_Submit));
            }

            var submission = await _appService.GetSubmissionAsync(submissionId.Value);

            // Per the rule in the old site,
            // if the submission id doesn't refer to a submission in database,
            // the page will show an empty form and allow user to submit a new app.
            if (submission == null)
            {
                return(RedirectToRoute(SiteRouteNames.App_Submit));
            }

            // Check if current user can modify the app.
            // Only the owner and a super submitter can do that.
            if (!User.IsSuperSubmitter() && !await _submitterService.IsOwnerAsync(User.GetSubmittership().SubmitterID, submission.SubmissionID))
            {
                return(View("NeedPermission"));
            }

            // Check if modification of this submission is locked.
            if (!User.IsSuperSubmitter() && await _appService.IsModificationLockedAsync(submission.SubmissionID))
            {
                // old: disable the form and display "This submission is being reviewed and processed by Microsoft Corp. No modifications can be made at this time."
                // new: go to a warning page
                return(View("ModificationLocked"));
            }

            var model = new AppSubmitViewModel
            {
                Submission      = submission,
                MetadataList    = await _appService.GetMetadataAsync(submission.SubmissionID),
                Packages        = await _appService.GetPackagesAsync(submission.SubmissionID),
                CanEditNickname = User.IsSuperSubmitter()
            };

            await LoadViewDataForSubmit();

            return(View("Submit", model));
        }
コード例 #6
0
        private async Task <ActionResult> Create(AppSubmitViewModel model)
        {
            // final check
            var finalCheck = _appService.ValidateAppIdCharacters(model.Submission.Nickname) &&
                             await _appService.ValidateAppIdVersionIsUniqueAsync(model.Submission.Nickname, model.Submission.Version, model.Submission.SubmissionID);

            if (!finalCheck)
            {
                await LoadViewDataForSubmit();

                ModelState.AddModelError("AppId", "unique");
                return(View("Submit", model));
            }

            // save
            var submission = await _appService.CreateAsync(User.GetSubmittership(), model.Submission, model.MetadataList, model.Packages, Request.Files.GetAppImages(), model.GetSettingStatusOfImages(), new AppImageAzureStorageService());

            // go to the App Status page
            // old site -> Response.Redirect("AppStatus.aspx?mode=thanks&id=" + id);
            return(RedirectToRoute(SiteRouteNames.App_Verify, new { submissionId = submission.SubmissionID, showThanks = true }));
        }
コード例 #7
0
 public async Task <ActionResult> Clone(AppSubmitViewModel model)
 {
     return(await Create(model));
 }