public async Task <Application> Create(ApplicationCreateInDto createOptions) { if (await _context.Applications.AnyAsync(a => a.Name == createOptions.Name)) { throw new ExistedConflictException(); } using (var transaction = await _context.Database.BeginTransactionAsync()) { var now = DateTime.Now; var application = new Application { Name = createOptions.Name, Version = createOptions.Version, Avatar = createOptions.Avatar, Url = createOptions.Url, Description = createOptions.Description, CreateTime = now, UpdateTime = now, }; await _context.Applications.AddAsync(application); await _context.SaveChangesAsync(); var applicationProfile = new ApplicationProfile { Id = application.Id, Misc = _applicationProfileService.GetDefaultMisc(application), Setting = _applicationProfileService.GetDefaultSetting(application), }; await _context.ApplicationProfiles.AddAsync(applicationProfile); await _context.SaveChangesAsync(); transaction.Commit(); return(application); } }
public async Task <ActionResult <ResultOutDto <Application> > > PostApplication(ApplicationCreateInDto createOptions) { try { var applications = await _applicationService.Create(createOptions); return(Ok(ResultOutDtoBuilder.Success(applications))); } catch (ExistedConflictException e) { return(Conflict( ResultOutDtoBuilder.Fail <Application>(e, "New name conflict with other existed application."))); } }