public async Task <Contract.Models.Status> Create(CreateStatusDto createStatusDto)
        {
            ValidationHelper.ValidateAndThrow(createStatusDto);
            if (!await _folderGetOperations.ExistsById(createStatusDto.FolderId))
            {
                throw new NotFoundException("Директория для статуса не найдена");
            }

            if (!await _sourceGetOperations.ExistsById(createStatusDto.SourceId))
            {
                createStatusDto.SourceId = SourceIds.Flex.ToString();
            }

            var model = new Contract.Models.Status
            {
                Id         = Guid.NewGuid().ToString(),
                Name       = createStatusDto.Name,
                FolderId   = createStatusDto.FolderId,
                SourceId   = createStatusDto.SourceId,
                ExternalId = createStatusDto.ExternalId
            };

            await _taskStatusWriteOperations.Create(model);

            return(model);
        }
示例#2
0
        public async Task <IActionResult> CreateStatus([FromBody] CreateStatusDto createStatusDto)
        {
            var command = mapper.Map <CreateStatusCommand>(createStatusDto);
            await statusesService.CreateStatusAsync(command);

            return(Created($"/api/statuses/{command.Id}", new EntityCreatedDto {
                Id = command.Id
            }));
        }
示例#3
0
        public async Task CreateStatusWithNotExistingFolder()
        {
            var dto = new CreateStatusDto
            {
                Name     = "a",
                FolderId = "aaaaa"
            };

            Assert.ThrowsAsync <NotFoundException>(async() => await _taskStatusService.Create(dto));
        }
		public async Task<ActionResult<ReadStatusDto>> Update(int statusId, [FromBody] CreateStatusDto createStatusDto)
		{
			try
			{
				var updatedProject = await _statusService.UpdateAsync(statusId, createStatusDto);
				return Ok(updatedProject);
			}
			catch (TaskException ex)
			{
				return NotFound(ex.Message);
			}
		}
		public async Task<ActionResult<ReadStatusDto>> Add([FromBody] CreateStatusDto createStatusDto)
		{
			try
			{
				var addedStatus = await _statusService.AddAsync(createStatusDto);
				return CreatedAtAction("Add", addedStatus);
			}
			catch (TaskException ex)
			{
				return Conflict(ex.Message);
			}
		}
示例#6
0
        public async Task CreateValidStatus()
        {
            var dto = new CreateStatusDto
            {
                Name     = "todo",
                SourceId = SourceIds.Flex.ToString(),
                FolderId = FolderHelper.ValidFolder.Id
            };
            var result = await _taskStatusService.Create(dto);

            Assert.NotNull(result);
            Assert.IsNotEmpty(result.Id);
            Assert.AreEqual(dto.Name, result.Name);
        }
示例#7
0
        public async Task <ReadStatusDto> UpdateAsync(int id, CreateStatusDto model)
        {
            var status = await _unitOfWork.StatusRepository.GetByIdAsync(id);

            if (status == null)
            {
                throw new TaskException($"Status with id = {id} not found.", HttpStatusCode.NotFound);
            }

            status.Title = model.Title;
            await _unitOfWork.StatusRepository.UpdateAsync(status);

            await _unitOfWork.SaveAsync();

            _logger.LogInfo($"Updated status with id = {id}");
            return(_mapper.Map <ReadStatusDto>(status));
        }
示例#8
0
        public async Task <ReadStatusDto> AddAsync(CreateStatusDto model)
        {
            var status = _unitOfWork.StatusRepository
                         .FindByCondition(s => s.Title == model.Title, false)
                         .FirstOrDefault();

            if (status != null)
            {
                throw new TaskException($"Status with title \"{model.Title}\" already exist.", HttpStatusCode.Conflict);
            }


            var statusToAdd = _mapper.Map <DAL.Entities.Status>(model);
            await _unitOfWork.StatusRepository.AddAsync(statusToAdd);

            var addedStatus = await _unitOfWork.StatusRepository.FindByCondition(s => s.Title == model.Title, false)
                              .Include(s => s.Tasks)
                              .FirstOrDefaultAsync();

            _logger.LogInfo($"Created status with id = {addedStatus.Id}.");
            return(_mapper.Map <ReadStatusDto>(addedStatus));
        }
        public async Task <ActionResult> CreateStatus(string folderId, string title)
        {
            try
            {
                var status = new CreateStatusDto()
                {
                    FolderId = folderId,
                    Name     = title
                };
                var item = await _taskStatusService.Create(status);

                var folder = await _folderGetOperations.GetById(folderId);

                folder.StatusesOrder.Add(item.Id);
                await _folderWriteOperations.Update(folderId, folder);

                return(Json(item.Id));
            }
            catch
            {
                return(Redirect("/Folder/Folders/" + folderId));
            }
        }