public async Task <IActionResult> PutSecurityCheck(int id, SecurityCheckUpdate update) { if (id != update.check.Id) { return(BadRequest()); } if (!SecurityCheckExists(id)) { return(NotFound()); } if (!_context.SecurityChecks.Any(c => c.Id == id && c.Status == DeviceStatus.Submitted)) { return(BadRequest("Expected security check status to be submitted.")); } var device = await _context.Devices.FindAsync(update.check.DeviceId); if (device == null) { return(NotFound()); } if (device.UserName != User.GetUserName()) { return(Forbid()); } DateTime now = DateTime.Now; foreach (var q in update.check.Questions) { _context.CreateOrUpdate(q); } update.check.Status = DeviceStatus.Submitted; update.check.StatusEffectiveDate = now; _context.Entry(update.check).State = EntityState.Modified; if (device.Status != update.check.Status || device.OS_Type != update.device.OS_Type || device.OS_Version != update.device.OS_Version) { _context.DeviceHistories.Add(new DeviceHistory(device)); device.DateEdit = now; device.UserEditId = User.GetUserName(); device.Status = update.check.Status; device.StatusEffectiveDate = now; device.OS_Type = update.device.OS_Type; device.OS_Version = update.device.OS_Version; _context.UpdateProperties(device, d => d.DateEdit, d => d.UserEditId, d => d.Status, d => d.StatusEffectiveDate, d => d.OS_Type, d => d.OS_Version); } await _context.SaveChangesAsync(); return(NoContent()); }
public async Task <ActionResult <SecurityCheck> > PostSecurityCheck(SecurityCheckUpdate update) { var device = await _context.Devices.FindAsync(update.check.DeviceId); if (device == null) { return(NotFound()); } string userName = User.GetUserName(); if (device.UserName != userName) { return(Forbid()); } await _context.Database.CreateExecutionStrategy().ExecuteAsync(async() => { var trans = _context.Database.BeginTransaction(); DateTime now = DateTime.Now; update.check.SubmissionDate = now; update.check.Status = DeviceStatus.Submitted; update.check.StatusEffectiveDate = now; update.check.UserName = userName; _context.SecurityChecks.Add(update.check); if (device.Status != update.check.Status || device.OS_Type != update.device.OS_Type || device.OS_Version != update.device.OS_Version) { _context.DeviceHistories.Add(new DeviceHistory(device)); device.DateEdit = now; device.UserEditId = User.GetUserName(); device.Status = update.check.Status; device.StatusEffectiveDate = now; device.OS_Type = update.device.OS_Type; device.OS_Version = update.device.OS_Version; _context.UpdateProperties(device, d => d.DateEdit, d => d.UserEditId, d => d.Status, d => d.StatusEffectiveDate, d => d.OS_Type, d => d.OS_Version); } await _context.SaveChangesAsync(); await trans.CommitAsync(); }); return(CreatedAtAction("GetSecurityCheck", new { id = update.check.Id }, update.check)); }