コード例 #1
0
        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>());
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
ファイル: TaskService.cs プロジェクト: RomanKuk/ProjectsApp
        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));
        }
コード例 #6
0
 public async Task <ActionResult <TaskModelDTO> > Put([FromBody] TaskModelUpdateDTO team)
 {
     return(Ok(await taskService.UpdateTask(team)));
 }