Ejemplo n.º 1
0
        public async Task <Unit> Handle(UpdateTask request, CancellationToken cancellationToken)
        {
            var projectTask = await _projectTaskRepository.GetByIdAsync(request.Id, cancellationToken);

            if (projectTask == null)
            {
                throw new DomainException("Task does not exist!");
            }

            if (projectTask.Title != request.Title && await _projectTaskRepository.Exists(request.Title, projectTask.ProjectId, cancellationToken))
            {
                throw new DomainException($"Task with name {request.Title} exists!");
            }

            projectTask.Title        = request.Title;
            projectTask.Description  = request.Description;
            projectTask.Type         = request.Type;
            projectTask.ModifiedDate = DateTime.UtcNow;

            _logger.LogInformation("----- Updating Task - Task: {@Task}", projectTask);

            _projectTaskRepository.Update(projectTask);

            await _projectTaskRepository.UnitOfWork.SaveChangesAsync(cancellationToken);

            return(Unit.Value);
        }
Ejemplo n.º 2
0
        public async Task <Guid> Handle(CreateTask request, CancellationToken cancellationToken)
        {
            if (await _projectRepository.GetByIdAsync(request.ProjectId, cancellationToken) == null)
            {
                throw new DomainException("Project does not exist!");
            }

            if (await _projectTaskRepository.Exists(request.Title, request.ProjectId, cancellationToken))
            {
                throw new DomainException($"Task with name {request.Title} exists!");
            }

            var projectTask = new ProjectTask
            {
                Id          = _idGenerator.NewId(),
                Title       = request.Title,
                Description = request.Description,
                Type        = request.Type,
                ProjectId   = request.ProjectId,
                CreatedDate = DateTime.UtcNow
            };

            _logger.LogInformation("----- Creating Task - Task: {@Task}", projectTask);

            _projectTaskRepository.Add(projectTask);

            await _projectTaskRepository.UnitOfWork.SaveChangesAsync(cancellationToken);

            return(projectTask.Id);
        }