public async Task <ActionResult <AdView> > EditAdAsync([FromBody] AdEditRequest adEditRequest) { var currentUserId = GetCurrentUserId(); try { var editedAd = await adManager.EditAsync(adEditRequest, currentUserId); return(Ok(await editedAd .AttachCurrentUserId(mapper.ConfigurationProvider, GetCurrentUserId()) .ProjectTo <AdView>(mapper.ConfigurationProvider) .SingleAsync())); } catch (ArgumentNullException ane) { logger.LogDebug(ane.Message + "\n" + ane.StackTrace); return(NotFound($"Can't find ad {adEditRequest.Id}")); } catch (MethodAccessException mae) { logger.LogDebug(mae.Message + "\n" + mae.StackTrace); logger.LogDebug($"Current user {currentUserId} has no rights to edit ad {adEditRequest.Id}"); return(Forbid(JwtBearerDefaults.AuthenticationScheme, CookieAuthenticationDefaults.AuthenticationScheme)); } catch (Exception ex) { logger.LogDebug(ex.Message + "\n" + ex.StackTrace); return(StatusCode(500)); } }