private async Task <IActionResult> UpdateRequestState( int id, AbsenceRequestState newState ) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { var request = await _repo.Find(id); if (request == null) { return(NotFound()); } if (request.State != AbsenceRequestState.Requested) { return(BadRequest(ModelState)); } request.State = newState; await _repo.Save(); if (newState == AbsenceRequestState.Approved) { GoogleCalendar.AddToCalendar(request.FromDate, request.ToDate); } } catch (DbUpdateConcurrencyException) { if (!await AbsenceRequestExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }