Пример #1
0
        public async Task <ApiResponse <WorkLogDto> > CreateWorkLog(WorkLogDto dto)
        {
            try
            {
                var issueFoundResponse = await _issueService.GetIssueByIdAsync(dto.IssueId);

                if (!issueFoundResponse.IsSuccess)
                {
                    return(issueFoundResponse.ToFailed <WorkLogDto>());
                }
                var entityToAdd = _worklogMapper.MapToEntity(dto);
                entityToAdd.IssueId = dto.IssueId;
                entityToAdd.UserId  = _userProvider.GetUserId();
                entityToAdd         = await _worklogRepository.AddAsync(entityToAdd);

                if (entityToAdd != null)
                {
                    return(new ApiResponse <WorkLogDto>(dto));
                }
                _logger.LogWarning("Failed to create entity {0}", JsonConvert.SerializeObject(dto));
                return(new ApiResponse <WorkLogDto>()
                {
                    StatusCode = 400,
                    IsSuccess = false,
                    ResponseException = new ApiError(ErrorCode.WorkLogCreationFailed, ErrorCode.WorkLogCreationFailed.GetDescription())
                });
            }
            catch (Exception ex)
            {
                _logger.LogWarning(ex, "An error occured while creating new worklog {0} ", JsonConvert.SerializeObject(dto));
                return(ApiResponse <WorkLogDto> .InternalError());
            }
        }
Пример #2
0
        /// <summary>
        /// 恢复数据
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        public JsonResult Recovery(int Id)
        {
            WorkLogDto dto = _workLogContract.Edit(Id);
            OperationResult oper = _workLogContract.Recovery(Id);

            AddWorkLogCount(dto.WorkLogAttributeId, -1);
            return Json(oper);
        }
Пример #3
0
        public JsonResult Create(WorkLogDto dto)
        {
            dto.StaffId = AuthorityHelper.OperatorId ?? 0;
            OperationResult oper = _workLogContract.Insert(dto);

            AddWorkLogCount(dto.WorkLogAttributeId, 1);
            return Json(oper);
        }
        private async Task CheckWorkLogAddedToDatabase(WorkLogDto workLog, int expectedCount)
        {
            var context           = GetService <TimeTrackingDbContext>();
            var workLogInDatabase = await context.WorkLogs.LastAsync();

            context.WorkLogs.Should().HaveCount(expectedCount);
            workLog.Should().BeEquivalentTo(workLogInDatabase, opt => opt.ExcludingMissingMembers());
        }
Пример #5
0
        public JsonResult Update(WorkLogDto dto)
        {
            //数据提交时StaffId莫名丢失,在此重新赋值
            WorkLogDto dto_old = _workLogContract.Edit(dto.Id);
            dto.StaffId = dto_old.StaffId;

            OperationResult res = _workLogContract.Update(dto);
            return Json(res);
        }
Пример #6
0
 public JsonResult AddWorkLog(WorkLogDto dto)
 {
     try
     {
         OperationResult oper = _workLogContract.Insert(dto);
         return(Json(oper));
     }
     catch (Exception)
     {
         return(Json(new OperationResult(OperationResultType.Error, "系统错误")));
     }
 }
        public async Task CreateWorkLog_WhenIssueNotFound_ReturnsIssueNotFound()
        {
            var request = new WorkLogDto()
            {
                Description  = "description",
                StartDate    = DateTimeOffset.Now,
                IssueId      = Guid.NewGuid(),
                ActivityType = ActivityType.Research,
                TimeSpent    = TimeSpan.FromDays(2).Seconds,
            };

            var httpResponse = await PostAsync(WorkLogControllerRoutes.CreateWorkLog, request);

            httpResponse.EnsureSuccessStatusCode();
            var response = await httpResponse.BodyAs <ApiResponse <WorkLogDto> >();

            response.VerifyNotSuccessResponseWithErrorCodeAndMessage(ErrorCode.IssueNotFound);
        }
        public async Task CreateWorkLog_WhenNotValidModelPassed_ReturnsValidationError()
        {
            //issue id not valid
            var request = new WorkLogDto()
            {
                Description  = "description",
                StartDate    = DateTimeOffset.Now,
                ActivityType = ActivityType.Research,
                TimeSpent    = TimeSpan.FromDays(2).Seconds
            };
            var httpResponse = await PostAsync(WorkLogControllerRoutes.CreateWorkLog, request);

            httpResponse.EnsureSuccessStatusCode();
            var response = await httpResponse.BodyAs <ApiResponse <WorkLogDto> >();

            response.CheckValidationException(1);

            request = new WorkLogDto()
            {
                StartDate    = DateTimeOffset.Now,
                ActivityType = ActivityType.Research,
                TimeSpent    = TimeSpan.FromDays(2).Seconds
            };
            httpResponse = await PostAsync(WorkLogControllerRoutes.CreateWorkLog, request);

            httpResponse.EnsureSuccessStatusCode();
            response = await httpResponse.BodyAs <ApiResponse <WorkLogDto> >();

            response.CheckValidationException(3);

            request = new WorkLogDto()
            {
                StartDate    = DateTimeOffset.Now,
                ActivityType = ActivityType.Research
            };
            httpResponse = await PostAsync(WorkLogControllerRoutes.CreateWorkLog, request);

            httpResponse.EnsureSuccessStatusCode();
            response = await httpResponse.BodyAs <ApiResponse <WorkLogDto> >();

            response.CheckValidationException(4);
        }
        public async Task CreateWorkLog_WhenModelValid_CreatesWorkLogInDbAndReturnSuccessResponse()
        {
            var workLogCount = WorklogsDbSet.Get().Count();
            var request      = new WorkLogDto()
            {
                Description  = "description",
                StartDate    = DateTimeOffset.Now,
                IssueId      = IssuesDbSet.Get().First().Id,
                ActivityType = ActivityType.Research,
                TimeSpent    = TimeSpan.FromDays(2).Seconds,
            };

            var httpResponse = await PostAsync(WorkLogControllerRoutes.CreateWorkLog, request);

            httpResponse.EnsureSuccessStatusCode();
            var response = await httpResponse.BodyAs <ApiResponse <WorkLogDto> >();

            response.VerifySuccessResponse();
            await CheckWorkLogAddedToDatabase(response.Data, workLogCount + 1);

            response.VerifySuccessResponse();
            await ReSeedDatabase();
        }
 public async Task <ApiResponse <WorkLogDto> > CreateWorkLog([FromBody] WorkLogDto dto)
 {
     return(await _workLogService.CreateWorkLog(dto));
 }
Пример #11
0
 /// <summary>
 /// 备注展示
 /// </summary>
 /// <returns></returns>
 public ActionResult ShowNotes(int Id)
 {
     WorkLogDto dto = _workLogContract.Edit(Id);
     ViewBag.Notes = dto.Notes;
     return PartialView();
 }
Пример #12
0
 /// <summary>
 /// 初始化修改数据界面
 /// </summary>
 /// <returns></returns>
 public ActionResult Update(int Id)
 {
     WorkLogDto dto = _workLogContract.Edit(Id);
     return PartialView(dto);
 }