示例#1
0
        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);
            }
        }
示例#2
0
        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.")));
            }
        }