Skip to content

Commit 5465922

Browse files
committed
add transactions to post&put methods
1 parent cc55cd2 commit 5465922

1 file changed

Lines changed: 46 additions & 20 deletions

File tree

Controllers/LastOpenedDocumentsController.cs

Lines changed: 46 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -40,43 +40,69 @@ public LastOpenedDocument GetLastOpenedDocument(int lastOpenedDocumentId)
4040
[HttpPut("[action]/{lastOpenedDocumentId}.{format?}")]
4141
public IActionResult UpdateDocument(int lastOpenedDocumentId, [FromBody] LastOpenedDocument lastOpenedDocument)
4242
{
43-
if (lastOpenedDocument == null || lastOpenedDocument.LastOpenedDocumentId != lastOpenedDocumentId)
43+
if (lastOpenedDocument == null || lastOpenedDocument.LastOpenedDocumentId != lastOpenedDocumentId || !ModelState.IsValid)
4444
{
4545
return BadRequest();
4646
}
4747

48-
var document = _context.LastOpenedDocuments.Single(d => d.LastOpenedDocumentId == lastOpenedDocumentId);
49-
50-
if (document == null)
48+
using (var transaction = _context.Database.BeginTransaction())
5149
{
52-
return NotFound();
53-
}
50+
try
51+
{
52+
var document = _context.LastOpenedDocuments.Single(d => d.LastOpenedDocumentId == lastOpenedDocumentId);
53+
54+
if (document == null)
55+
{
56+
return NotFound();
57+
}
5458

55-
document.LastOpenedTime = lastOpenedDocument.LastOpenedTime;
56-
document.Patient = lastOpenedDocument.Patient;
57-
document.ModelJson = lastOpenedDocument.ModelJson;
59+
document.LastOpenedTime = lastOpenedDocument.LastOpenedTime;
60+
document.Patient = lastOpenedDocument.Patient;
61+
document.ModelJson = lastOpenedDocument.ModelJson;
62+
63+
_context.LastOpenedDocuments.Update(document);
64+
_context.SaveChanges();
5865

59-
_context.LastOpenedDocuments.Update(document);
60-
_context.SaveChanges();
66+
// Commit transaction if all commands succeed, transaction will auto-rollback
67+
// when disposed if either commands fails
68+
transaction.Commit();
6169

62-
return Ok();
70+
return Ok();
71+
}
72+
catch (Exception e)
73+
{
74+
_logger.LogError(e, "Can not update last opened document");
75+
return StatusCode(StatusCodes.Status500InternalServerError);
76+
}
77+
}
6378
}
6479

6580
[HttpPost("[action]/{format?}")]
6681
public IActionResult InsertNewLastOpenedDocument([FromBody]LastOpenedDocument lastOpenedDocument)
6782
{
6883
if (lastOpenedDocument == null || !ModelState.IsValid)
69-
return BadRequest();
70-
try
7184
{
72-
_context.LastOpenedDocuments.Add(lastOpenedDocument);
73-
_context.SaveChanges();
74-
return Ok(lastOpenedDocument.LastOpenedDocumentId);
85+
return BadRequest();
7586
}
76-
catch (Exception e)
87+
88+
using (var transaction = _context.Database.BeginTransaction())
7789
{
78-
_logger.LogError(e, "Can not insert new last opened document");
79-
return StatusCode(StatusCodes.Status500InternalServerError);
90+
try
91+
{
92+
_context.LastOpenedDocuments.Add(lastOpenedDocument);
93+
_context.SaveChanges();
94+
95+
// Commit transaction if all commands succeed, transaction will auto-rollback
96+
// when disposed if either commands fails
97+
transaction.Commit();
98+
99+
return Ok(lastOpenedDocument.LastOpenedDocumentId);
100+
}
101+
catch (Exception e)
102+
{
103+
_logger.LogError(e, "Can not insert new last opened document");
104+
return StatusCode(StatusCodes.Status500InternalServerError);
105+
}
80106
}
81107
}
82108
}

0 commit comments

Comments
 (0)