public async Task <IActionResult> AddRepository([FromBody] Models.AddRepositoryViewModel model) { bool result = false; var providerType = _providerFactory.GetProviderType(model.Url); if (ModelState.IsValid && !string.IsNullOrEmpty(providerType)) { var service = _webhookFactory.GetService(model.Url); if (service != null) { var dbRecord = await _context.Repositories.FirstOrDefaultAsync(i => i.Name.Equals(model.Name) && i.OwnerName.Equals(model.Owner)); if (dbRecord == null) { Data.Repository repository = new Data.Repository(); repository.Provider = providerType; repository.UpdatedTime = DateTimeOffset.Now; repository.Url = model.Url; repository.Name = model.Name; repository.OwnerName = model.Owner; repository.Token = model.Token; if (await service.AddHookAsync(repository)) { _context.Add(repository); var affected = await _context.SaveChangesAsync(); result = affected > 0; } } else { //return already exist } } } return(Json(result)); }