@@ -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