コード例 #1
0
        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));
        }