예제 #1
0
        public async Task <IActionResult> ArchiveCredential([Bind("ProjectId, AssetId")] ArchivePasswordViewModel archivePasswordViewModel)
        {
            if (archivePasswordViewModel == null)
            {
                throw new ArgumentNullException(nameof(archivePasswordViewModel));
            }

            if (ModelState.IsValid)
            {
                if (archivePasswordViewModel.ProjectId < 1)
                {
                    throw new ArgumentNullException(nameof(archivePasswordViewModel.ProjectId));
                }
                if (archivePasswordViewModel.AssetId < 1)
                {
                    throw new ArgumentNullException(nameof(archivePasswordViewModel.AssetId));
                }

                // Check permissions in service by retrieving the proejct
                var project = await _projectsService.GetProject(archivePasswordViewModel.ProjectId);

                if (project == null)
                {
                    return(NotFound());
                }

                // get the current user IP
                string accessIpAddress = HttpContext?.Connection?.RemoteIpAddress?.ToString();

                await _assetService.ArchiveAssetAsync(
                    archivePasswordViewModel.ProjectId,
                    archivePasswordViewModel.AssetId,
                    accessIpAddress);

                return(RedirectToAction(nameof(Details), new { id = archivePasswordViewModel.ProjectId }));
            }

            return(View());
        }