public async Task <IActionResult> GetTaskAsync([FromRoute] string taskId, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); if (!Guid.TryParse(taskId, out var modelToDoTaskId)) { var error = ServiceErrorResponses.ToDoTaskNotFound(taskId); return(this.NotFound(error)); } ToDoTask modelTask = null; try { modelTask = await this.tasks.GetAsync(modelToDoTaskId, cancellationToken); } catch (ToDoTaskNotFoundException) { var error = ServiceErrorResponses.ToDoTaskNotFound(taskId); return(NotFound(error)); } var clientTask = ToDoTaskConverter.Convert(modelTask); var userIdRequest = this.HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier); if (userIdRequest.Value != clientTask.UserId) { var error = ServiceErrorResponses.AccessDenied(); return(StatusCode(StatusCodes.Status403Forbidden, error)); } return(this.Ok(clientTask)); }
public async Task <IActionResult> RemoveTaskAsync([FromRoute] string taskId, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); if (!Guid.TryParse(taskId, out var modelToDoTaskId)) { var error = ServiceErrorResponses.ToDoTaskNotFound(taskId); return(this.NotFound(error)); } var userLoginRequest = this.HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Name); User user = null; try { user = await users.GetAsync(userLoginRequest.Value, cancellationToken); } catch { var error = ServiceErrorResponses.UserNotFound(userLoginRequest.Value); return(BadRequest(error)); } ToDoTask modelTask = null; try { modelTask = await this.tasks.GetAsync(modelToDoTaskId, cancellationToken); } catch (ToDoTaskNotFoundException) { var error = ServiceErrorResponses.ToDoTaskNotFound(taskId); return(NotFound(error)); } if (user.Id != modelTask.UserId) { var error = ServiceErrorResponses.AccessDenied(); return(StatusCode(StatusCodes.Status403Forbidden, error)); } try { await tasks.RemoveAsync(modelToDoTaskId, cancellationToken); } catch (ToDoTaskNotFoundException) { var error = ServiceErrorResponses.ToDoTaskNotFound(taskId); return(NotFound(error)); } return(NoContent()); }
public async Task <IActionResult> PatchTaskAsync([FromRoute] string taskId, [FromBody] Client.Models.ToDoTasks.ToDoTaskPatchInfo patchInfo, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); if (!Guid.TryParse(taskId, out var modelToDoTaskId)) { var error = ServiceErrorResponses.ToDoTaskNotFound(taskId); return(this.NotFound(error)); } var userLoginRequest = this.HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Name); User user = null; try { user = await users.GetAsync(userLoginRequest.Value, cancellationToken); } catch { var error = ServiceErrorResponses.UserNotFound(userLoginRequest.Value); return(BadRequest(error)); } ToDoTask modelTask = null; try { modelTask = await this.tasks.GetAsync(modelToDoTaskId, cancellationToken); } catch (ToDoTaskNotFoundException) { var error = ServiceErrorResponses.ToDoTaskNotFound(taskId); return(NotFound(error)); } if (user.Id != modelTask.UserId) { var error = ServiceErrorResponses.AccessDenied(); return(StatusCode(StatusCodes.Status403Forbidden, error)); } var modelPatchInfo = ToDoTaskPatchConverter.Convert(modelToDoTaskId, patchInfo); ToDoTask patchTask = null; try { patchTask = await tasks.PatchAsync(modelPatchInfo, cancellationToken); } catch (ToDoTaskNotFoundException) { var error = ServiceErrorResponses.ToDoTaskNotFound(taskId); return(NotFound(error)); } var clientTask = ToDoTaskConverter.Convert(patchTask); return(Ok(clientTask)); }