public async Task <bool> TaskGroupParentOkayAsync(TaskGroupHeader taskGroupHeader, string accessToken) { Guid parentTaskGroupId = taskGroupHeader.ParentTaskGroupId ?? Guid.Empty; if (parentTaskGroupId != Guid.Empty) { TaskGroupHeader parentTaskGroupHeader = _unitOfWork.TaskGroupHeaders.Get(parentTaskGroupId); var userTeams = await GetUserTeamsAsync(accessToken); if (!userTeams.Contains(parentTaskGroupHeader.TeamHeaderId)) { parentTaskGroupHeader = null; } if (parentTaskGroupHeader == null) { return(false); } taskGroupHeader.ClientHeaderId = Guid.Empty; taskGroupHeader.TeamHeaderId = Guid.Empty; //taskGroupHeader.MainUserId = Guid.Empty; //Make sure the start and completion dates don't fall outside of the group headers dates taskGroupHeader.StartDate = (taskGroupHeader.StartDate < parentTaskGroupHeader.StartDate) ? parentTaskGroupHeader.StartDate : taskGroupHeader.StartDate; taskGroupHeader.CompletionDate = (taskGroupHeader.CompletionDate > parentTaskGroupHeader.CompletionDate) ? parentTaskGroupHeader.CompletionDate : taskGroupHeader.CompletionDate; } else { taskGroupHeader.ParentTaskGroupId = null; } return(true); }
public async Task <IActionResult> Get(string id) { try { var accessToken = await HttpContext.GetTokenAsync("access_token"); TaskGroupHeader taskGroupHeader = null; if (Guid.TryParse(id, out Guid parsedId)) { taskGroupHeader = await _unitOfWork.TaskGroupHeaders.GetTaskGroupHeaderWithRelationsAsync(parsedId, false, accessToken); } else { taskGroupHeader = await _unitOfWork.TaskGroupHeaders.GetTaskGroupHeaderWithRelationsAsync(id, false, accessToken); } if (taskGroupHeader != null) { return(Ok(_mapper.Map <TaskGroupHead>(taskGroupHeader))); } } catch (Exception e) { string message = e.Message; } return(NotFound()); }
public async Task <IActionResult> Patch(string id, [FromBody] JsonPatchDocument <TaskGroupHead> taskGroupHeadPatch) { try { var accessToken = await HttpContext.GetTokenAsync("access_token"); if (Guid.TryParse(id, out Guid parsedId)) { //var userId = User.FindFirstValue("sub"); var taskGroupHeader = _unitOfWork.TaskGroupHeaders.Get(parsedId); if (taskGroupHeader != null) { if (await _taskManager.CanAccessTaskGroupHeaderAsync(taskGroupHeader.Id, accessToken)) { var taskGroupHead = _mapper.Map <TaskGroupHead>(taskGroupHeader); taskGroupHeadPatch.ApplyTo(taskGroupHead); //Make sure the Original dates do not get changed taskGroupHead.OriginalCompletionDate = taskGroupHeader.OriginalCompletionDate; taskGroupHead.OriginalStartDate = taskGroupHeader.OriginalStartDate; if (taskGroupHeader.ParentTaskGroupId != null) { TaskGroupHeader parentTaskGroupHeader = _unitOfWork.TaskGroupHeaders.SingleOrDefault(c => c.Id == taskGroupHeader.ParentTaskGroupId, true); if (parentTaskGroupHeader != null) { //Make sure the start and completion dates don't fall outside of the group headers dates taskGroupHead.StartDate = (taskGroupHead.StartDate < parentTaskGroupHeader.StartDate) ? parentTaskGroupHeader.StartDate : taskGroupHead.StartDate; taskGroupHead.CompletionDate = (taskGroupHead.CompletionDate > parentTaskGroupHeader.CompletionDate) ? parentTaskGroupHeader.CompletionDate : taskGroupHead.CompletionDate; } } _mapper.Map(taskGroupHead, taskGroupHeader); if (!await _taskManager.TaskGroupParentOkayAsync(taskGroupHeader, accessToken)) { return(BadRequest()); } _unitOfWork.Complete(); return(CreatedAtRoute("Get", new { id = _mapper.Map <TaskGroupHead>(taskGroupHeader).Id }, _mapper.Map <TaskGroupHead>(taskGroupHeader))); } } } } catch (Exception e) { string message = e.Message; } return(BadRequest()); }
public async Task <bool> TaskGroupTeamOkayAsync(TaskGroupHeader taskGroupHeader, string accessToken) { var userTeams = await GetUserTeamsAsync(accessToken); if (userTeams.Contains(taskGroupHeader.TeamHeaderId)) { return(true); } return(false); }
public async Task <IActionResult> Post([FromBody] TaskHead taskHead) { try { var accessToken = await HttpContext.GetTokenAsync("access_token"); if (taskHead.Id == Guid.Empty) { TaskGroupHeader taskGroupHeader = _unitOfWork.TaskGroupHeaders.SingleOrDefault(c => c.Id == taskHead.TaskGroupHeaderId, true); if (taskGroupHeader != null) { if (await _taskManager.CanAccessTaskGroupHeaderAsync(taskGroupHeader.Id, accessToken)) { if (taskGroupHeader.Id != Guid.Empty) { var taskHeader = _mapper.Map <TaskHeader>(taskHead); //Make sure the start and completion dates don't fall outside of the group headers dates taskHeader.StartDate = (taskHeader.StartDate < taskGroupHeader.StartDate) ? taskGroupHeader.StartDate : taskHeader.StartDate; taskHeader.CompletionDate = (taskHeader.CompletionDate > taskGroupHeader.CompletionDate) ? taskGroupHeader.CompletionDate : taskHeader.CompletionDate; if (!await _taskManager.SetNewTaskSequenceNoAsync(taskHeader, accessToken)) { return(BadRequest()); } _unitOfWork.TaskHeaders.Add(taskHeader); _unitOfWork.Complete(); return(Created(new Uri($"{Request.Path}/{taskHeader.Id}", UriKind.Relative), _mapper.Map <TaskHead>(taskHeader))); } } } } } catch (Exception e) { string message = e.Message; } return(BadRequest()); }
public async Task <bool> SetNewTaskSequenceNoAsync(TaskHeader taskHeader, string accessToken) { taskHeader.SequenceNumber = 0; Guid parentTaskGroupHeaderId = taskHeader.TaskGroupHeaderId; if (parentTaskGroupHeaderId != Guid.Empty) { TaskGroupHeader parentTaskGroupHeader = await _unitOfWork.TaskGroupHeaders.GetTaskGroupHeaderWithRelationsAsync(parentTaskGroupHeaderId, true, accessToken); if (parentTaskGroupHeader != null) { var maxChildTask = parentTaskGroupHeader.ChildTasks.OrderByDescending(f => f.SequenceNumber).FirstOrDefault(); if (maxChildTask != null) { taskHeader.SequenceNumber = maxChildTask.SequenceNumber + 1; } } } return(true); }