public async Task <ActionResult <DTOServer> > PostServer(DTOServer dtoserver) { var server = _mapper.Map <Server>(dtoserver); if (!await ParseServer(server)) { return(BadRequest()); } _context.Servers.Add(server); await _context.SaveChangesAsync(); // Defer, going to take long to complete _ = Task.Run(async delegate { //await _ipcClient.ComsClient.Connected(); var tempVar = await _ipcClient.ComsClient.ServerInstall(server.Id); }); return(CreatedAtAction("GetServer", new { id = server.Id }, server)); }
public async Task <ActionResult> PatchServer(int id, DTOServer dtoserver) { if (id != dtoserver.Id) { return(BadRequest()); } var server = _mapper.Map <Server>(dtoserver); // Auth var authResult = await _authorizationService.AuthorizeAsync(User, server, "ServersModify"); if (!authResult.Succeeded) { return(Forbid()); } if (!await ParseServer(server)) { return(BadRequest()); } _context.Entry(server).State = EntityState.Modified; // Read only properties //_context.Entry(server).Property(x => x.Created).IsModified = false; //_context.Entry(server).Property(x => x.LastModified).IsModified = false; _context.Entry(server).Property(x => x.LastStart).IsModified = false; _context.Entry(server).Property(x => x.LastUpdate).IsModified = false; _context.Entry(server).Property(x => x.LastUpdateFailed).IsModified = false; // Admin only properties if (!User.IsInRole("Admin")) { _context.Entry(server).Property(x => x.Owner).IsModified = false; _context.Entry(server).Property(x => x.Group).IsModified = false; _context.Entry(server).Property(x => x.Enabled).IsModified = false; _context.Entry(server).Property(x => x.StartParamsHidden).IsModified = false; _context.Entry(server).Property(x => x.Game).IsModified = false; _context.Entry(server).Property(x => x.Path).IsModified = false; _context.Entry(server).Property(x => x.Executable).IsModified = false; _context.Entry(server).Property(x => x.IP).IsModified = false; _context.Entry(server).Property(x => x.DisplayIP).IsModified = false; _context.Entry(server).Property(x => x.Port).IsModified = false; } // _context.Entry(server).Property(x => x.PROPERTY).IsModified = false; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ServerExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }