public async Task <ApiResponse <MilestoneDto> > CreateMileStoneAsync(MilestoneDto dto) { try { var projectFound = await _projectRepository.GetByIdAsync(dto.ProjectId); if (projectFound == null) { _logger.LogWarning("Failed to found project by id {0}", dto.ProjectId); return(new ApiResponse <MilestoneDto>() { StatusCode = 400, IsSuccess = false, ResponseException = new ApiError(ErrorCode.ProjectNotFound, ErrorCode.ProjectNotFound.GetDescription()) }); } var entityToAdd = _milestoneMapper.MapToEntity(dto); entityToAdd.CreatedByUserId = _userProvider.GetUserId(); entityToAdd = await _milestoneRepository.AddAsync(entityToAdd); if (entityToAdd != null) { return(new ApiResponse <MilestoneDto>(_milestoneMapper.MapToModel(entityToAdd))); } _logger.LogWarning("Failed to create milestone entity {0}", JsonConvert.SerializeObject(dto)); return(new ApiResponse <MilestoneDto>() { StatusCode = 400, IsSuccess = false, ResponseException = new ApiError(ErrorCode.MilestoneCreationFiled, ErrorCode.MilestoneCreationFiled.GetDescription()) }); } catch (Exception e) { _logger.LogError(e, "An error occured while creating milestone {0}", JsonConvert.SerializeObject(dto)); return(ApiResponse <MilestoneDto> .InternalError()); } }