public async Task <IActionResult> Add(AddRepositoryViewModel dto) { if (!ModelState.IsValid) { return(View("Add", dto)); } if (await _dbContext.DockerRepositories.AnyAsync(x => x.Name == dto.Name.Trim())) { ModelState.AddModelError("Name", "名称已经存在"); } string registry = null; string schema = null; if (!string.IsNullOrWhiteSpace(dto.Registry)) { if (Uri.TryCreate(dto.Registry, UriKind.RelativeOrAbsolute, out var uri)) { schema = uri.Scheme; registry = $"{uri.Host}{(uri.Port == 80 || uri.Port == 443 ? "" : $":{uri.Port}")}"; } else { ModelState.AddModelError("Registry", "Registry 格式不正确"); } } if (await _dbContext.DockerRepositories.AnyAsync(x => x.Registry == dto.Registry || x.Repository == dto.Repository)) { ModelState.AddModelError("Registry", "镜像仓储已经存在"); } if (!ModelState.IsValid) { return(View("Add", dto)); } else { var repository = new DockerRepository { Name = dto.Name, Schema = schema, Registry = registry, Repository = dto.Repository, UserName = dto.UserName, Password = dto.Password, CreationTime = DateTime.Now }; _dbContext.DockerRepositories.Add(repository); await _dbContext.SaveChangesAsync(); return(Redirect("/docker-repository")); } }
async Task ProcessParams(IEnumerable <string> @params) { foreach (var p in @params) { this.Logger().Info("Processing Param: {0}", p); if (p.StartsWith("--profile=")) { var desiredProfile = p.Replace("--profile=", ""); _mediator.Send(new SwitchProfileByNameCommand(desiredProfile)); await Task.Delay(3.Seconds()).ConfigureAwait(false); } if (p.Contains("lockdown=")) { if (Common.AppCommon.IsBusy) { await _dialogManager.MessageBox( new MessageBoxDialogParams("Cannot restart in lockdown mode, currently busy!\n" + p)); return; } _restarter.RestartWithoutElevation(p); return; } if (IsPwsUrl(p)) { retry: Exception e = null; try { await HanldePwsUrl(p).ConfigureAwait(false); } catch (DownloadException ex) { e = ex; } if (e != null) { var result = await UserErrorHandler.HandleUserError(AddRepositoryViewModel.HandleException(e)); if (result == RecoveryOptionResultModel.RetryOperation) { goto retry; } // TODO: Strategy throw e; } } if (IsWebUrl(p)) { _eventBus.PublishOnCurrentThread(new RequestOpenBrowser(p)); } } }
public async Task <IApiResult> AddAsync(AddRepositoryViewModel dto) { if (!ModelState.IsValid) { return(new FailedResult("Arguments invalid")); } if (await _dbContext.DockerRepositories.AnyAsync(x => x.Name == dto.Name.Trim())) { return(new FailedResult("名称已经存在")); } string registry = null; string schema = null; if (!string.IsNullOrWhiteSpace(dto.Registry)) { if (Uri.TryCreate(dto.Registry, UriKind.RelativeOrAbsolute, out var uri)) { schema = uri.Scheme; registry = $"{uri.Host}{(uri.Port == 80 || uri.Port == 443 ? "" : $":{uri.Port}")}"; } else { return(new FailedResult("Registry 格式不正确")); } } if (await _dbContext.DockerRepositories.AnyAsync(x => x.Registry == dto.Registry || x.Repository == dto.Repository)) { return(new FailedResult("镜像仓储已经存在")); } var repository = new DockerRepository { Name = dto.Name, Schema = schema, Registry = registry, Repository = dto.Repository, UserName = dto.UserName, Password = dto.Password, CreationTime = DateTimeOffset.Now }; _dbContext.DockerRepositories.Add(repository); await _dbContext.SaveChangesAsync(); return(new ApiResult("OK")); }
public async Task <IActionResult> Add(AddRepositoryViewModel dto) { if (!ModelState.IsValid) { return(View("Add", dto)); } var items = await _dbContext.DockerRepositories.Where(x => x.Name == dto.Name || x.Repository == dto.Repository).ToListAsync(); var valid = true; if (items.Any(x => x.Name == dto.Name)) { ModelState.AddModelError("Name", "名称已经存在"); valid = false; } if (items.Any(x => x.Repository == dto.Repository && x.Registry == dto.Registry)) { ModelState.AddModelError("Repository", "镜像仓储已经存在"); if (valid) { valid = false; } } if (!valid) { return(View("Add", dto)); } else { var repository = new DockerRepository { Name = dto.Name, Registry = string.IsNullOrWhiteSpace(dto.Registry) ? null : new Uri(dto.Registry).AbsoluteUri, Repository = dto.Repository, UserName = dto.UserName, Password = dto.Password, CreationTime = DateTime.Now }; _dbContext.DockerRepositories.Add(repository); await _dbContext.SaveChangesAsync(); return(Redirect("/docker-repository")); } }
public async Task <IActionResult> Add(AddRepositoryViewModel dto) { if (!ModelState.IsValid) { return(View("Add", dto)); } var items = await _dbContext.DockerRepositories.Where(x => x.Name == dto.Name || x.Repository == dto.Repository).ToListAsync(); if (items.Any(x => x.Name == dto.Name)) { ModelState.AddModelError("Name", "名称已经存在"); } if (items.Any(x => x.Repository == dto.Repository)) { ModelState.AddModelError("Repository", "镜像仓储已经存在"); } if (items.Any()) { return(View("Add", dto)); } else { _dbContext.DockerRepositories.Add(new DockerRepository { Name = dto.Name, Registry = dto.Registry, Repository = dto.Repository, CreationTime = DateTime.Now }); await _dbContext.SaveChangesAsync(); return(Redirect("/docker-repository")); } }