public async Task <TaskModelDTO> UpdateTask(TaskModelUpdateDTO task) { var response = await client.PutAsJsonAsync($"{baseUrl}/api/tasks", task); if (response.StatusCode != System.Net.HttpStatusCode.OK) { throw new Exception($"{response.StatusCode} : {await response.Content.ReadAsStringAsync()}"); } return(await response.Content.ReadAsAsync <TaskModelDTO>()); }
public async Task GetTasksByUserFinishedThisYear_WhenTaskCountInCollection1_ThenTasksCount1() { var team = new Team { Id = 1, Name = "new team", CreatedAt = DateTime.Now }; context.Teams.Add(team); await context.SaveChangesAsync(); var user = new User { Id = 1, Birthday = DateTime.Now }; context.Users.Add(user); await context.SaveChangesAsync(); var project = new Project { AuthorId = user.Id, TeamId = team.Id }; context.Projects.Add(project); await context.SaveChangesAsync(); var taskFake = new Faker <TaskModelCreateDTO>() .RuleFor(c => c.Name, f => f.Lorem.Word()) .RuleFor(c => c.Description, f => f.Lorem.Word()) .RuleFor(c => c.ProjectId, f => f.PickRandom(project).Id) .RuleFor(c => c.PerformerId, f => f.PickRandom(user).Id) .RuleFor(pi => pi.FinishedAt, _ => DateTime.Now + new TimeSpan(1, 0, 0, 0)); var tasks = taskFake.Generate(5); foreach (var task in tasks) { await taskService.CreateTask(task); } var createdTask = await taskService.GetTaskById(1); var updatedTask = new TaskModelUpdateDTO { Id = createdTask.Id, FinishedAt = DateTime.Now, State = TaskStateDTO.Finished, PerformerId = createdTask.Performer.Id, ProjectId = createdTask.ProjectId }; await taskService.UpdateTask(updatedTask); var result = await taskService.GetTasksByUserFinishedThisYear(user.Id); Assert.Single(result); }
public async Task UpdateTask_WhenUpdateTaskStateToFinished_ThenStateFinished() { var team = new Team { Id = 1, Name = "new team", CreatedAt = DateTime.Now }; context.Teams.Add(team); await context.SaveChangesAsync(); var user = new User { Id = 1, Birthday = DateTime.Now }; context.Users.Add(user); await context.SaveChangesAsync(); var project = new Project { AuthorId = user.Id, TeamId = team.Id }; context.Projects.Add(project); await context.SaveChangesAsync(); var taskFake = new Faker <TaskModelCreateDTO>() .RuleFor(c => c.Name, f => f.Lorem.Word()) .RuleFor(c => c.Description, f => f.Lorem.Word()) .RuleFor(c => c.ProjectId, f => f.PickRandom(project).Id) .RuleFor(c => c.PerformerId, f => f.PickRandom(user).Id) .RuleFor(pi => pi.FinishedAt, _ => DateTime.Now + new TimeSpan(1, 0, 0, 0)); await taskService.CreateTask(taskFake); var createdTask = await taskService.GetTaskById(1); var updatedTask = new TaskModelUpdateDTO { Id = createdTask.Id, FinishedAt = DateTime.Now, State = TaskStateDTO.Finished, PerformerId = createdTask.Performer.Id, ProjectId = createdTask.ProjectId }; await taskService.UpdateTask(updatedTask); var result = await taskService.GetTaskById(1); Assert.Equal(TaskStateDTO.Finished, result.State); }
public async Task <int> MarkRandomTaskWithDelay(int delay) { var tcs = new TaskCompletionSource <int>(); var timer = new Timer { Interval = delay, AutoReset = false }; timer.Elapsed += async(o, e) => { try { var unfinishedTasks = await GetUnfinishedTasks(); if (!unfinishedTasks.Any()) { throw new Exception("All tasks are finished!"); } var rand = new Random(); int randomNumb = rand.Next(unfinishedTasks.Count()); var randomTask = unfinishedTasks.ElementAtOrDefault(randomNumb); var updatedtask = new TaskModelUpdateDTO() { Id = randomTask.Id, Name = randomTask.Name, Description = randomTask.Description, FinishedAt = randomTask.FinishedAt, State = TaskStateDTO.Finished, PerformerId = randomTask.Performer.Id, ProjectId = randomTask.ProjectId }; await UpdateTask(updatedtask); tcs.SetResult(updatedtask.Id); } catch (Exception ex) { tcs.SetException(ex); } }; timer.Enabled = true; return(await tcs.Task); }
public async Task <TaskModelDTO> UpdateTask(TaskModelUpdateDTO taskDto) { var taskEntity = await repository.GetById(taskDto.Id); if (taskEntity == null) { throw new NotFoundException(nameof(TaskModel), taskDto.Id); } if (taskEntity.FinishedAt <= taskEntity.CreatedAt) { throw new ArgumentException("Deadline of a created task must be later then created date"); } await projectService.GetProjectById(taskDto.ProjectId); await userService.GetUserById(taskDto.PerformerId); if (!Enum.IsDefined(typeof(TaskStateDTO), taskDto.State)) { throw new ArgumentException("Task state is incorrect"); } taskEntity.Name = taskDto.Name; taskEntity.Description = taskDto.Description; taskEntity.FinishedAt = taskDto.FinishedAt; taskEntity.State = (TaskState)taskDto.State; taskEntity.PerformerId = taskDto.PerformerId; taskEntity.ProjectId = taskDto.ProjectId; await repository.Update(taskEntity); await unitOfWork.SaveChangesAsync(); return((await GetAllTasks()).FirstOrDefault(t => t.Id == taskEntity.Id)); }
public async Task <ActionResult <TaskModelDTO> > Put([FromBody] TaskModelUpdateDTO team) { return(Ok(await taskService.UpdateTask(team))); }